Ingress Nginx Operator
Содержание
OverviewInstallationConfiguration Via Web ConsoleConfiguration Via YAMLIngress ShardingСоздание IngressNginx, который обрабатывает Ingress во всех NSСоздание IngressNginx, который обрабатывает Ingress в конкретных NSОткрытие доступа через LoadBalancerРасширенные настройки развертывания контроллераSSL PassthroughПоддержка Dual-Stack IPv4 и IPv6Additional ResourcesОтличия значений по умолчанию от официального чартаOverview
Ingress Nginx Operator предоставлен для упрощения продвинутого управления развертываниями Ingress-Nginx.
Этот Operator оптимизирует процессы развертывания, настройки и обслуживания экземпляров Ingress-Nginx. Операционная архитектура функционирует следующим образом: Ingress-Nginx Operator непрерывно отслеживает Custom Resource типа ingressnginxes.ingress-nginx.alauda.io (IngressNginx) и автоматически создает соответствующие экземпляры Ingress-Nginx для каждого определенного ресурса IngressNginx. Такая архитектура позволяет напрямую управлять пользовательскими ресурсами IngressNginx для контроля функциональности и поведения Ingress-Nginx.
Installation
- Перейдите в
Administrator -> Marketplace -> OperatorHub - Найдите
Alauda build of Ingress NGINX Controllerи нажмитеInstall
Configuration Via Web Console
Мы предоставляем базовые параметры конфигурации через пользовательский интерфейс, который сгенерирует соответствующий YAML для вас. Для более сложных настроек вы можете редактировать YAML напрямую.
После завершения установки Ingress Nginx Operator:
- Перейдите на вкладку
All Instances - Нажмите
Create, затем в появившемся диалоговом окне найдите раздел типа экземпляра IngressNginx и нажмитеCreate
Configuration Via YAML
По умолчанию Ingress Nginx Operator развертывает экземпляры Ingress Nginx в том же пространстве имен, что и соответствующий пользовательский ресурс IngressNginx.
Ingress Sharding
По умолчанию Ingress Nginx обрабатывает ресурсы Ingress во всех пространствах имен для ingress-ресурсов, которые либо явно указывают имя своего IngressClass, либо не указывают его вовсе. Вы можете использовать .controller.scope.namespaceSelector, чтобы ограничить экземпляр определёнными пространствами имен. Например, следующий ресурс IngressNginx demo-scope обрабатывает ingress-ресурсы только в пространствах имен с меткой cpaas.io/project=demo.
Создание IngressNginx, который обрабатывает Ingress во всех NS
Создание IngressNginx, который обрабатывает Ingress в конкретных NS
- формат:
$LABLE_KEY=$LABLE_VALUE
Открытие доступа через LoadBalancer
По умолчанию Ingress Controller настроен с типом сервиса ClusterIP. Чтобы открыть Ingress Controller извне с помощью сервиса LoadBalancer, примените следующую конфигурацию:
Сервисы LoadBalancer требуют интеграции с внешним балансировщиком нагрузки (балансировщик облачного провайдера или MetalLB) для выделения внешнего IP.
Чтобы указать VIP LoadBalancer при использовании MetalLB:
Расширенные настройки развертывания контроллера
Настройка сетевого режима, количества реплик, лимитов ресурсов и выбора узлов:
SSL Passthrough
Включение функциональности SSL passthrough:
При SSL passthrough TLS завершается на бэкенде, поэтому функции уровня L7 (например, манипуляции заголовками запросов/ответов, WAF, перенаправление HTTP на HTTPS, некоторые потоки аутентификации) не будут применяться к такому трафику на контроллере.
Поддержка Dual-Stack IPv4 и IPv6
Additional Resources
Поле .spec ресурса IngressNginx напрямую соответствует значениям Helm chart для Ingress Nginx. Для дополнительных параметров конфигурации обратитесь к официальной документации Ingress NGINX.
Отличия значений по умолчанию от официального чарта
- По умолчанию каждый экземпляр IngressNginx создает IngressClass с именем
$ns-$nameи controllerValueingress-nginx.cpaas.io/$ns-$name. Эти значения можно настроить с помощью параметров.spec.ingressClassResource.nameи.spec.ingressClassResource.controllerValue. - По умолчанию
.spec.controller.service.typeустановлен вClusterIP. - По умолчанию
.spec.controller.watchIngressWithoutClassустановлен вtrue, что означает, что контроллер будет обрабатывать ресурсы Ingress, не указывающие IngressClass.