Поделиться через


Вход в службе Azure Kubernetes (AKS)

Ingress в AKS — это ресурс Kubernetes, управляющий внешним доступом HTTP-подобного трафика к службам в кластере. Механизм входящего трафика AKS может предоставлять такие услуги, как балансировка нагрузки, SSL терминализация и виртуальное размещение с использованием имен. Дополнительные сведения о Kubernetes Ingress см. в документации по Kubernetes Ingress.

Ингресс-контроллеры

При управлении трафиком приложения инфраструктурные контроллеры предоставляют расширенные возможности, осуществляя операцию на уровне 7. Они могут направлять HTTP-трафик в различные приложения на основе входящего URL-адреса, что позволяет использовать более интеллектуальные и гибкие правила распределения трафика. Например, контроллер входящего трафика может направлять трафик в разные микрослужбы в зависимости от пути URL-адреса, повышая эффективность и организацию служб.

С другой стороны, служба типа LoadBalancer при создании настраивает базовый ресурс балансировки нагрузки Azure. Этот балансировщик нагрузки работает на уровне 4, распределяя трафик к pod'ам в вашей службе по указанному порту. Однако службы уровня 4 не знают о фактических приложениях и не могут реализовать эти типы сложных правил маршрутизации.

Понимание различий между этими двумя подходами помогает выбрать подходящее средство для управления трафиком.

Схема, показывающая поток входящего трафика в кластере AKS

Сравнение вариантов входа

В следующей таблице перечислены различия функций между разными параметрами контроллера входящего трафика:

Функция Надстройка маршрутизации приложений Шлюз приложений для контейнеров Сетка службы Azure или сетка службы на основе Istio
Контроллер входящего трафика или шлюза Контроллер входящего трафика NGINX Шлюз приложений Azure для контейнеров Шлюз Istio Ingress
API Ingress API API входа и API шлюза API Istio Ingress
Услуги размещения В кластере Размещено в Azure В кластере
Масштабирование Автомасштабирование Автомасштабирование Автомасштабирование
Балансировка нагрузки Внутренний или внешний Внешнее Внутренний или внешний
Завершение SSL В кластере Да: разгрузка и сквозное шифрование SSL В кластере
mTLS Не применимо Да: интерфейсная и серверная часть Не применимо
Статический IP-адрес Не применимо Полное доменное имя (FQDN) Не применимо
Хранимые SSL-сертификаты Azure Key Vault Да Да Не применимо
Интеграция Azure DNS для управления зонами DNS Да Да Не применимо

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

Вариант входа Когда следует использовать
Управляемый NGINX — надстройка маршрутизации приложений • Размещенные в кластере, настраиваемые и масштабируемые контроллеры входа NGINX.
• Основные возможности балансировки нагрузки и маршрутизации.
• Внутренняя и внешняя конфигурация подсистемы балансировки нагрузки.
• Конфигурация статических IP-адресов.
• Интеграция с Azure Key Vault для управления сертификатами.
• Интеграция с зонами Azure DNS для общедоступного и частного управления DNS.
• Поддерживает Ingress API.
Шлюз приложений для контейнеров • Шлюз для входящего трафика, размещенный на Azure.
• Гибкие стратегии развертывания, управляемые контроллером или принести собственный шлюз приложений для контейнеров.
• Расширенные функции управления трафиком, такие как автоматическая повторная попытка, защита в зоне доступности, взаимная проверка подлинности (mTLS) на целевой сервер, разделение трафика или взвешенная очередность, и функции автомасштабирования.
• Интеграция с Azure Key Vault для управления сертификатами.
• Интеграция с зонами Azure DNS для общедоступного и частного управления DNS.
• Поддерживает API Ingress и Gateway.
Шлюз входящего трафика Istio • На основе Envoy при использовании с Istio для сервисной сети.
• Расширенные функции управления трафиком, такие как ограничение скорости и нарушение цепи.
• Поддержка mTLS

Замечание

API шлюза для трафика Istio ingress ещё не поддерживается как дополнение для Istio, но в настоящее время активно разрабатывается.

Создать ресурс Ingress

Модуль маршрутизации приложений — это рекомендуемый способ настройки контроллера Ingress в AKS. Дополнение для маршрутизации приложений — это полностью управляемый ингресс-контроллер для службы Azure Kubernetes (AKS), предоставляющий следующие функции:

  • Простая настройка управляемых контроллеров NGINX Ingress, основанных на Kubernetes NGINX Ingress Controller.

  • Интеграция с Azure DNS для управления общедоступными и частными зонами.

  • Завершение SSL с сертификатами, хранящимися в Azure Key Vault.

Дополнительные сведения о надстройке маршрутизации приложений см. в разделе "Управляемый входящий трафик NGINX" с надстройкой маршрутизации приложений.

Сохранение IP-адресов источника клиента

Настройте контроллер входящего трафика, чтобы сохранить ИСХОДНЫй IP-адрес клиента для запросов к контейнерам в кластере AKS. Когда контроллер входящего трафика направляет запрос клиента в контейнер в кластере AKS, исходный ИСХОДНЫй IP-адрес этого запроса недоступен целевому контейнеру. Если включить сохранение IP-адресов источника клиента, исходный IP-адрес клиента доступен в заголовке запроса в разделе X-Forwarded-For.

Если вы используете сохранение IP-адресов источника клиента на контроллере входящего трафика, вы не можете использовать сквозную передачу TLS. Сохранение IP-адресов клиента и сквозной протокол TLS можно использовать с другими службами, такими как тип LoadBalancer .

Дополнительные сведения о сохранении IP-адресов источника клиента см. в статье о том, как работает сохранение исходного IP-адреса клиента для служб LoadBalancer в AKS.