Стадия жизненного цикла модуля: 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.

      В случае инлета HostWithFailover HTTP/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.local
          
          url: 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.hostname
        строка
        DNS-имя балансировщика нагрузки.
      • status.loadBalancer.ip
        строка
        IP-адрес балансировщика нагрузки.
  • 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.

      В случае инлета HostWithFailover HTTP/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.local
          
          url: 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.hostname
        строка
        DNS-имя балансировщика нагрузки.
      • status.loadBalancer.ip
        строка
        IP-адрес балансировщика нагрузки.