Разоблачение CockroachDB в Куберне публичной ИС

У меня есть экземпляр CockroachDB, работающий в кластере Kubernetes на Google Kubernetes Engine. Я пытаюсь открыть порт 26257, чтобы я мог подключиться к нему с локального компьютера.

Как указано в этом ответе, переадресация портов на модуль не будет работать.

У меня есть контроллер nginx-ingress, который используется для сопоставления путей моего доменного имени к сервисам, поэтому я попытался использовать это:

Я изменил свой сервис db-cockroachdb-public с ClusterIP на NodePort:

type: NodePort

Я добавил эти строки в мой nginx-контроллер YAML:

-name: postgresql

nodePort: 30472

port: 26257

protocol: TCP

targetPort: 26257

и эти строки для моего входа в YAML:

- host: db.mydomain.com
  http:
    paths:
    - path: /
      backend:
        serviceName: db-cockroachdb-public
        servicePort: 26257

Тем не менее, я не могу подключиться к базе данных - отказано в соединении. Я также попытался отключить перенаправления SSL в контроллере nginx, но он все еще не работает.

Я также попробовал ConfigMap, но он ничего не сделал:

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/exposing-tcp-udp-services.md

2 ответа

Решение

Есть несколько способов исправить это. Большинство из них связаны с изменением вашей входной конфигурации или с тем, как вы подключаетесь к сервису, но я не буду вдаваться в подробности. Другой вариант - сделать так, чтобы экспедирование работало, чтобы исключить необходимость в оборудовании для входа.

Вы можете настроить переадресацию портов, слегка изменив конфигурационный файл CockroachDB. Изменить имя --host флаг в вызове двоичного файла Таракана, чтобы быть --advertise-host вместо. Таким образом, процесс будет прослушивать localhost в дополнение к его имени хоста, что заставит работать переадресацию портов.

редактировать: чтобы продолжить, я переключил конфигурацию по умолчанию в репозитории CockroachDB, чтобы использовать --advertise-host вместо --host, так что переадресация портов теперь работает по умолчанию.

Я не знаю, должен ли он работать для прокси-сервера CockroachDB через экземпляр nginx, но ваша установка не удалась по другой причине. Указывая servicePort в разделе правил, вы указываете k8s, какой порт открыт для службы. Само сопоставление по умолчанию происходит с портом 80/443, а не с желаемым портом. Так что вы должны попытаться просто спросить порт 80 в вашем случае.

Другие вопросы по тегам