IngressNginxController
Scope: Cluster
- объектspec
Обязательный параметр
- массив строкspec.acceptRequestsFrom
Список адресов в формате CIDR, которым разрешен доступ к контроллеру.
Независимо от инлета всегда проверяется непосредственный адрес (поле
original_addressв логах), с которого производится подключение, а не адрес клиента, который может передаваться в некоторых инлетах через заголовки или с использованием proxy protocol.Параметр реализован с помощью map module. Если адрес, с которого производится подключение, не разрешен, nginx закрывает соединение, отправляя код
444).По умолчанию к контроллеру можно подключаться с любых адресов.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- объектspec.additionalHeaders
Дополнительные заголовки, которые будут добавлены к каждому запросу. Указываются в формате
ключ: значение(строка). - объектspec.additionalLogFields
Дополнительные поля, которые будут добавлены в логи nginx. Указываются в формате
ключ: значение(строка). - булевыйspec.annotationValidationEnabled
Включает валидацию аннотаций Ingress-правил.
По умолчанию:
false - булевыйspec.chaosMonkey
Инструмент, позволяющий систематически вызывать случайные прерывания работы подов контроллера.
Предназначен для проверки Ingress-контроллера на реальную работу отказоустойчивости.
По умолчанию:
false - объектspec.config
Секция настроек Ingress-контроллера, в которую в формате
ключ: значение(строка)можно записать любые возможные опции.Ошибка в опциях может привести к неработоспособности Ingress-контроллера.
Используйте опцию с осторожностью, поскольку обратная совместимость и работоспособность Ingress-контроллера не гарантируются.
- строкаspec.controllerLogLevel
Определяет уровень логирования для журналов Ingress-контроллера.
По умолчанию:
InfoДопустимые значения:
Error— в журнал будут записываться только критические ошибки.Warn— в журнал будут записываться предупреждения и ошибки.Info— информационные сообщения, включая базовые сведения для отладки.Extended— расширенная информация об изменениях в состоянии системы.Debug— подробный отладочный вывод, может включать избыточные данные.Trace— журналы на уровне трассировки с подробным пошаговым контекстом. - объектspec.controllerPodsAdditionalAnnotations
Дополнительные пользовательские аннотации для подов Ingress-контроллера.
Используйте параметр с осторожностью, поскольку обратная совместимость и работоспособность Ingress-контроллера при использовании параметра не гарантируются.
- строкаspec.controllerVersion
Версия NGINX Ingress Controller.
По умолчанию используется версия из настроек модуля.
Допустимые значения:
1.9,1.10,1.12 - объектspec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция указана в настройках, все параметры в ней являются обязательными.
Изменение любого параметра приводит к перезапуску всех Ingress-контроллеров.
- массив строкspec.customErrors.codes
Обязательный параметр
Список кодов ответа (массив), при которых запрос будет перенаправляться на кастомный бэкенд.
- строкаЭлемент массива
Шаблон:
^[1-5][0-9][0-9]$
- строкаspec.customErrors.namespace
Обязательный параметр
Название пространства имён, в котором будет находиться сервис, используемый в качестве кастомного бэкенда по умолчанию.
Пример:
namespace: default - строкаspec.customErrors.serviceName
Обязательный параметр
Имя сервиса, который будет использоваться в качестве кастомного бэкенда по умолчанию.
Пример:
serviceName: custom-errors-backend-service
- объектspec.defaultSSLCertificate
Сертификат, который используется:
- при запросах на
catch-all-сервер (подразумевается директива server nginx). Наcatch-all-сервер попадают запросы, для которых нет соответствующего Ingress-ресурса; - для Ingress–ресурсов, в которых не задан
secretNameв секцииtls.
По умолчанию используется самоподписанный сертификат.
Внимание. Параметр не влияет на сертификаты, используемые в Ingress-ресурсах модулей Deckhouse. Чтобы указать сертификат для Ingress-ресурсов модулей Deckhouse, используйте глобальный параметр
modules.https.customCertificate.- объектspec.defaultSSLCertificate.secretRef
Ссылка на Secret для передачи Ingress-контроллеру.
- строкаspec.defaultSSLCertificate.secretRef.name
Имя Secret, содержащего SSL–сертификат.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.defaultSSLCertificate.secretRef.namespace
Название пространства имён, в котором находится Secret с SSL-сертификатом.
По умолчанию:
d8-ingress-nginxШаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- при запросах на
- булевыйspec.disableHTTP2
Выключает HTTP/2.
По умолчанию:
false - булевыйspec.enableHTTP3
Включает HTTP/3.
HTTP/3 доступен только в контролере версии 1.10.
По умолчанию:
false - булевыйspec.enableIstioSidecar
Добавляет к подам контроллера аннотации для автоматического инжекта сайдкаров Istio.
При включении этого параметра к подам Ingress-контроллера добавляются аннотации
sidecar.istio.io/inject: "true"иtraffic.sidecar.istio.io/includeOutboundIPRanges: "<Service CIDR>". При создании таких подов к ним автоматически будут добавлены сайдкары Istio с помощью mutating webhook. После этого весь трафик в сторону Service CIDR будет перехватываться сайдкаром.Чтобы воспользоваться этой функцией, добавьте аннотации в прикладные Ingress-ресурсы:
nginx.ingress.kubernetes.io/service-upstream: "true"— с этой аннотацией Ingress-контроллер будет отправлять запросы на ClusterIP сервиса (из диапазона Service CIDR) вместо того, чтобы слать их напрямую в поды приложения. Сайдкарistio-proxyперехватывает трафик только в сторону диапазона Service CIDR, остальные запросы отправляются напрямую;nginx.ingress.kubernetes.io/upstream-vhost: myservice.myns.svc— с данной аннотацией сайдкар сможет идентифицировать прикладной сервис, для которого предназначен запрос.
Внимание. Данный параметр не может быть включен, если инлет Ingress-контроллера установлен в значение
HostWithFailover. - объектspec.geoIP2
Опции для включения GeoIP2.
- массив строкspec.geoIP2.maxmindEditionIDs
Список ревизий баз данных, которые будут скачаны при старте.
Подробнее о базах данных GeoLite — в статье в блоге MaxMind.
По умолчанию:
["GeoLite2-City","GeoLite2-ASN"]- строкаЭлемент массива
Допустимые значения:
GeoIP2-Anonymous-IP,GeoIP2-Country,GeoIP2-City,GeoIP2-Connection-Type,GeoIP2-Domain,GeoIP2-ISP,GeoIP2-ASN,GeoLite2-ASN,GeoLite2-Country,GeoLite2-City
- строкаspec.geoIP2.maxmindLicenseKey
Лицензионный ключ для скачивания базы данных GeoIP2.
При наличии ключа в конфигурации база GeoIP2 скачивается при каждом старте контроллера. Подробнее о получении ключа — в статье в блоге MaxMind.
- объектspec.hostPort
Секция настроек инлета
HostPort.- булевыйspec.hostPort.behindL7Proxy
Включает обработку и передачу заголовков
X-Forwarded-*.Внимание. Перед использованием этой опции убедитесь, что запросы к Ingress направляются только от доверенных источников. Для настройки ограничений воспользуйтесь параметром
acceptRequestsFrom. - целочисленныйspec.hostPort.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, подключение по HTTP невозможно.
Параметр обязателен в случае, если не задан
httpsPort.Пример:
httpPort: 80 - целочисленныйspec.hostPort.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, подключение по HTTPS невозможно.
Параметр обязателен в случае, если не задан
httpPort.Пример:
httpsPort: 443 - строкаspec.hostPort.realIPHeader
Заголовок, из которого будет получен настоящий IP-адрес клиента.
Работает только при включенной опции
behindL7Proxy.По умолчанию:
X-Forwarded-ForПример:
realIPHeader: CF-Connecting-IP
- объектspec.hostPortWithProxyProtocol
Секция настроек инлета
HostPortWithProxyProtocol.- целочисленныйspec.hostPortWithProxyProtocol.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, подключение по HTTP невозможно.
Параметр обязателен в случае, если не задан
httpsPort.Пример:
httpPort: 80 - целочисленныйspec.hostPortWithProxyProtocol.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, подключение по HTTPS невозможно.
Параметр обязателен в случае, если не задан
httpPort.Пример:
httpsPort: 443
- объектspec.hostPortWithSSLPassthrough
Секция настроек инлета
HostPortWithSSLPassthrough.- целочисленныйspec.hostPortWithSSLPassthrough.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, подключение по HTTP невозможно.
Параметр обязателен в случае, если не задан
httpsPort.Пример:
httpPort: 80 - целочисленныйspec.hostPortWithSSLPassthrough.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, подключение по HTTPS невозможно.
Параметр обязателен в случае, если не задан
httpPort.Пример:
httpsPort: 443
- булевыйspec.hsts
Включает использование заголовков ответа HTTP Strict-Transport-Security (HSTS). Подробнее о заголовках HSTS — в статье на портале MDN Web Docs.
По умолчанию:
false - объектspec.hstsOptions
Параметры HSTS.
- булевыйspec.hstsOptions.includeSubDomains
Применяет настройки HSTS ко всем поддоменам сайта.
По умолчанию:
false - строкаspec.hstsOptions.maxAge
Время в секундах, в течение которого браузер помнит, что сайт доступен только с помощью HTTPS.
По умолчанию:
31536000Шаблон:
^[1-9][0-9]*$Пример:
maxAge: '31536000' - булевыйspec.hstsOptions.preload
Добавляет сайт в список предзагрузки.
Список указывает браузерам, что подключение к перечисленным сайтам должно осуществляться только по HTTPS.
По умолчанию:
false
- строкаspec.ingressClass
Имя Ingress-класса для обслуживания NGINX Ingress Controller.
Позволяет создать несколько контроллеров для обслуживания одного Ingress-класса.
Если указать значение
nginx, дополнительно будут обрабатываться Ingress-ресурсы без аннотацииkubernetes.io/ingress.classили поляspec.ingressClassName.По умолчанию:
nginxШаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
ingressClass: nginx - строкаspec.inlet
Обязательный параметр
Способ приема трафика из внешней сети. Изменение установленного способа невозможно.
Возможные значения:
LoadBalancer— устанавливается Ingress-контроллер, и заказывается сервис с типомLoadBalancer;LoadBalancerWithProxyProtocol— устанавливается Ingress-контроллер, и заказывается сервис с типомLoadBalancer. Ingress-контроллер использует proxy-protocol для получения настоящего IP-адреса клиента;-
LoadBalancerWithSSLPassthrough— устанавливается Ingress-контроллер, и заказывается сервис с типомLoadBalancer. Этот инлет включает функцию SSL Passthrough, которая позволяет настроить бэкенды на приём SSL-трафика напрямую, без терминации на Ingress-контроллере.Функция SSL Passthrough реализована путем перехвата всего трафика на настроенном HTTPS-порту (по умолчанию:
443) и передачи его локальному TCP-прокси. Это полностью обходит NGINX и приводит к существенному снижению производительности.Протокол SSL Passthrough использует Server Name Indication (SNI) и считывает данные о виртуальном домене из протокола согласования TLS, для чего требуется подходящий клиент.
Если имя хоста не совпадает с запрошенным именем хоста, запрос передается в NGINX на настроенный SSL Passthrough прокси-порт (по умолчанию:
442), который затем передает запрос серверу по умолчанию.В отличие от HTTP-бэкендов, трафик для SSL Passthrough бэкендов отправляется на ClusterIP, а не на отдельные эндпоинты.
Поскольку SSL Passthrough работает на 4 уровне модели OSI (TCP), а не на уровне 7 (HTTP), использование SSL Passthrough делает невозможным использование всех остальных аннотаций, установленных для Ingress.
HostPort— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort;-
HostPortWithProxyProtocol— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPortи использует proxy-protocol для получения настоящего IP-адреса клиента.Важно. Перед использованием этого инлета убедитесь, что запросы к Ingress будут направляться только от доверенных источников. Для настройки ограничений воспользуйтесь параметром
acceptRequestsFrom. -
HostPortWithSSLPassthrough— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort. Этот инлет включает функцию SSL Passthrough, которая позволяет настроить бэкенды на приём SSL-трафика напрямую, без терминации на Ingress-контроллере.Укажите параметры работы инлета в секции
spec.HostPortWithSSLPassthrough.Протокол SSL Passthrough использует SNI и считывает данные о виртуальном домене из протокола согласования TLS, для чего требуется подходящий клиент.
Если имя хоста не совпадает с запрошенным именем хоста, запрос передается в NGINX на настроенный SSL Passthrough прокси-порт (по умолчанию:
442), который затем передает запрос серверу по умолчанию.Функция SSL Passthrough реализована путем перехвата всего трафика на настроенном HTTPS-порту (по умолчанию:
443) и передачи его локальному TCP-прокси. Это полностью обходит NGINX и приводит к существенному снижению производительности.В отличие от HTTP-бэкендов, трафик для SSL Passthrough бэкендов отправляется на ClusterIP, а не на отдельные эндпоинты.
Поскольку SSL Passthrough работает на 4 уровне модели OSI (TCP), а не на уровне 7 (HTTP), использование SSL Passthrough делает невозможным использование всех остальных аннотаций, установленных для Ingress.
-
HostWithFailover— устанавливаются два Ingress-контроллера — основной и резервный. Основной контроллер запускается вhostNetwork. Если поды основного контроллера недоступны, трафик уходит в резервный контроллер.На одном хосте может быть только один контроллер с данным типом инлета.
Убедитесь, что на узле свободны следующие порты:
80,81,443,444,4207,4208.Чтобы поменять инлет, удалите правила iptables и перезапустите поды
kube-proxyили перезагрузите узлы, на которых размещались Ingress-контроллеры.Данный инлет не может быть использован, если параметр
enableIstioSidecarвключен.
Допустимые значения:
LoadBalancer,LoadBalancerWithSSLPassthrough,LoadBalancerWithProxyProtocol,HostPort,HostPortWithSSLPassthrough,HostPortWithProxyProtocol,HostWithFailover - булевыйspec.legacySSL
Определяет, разрешены ли устаревшие версии протокола TLS и алгоритмов шифрования (cipher suites).
Работа разрешена для следующих версий протокола TLS:
TLSv1,TLSv1.1,TLSv1.2,TLSv1.3.Допустимые комбинации алгоритмов шифрования, расположенные в порядке от наиболее надёжной к наименее надёжной:
ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,AES256-GCM-SHA384,AES128-GCM-SHA256,AES256-SHA256,AES128-SHA256,AES256-SHA,AES128-SHA.По умолчанию включены только
TLSv1.2,TLSv1.3и самые новые алгоритмы шифрования. - объектspec.loadBalancer
Необязательный параметр.
Секция настроек инлета
LoadBalancer.- объектspec.loadBalancer.annotations
Аннотации, которые будут назначены сервису для гибкой настройки балансировщика.
Модуль не учитывает особенности указания аннотаций в различных облаках.
Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров пересоздайте ресурс IngressNginxController (или создайте новый и удалите старый).
- булевыйspec.loadBalancer.behindL7Proxy
Включает обработку и передачу заголовков
X-Forwarded-*.Внимание. Перед использованием этой опции убедитесь, что запросы к Ingress направляются только от доверенных источников.
- строкаspec.loadBalancer.loadBalancerClass
Класс балансировщика входящих сетевых запросов (пробрасывается в параметр
spec.loadBalancerClassзаказанного сервиса с типомLoadBalancer). - строкаspec.loadBalancer.realIPHeader
Заголовок, из которого будет получен настоящий IP-адрес клиента.
Работает только при включении
behindL7Proxy.По умолчанию:
X-Forwarded-ForПример:
realIPHeader: CF-Connecting-IP - массив строкspec.loadBalancer.sourceRanges
Список адресов в формате CIDR, которым разрешен доступ к балансировщику.
Внимание. Облачный провайдер может не поддерживать данную опцию и игнорировать ее.
- Провайдеры поддерживающие опцию: AWS, Azure, GCP.
- Провайдеры игнорирующие опцию: Yandex Cloud.
Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Протестируйте работу опции перед использованием в production-среде.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- объектspec.loadBalancerWithProxyProtocol
Необязательный параметр.
Секция настроек инлета
LoadBalancerWithProxyProtocol.- объектspec.loadBalancerWithProxyProtocol.annotations
Аннотации, которые будут назначены сервису для гибкой настройки балансировщика.
Модуль не учитывает особенности указания аннотаций в различных облаках.
Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров пересоздайте ресурс IngressNginxController (или создайте новый и удалите старый).
- строкаspec.loadBalancerWithProxyProtocol.loadBalancerClass
Класс балансировщика входящих сетевых запросов (пробрасывается в параметр
spec.loadBalancerClassзаказанного сервиса с типомLoadBalancer). - массив строкspec.loadBalancerWithProxyProtocol.sourceRanges
Список адресов в формате CIDR, которым разрешен доступ к балансировщику.
Внимание. Облачный провайдер может не поддерживать данную опцию и игнорировать ее.
Провайдеры поддерживающие опцию: AWS, Azure, GCP. Провайдеры игнорирующие опцию: Yandex Cloud.
Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Протестируйте работу опции перед использованием в production-среде.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- объектspec.loadBalancerWithSSLPassthrough
Необязательный параметр.
Секция настроек инлета
LoadBalancerWithSSLPassthrough.- объектspec.loadBalancerWithSSLPassthrough.annotations
Аннотации, которые будут назначены сервису для гибкой настройки балансировщика.
Модуль не учитывает особенности указания аннотаций в различных облаках.
Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров пересоздайте ресурс IngressNginxController (или создайте новый и удалите старый).
- строкаspec.loadBalancerWithSSLPassthrough.loadBalancerClass
Класс балансировщика входящих сетевых запросов (пробрасывается в параметр
spec.loadBalancerClassзаказанного сервиса с типом LoadBalancer). - массив строкspec.loadBalancerWithSSLPassthrough.sourceRanges
Список адресов в формате CIDR, которым разрешен доступ к балансировщику.
Внимание. Облачный провайдер может не поддерживать данную опцию и игнорировать ее.
Провайдеры поддерживающие опцию: AWS, Azure, GCP. Провайдеры игнорирующие опцию: Yandex Cloud.
Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Протестируйте работу опции перед использованием в production-среде.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- целочисленныйspec.maxReplicas
Максимальное количество реплик
LoadBalancerLoadBalancerWithProxyProtocolиLoadBalancerWithSSLPassthroughдля HPA.По умолчанию:
1Допустимые значения:
1 <= X - целочисленныйspec.minReplicas
Минимальное количество реплик
LoadBalancer,LoadBalancerWithProxyProtocolиLoadBalancerWithSSLPassthroughдля HPA.По умолчанию:
1Допустимые значения:
1 <= X - булевыйspec.nginxProfilingEnabled
Включает профилирование NGINX с помощью Valgrind. Отчет об анализе памяти сохраняется в каталоге
/var/log/valgrindна хосте. При включении Valgrind создает файл с именемmemcheck.${timestamp}.log.После завершения отладки не забудьте отключить режим профилирования!
Отчет содержит информацию о поведении процесса, включая возможные утечки памяти.
Внимание. Включение этой опции значительно увеличивает использование памяти и замедляет обработку запросов HTTP/HTTPS процессом NGINX.
Внимание. Когда включена опция, под контроллера ingress-nginx запускается в привилегированном режиме.
- объектspec.nodeSelector
Аналогично параметру
spec.nodeSelectorу подов.Если значение не указано или указано
false, Deckhouse попытается определить значение автоматически.Используйте формат стандартного списка
nodeSelector. Поды инстанса унаследуют это поле как есть. - объектspec.resourcesRequests
Настройки максимальных значений CPU и памяти (memory), которые может запросить под при выборе узла. Если VPA выключен, максимальные значения становятся значениями по умолчанию.
- строкаspec.resourcesRequests.mode
Обязательный параметр
Режим управления запросами ресурсов.
По умолчанию:
VPAДопустимые значения:
VPA,Static - объектspec.resourcesRequests.static
Настройки статического режима управления.
- строкаspec.resourcesRequests.static.cpu
Значение для запроса к CPU.
По умолчанию:
350m - строкаspec.resourcesRequests.static.memory
Значение для запроса к памяти.
По умолчанию:
500Mi
- объектspec.resourcesRequests.vpa
Настройки режима управления Vertical Pod Autoscaler (VPA).
- объектspec.resourcesRequests.vpa.cpu
Настройки ограничений запросов к CPU.
- строкаspec.resourcesRequests.vpa.cpu.max
Максимальное значение запроса к CPU, которое может выставить VPA.
По умолчанию:
50m - строкаspec.resourcesRequests.vpa.cpu.min
Минимальное значение запроса к CPU, которое может выставить VPA.
По умолчанию:
10m
- объектspec.resourcesRequests.vpa.memory
Настройки ограничений запросов к памяти.
- строкаspec.resourcesRequests.vpa.memory.max
Максимальное значение запроса к памяти, которое может выставить VPA.
По умолчанию:
200Mi - строкаspec.resourcesRequests.vpa.memory.min
Минимальное значение запроса к памяти, которое может выставить VPA.
По умолчанию:
50Mi
- строкаspec.resourcesRequests.vpa.mode
Режим работы VPA.
По умолчанию:
InitialДопустимые значения:
Initial,Auto
- массив объектовspec.tolerations
Аналогично параметру
spec.tolerationsу подов.Если значение не указано или указано
false, подам модуля автоматически устанавливаются все возможные tolerations.Используйте формат стандартного списка tolerations. Поды инстанса унаследуют это поле как есть.
- строкаspec.tolerations.effect
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаspec.tolerations.key
- строкаspec.tolerations.operator
По умолчанию:
EqualДопустимые значения:
Exists,Equal - целочисленныйspec.tolerations.tolerationSeconds
- строкаspec.tolerations.value
- булевыйspec.underscoresInHeaders
Разрешает использовать символ нижнего подчеркивания в заголовках.
Вспомогательные ресурсы:
По умолчанию:
false - булевыйspec.validationEnabled
Включает валидацию Ingress-правил.
Внимание. Включение валидации увеличивает нагрузку на master-узлы кластера.
По умолчанию:
true - целочисленныйspec.waitLoadBalancerOnTerminating
Количество секунд до того момента, когда эндпойнт
/healthzначнёт возвращать код500после перехода пода в статусTerminating.
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
- объектspec
Обязательный параметр
- массив строкspec.acceptRequestsFrom
Список адресов в формате CIDR, которым разрешено подключаться к контроллеру.
Независимо от инлета всегда проверяется непосредственный адрес (в логах содержится в поле
original_address), с которого производится подключение, а не «адрес клиента», который может передаваться в некоторых инлетах через заголовки или с использованиемproxy protocol.Параметр реализован с помощью map module, и если адрес, с которого непосредственно производится подключение, не разрешен – NGINX закрывает соединение (используя return 444).
По умолчанию к контроллеру можно подключаться с любых адресов.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- объектspec.additionalHeaders
Дополнительные header’ы, которые будут добавлены к каждому запросу. Указываются в формате
ключ: значение(строка). - объектspec.additionalLogFields
Дополнительные поля, которые будут добавлены в логи nginx. Указываются в формате
ключ: значение(строка). - булевыйspec.annotationValidationEnabled
Включить валидацию аннотаций Ingress-правил.
По умолчанию:
false - булевыйspec.chaosMonkey
Инструмент, позволяющий систематически вызывать случайные прерывания работы подов контроллера.
Предназначен для проверки Ingress-контроллера на реальную работу отказоустойчивости.
По умолчанию:
false - объектspec.config
Секция настроек Ingress-контроллера, в которую в формате
ключ: значение(строка)можно записать любые возможные опции.Внимание. Ошибка в указании опций может привести к отказу в работе Ingress-контроллера.
Внимание. Не рекомендуется использовать данную опцию, так как не гарантируется обратная совместимость или работоспособность Ingress-контроллера.
- строкаspec.controllerVersion
Версия NGINX Ingress controller.
По умолчанию используется версия из настроек модуля.
Допустимые значения:
1.9,1.10,1.12 - объектspec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция определена, все параметры в ней являются обязательными, изменение любого параметра приводит к перезапуску всех NGINX Ingress controller’ов.
- массив строкspec.customErrors.codes
Обязательный параметр
Список кодов ответа (массив), при которых запрос будет перенаправляться на custom default backend.
- строкаЭлемент массива
Шаблон:
^[1-5][0-9][0-9]$
- строкаspec.customErrors.namespace
Обязательный параметр
Имя namespace, в котором будет находиться сервис, используемый как custom default backend.
Пример:
namespace: default - строкаspec.customErrors.serviceName
Обязательный параметр
Имя сервиса, который будет использоваться как custom default backend.
Пример:
serviceName: custom-errors-backend-service
- объектspec.defaultSSLCertificate
Сертификат, который используется:
- при запросах на
catch-all-сервер (подразумевается директива server nginx). Наcatch-all-сервер попадают запросы, для которых нет соответствующего Ingress-ресурса; - для Ingress–ресурсов, в которых не задан
secretNameв секцииtls.
По умолчанию используется самоподписанный сертификат.
Внимание. Параметр не влияет на сертификаты, используемые в Ingress-ресурсах модулей Deckhouse. Для указания сертификата, который будет использоваться в Ingress-ресурсах модулей Deckhouse, используйте глобальный параметр modules.https.customCertificate.
- объектspec.defaultSSLCertificate.secretRef
Ссылка на Secret для передачи Ingress-контроллеру.
- строкаspec.defaultSSLCertificate.secretRef.name
Имя Secret’а, содержащего SSL–сертификат.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - строкаspec.defaultSSLCertificate.secretRef.namespace
Имя namespace, в котором находится Secret с SSL—сертификатом.
По умолчанию:
d8-ingress-nginxШаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- при запросах на
- булевыйspec.disableHTTP2
Выключить ли HTTP/2.
По умолчанию:
false - булевыйspec.enableIstioSidecar
Добавить к подам контроллера аннотации для автоматического инжекта сайдкаров Istio. При включении этого параметра к подам Ingress-контроллера добавляются аннотации
sidecar.istio.io/inject: "true"иtraffic.sidecar.istio.io/includeOutboundIPRanges: "<Service CIDR>". При создании таких подов к ним автоматически будут добавлены сайдкары Istio с помощью mutating webhook. После этого весь трафик в сторону Service CIDR будет перехватываться сайдкаром.Чтобы воспользоваться этой функцией, необходимо доработать прикладные Ingress-ресурсы, добавив аннотации:
nginx.ingress.kubernetes.io/service-upstream: "true"— с этой аннотацией Ingress-контроллер будет отправлять запросы на ClusterIP сервиса (из диапазона Service CIDR) вместо того, чтобы слать их напрямую в поды приложения. Сайдкар istio-proxy перехватывает трафик только в сторону диапазона Service CIDR, остальные запросы отправляются напрямую;nginx.ingress.kubernetes.io/upstream-vhost: myservice.myns.svc— с данной аннотацией сайдкар сможет идентифицировать прикладной сервис, для которого предназначен запрос.
Внимание. Данный параметр не может быть включен, если инлет Ingress-контроллера установлен в значение
HostWithFailover. - объектspec.geoIP2
Опции для включения GeoIP2.
- массив строкspec.geoIP2.maxmindEditionIDs
Список ревизий баз данных, которые будут скачаны при старте.
По умолчанию:
["GeoLite2-City","GeoLite2-ASN"]- строкаЭлемент массива
Допустимые значения:
GeoIP2-Anonymous-IP,GeoIP2-Country,GeoIP2-City,GeoIP2-Connection-Type,GeoIP2-Domain,GeoIP2-ISP,GeoIP2-ASN,GeoLite2-ASN,GeoLite2-Country,GeoLite2-City
- строкаspec.geoIP2.maxmindLicenseKey
Лицензионный ключ для скачивания базы данных GeoIP2.
Указание ключа в конфигурации включает скачивание базы GeoIP2 при каждом старте контроллера. Подробнее о получении ключа.
- объектspec.hostPort
Секция настроек для инлета
HostPort.- булевыйspec.hostPort.behindL7Proxy
Включает обработку и передачу заголовков
X-Forwarded-*.Внимание. При использовании этой опции вы должны быть уверены, что запросы к Ingress-контроллеру направляются только от доверенных источников. Одним из способов настройки ограничения может служить опция
acceptRequestsFrom. - целочисленныйspec.hostPort.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, возможность подключения по HTTP отсутствует.
Обязательный параметр, если не указан
httpsPort.Пример:
httpPort: 80 - целочисленныйspec.hostPort.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, возможность подключения по HTTPS отсутствует.
Обязательный параметр, если не указан
httpPort.Пример:
httpsPort: 443 - строкаspec.hostPort.realIPHeader
Заголовок, из которого будет получен настоящий IP-адрес клиента.
Работает только при включении
behindL7Proxy.По умолчанию:
X-Forwarded-ForПример:
realIPHeader: CF-Connecting-IP
- объектspec.hostPortWithProxyProtocol
Секция настроек для инлета
HostPortWithProxyProtocol.- целочисленныйspec.hostPortWithProxyProtocol.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, возможность подключения по HTTP отсутствует.
Обязательный параметр, если не указан
httpsPort.Пример:
httpPort: 80 - целочисленныйspec.hostPortWithProxyProtocol.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, возможность подключения по HTTPS отсутствует.
Обязательный параметр, если не указан
httpPort.Пример:
httpsPort: 443
- объектspec.hstsOptions
Параметры HTTP Strict Transport Security.
- булевыйspec.hstsOptions.includeSubDomains
Применять ли настройки
HSTSко всем поддоменам сайта.По умолчанию:
false - строкаspec.hstsOptions.maxAge
Время в секундах, в течение которого браузер должен помнить, что сайт доступен только с помощью HTTPS.
По умолчанию:
31536000Шаблон:
^[1-9][0-9]*$Пример:
maxAge: '31536000' - булевыйspec.hstsOptions.preload
Добавлять ли сайт в список предзагрузки.
Эти списки используются современными браузерами и разрешают подключение к сайту только по HTTPS.
По умолчанию:
false
- строкаspec.ingressClass
Имя Ingress-класса для обслуживания NGINX Ingress controller.
Позволяет создать несколько контроллеров для обслуживания одного Ingress-класса.
Важно. Если указать значение “nginx”, дополнительно будут обрабатываться Ingress-ресурсы без аннотации
kubernetes.io/ingress.classили поляspec.ingressClassName.По умолчанию:
nginxШаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Пример:
ingressClass: nginx - строкаspec.inlet
Обязательный параметр
Способ приема трафика из внешней сети. Изменение установленного способа невозможно.
LoadBalancer— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer;LoadBalancerWithProxyProtocol— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer. Ingress-контроллер использует proxy-protocol для получения настоящего IP-адреса клиента;-
HostPort— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort;Требуется обязательная установка параметров в секции spec.HostPort.
-
HostPortWithProxyProtocol— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPortи использует proxy-protocol для получения настоящего IP-адреса клиента;Требуется обязательная установка параметров в секции spec.HostPortWithProxyProtocol.
Внимание. При использовании этого инлета, убедитесь, что запросы к Ingress-контроллеру направляются только от доверенных источников. Одним из способов настройки ограничения может служить параметр acceptRequestsFrom.
-
HostWithFailover— устанавливаются два Ingress-контроллера — основной и резервный. Основной контроллер запускается в hostNetwork. Если поды основного контроллера недоступны, трафик уходит в резервный контроллер;Внимание. На одном хосте может быть только один контроллер с данным типом инлета.
Внимание. Необходимо, чтобы на узле были свободны следующие порты: 80, 81, 443, 444, 4207, 4208.
Внимание. Чтобы поменять инлет, удалите правила iptables и перезапустите поды
kube-proxyили перезагрузите узлы, на которых размещались Ingress-контроллеры.Внимание. Данный инлет не может быть использован, если параметр
enableIstioSidecarвключен.
Допустимые значения:
LoadBalancer,LoadBalancerWithProxyProtocol,HostPort,HostPortWithProxyProtocol,HostWithFailover - булевыйspec.legacySSL
Определяет, разрешены ли устаревшие версии протокола TLS и алгоритмов шифрования (cipher suites).
Работа разрешена для следующих версий протокола TLS:
TLSv1,TLSv1.1,TLSv1.2,TLSv1.3.Допустимые комбинации алгоритмов шифрования, расположенные в порядке от наиболее надёжной к наименее надёжной:
ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,AES256-GCM-SHA384,AES128-GCM-SHA256,AES256-SHA256,AES128-SHA256,AES256-SHA,AES128-SHA.По умолчанию включены только
TLSv1.2,TLSv1.3и самые новые алгоритмы шифрования. - объектspec.loadBalancer
Необязательный параметр.
Секция настроек для инлета
LoadBalancer.- объектspec.loadBalancer.annotations
Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.
Внимание. Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа LoadBalancer’а применяются только при создании сервиса, для обновления подобных параметров необходимо будет пересоздать
IngressNginxController(или создать новый, затем удалив старый). - булевыйspec.loadBalancer.behindL7Proxy
Включает обработку и передачу заголовков
X-Forwarded-*.Внимание. При использовании этой опции вы должны быть уверены, что запросы к Ingress направляются только от доверенных источников.
- строкаspec.loadBalancer.loadBalancerClass
Класс балансировщика входящих сетевых запросов (пробрасывается в параметр
spec.loadBalancerClassзаказанного сервиса с типом LoadBalancer). - строкаspec.loadBalancer.realIPHeader
Заголовок, из которого будет получен настоящий IP-адрес клиента.
Работает только при включении
behindL7Proxy.По умолчанию:
X-Forwarded-ForПример:
realIPHeader: CF-Connecting-IP - массив строкspec.loadBalancer.sourceRanges
Список адресов в формате CIDR, которым разрешен доступ на балансировщик.
Внимание. Облачный провайдер может не поддерживать данную опцию и игнорировать ее. Провайдеры поддерживающие опцию: AWS, GCP, Azure Провайдеры игнорирующие опцию: YandexCloud Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Перед промышленным использованием опции рекомендуется тестирование.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- объектspec.loadBalancerWithProxyProtocol
Необязательный параметр.
Секция настроек для инлета
LoadBalancerWithProxyProtocol.- объектspec.loadBalancerWithProxyProtocol.annotations
Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.
Внимание. Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа LoadBalancer’а применяются только при создании сервиса, для обновления подобных параметров необходимо будет пересоздать
IngressNginxController(или создать новый, затем удалив старый). - строкаspec.loadBalancerWithProxyProtocol.loadBalancerClass
Класс балансировщика входящих сетевых запросов (пробрасывается в параметр
spec.loadBalancerClassзаказанного сервиса с типом LoadBalancer). - массив строкspec.loadBalancerWithProxyProtocol.sourceRanges
Список адресов в формате CIDR, которым разрешен доступ на балансировщик.
Внимание. Облачный провайдер может не поддерживать данную опцию и игнорировать ее. Провайдеры поддерживающие опцию: AWS, GCP, Azure Провайдеры игнорирующие опцию: YandexCloud Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Перед промышленным использованием опции рекомендуется тестирование.
- строкаЭлемент массива
Шаблон:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- целочисленныйspec.maxReplicas
Максимально количество реплик
LoadBalancerиLoadBalancerWithProxyProtocolдля HPA.По умолчанию:
1Допустимые значения:
1 <= X - целочисленныйspec.minReplicas
Минимальное количество реплик
LoadBalancerиLoadBalancerWithProxyProtocolдля HPA.По умолчанию:
1Допустимые значения:
1 <= X - объектspec.nodeSelector
Как в
spec.nodeSelectorу подов.Если значение не указано или указано
false, будет использоваться автоматика.Формат: стандартный список
nodeSelector. Поды инстанса унаследуют это поле как есть. - объектspec.resourcesRequests
Настройки максимальных значений CPU и memory, которые может запросить под при выборе узла (если VPA выключен, максимальные значения становятся значениями по умолчанию).
- строкаspec.resourcesRequests.mode
Обязательный параметр
Режим управления реквестами ресурсов.
По умолчанию:
VPAДопустимые значения:
VPA,Static - объектspec.resourcesRequests.static
Настройки статического режима управления.
- строкаspec.resourcesRequests.static.cpu
Значение для реквеста к CPU.
По умолчанию:
350m - строкаspec.resourcesRequests.static.memory
Значение для реквеста к memory.
По умолчанию:
500Mi
- объектspec.resourcesRequests.vpa
Настройки VPA режима управления.
- объектspec.resourcesRequests.vpa.cpu
Настройки для CPU.
- строкаspec.resourcesRequests.vpa.cpu.max
Максимальное значение, которое может выставить VPA для реквеста к CPU.
По умолчанию:
50m - строкаspec.resourcesRequests.vpa.cpu.min
Минимальное значение, которое может выставить VPA для реквеста к CPU.
По умолчанию:
10m
- объектspec.resourcesRequests.vpa.memory
Значение для запроса memory.
- строкаspec.resourcesRequests.vpa.memory.max
Максимальное значение, которое может выставить VPA для реквеста к memory.
По умолчанию:
200Mi - строкаspec.resourcesRequests.vpa.memory.min
Минимальное значение, которое может выставить VPA для реквеста к memory.
По умолчанию:
50Mi
- строкаspec.resourcesRequests.vpa.mode
Режим работы VPA.
По умолчанию:
InitialДопустимые значения:
Initial,Auto
- массив объектовspec.tolerations
Как в
spec.tolerationsу подов.Если значение не указано или указано
false, будет использоваться автоматика.Формат: стандартный список toleration. Поды инстанса унаследуют это поле как есть.
- строкаspec.tolerations.effect
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаspec.tolerations.key
- строкаspec.tolerations.operator
По умолчанию:
EqualДопустимые значения:
Exists,Equal - целочисленныйspec.tolerations.tolerationSeconds
- строкаspec.tolerations.value
- булевыйspec.underscoresInHeaders
По умолчанию:
false - булевыйspec.validationEnabled
Включить валидацию Ingress-правил.
Внимание. Включение валидации увеличивает нагрузку на master-узлы кластера.
По умолчанию:
true - целочисленныйspec.waitLoadBalancerOnTerminating
Количество секунд до того, как /healthz начнет возвращать код 500, когда под перейдет в статус Terminating.