IngressNginxController
Scope: Cluster
- spec
Обязательный параметр
- spec.acceptRequestsFrom
Список адресов в формате CIDR, которым разрешено подключаться к контроллеру.
Независимо от inlet’а всегда проверяется непосредственный адрес (в логах содержится в поле
original_address
), с которого производится подключение, а не «адрес клиента», который может передаваться в некоторых inlet’ах через заголовки или с использованием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-правил.
Требуется версия контроллера 1.9 или выше.
По умолчанию:
false
- spec.chaosMonkey
Инструмент, позволяющий систематически вызывать случайные прерывания работы подов контроллера.
Предназначен для проверки Ingress-контроллера на реальную работу отказоустойчивости.
По умолчанию:
false
- spec.config
Секция настроек Ingress-контроллера, в которую в формате
ключ: значение(строка)
можно записать любые возможные опции.Внимание! Ошибка в указании опций может привести к отказу в работе Ingress-контроллера.
Внимание! Не рекомендуется использовать данную опцию, так как не гарантируется обратная совместимость или работоспособность Ingress-контроллера.
- spec.controllerVersion
Версия NGINX Ingress controller.
По умолчанию используется версия из настроек модуля.
Допустимые значения:
1.6
,1.9
,1.10
- spec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция определена, все параметры в ней являются обязательными, изменение любого параметра приводит к перезапуску всех NGINX Ingress controller’ов.
- spec.customErrors.codes
Обязательный параметр
Список кодов ответа (массив), при которых запрос будет перенаправляться на custom default backend.
- Элемент массива
Шаблон:
^[1-5][0-9][0-9]$
- spec.customErrors.namespace
Обязательный параметр
Имя namespace, в котором будет находиться сервис, используемый как custom default backend.
Пример:
namespace: default
- spec.customErrors.serviceName
Обязательный параметр
Имя сервиса, который будет использоваться как custom default backend.
Пример:
serviceName: custom-errors-backend-service
- spec.defaultSSLCertificate
Сертификат, который используется:
- при запросах на
catch-all
-сервер (подразумевается директива server nginx). Наcatch-all
-сервер попадают запросы, для которых нет соответствующего Ingress-ресурса; - для Ingress–ресурсов, в которых не задан
secretName
в секцииtls
.
По умолчанию используется самоподписанный сертификат.
Внимание! Параметр не влияет на сертификаты, используемые в Ingress-ресурсах модулей Deckhouse. Для указания сертификата, который будет использоваться в Ingress-ресурсах модулей Deckhouse, используйте глобальный параметр modules.https.customCertificate.
- spec.defaultSSLCertificate.secretRef
Ссылка на Secret для передачи Ingress-контроллеру.
- spec.defaultSSLCertificate.secretRef.name
Имя Secret’а, содержащего SSL–сертификат.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.defaultSSLCertificate.secretRef.namespace
Имя namespace, в котором находится Secret с SSL—сертификатом.
По умолчанию:
"d8-ingress-nginx"
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- при запросах на
- spec.disableHTTP2
Выключить ли HTTP/2.
По умолчанию:
false
- spec.enableHTTP3
Включить ли HTTP/3.
HTTP/3 доступен только в контролере версии 1.10.
По умолчанию:
false
- spec.enableIstioSidecar
Добавить к подам контроллера аннотации для автоматического инжекта сайдкаров Istio. При включении этого параметра к подам Ingress-контроллера добавляются аннотации
sidecar.istio.io/inject: "true"
иtraffic.sidecar.istio.io/includeOutboundIPRanges: "<Service CIDR>"
. При создании таких подов к ним автоматически будут добавлены сайдкары Istio с помощью mutating webhook. После этого весь трафик в сторону Service CIDR будет перехватываться сайдкаром.Чтобы воспользоваться этой функцией, необходимо доработать прикладные Ingress-ресурсы, добавив аннотации:
nginx.ingress.kubernetes.io/service-upstream: "true"
— с этой аннотацией Ingress-контроллер будет отправлять запросы на ClusterIP сервиса (из диапазона Service CIDR) вместо того, чтобы слать их напрямую в поды приложения. Сайдкар istio-proxy перехватывает трафик только в сторону диапазона Service CIDR, остальные запросы отправляются напрямую;nginx.ingress.kubernetes.io/upstream-vhost: myservice.myns.svc
— с данной аннотацией сайдкар сможет идентифицировать прикладной сервис, для которого предназначен запрос.
- 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
Секция настроек для inlet’а
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
Секция настроек для inlet’а
HostPortWithProxyProtocol
.- spec.hostPortWithProxyProtocol.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, возможность подключения по HTTP отсутствует.
Обязательный параметр, если не указан
httpsPort
.Пример:
httpPort: '80'
- spec.hostPortWithProxyProtocol.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, возможность подключения по HTTPS отсутствует.
Обязательный параметр, если не указан
httpPort
.Пример:
httpsPort: '443'
- spec.hostPortWithSSLPassthrough
Секция настроек для inlet’а
HostPortWithSSLPassthrough
.- spec.hostPortWithSSLPassthrough.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, возможность подключения по HTTP отсутствует.
Обязательный параметр, если не указан
httpsPort
.Пример:
httpPort: '80'
- spec.hostPortWithSSLPassthrough.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, возможность подключения по HTTPS отсутствует.
Обязательный параметр, если не указан
httpPort
.Пример:
httpsPort: '443'
- spec.hstsOptions
Параметры HTTP Strict Transport Security.
- spec.hstsOptions.includeSubDomains
Применять ли настройки
HSTS
ко всем поддоменам сайта.По умолчанию:
false
- spec.hstsOptions.maxAge
Время в секундах, в течение которого браузер должен помнить, что сайт доступен только с помощью HTTPS.
По умолчанию:
"31536000"
Шаблон:
^[1-9][0-9]*$
Пример:
maxAge: '31536000'
- spec.hstsOptions.preload
Добавлять ли сайт в список предзагрузки.
Эти списки используются современными браузерами и разрешают подключение к сайту только по HTTPS.
По умолчанию:
false
- spec.ingressClass
Имя Ingress-класса для обслуживания NGINX Ingress controller.
Позволяет создать несколько контроллеров для обслуживания одного Ingress-класса.
Важно! Если указать значение “nginx”, дополнительно будут обрабатываться Ingress-ресурсы без аннотации
kubernetes.io/ingress.class
или поляspec.ingressClassName
.По умолчанию:
"nginx"
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
ingressClass: nginx
- spec.inlet
Обязательный параметр
Способ поступления трафика из внешнего мира:
LoadBalancer
— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer
;LoadBalancerWithProxyProtocol
— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer
. Ingress-контроллер использует proxy-protocol для получения настоящего IP-адреса клиента;-
LoadBalancerWithSSLPassthrough
— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer
. Этот инлет включает функцию SSL Passthrough, которая позволяет сконфигурировать бэкенды на принятие SSL-трафика напрямую, без его терминации на Ingress-контроллере.Необходимо указать параметры работы в секции параметров spec.HostPortWithSSLPassthrough.
Caution! Функция SSL Passthrough реализована путем перехвата всего трафика на настроенном HTTPS-порту (по умолчанию: 443) и передачи его локальному TCP-прокси. Это полностью обходит NGINX и приводит к существенному снижению производительности.
Протокол SSL Passthrough использует SNI и считывает данные о виртуальном домене из протокола согласования TLS, для чего требуется подходящий клиент.
Если имя хоста не совпадает с запрошенным именем хоста, запрос передается в NGINX на настроенный SSL Passthrough прокси-порт (по умолчанию: 442), который передает запрос серверу по умолчанию.
Caution! В отличие от HTTP-бэкендов, трафик для SSL Passthrough бэкендов отправляется на ClusterIP, а не на отдельные эндпоинты.
Caution! Поскольку SSL Passthrough работает на 4 уровне модели OSI (TCP), а не на уровне 7 (HTTP), использование SSLPassthrough делает невозможным успользование все остальных аннотаций, установленных для Ingress.
HostPort
— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort
;-
HostPortWithProxyProtocol
— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort
и использует proxy-protocol для получения настоящего IP-адреса клиента.Внимание! При использовании этого inlet’а вы должны быть уверены, что запросы к Ingress направляются только от доверенных источников. Одним из способов настройки ограничения может служить опция
acceptRequestsFrom
; -
HostPortWithSSLPassthrough
— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort
. Этот инлет включает функцию SSL Passthrough, которая позволяет сконфигурировать бэкенды на принятие SSL-трафика напрямую, без его терминации на Ingress-контроллере.Необходимо указать параметры работы в секции параметров spec.HostPortWithSSLPassthrough.
Протокол SSL Passthrough использует SNI и считывает данные о виртуальном домене из протокола согласования TLS, для чего требуется подходящий клиент.
Если имя хоста не совпадает с запрошенным именем хоста, запрос передается в NGINX на настроенный SSL Passthrough прокси-порт (по умолчанию: 442), который передает запрос серверу по умолчанию.
Внимание! Функция SSL Passthrough реализована путем перехвата всего трафика на настроенном HTTPS-порту (по умолчанию: 443) и передачи его локальному TCP-прокси. Это полностью обходит NGINX и приводит к существенному снижению производительности.
Внимание! В отличие от HTTP-бэкендов, трафик для SSL Passthrough бэкендов отправляется на ClusterIP, а не на отдельные эндпоинты.
Внимание! Поскольку SSL Passthrough работает на 4 уровне модели OSI (TCP), а не на уровне 7 (HTTP), использование SSLPassthrough делает невозможным успользование все остальных аннотаций, установленных для Ingress.
-
HostWithFailover
— устанавливаются два Ingress-контроллера — основной и резервный. Основной контроллер запускается в hostNetwork. Если поды основного контроллера недоступны, трафик уходит в резервный контроллер.Внимание! На одном хосте может быть только один контроллер с данным типом inlet’а.
Внимание! Необходимо, чтобы на узле были свободны следующие порты: 80, 81, 443, 444, 4207, 4208.
Допустимые значения:
LoadBalancer
,LoadBalancerWithSSLPassthrough
,LoadBalancerWithProxyProtocol
,HostPort
,HostPortWithSSLPassthrough
,HostPortWithProxyProtocol
,HostWithFailover
- spec.legacySSL
Включены ли старые версии TLS. Также опция разрешает legacy cipher suites для поддержки старых библиотек и программ: OWASP Cipher String ‘C’ . Подробнее здесь.
По умолчанию включены только TLSv1.2 и самые новые cipher suites.
- spec.loadBalancer
Необязательный параметр.
Секция настроек для inlet’а
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
Необязательный параметр.
Секция настроек для inlet’а
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.loadBalancerWithSSLPassthrough
Необязательный параметр.
Секция настроек для inlet’а
LoadBalancerWithSSLPassthrough
.- spec.loadBalancerWithSSLPassthrough.annotations
Аннотации, которые будут проставлены сервису для гибкой настройки балансировщика.
Внимание! Модуль не учитывает особенности указания аннотаций в различных облаках. Если аннотации для заказа LoadBalancer’а применяются только при создании сервиса, для обновления подобных параметров необходимо будет пересоздать
IngressNginxController
(или создать новый, затем удалив старый). - spec.loadBalancerWithSSLPassthrough.loadBalancerClass
Класс балансировщика входящих сетевых запросов (пробрасывается в параметр
spec.loadBalancerClass
заказанного сервиса с типом LoadBalancer). - spec.loadBalancerWithSSLPassthrough.sourceRanges
Список адресов в формате CIDR, которым разрешен доступ на балансировщик.
Внимание! Облачный провайдер может не поддерживать данную опцию и игнорировать ее. Провайдеры поддерживающие опцию: AWS, GCP, Azure Провайдеры игнорирующие опцию: Yandex Cloud Для остальных облачных провайдеров поведение может зависеть от особенностей реализации облака. Перед промышленным использованием опции рекомендуется тестирование.
- Элемент массива
Шаблон:
^(([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
, будет использоваться автоматика.Формат: стандартный список
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-правил.
По умолчанию:
true
- spec.waitLoadBalancerOnTerminating
Количество секунд до того, как /healthz начнет возвращать код 500, когда под перейдет в статус Terminating.
Устаревший ресурс. Поддержка ресурса может быть исключена в следующих версиях.
- spec
Обязательный параметр
- spec.acceptRequestsFrom
Список адресов в формате CIDR, которым разрешено подключаться к контроллеру.
Независимо от inlet’а всегда проверяется непосредственный адрес (в логах содержится в поле
original_address
), с которого производится подключение, а не «адрес клиента», который может передаваться в некоторых inlet’ах через заголовки или с использованием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-правил.
Требуется версия контроллера 1.9.
По умолчанию:
false
- spec.chaosMonkey
Инструмент, позволяющий систематически вызывать случайные прерывания работы подов контроллера.
Предназначен для проверки Ingress-контроллера на реальную работу отказоустойчивости.
По умолчанию:
false
- spec.config
Секция настроек Ingress-контроллера, в которую в формате
ключ: значение(строка)
можно записать любые возможные опции.Внимание! Ошибка в указании опций может привести к отказу в работе Ingress-контроллера.
Внимание! Не рекомендуется использовать данную опцию, так как не гарантируется обратная совместимость или работоспособность Ingress-контроллера.
- spec.controllerVersion
Версия NGINX Ingress controller.
По умолчанию используется версия из настроек модуля.
Допустимые значения:
1.6
,1.9
,1.10
- spec.customErrors
Секция с настройкой кастомизации HTTP-ошибок.
Если секция определена, все параметры в ней являются обязательными, изменение любого параметра приводит к перезапуску всех NGINX Ingress controller’ов.
- spec.customErrors.codes
Обязательный параметр
Список кодов ответа (массив), при которых запрос будет перенаправляться на custom default backend.
- Элемент массива
Шаблон:
^[1-5][0-9][0-9]$
- spec.customErrors.namespace
Обязательный параметр
Имя namespace, в котором будет находиться сервис, используемый как custom default backend.
Пример:
namespace: default
- spec.customErrors.serviceName
Обязательный параметр
Имя сервиса, который будет использоваться как custom default backend.
Пример:
serviceName: custom-errors-backend-service
- spec.defaultSSLCertificate
Сертификат, который используется:
- при запросах на
catch-all
-сервер (подразумевается директива server nginx). Наcatch-all
-сервер попадают запросы, для которых нет соответствующего Ingress-ресурса; - для Ingress–ресурсов, в которых не задан
secretName
в секцииtls
.
По умолчанию используется самоподписанный сертификат.
Внимание! Параметр не влияет на сертификаты, используемые в Ingress-ресурсах модулей Deckhouse. Для указания сертификата, который будет использоваться в Ingress-ресурсах модулей Deckhouse, используйте глобальный параметр modules.https.customCertificate.
- spec.defaultSSLCertificate.secretRef
Ссылка на Secret для передачи Ingress-контроллеру.
- spec.defaultSSLCertificate.secretRef.name
Имя Secret’а, содержащего SSL–сертификат.
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
- spec.defaultSSLCertificate.secretRef.namespace
Имя namespace, в котором находится Secret с SSL—сертификатом.
По умолчанию:
"d8-ingress-nginx"
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- при запросах на
- spec.disableHTTP2
Выключить ли HTTP/2.
По умолчанию:
false
- spec.enableIstioSidecar
Добавить к подам контроллера аннотации для автоматического инжекта сайдкаров Istio. При включении этого параметра к подам Ingress-контроллера добавляются аннотации
sidecar.istio.io/inject: "true"
иtraffic.sidecar.istio.io/includeOutboundIPRanges: "<Service CIDR>"
. При создании таких подов к ним автоматически будут добавлены сайдкары Istio с помощью mutating webhook. После этого весь трафик в сторону Service CIDR будет перехватываться сайдкаром.Чтобы воспользоваться этой функцией, необходимо доработать прикладные Ingress-ресурсы, добавив аннотации:
nginx.ingress.kubernetes.io/service-upstream: "true"
— с этой аннотацией Ingress-контроллер будет отправлять запросы на ClusterIP сервиса (из диапазона Service CIDR) вместо того, чтобы слать их напрямую в поды приложения. Сайдкар istio-proxy перехватывает трафик только в сторону диапазона Service CIDR, остальные запросы отправляются напрямую;nginx.ingress.kubernetes.io/upstream-vhost: myservice.myns.svc
— с данной аннотацией сайдкар сможет идентифицировать прикладной сервис, для которого предназначен запрос.
- 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
Секция настроек для inlet’а
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
Секция настроек для inlet’а
HostPortWithProxyProtocol
.- spec.hostPortWithProxyProtocol.httpPort
Порт для небезопасного подключения по HTTP.
Если параметр не указан, возможность подключения по HTTP отсутствует.
Обязательный параметр, если не указан
httpsPort
.Пример:
httpPort: '80'
- spec.hostPortWithProxyProtocol.httpsPort
Порт для безопасного подключения по HTTPS.
Если параметр не указан, возможность подключения по HTTPS отсутствует.
Обязательный параметр, если не указан
httpPort
.Пример:
httpsPort: '443'
- spec.hstsOptions
Параметры HTTP Strict Transport Security.
- spec.hstsOptions.includeSubDomains
Применять ли настройки
HSTS
ко всем поддоменам сайта.По умолчанию:
false
- spec.hstsOptions.maxAge
Время в секундах, в течение которого браузер должен помнить, что сайт доступен только с помощью HTTPS.
По умолчанию:
"31536000"
Шаблон:
^[1-9][0-9]*$
Пример:
maxAge: '31536000'
- spec.hstsOptions.preload
Добавлять ли сайт в список предзагрузки.
Эти списки используются современными браузерами и разрешают подключение к сайту только по HTTPS.
По умолчанию:
false
- spec.ingressClass
Имя Ingress-класса для обслуживания NGINX Ingress controller.
Позволяет создать несколько контроллеров для обслуживания одного Ingress-класса.
Важно! Если указать значение “nginx”, дополнительно будут обрабатываться Ingress-ресурсы без аннотации
kubernetes.io/ingress.class
или поляspec.ingressClassName
.По умолчанию:
"nginx"
Шаблон:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Пример:
ingressClass: nginx
- spec.inlet
Обязательный параметр
Способ приема трафика из внешней сети. Изменение установленного способа невозможно.
LoadBalancer
— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer
;LoadBalancerWithProxyProtocol
— устанавливается Ingress-контроллер и заказывается сервис с типомLoadBalancer
. Ingress-контроллер использует proxy-protocol для получения настоящего IP-адреса клиента;-
HostPort
— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort
;Требуется обязательная установка параметров в секции spec.HostPort.
-
HostPortWithProxyProtocol
— устанавливается Ingress-контроллер, который доступен на портах узлов черезhostPort
и использует proxy-protocol для получения настоящего IP-адреса клиента;Требуется обязательная установка параметров в секции spec.HostPortWithProxyProtocol.
Внимание! При использовании этого инлета, убедитесь, что запросы к Ingress-контроллеру направляются только от доверенных источников. Одним из способов настройки ограничения может служить параметр acceptRequestsFrom.
-
HostWithFailover
— устанавливаются два Ingress-контроллера — основной и резервный. Основной контроллер запускается в hostNetwork. Если поды основного контроллера недоступны, трафик уходит в резервный контроллер;Внимание! На одном хосте может быть только один контроллер с данным типом inlet’а.
Внимание! Необходимо, чтобы на узле были свободны следующие порты: 80, 81, 443, 444, 4207, 4208.
Внимание! Чтобы поменять инлет, удалите правила iptables и перезапустите поды
kube-proxy
или перезагрузите узлы, на которых размещались Ingress-контроллеры.
Допустимые значения:
LoadBalancer
,LoadBalancerWithProxyProtocol
,HostPort
,HostPortWithProxyProtocol
,HostWithFailover
- spec.legacySSL
Включены ли старые версии TLS. Также опция разрешает legacy cipher suites для поддержки старых библиотек и программ: OWASP Cipher String ‘C’ . Подробнее здесь.
По умолчанию включены только TLSv1.2 и самые новые cipher suites.
- spec.loadBalancer
Необязательный параметр.
Секция настроек для inlet’а
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
Необязательный параметр.
Секция настроек для inlet’а
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-правил.
По умолчанию:
true
- spec.waitLoadBalancerOnTerminating
Количество секунд до того, как /healthz начнет возвращать код 500, когда под перейдет в статус Terminating.