Настройка балансировщика нагрузки AKS для доступа HTTPS - PullRequest
0 голосов
/ 20 ноября 2018

Я портирую приложение, изначально разработанное для контейнерной службы AWS Fargate, на AKS в Azure. В реализации AWS балансировщик нагрузки приложения создается и размещается перед микросервисом пользовательского интерфейса. Этот балансировщик нагрузки настроен на использование подписанного сертификата, который обеспечивает доступ https к нашему фону.

Я провел несколько поисков на эту тему и выяснил, как что-то подобное можно настроить в AKS. Я нашел много разных ответов на множество похожих вопросов, но ни один из них не является тем, что я ищу. Насколько я понимаю, в Azure нет точного эквивалента подходу AWS. Отличительной особенностью решения AWS является то, что вы заранее создаете балансировщик нагрузки приложения и настраиваете его для использования сертификата, а затем настраиваете прослушиватель https для внутреннего микросервиса пользовательского интерфейса.

В случае Azure, когда вы вводите команду "az aks create", балансировщик нагрузки создается автоматически. Кажется, не существует способа сделать большую настройку, особенно в том, что касается сертификатов. У меня сложилось впечатление, что балансировщик нагрузки по умолчанию, созданный AKS, в конечном итоге не является механизмом, который можно использовать для этого. Другим вариантом может быть шлюз приложения, как описано здесь . Я не уверен, как адаптировать это обсуждение к AKS. Модуль пользовательского интерфейса должен быть конечной целью любого трафика, проходящего через шлюз приложения, но шлюз использует подсеть, отличную от той, которая используется для модулей в кластере AKS.

Так что я не уверен, как поступить. Мой вопрос: является ли шлюз приложений правильным решением для предоставления доступа https к пользовательскому интерфейсу, работающему в кластере AKS, или мне нужен другой подход?

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Вы правы, балансировщик нагрузки по умолчанию, созданный AKS, является LB уровня 4 и не поддерживает разгрузку SSL.Эквивалентом балансировщика нагрузки приложений AWS в Azure является шлюз приложений .На данный момент в AKS нет опции, которая позволяет выбирать шлюз приложений вместо классического балансировщика нагрузки, но, как сказал alev, существует текущий проект , который все еще находится в предварительном просмотре, который позволит развернуть специальныйвходной контроллер, который будет управлять правилами маршрутизации на внешнем шлюзе приложений на основе ваших входных правил.Если вам действительно нужно что-то готовое для производства, вот ваши варианты:

  1. Разверните контроллер Ingress, например NGINX , Traefik и т. Д., И используйте cert-manager для создания вашего сертификата.
  2. Создайте шлюз приложений и управляйте собственным правилом маршрутизации, которое будет указывать на уровень по умолчанию 4 LB (служба LoadBalancer k8s или через входной контроллер)

В последнее время мы реализовали нечто подобное, и мы решили управлять своим собственным шлюзом приложений, потому что мы хотели выполнить разгрузку SSL вне кластера и потому, что нам была нужна функция WAF шлюза приложений.Мы смогли автоматически управлять правилами маршрутизации в нашем конвейере развертывания.Вероятно, мы будем использовать шлюз приложений в качестве входного проекта, когда он будет готов к работе.

0 голосов
/ 20 ноября 2018

Выпуск и продление сертификата не обрабатываются входом, но с помощью cert-manager вы можете легко добавить свой собственный CA или использовать Let's encrypt для автоматической выдачи сертификатов при аннотировании входных или служебных объектов. Аддон http_application_routing для AKS вполне способен работать с cert-manager; может быть дополнительно настроен с помощью ConfigMaps (addon-http-application-routing-nginx-configuration в пространстве имен kube-system). Вы также можете посмотреть первоначальную поддержку Application Gateway как вход здесь

...