Я немного новичок в создании сетей, SSL и NGINX, так голый со мной, если мне не хватает чего-то очевидного. В предисловии к этому я работаю над GCE и Kuberenetes. Моя цель - просто разоблачить все микросервисы в моем кластере через SSL. В идеальном случае он будет работать так же, как и при развертывании через тип = «LoadBalancer» и получить один внешний IP-адрес. Это моя цель, но SSL не доступен с этими базовыми балансировщиками.Kubernetes, GCE, балансировка нагрузки, SSL
Из моих исследований лучшим решением было бы установить контроллер входа nginx, использовать ресурсы доступа и услуги для предоставления моих микросервисов. Ниже приведена диаграмма, в которой я понял свое понимание этого процесса.
У меня это все, чтобы успешно работать над HTTP. Я развернул контроллер nginx по умолчанию: https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx. Как и бэкэнд по умолчанию и служба для бэкэнд по умолчанию. Вход для моего собственного микросервиса имеет правила, установленные как мое доменное имя и путь: /.
Это было успешно, но были две вещи, которые меня немного смутили.
При экспонировании ресурса службы для моего внутреннего интерфейса (microservice) один гидом я следовал используемому типу = «NodePort», а другие просто поставить порт, чтобы достигнуть обслуживания. Оба устанавливают целевой порт на порт приложения. Я пробовал это в обоих направлениях, и оба они работали. Путеводитель один из приведенной выше ссылки. Руководство 2: http://blog.kubernetes.io/2016/03/Kubernetes-1.2-and-simplifying-advanced-networking-with-Ingress.html. В чем тут разница?
Еще одна путаница в том, что мой вход всегда получает два IP-адреса. Мой начальный процесс мышления состоял в том, что должен быть только один внешний ip, и это могло бы поразить мой вход, который затем направляется nginx для маршрутизации. Или ip напрямую связан с nginx? Во всяком случае, первый созданный IP-адрес, похоже, дал мне ожидаемые результаты, когда неудача при посещении второго IP-адреса.
Несмотря на то, что мое замешательство, похоже, отлично работает над HTTP. За HTTPS не так много. Сначала, когда я сделал веб-запрос по https, вещи просто зависали. Я открыл 443 в своих правилах брандмауэра, которые, казалось, работали, однако я бы ударил по умолчанию, а не по микросервису.
Чтение привело меня к этому из документов Kubernetes: В настоящее время ресурс Ingress поддерживает только правила http. Это может объяснить, почему я нажимаю бэкэнда по умолчанию, потому что мои правила предназначены только для HTTP. Но если да, то как я должен использовать этот подход для SSL?
Еще одна вещь, которую я заметил, - это то, что если я напишу входной ресурс без правил и предоставил ему мой желаемый бэкэнд, я все равно буду перенаправлен на мой первоначальный бэкэнд по умолчанию. Это еще более странно, потому что kubectl описывает обновление и заявляет, что мой основной бэкэнд - это мой желаемый бэкэнд ...
Любая помощь или руководство будут очень признательны. Благодаря!
Можете вы добавить файлы json/yaml для конфигурации входа и сервиса? –