Поддержка SSL / TLS для службы Kubernetes NodePort - PullRequest
0 голосов
/ 06 марта 2019

Проблема

Мне нужно открыть службу Kubernetes NodePort извне через https.

Настройка

  • Я развернул Kubernetes на голом железе иразвернул Polyaxon в кластере через Helm
  • Мне нужно получить доступ к панели мониторинга Polyaxon через браузер, используя виртуальную машину, которая является внешней по отношению к кластеру
  • Панель управления отображается каксервис NodePort, и я могу подключиться к нему через http.Я не могу подключиться через https, что в моем случае является жестким требованием.
  • После начального периода «сборки» у кластера и виртуальной машины не будет доступа кболее широкий интернет.Они будут соединяться друг с другом, и все.

Полиаксон предположительно поддерживает SSL / TLS через свои собственные конфигурации, но документации по этому вопросу очень мало.Я сделал все возможное, чтобы решить эту проблему таким образом, а также столкнулся с проблемой на их github, но пока мне не повезло.

Так что теперь мне интересноесли бы был более общий взлом Kubernetes, который мог бы помочь мне здесь.

Решения

Я ищу самое простое решение, а не самое элегантное или масштабируемое.Есть также некоторые вещи, которые могут сделать мою ситуацию проще, чем обычному пользователю, который хотел бы https, а именно:

  • Было бы хорошо поддерживать https только на одном узле, а не на каждом узле
  • Мне не нужно (или очень не хочется) доменное имя;подключение по https://<ip_address>:<port> не просто в порядке, но предпочтительнее
  • Самозаверяющий сертификат также в порядке

Так что я надеюсь, что есть какой-то способ напрямую манипулировать сервисом NodePort, так чтоhttps будет работать на виртуальной машине.Если это невозможно, другие решения, которые я рассмотрел, используют Ingress Controller или какой-то другой прокси-сервер, но эти решения немного запутаны в моей памяти.Я новичок как в Kubernetes, так и в сетевых идеях, поэтому, если вы собираетесь предложить что-то более сложное, говорите очень медленно :)

Спасибо большое за вашу помощь!

1 Ответ

0 голосов
/ 26 марта 2019

Ingress-controller - это стандартный способ предоставления HTTP-бэкенда по соединению TLS от кластера к клиенту.

Существующий сервис NodePort имеет ClusterIP, который может использоваться в качестве бэкэнда для Ingress. Тип сервиса ClusterIP достаточно, поэтому вы можете изменить тип сервиса позже, чтобы запретить доступ HTTP через nodeIP:nodePort. Ingress-controller позволяет соединять TLS-соединение или сквозной TLS-трафик с бэкэндом.

Вы можете использовать самозаверяющий сертификат или сертификат-менеджер с Зашифруем сервис.

Обратите внимание, что начиная с версии 0.22.0 синтаксис перезаписи Nginx-ingress изменился , и некоторые примеры в статьях могут быть устаревшими.

Проверьте ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...