Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Deckhouse Kubernetes Platform устанавливает CRD, но не удаляет их при отключении модуля. Если вам больше не нужны созданные CRD, удалите их.
IngressNginxController
Scope: Cluster
-
объектspec
-
массив строкspec.acceptRequestsFrom
Список адресов в формате CIDR, которым разрешен доступ к контроллеру.
Независимо от инлета всегда проверяется непосредственный адрес (поле
original_addressв логах), с которого производится подключение, а не адрес клиента, который может передаваться в некоторых инлетах через заголовки или с использованием proxy protocol.Параметр реализован с помощью map module. Если адрес, с которого производится подключение, не разрешен, nginx закрывает соединение, отправляя код
444).По умолчанию к контроллеру можно подключаться с любых адресов.
-
строкаspec.acceptRequestsFrom.Элемент массива
Шаблон:
^(([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— Only critical errors will be logged.Warn— Warnings and errors will be logged.Info— Informational messages, including basic debugging information.Extended— Extended information about changes in system state.Debug— Verbose debugging output, potentially very noisy.Trace— Trace-level logs with detailed step-by-step context. -
объектspec.controllerPodsAdditionalAnnotations
Дополнительные пользовательские аннотации для подов Ingress-контроллера.
Используйте параметр с осторожностью, поскольку обратная совместимость и работоспособность Ingress-контроллера при использовании параметра не гарантируются.
-
строкаspec.controllerVersion
Версия Ingress NGINX Controller.
По умолчанию используется версия из настроек модуля. Поддерживаемые версии:
1.10,1.12,1.14,1.15.Допустимые значения:
1.10,1.12,1.14,1.15 -
объектspec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция указана в настройках, все параметры в ней являются обязательными.
Изменение любого параметра приводит к перезапуску всех Ingress-контроллеров.
-
массив строкspec.customErrors.codes
Обязательный параметр
Список кодов ответа (массив), при которых запрос будет перенаправляться на кастомный бэкенд.-
строка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" ]-
строкаspec.geoIP2.maxmindEditionIDs.Элемент массива
Допустимые значения:
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-соединения с зеркалом.
Пример:
ca: | -----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-
строкаspec.hostPort.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-
строкаspec.hostPortWithProxyProtocol.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-
строкаspec.loadBalancer.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-среде.
-
строкаspec.loadBalancer.sourceRanges.Элемент массива
Шаблон:
^(([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-
строкаspec.loadBalancerWithProxyProtocol.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-среде.
-
строкаspec.loadBalancerWithProxyProtocol.sourceRanges.Элемент массива
Шаблон:
^(([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-среде.
-
строкаspec.loadBalancerWithSSLPassthrough.sourceRanges.Элемент массива
Шаблон:
^(([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иLoadBalancerWithSSLPassthroughдля HPA.По умолчанию:
1Допустимые значения:
1 <= X -
целочисленныйspec.minReplicasМинимальное количество реплик
LoadBalancer,LoadBalancerWithProxyProtocolиLoadBalancerWithSSLPassthroughдля HPA.По умолчанию:
1Допустимые значения:
1 <= X -
объектspec.nodeSelector
Аналогично параметру
spec.nodeSelectorу подов.Если значение не указано или указано
false, DKP попытается определить значение автоматически.Используйте формат стандартного списка
nodeSelector. Поды инстанса унаследуют это поле как есть. -
объектspec.resourcesManagementНастройки запросов (requests) и ограничений (limits) CPU и памяти для подов контроллера.
-
строкаspec.resourcesManagement.mode
Обязательный параметр
Режим управления ресурсами.По умолчанию:
VPAДопустимые значения:
VPA,Static -
объектspec.resourcesManagement.staticНастройки статического режима управления.
-
объектspec.resourcesManagement.static.limitsОграничения ресурсов.
-
строкаspec.resourcesManagement.static.limits.cpuОграничение CPU.
-
строкаspec.resourcesManagement.static.limits.memoryОграничение памяти.
-
-
объектspec.resourcesManagement.static.requestsЗапросы ресурсов.
-
строкаspec.resourcesManagement.static.requests.cpuЗапрос CPU.
По умолчанию:
350m -
строкаspec.resourcesManagement.static.requests.memoryЗапрос памяти.
По умолчанию:
500Mi
-
-
-
объектspec.resourcesManagement.vpaНастройки режима VPA.
-
объектspec.resourcesManagement.vpa.cpuНастройки VPA для CPU.
-
числоspec.resourcesManagement.vpa.cpu.limitRatio
Коэффициент соотношения limits/requests для CPU.
Если параметр указан, limits рассчитываются на основе requests и заданного коэффициента.
-
строкаspec.resourcesManagement.vpa.cpu.maxМаксимальное значение запроса CPU, которое может выставить VPA.
По умолчанию:
1500m -
строкаspec.resourcesManagement.vpa.cpu.minМинимальное значение запроса CPU, которое может выставить VPA.
По умолчанию:
100m
-
-
объектspec.resourcesManagement.vpa.memoryНастройки VPA для памяти.
-
числоspec.resourcesManagement.vpa.memory.limitRatio
Коэффициент соотношения limits/requests для памяти.
Если параметр указан, limits рассчитываются на основе requests и заданного коэффициента.
-
строкаspec.resourcesManagement.vpa.memory.maxМаксимальное значение запроса памяти, которое может выставить VPA.
По умолчанию:
2000Mi -
строкаspec.resourcesManagement.vpa.memory.minМинимальное значение запроса памяти, которое может выставить VPA.
По умолчанию:
500Mi
-
-
строкаspec.resourcesManagement.vpa.modeРежим работы VPA.
По умолчанию:
InitialДопустимые значения:
Initial,InPlaceOrRecreate
-
-
-
массив объектов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.validationIsolationMode
Выбирает режим изоляции валидации.
Внимание. Данный параметр применим только к контроллерам версий
1.14и1.15.Поддерживаемые режимы:
NoIsolation— изоляция при проверке конфигурации NGINX не применяется. Чтобы минимизировать риски безопасности, область проверки ограничена одним объектом Ingress, что приводит к «слабой» валидации.IsolatedFilesystem— конфигурация NGINX проверяется в отдельной файловой системе без доступа к файловой системе работающего сервера NGINX, что эффективно сокращает поверхность атаки. Область проверки ограничена параметромingressClass, что обеспечивает «сильную» валидацию.IsolatedProcess— конфигурация NGINX проверяется внутри изолированной среды (песочницы), где отслеживается каждый системный вызов. Это наиболее безопасный режим изоляции, ограниченный параметромingressClass.
Внимание. Режим
IsolatedProcessявляется экспериментальным и может не работать в средах с повышенными требованиями к безопасности, где запрещено создание новых пользовательских пространств имён или использование ptrace.Внимание. Для режима
IsolatedProcessтребуется containerd v2 на целевых узлах.По умолчанию:
NoIsolationДопустимые значения:
NoIsolation,IsolatedFilesystem,IsolatedProcess -
целочисленныйspec.waitLoadBalancerOnTerminatingКоличество секунд до того момента, когда эндпоинт
/healthzначнёт возвращать код500после перехода пода в статусTerminating.
-
-
объектstatus
-
объектstatus.loadBalancerСодержит IP-адрес и DNS-имя используемого балансировщика нагрузки.
-
строкаstatus.loadBalancer.hostnameDNS-имя балансировщика нагрузки.
-
строкаstatus.loadBalancer.ipIP-адрес балансировщика нагрузки.
-
-
-
объектspec
-
массив строкspec.acceptRequestsFrom
Список адресов в формате CIDR, которым разрешен доступ к контроллеру.
Независимо от инлета всегда проверяется непосредственный адрес (поле
original_addressв логах), с которого производится подключение, а не адрес клиента, который может передаваться в некоторых инлетах через заголовки или с использованием proxy protocol.Параметр реализован с помощью map module. Если адрес, с которого производится подключение, не разрешен, nginx закрывает соединение, отправляя код
444).По умолчанию к контроллеру можно подключаться с любых адресов.
-
строкаspec.acceptRequestsFrom.Элемент массива
Шаблон:
^(([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— Only critical errors will be logged.Warn— Warnings and errors will be logged.Info— Informational messages, including basic debugging information.Extended— Extended information about changes in system state.Debug— Verbose debugging output, potentially very noisy.Trace— Trace-level logs with detailed step-by-step context. -
объектspec.controllerPodsAdditionalAnnotations
Дополнительные пользовательские аннотации для подов Ingress-контроллера.
Используйте параметр с осторожностью, поскольку обратная совместимость и работоспособность Ingress-контроллера при использовании параметра не гарантируются.
-
строкаspec.controllerVersion
Версия Ingress NGINX Controller.
По умолчанию используется версия из настроек модуля. Поддерживаемые версии:
1.10,1.12,1.14,1.15.Допустимые значения:
1.10,1.12,1.14,1.15 -
объектspec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция указана в настройках, все параметры в ней являются обязательными.
Изменение любого параметра приводит к перезапуску всех Ingress-контроллеров.
-
массив строкspec.customErrors.codes
Обязательный параметр
Список кодов ответа (массив), при которых запрос будет перенаправляться на кастомный бэкенд.-
строка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" ]-
строкаspec.geoIP2.maxmindEditionIDs.Элемент массива
Допустимые значения:
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-соединения с зеркалом.
Пример:
ca: | -----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-
строкаspec.hostPort.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-
строкаspec.hostPortWithProxyProtocol.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-
строкаspec.loadBalancer.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-среде.
-
строкаspec.loadBalancer.sourceRanges.Элемент массива
Шаблон:
^(([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-
строкаspec.loadBalancerWithProxyProtocol.acceptClientIPHeadersFrom.Элемент массива
Шаблон:
^(([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-среде.
-
строкаspec.loadBalancerWithProxyProtocol.sourceRanges.Элемент массива
Шаблон:
^(([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-среде.
-
строкаspec.loadBalancerWithSSLPassthrough.sourceRanges.Элемент массива
Шаблон:
^(([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иLoadBalancerWithSSLPassthroughдля HPA.По умолчанию:
1Допустимые значения:
1 <= X -
целочисленныйspec.minReplicasМинимальное количество реплик
LoadBalancer,LoadBalancerWithProxyProtocolиLoadBalancerWithSSLPassthroughдля HPA.По умолчанию:
1Допустимые значения:
1 <= X -
объектspec.nodeSelector
Аналогично параметру
spec.nodeSelectorу подов.Если значение не указано или указано
false, Deckhouse попытается определить значение автоматически.Используйте формат стандартного списка
nodeSelector. Поды инстанса унаследуют это поле как есть. -
объектspec.resourcesRequests
Настройки CPU и памяти для подов контроллера.
В режиме VPA задаются границы (min/max) и при необходимости коэффициенты limits/requests для автоматически выставляемых запросов. В статическом режиме запросы и ограничения задаются в секции
static.-
строкаspec.resourcesRequests.mode
Обязательный параметр
Режим управления запросами ресурсов.По умолчанию:
VPAДопустимые значения:
VPA,Static -
объектspec.resourcesRequests.staticНастройки статического режима управления.
-
строкаspec.resourcesRequests.static.cpuЗначение для запроса к CPU.
По умолчанию:
350m -
объектspec.resourcesRequests.static.limitsОграничения ресурсов.
-
строкаspec.resourcesRequests.static.limits.cpuОграничение CPU.
-
строкаspec.resourcesRequests.static.limits.memoryОграничение памяти.
-
-
строкаspec.resourcesRequests.static.memoryЗначение для запроса к памяти.
По умолчанию:
500Mi
-
-
объектspec.resourcesRequests.vpaНастройки режима управления Vertical Pod Autoscaler (VPA).
-
объектspec.resourcesRequests.vpa.cpuНастройки ограничений запросов к CPU.
-
числоspec.resourcesRequests.vpa.cpu.limitRatio
Коэффициент соотношения limits/requests для CPU.
Если параметр указан, limits рассчитываются на основе requests и заданного коэффициента.
-
строкаspec.resourcesRequests.vpa.cpu.maxМаксимальное значение запроса к CPU, которое может выставить VPA.
По умолчанию:
1500m -
строкаspec.resourcesRequests.vpa.cpu.minМинимальное значение запроса к CPU, которое может выставить VPA.
По умолчанию:
100m
-
-
объектspec.resourcesRequests.vpa.memoryНастройки ограничений запросов к памяти.
-
числоspec.resourcesRequests.vpa.memory.limitRatio
Коэффициент соотношения limits/requests для памяти.
Если параметр указан, limits рассчитываются на основе requests и заданного коэффициента.
-
строкаspec.resourcesRequests.vpa.memory.maxМаксимальное значение запроса к памяти, которое может выставить VPA.
По умолчанию:
2000Mi -
строкаspec.resourcesRequests.vpa.memory.minМинимальное значение запроса к памяти, которое может выставить VPA.
По умолчанию:
500Mi
-
-
строкаspec.resourcesRequests.vpa.modeРежим работы VPA.
По умолчанию:
InitialДопустимые значения:
Initial,InPlaceOrRecreate
-
-
-
массив объектов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.validationIsolationMode
Выбирает режим изоляции валидации.
Внимание. Данный параметр применим только к контроллерам версий
1.14и1.15.Поддерживаемые режимы:
NoIsolation— изоляция при проверке конфигурации NGINX не применяется. Чтобы минимизировать риски безопасности, область проверки ограничена одним объектом Ingress, что приводит к «слабой» валидации.IsolatedFilesystem— конфигурация NGINX проверяется в отдельной файловой системе без доступа к файловой системе работающего сервера NGINX, что эффективно сокращает поверхность атаки. Область проверки ограничена параметромingressClass, что обеспечивает «сильную» валидацию.IsolatedProcess— конфигурация NGINX проверяется внутри изолированной среды (песочницы), где отслеживается каждый системный вызов. Это наиболее безопасный режим изоляции, ограниченный параметромingressClass.
Внимание. Режим
IsolatedProcessявляется экспериментальным и может не работать в средах с повышенными требованиями к безопасности, где запрещено создание новых пользовательских пространств имён или использование ptrace.Внимание. Для режима
IsolatedProcessтребуется containerd v2 на целевых узлах.По умолчанию:
NoIsolationДопустимые значения:
NoIsolation,IsolatedFilesystem,IsolatedProcess -
целочисленныйspec.waitLoadBalancerOnTerminatingКоличество секунд до того момента, когда эндпоинт
/healthzначнёт возвращать код500после перехода пода в статусTerminating.
-
-
объектstatus
-
объектstatus.loadBalancer
-
строкаstatus.loadBalancer.hostnameDNS-имя балансировщика нагрузки.
-
строкаstatus.loadBalancer.ipIP-адрес балансировщика нагрузки.
-
-