Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
Стадия жизненного цикла модуля: General Availability
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
Версия Ingress NGINX Controller.
По умолчанию используется версия из настроек модуля. Поддерживаемые версии:
1.10,1.12,1.14.Допустимые значения:
1.10,1.12,1.14 - объект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 нельзя включить, если выбран инлет
HostPortWithProxyProtocolилиLoadBalancerWithProxyProtocol.В случае инлета
HostWithFailoverHTTP/3 включается только для основного контроллера; резервный контроллер всегда работает без HTTP/3.По умолчанию:
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.maxmindAccountID
Идентификатор учетной записи MaxMind, используемый для аутентификации загрузки базы данных GeoIP2.
Требуется, когда указан
maxmindLicenseKey. Если заданmaxmindAccountID, загрузка выполняется официальной библиотекойgeoipupdate, что позволяет пропускать неизменённые обновления и экономить лимит лицензии.Допустимые значения:
1 <= X - массив строк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.geoIP2.maxmindMirror
Настройки зеркала для скачивания баз GeoIP. Если параметр не указан или имеет пустое значение, то по умолчанию будет использоваться
https://download.maxmind.com.Пример корректного URL: https://mirror.local/GeoLite2-City.tar.gz.
Если зеркало используется для хранения предзагруженных архивов, параметр
licenseKeyможно не указывать.- строкаspec.geoIP2.maxmindMirror.ca
Пользовательский корневой сертификат в формате PEM для проверки TLS-соединения с зеркалом.
Пример: —–BEGIN CERTIFICATE—– … —–END CERTIFICATE—–
- булевыйspec.geoIP2.maxmindMirror.insecureSkipVerify
Отключает проверку TLS сертификатов зеркала, например, если используется самоподписанный сертификат.
- строкаspec.geoIP2.maxmindMirror.url
Обязательный параметр
URL для скачивания баз GeoIP.
Шаблон:
^https?://.+$Примеры:
url: https://mirror.localurl: absolute path https://mirror.local/GeoLite2-City.tar.gz
- объектspec.hostPort
Секция настроек инлета
HostPort.- массив строкspec.hostPort.acceptClientIPHeadersFrom
Определяет список доверенных подсетей в формате CIDR, запросы от которых содержат корректные заголовки
X-Forwarded-*/ProxyProtocol.По умолчанию:
["0.0.0.0/0"]Пример:
acceptClientIPHeadersFrom: - 192.168.0.0/24- строкаЭлемент массива
Шаблон:
^(([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.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.acceptClientIPHeadersFrom
Определяет список доверенных подсетей в формате CIDR, запросы от которых содержат корректные заголовки
X-Forwarded-*/ProxyProtocol.По умолчанию:
["0.0.0.0/0"]Пример:
acceptClientIPHeadersFrom: - 192.168.0.0/24- строкаЭлемент массива
Шаблон:
^(([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.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-класса для обслуживания Ingress NGINX 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-адреса клиента;Важно. HTTP/3 (
enableHTTP3) нельзя включать с этим инлетом, так как QUIC несовместим с PROXY protocol.-
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.Важно. HTTP/3 (
enableHTTP3) нельзя включать с этим инлетом, так как QUIC несовместим с PROXY protocol. -
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включен.Замечание. При включении HTTP/3 (
enableHTTP3) он применяется только к основному контроллеру; резервный контроллер всегда работает без HTTP/3.
Допустимые значения:
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.acceptClientIPHeadersFrom
Определяет список доверенных подсетей в формате CIDR, запросы от которых содержат корректные заголовки
X-Forwarded-*/ProxyProtocol.По умолчанию:
["0.0.0.0/0"]Пример:
acceptClientIPHeadersFrom: - 192.168.0.0/24- строкаЭлемент массива
Шаблон:
^(([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.loadBalancer.annotations
Аннотации, которые будут назначены сервису для гибкой настройки балансировщика.
Модуль не учитывает особенности указания аннотаций в различных облаках.
Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров пересоздайте ресурс IngressNginxController (или создайте новый и удалите старый).
- булевыйspec.loadBalancer.behindL7Proxy
Включает обработку и передачу заголовков
X-Forwarded-*.Внимание. Перед использованием этой опции убедитесь, что запросы к Ingress направляются только от доверенных источников.
- целочисленныйspec.loadBalancer.httpPort
Внешний порт для небезопасного подключения по HTTP на балансировщике, создаваемом через сервис типа
LoadBalancer.Если не заданы оба параметра
httpPortиhttpsPort, сервис будет слушать стандартные порты80и443. Если задан хотя бы один из этих параметров, для соответствующего типа подключения сервис будет слушать только явно указанные порты. Для типа подключения, для которого не задан параметр, ничего не меняется: прослушивается стандартный порт.Внимание. Поведение при смене портов зависит от облачного провайдера и может приводить к специфичным для каждого провайдера побочным эффектам (например, к пересозданию балансировщика или смене его публичного IP-адреса). Эти эффекты могут быть не документированы; перед использованием в production-среде протестируйте обновление сервиса.
Внимание. ACME HTTP-01 (например, Let’s Encrypt через cert-manager) всегда проверяет доступность домена по TCP-порту
80. Если задатьhttpsPortбезhttpPortили изменитьhttpPortна значение отличное от80, выпуск/продление сертификатов может перестать работать, если не используется DNS-01 или не настроен проброс порта80до контроллера на уровне внешнего балансировщика.Внимание. Многие приложения (включая некоторые компоненты модулей Deckhouse) формируют абсолютные ссылки и редиректы без явного указания порта (подразумевая стандартные порты
80/443). Если Ingress-контроллер доступен снаружи на нестандартных портах, редиректы могут вести на неправильный порт, а ссылки могут формироваться некорректно; рекомендуется использовать стандартные порты снаружи или настраивать внешний проброс/проксирование портов.По умолчанию:
80Допустимые значения:
1 <= X <= 65535 - целочисленныйspec.loadBalancer.httpsPort
Внешний порт для безопасного подключения по HTTPS на балансировщике, создаваемом через сервис типа
LoadBalancer.Если не заданы оба параметра
httpPortиhttpsPort, сервис будет слушать стандартные порты80и443. Если задан хотя бы один из этих параметров, для соответствующего типа подключения сервис будет слушать только явно указанные порты. Для типа подключения, для которого не задан параметр, ничего не меняется: прослушивается стандартный порт.Внимание. Поведение при смене портов зависит от облачного провайдера и может приводить к специфичным для каждого провайдера побочным эффектам (например, к пересозданию балансировщика или смене его публичного IP-адреса). Эти эффекты могут быть не документированы; перед использованием в production-среде протестируйте обновление сервиса.
Внимание. Многие приложения (включая некоторые компоненты модулей Deckhouse) формируют абсолютные ссылки и редиректы без явного указания порта (подразумевая стандартные порты
80/443). При нестандартномhttpsPortпользователи могут попадать на443/tcp, а ссылки могут формироваться некорректно; рекомендуется использовать стандартные порты снаружи или настраивать внешний проброс/проксирование портов.По умолчанию:
443Допустимые значения:
1 <= X <= 65535 - строка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.acceptClientIPHeadersFrom
Определяет список доверенных подсетей в формате CIDR, запросы от которых содержат корректные заголовки
X-Forwarded-*/ProxyProtocol.По умолчанию:
["0.0.0.0/0"]Пример:
acceptClientIPHeadersFrom: - 192.168.0.0/24- строкаЭлемент массива
Шаблон:
^(([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.annotations
Аннотации, которые будут назначены сервису для гибкой настройки балансировщика.
Модуль не учитывает особенности указания аннотаций в различных облаках.
Если аннотации для заказа балансировщика применяются только при создании сервиса, для обновления подобных параметров пересоздайте ресурс IngressNginxController (или создайте новый и удалите старый).
- целочисленныйspec.loadBalancerWithProxyProtocol.httpPort
Внешний порт для небезопасного подключения по HTTP на балансировщике, создаваемом через сервис типа
LoadBalancer.Если не заданы оба параметра
httpPortиhttpsPort, сервис будет слушать стандартные порты80и443. Если задан хотя бы один из этих параметров, для соответствующего типа подключения сервис будет слушать только явно указанные порты. Для типа подключения, для которого не задан параметр, ничего не меняется: прослушивается стандартный порт.Внимание. Поведение при смене портов зависит от облачного провайдера и может приводить к специфичным для каждого провайдера побочным эффектам (например, к пересозданию балансировщика или смене его публичного IP-адреса). Эти эффекты могут быть не документированы; перед использованием в production-среде протестируйте обновление сервиса.
Внимание. ACME HTTP-01 (например, Let’s Encrypt через cert-manager) всегда проверяет доступность домена по TCP-порту
80. Если задатьhttpsPortбезhttpPortили изменитьhttpPortна значение отличное от80, выпуск/продление сертификатов может перестать работать, если не используется DNS-01 или не настроен проброс порта80до контроллера на уровне внешнего балансировщика.Внимание. Многие приложения (включая некоторые компоненты модулей Deckhouse) формируют абсолютные ссылки и редиректы без явного указания порта (подразумевая стандартные порты
80/443). Если Ingress-контроллер доступен снаружи на нестандартных портах, редиректы могут вести на неправильный порт, а ссылки могут формироваться некорректно; рекомендуется использовать стандартные порты снаружи или настраивать внешний проброс/проксирование портов.По умолчанию:
80Допустимые значения:
1 <= X <= 65535 - целочисленныйspec.loadBalancerWithProxyProtocol.httpsPort
Внешний порт для безопасного подключения по HTTPS на балансировщике, создаваемом через сервис типа
LoadBalancer.Если не заданы оба параметра
httpPortиhttpsPort, сервис будет слушать стандартные порты80и443. Если задан хотя бы один из этих параметров, для соответствующего типа подключения сервис будет слушать только явно указанные порты. Для типа подключения, для которого не задан параметр, ничего не меняется: прослушивается стандартный порт.Внимание. Поведение при смене портов зависит от облачного провайдера и может приводить к специфичным для каждого провайдера побочным эффектам (например, к пересозданию балансировщика или смене его публичного IP-адреса). Эти эффекты могут быть не документированы; перед использованием в production-среде протестируйте обновление сервиса.
Внимание. Многие приложения (включая некоторые компоненты модулей Deckhouse) формируют абсолютные ссылки и редиректы без явного указания порта (подразумевая стандартные порты
80/443). При нестандартномhttpsPortпользователи могут попадать на443/tcp, а ссылки могут формироваться некорректно; рекомендуется использовать стандартные порты снаружи или настраивать внешний проброс/проксирование портов.По умолчанию:
443Допустимые значения:
1 <= X <= 65535 - строка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.httpPort
Внешний порт для небезопасного подключения по HTTP на балансировщике, создаваемом через сервис типа
LoadBalancer.Если не заданы оба параметра
httpPortиhttpsPort, сервис будет слушать стандартные порты80и443. Если задан хотя бы один из этих параметров, для соответствующего типа подключения сервис будет слушать только явно указанные порты. Для типа подключения, для которого не задан параметр, ничего не меняется: прослушивается стандартный порт.Внимание. Поведение при смене портов зависит от облачного провайдера и может приводить к провайдер-специфичным побочным эффектам (например, пересозданию балансировщика или смене его публичного IP-адреса). Эти эффекты могут быть не документированы; перед использованием в production-среде протестируйте обновление сервиса.
Внимание. ACME HTTP-01 (например, Let’s Encrypt через cert-manager) всегда проверяет доступность домена по TCP-порту
80. Если задатьhttpsPortбезhttpPortили изменитьhttpPortна значение отличное от80, выпуск/продление сертификатов может перестать работать, если не используется DNS-01 или не настроен проброс порта80до контроллера на уровне внешнего балансировщика.Внимание. Многие приложения (включая некоторые компоненты модулей Deckhouse) формируют абсолютные ссылки и редиректы без явного указания порта (подразумевая стандартные порты
80/443). Если Ingress-контроллер доступен снаружи на нестандартных портах, редиректы могут вести на неправильный порт, а ссылки могут формироваться некорректно; рекомендуется использовать стандартные порты снаружи или настраивать внешний проброс/проксирование портов.По умолчанию:
80Допустимые значения:
1 <= X <= 65535 - целочисленныйspec.loadBalancerWithSSLPassthrough.httpsPort
Внешний порт для безопасного подключения по HTTPS на балансировщике, создаваемом через сервис типа
LoadBalancer.Если не заданы оба параметра
httpPortиhttpsPort, сервис будет слушать стандартные порты80и443. Если задан хотя бы один из этих параметров, для соответствующего типа подключения сервис будет слушать только явно указанные порты. Для типа подключения, для которого не задан параметр, ничего не меняется: прослушивается стандартный порт.Внимание. Поведение при смене портов зависит от облачного провайдера и может приводить к провайдер-специфичным побочным эффектам (например, пересозданию балансировщика или смене его публичного IP-адреса). Эти эффекты могут быть не документированы; перед использованием в production-среде протестируйте обновление сервиса.
Внимание. Многие приложения (включая некоторые компоненты модулей Deckhouse) формируют абсолютные ссылки и редиректы без явного указания порта (подразумевая стандартные порты
80/443). При нестандартномhttpsPortпользователи могут попадать на443/tcp, а ссылки могут формироваться некорректно; рекомендуется использовать стандартные порты снаружи или настраивать внешний проброс/проксирование портов.По умолчанию:
443Допустимые значения:
1 <= X <= 65535 - строка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
Версия Ingress NGINX Controller.
По умолчанию используется версия из настроек модуля. Поддерживаемые версии:
1.10,1.12,1.14.Допустимые значения:
1.10,1.12,1.14 - объектspec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция определена, все параметры в ней являются обязательными, изменение любого параметра приводит к перезапуску всех Ingress-контроллеров.
- массив строк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-класса для обслуживания Ingress NGINX 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.