Ingress-nginx#
Ingress-nginx - это контроллер Ingress для Kubernetes, основанный на веб-сервере NGINX , который обеспечивает управление входящим HTTP(S)-трафиком в кластер и маршрутизацию его к соответствующим сервисам. Он реализует ресурс Ingress из Kubernetes API и предоставляет мощные функции балансировки нагрузки, терминации TLS, гибкой маршрутизации, ограничения трафика и других сетевых возможностей.
Основные задачи и возможности
Маршрутизация трафика:
Позволяет направлять запросы по доменам (
host) и путям URL (path) на разные сервисы.Поддержка HTTPS (TLS-терминация):
Обрабатывает зашифрованный трафик, используя сертификаты из Kubernetes Secret. Поддерживает автоматическую переадресацию с HTTP на HTTPS.
Балансировка нагрузки:
Распределяет трафик между pod сервисов с возможностью выбора алгоритма балансировки.
Гибкая конфигурация через аннотации:
Позволяет настраивать параметры NGINX (время ожидания, переписывание путей, заголовки и др.) прямо в манифестах
Ingress.Интеграция с Cert-manager:
Автоматически работает с Cert-manager для получения и обновления TLS-сертификатов (например, Let’s Encrypt).
Работа с внешними IP-адресами:
Может использоваться вместе с MetalLB в локальных кластерах для выделения внешних IP.
Поддержка современных протоколов:
Включает поддержку HTTP/2, WebSocket, gRPC и других.
Примечание
Ingress-nginx является единственным инструментом компонента Ingress-controller, и он устанавливается по умолчанию в процессе установки всего кластера DropApp.
Конфигурация values#
Значения можно переопределить через редактирование инструмента с именем ingress-nginx и указанием нужных values в spec.values. Общее описание конфигурации values для инструментов описано в разделе «Конфигурации инструментов дополнительных компонентов».
namespaceOverride - переопределить namespace для создаваемых ресурсов
revisionHistoryLimit - задать лимит хранимых ревизий Deployment
defaultBackend - определить настройки backend по умолчанию для ответов 404
serviceAccount - определить настройки service account для контроллера
imagePullSecrets - задать секреты для загрузки образов из приватных реестров
tcp - определить TCP-сервисы, публикуемые через ingress-nginx
udp - определить UDP-сервисы, публикуемые через ingress-nginx
portNamePrefix - задать префикс имен портов TCP и UDP в сервисе контроллера
dhParam - задать base64-кодированный параметр Диффи — Хеллмана
namespaceOverride - переопределить namespace для создаваемых ресурсов#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Переопределяет пространство имен для развертывания; по умолчанию используется |
|
commonLabels - задать общие метки для всех ресурсов чарта#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Набор общих меток, которые добавляются ко всем создаваемым ресурсам |
|
controller - определить настройки ingress-nginx controller#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя контроллера |
|
|
Включить валидацию аннотаций |
|
|
Использовать chroot-окружение |
|
|
Реестр образов для контроллера |
|
|
Имя образа контроллера |
|
|
Полный путь к репозиторию образа |
|
|
Тег образа контроллера |
|
|
Дайджест образа для дополнительной безопасности |
|
|
Дайджест chroot-образа |
|
|
Политика загрузки образа |
|
|
Запускать без root привилегий |
|
|
ID пользователя для запуска контроллера |
|
|
ID группы для запуска контроллера |
|
|
Разрешить повышение привилегий |
|
|
Тип профиля |
|
|
Использовать файловую систему только для чтения |
|
|
Имя контейнера контроллера |
|
|
HTTP-порт контроллера |
|
|
HTTPS-порт контроллера |
|
|
Глобальная конфигурация, передаваемая в |
|
|
Аннотации для |
|
|
Пользовательские заголовки для бэкендов |
|
|
Пользовательские заголовки для ответов клиентам |
|
|
Настройка DNS для pod |
|
|
Пользовательские записи хостов |
|
|
Пользовательское имя хоста pod |
|
|
Политика DNS ( |
|
|
Имя RuntimeClass для запуска pod контроллера |
|
|
Использовать внутренний IP узла для bare-metal установок |
|
|
Обрабатывать Ingress без указания |
|
|
Обрабатывать |
|
|
Включить топологически-осведомленную маршрутизацию |
|
|
Отключить выборы лидера |
|
|
Время действия выборов лидера |
|
|
Разрешить |
|
|
Использовать сеть хоста |
|
|
Включить |
|
|
HTTP-порт хоста |
|
|
HTTPS-порт хоста |
|
|
Включить |
|
|
ID для выборов лидера |
|
|
Имя |
|
|
Создать |
|
|
Сделать |
|
|
Аннотации для |
|
|
Значение контроллера для |
|
|
Пользовательские записи |
|
|
Дополнительные параметры |
|
|
Класс ingress для обратной совместимости |
|
|
Метки для подов контроллера |
|
|
ID группы для pod |
|
|
Запуск без root |
|
|
ID пользователя для pod |
|
|
Системные параметры ядра |
|
|
Разрешить повышение привилегий |
|
|
Отбрасываемые |
|
|
Добавляемые |
|
|
Файловая система только для чтения |
|
|
Запуск без root |
|
|
ID пользователя |
|
|
Тип профиля |
|
|
Публиковать сервис для статуса Ingress |
|
|
Переопределить путь сервиса |
|
|
Ограничить контроллер определенным пространством имен |
|
|
Пространство имен для ограничения |
|
|
Селектор пространства имен по меткам |
|
|
Пространство имен для |
|
|
Пространство имен для TCP |
|
|
Аннотации для TCP |
|
|
Пространство имен для UDP |
|
|
Аннотации для UDP |
|
|
Лицензионный ключ |
|
|
Дополнительный аргумент контроллера для включения метрик |
|
|
Включить |
|
|
Дополнительные переменные окружения |
|
|
Тип развертывания ( |
|
|
Аннотации для |
|
|
Метки для ресурсов |
|
|
Стратегия обновления |
|
|
Время ожидания прогресса Deployment до фиксации ошибки развертывания |
|
|
Минимальное время готовности pod |
|
|
Tolerations для размещения на узлах |
|
|
Правила аффинности |
|
|
Ограничения распределения по топологии |
|
|
Время корректного завершения |
|
|
Селектор ОС узла |
|
|
Путь для проверки livenessProbe |
|
|
Порт для проверки livenessProbe |
|
|
Схема для проверки livenessProbe |
|
|
Начальная задержка проверки livenessProbe |
|
|
Период проверки livenessProbe |
|
|
Время ожидания проверки livenessProbe |
|
|
Порог успешности |
|
|
Порог неудач |
|
|
Путь для проверки готовности |
|
|
Порт для проверки готовности |
|
|
Схема для проверки готовности |
|
|
Начальная задержка проверки готовности |
|
|
Период проверки готовности |
|
|
Время ожидания проверки готовности |
|
|
Порог успешности |
|
|
Порог неудач |
|
|
Путь для проверки здоровья |
|
|
Хост для проверки здоровья |
|
|
Аннотации для pod |
|
|
Количество реплик |
|
|
Минимальное количество доступных pod |
|
|
Политика eviction для нездоровых pod, защищенных PodDisruptionBudget |
|
|
CPU request для контейнера контроллера |
|
|
Memory request для контейнера контроллера |
|
|
Включить автомасштабирование |
|
|
Аннотации для HPA |
|
|
Минимальное количество реплик |
|
|
Максимальное количество реплик |
|
|
Целевая утилизация CPU |
|
|
Целевая утилизация памяти |
|
|
Поведение масштабирования HPA |
|
|
Шаблон пользовательских метрик |
|
|
Версия API KEDA |
|
|
Включить KEDA автомасштабирование |
|
|
Минимальное количество реплик KEDA |
|
|
Максимальное количество реплик KEDA |
|
|
Интервал опроса KEDA |
|
|
Период охлаждения KEDA |
|
|
Восстановить исходное количество реплик |
|
|
Аннотации для |
|
|
Триггеры KEDA |
|
|
Поведение KEDA |
|
|
Включить |
|
|
Имя |
|
|
Ключ |
|
|
Создавать сервисы контроллера, не влияет на admission webhook и metrics service |
|
|
Создавать внешний сервис контроллера, полезно для internal-only сценариев |
|
|
Метки для внешнего сервиса контроллера |
|
|
Аннотации для внешнего сервиса контроллера |
|
|
Метки для обоих сервисов контроллера |
|
|
Тип внешнего сервиса контроллера |
|
|
Предопределенный clusterIP внешнего сервиса, значение неизменяемо после создания |
|
|
Список clusterIP внешнего сервиса, значение неизменяемо после создания |
|
|
Список внешних IP-адресов внешнего сервиса |
|
|
Устаревший параметр для предопределенного IP внешнего балансировщика |
|
|
Список CIDR, которым разрешен доступ к внешнему сервису |
|
|
Класс балансировщика для внешнего сервиса |
|
|
Политика внешнего трафика для сервиса, значение Local позволяет сохранять исходный IP клиента |
|
|
Режим session affinity внешнего сервиса, допустимые значения None и ClientIP |
|
|
Политика распределения трафика внешнего сервиса, например PreferClose |
|
|
Политика IP family для внешнего сервиса, возможны SingleStack, PreferDualStack, RequireDualStack |
|
|
Список IP family внешнего сервиса |
|
|
Включает HTTP listener на обоих сервисах контроллера |
|
|
Включает HTTPS listener на обоих сервисах контроллера |
|
|
Порт публикации внешнего HTTP listener |
|
|
Порт публикации внешнего HTTPS listener |
|
|
Порт контейнера, на который направляется внешний HTTP listener |
|
|
Порт контейнера, на который направляется внешний HTTPS listener |
|
|
Объявляет appProtocol для HTTP и HTTPS listener сервиса |
|
|
NodePort для внешнего HTTP listener, если пусто — выделяется автоматически |
|
|
NodePort для внешнего HTTPS listener, если пусто — выделяется автоматически |
|
|
Соответствие внешних TCP listener и nodePort |
|
|
Соответствие внешних UDP listener и nodePort |
|
|
Создавать внутренний сервис контроллера, при включении нужно настроить controller.service.internal.annotations |
|
|
Метки для внутреннего сервиса контроллера |
|
|
Аннотации для внутреннего сервиса контроллера, обязательны для его создания в облачных сценариях |
|
|
Тип внутреннего сервиса контроллера, по умолчанию наследуется от controller.service.type |
|
|
Предопределенный clusterIP внутреннего сервиса, значение неизменяемо после создания |
|
|
Список clusterIP внутреннего сервиса, значение неизменяемо после создания |
|
|
Список внешних IP-адресов внутреннего сервиса |
|
|
Устаревший параметр для предопределенного IP внутреннего балансировщика |
|
|
Список CIDR, которым разрешен доступ к внутреннему сервису |
|
|
Класс балансировщика для внутреннего сервиса |
|
|
Политика внешнего трафика для внутреннего сервиса |
|
|
Режим session affinity внутреннего сервиса, допустимые значения None и ClientIP |
|
|
Политика распределения трафика внутреннего сервиса, например PreferClose |
|
|
Политика IP family для внутреннего сервиса |
|
|
Список IP family внутреннего сервиса |
|
|
Порты публикации внутреннего сервиса, по умолчанию наследуются от внешнего сервиса |
|
|
Целевые порты контейнера для внутреннего сервиса, по умолчанию наследуются от внешнего сервиса |
|
|
Объявляет appProtocol для HTTP и HTTPS listener внутреннего сервиса |
|
|
NodePort для внутреннего HTTP listener, если пусто — выделяется автоматически |
|
|
NodePort для внутреннего HTTPS listener, если пусто — выделяется автоматически |
|
|
Соответствие внутренних TCP listener и nodePort |
|
|
Соответствие внутренних UDP listener и nodePort |
|
|
Включает общий process namespace внутри pod, например для сигнализации sidecar-контейнерами |
|
|
Дополнительные контейнеры в pod контроллера |
|
|
Дополнительные volumeMounts для основного контейнера контроллера |
|
|
Дополнительные volumes для pod контроллера |
|
|
Init containers, запускаемые до основных контейнеров приложения |
|
|
Дополнительные модули, монтируемые в базовый образ nginx |
|
|
Имя admission webhook-компонента |
|
|
Аннотации для admission webhooks и связанных job |
|
|
Включает admission webhooks |
|
|
Дополнительные переменные окружения для admission webhooks |
|
|
Политика обработки ошибок webhook |
|
|
Порт admission webhook |
|
|
Путь к сертификату admission webhook в контейнере |
|
|
Путь к приватному ключу admission webhook в контейнере |
|
|
Селектор namespace для применения admission webhook |
|
|
Селектор объектов для применения admission webhook |
|
|
Метки для admission webhooks |
|
|
Аннотации для сервиса admission webhook |
|
|
Список внешних IP-адресов сервиса admission webhook |
|
|
Список CIDR, которым разрешен доступ к сервису admission webhook |
|
|
Порт сервиса admission webhook |
|
|
Тип сервиса admission webhook |
|
|
Имя job для создания секрета webhook |
|
|
Предельное время выполнения job создания секрета в секундах |
|
|
Запускать контейнер job создания секрета не от root |
|
|
UID пользователя для job создания секрета |
|
|
GID группы для job создания секрета |
|
|
Разрешает повышение привилегий для контейнера job создания секрета |
|
|
Тип seccomp-профиля для job создания секрета |
|
|
Linux capabilities, удаляемые у контейнера job создания секрета |
|
|
Делает корневую файловую систему контейнера job создания секрета только для чтения |
|
|
Ресурсы для job создания секрета |
|
|
Имя job для patch admission webhook |
|
|
Предельное время выполнения job patch webhook в секундах |
|
|
Запускать контейнер job patch webhook не от root |
|
|
UID пользователя для job patch webhook |
|
|
GID группы для job patch webhook |
|
|
Разрешает повышение привилегий для контейнера job patch webhook |
|
|
Тип seccomp-профиля для job patch webhook |
|
|
Linux capabilities, удаляемые у контейнера job patch webhook |
|
|
Делает корневую файловую систему контейнера job patch webhook только для чтения |
|
|
Ресурсы для job patch webhook |
|
|
Включает job patch для admission webhook |
|
|
Имя образа для job генерации сертификатов webhook |
|
|
Тег образа для job генерации сертификатов webhook |
|
|
Digest образа для job генерации сертификатов webhook |
|
|
Политика загрузки образа job генерации сертификатов webhook |
|
|
PriorityClass для job patch webhook |
|
|
RuntimeClass для job patch webhook |
|
|
Аннотации для pod job patch webhook |
|
|
Включает NetworkPolicy для job patch webhook |
|
|
Селектор узлов по ОС для job patch webhook |
|
|
Tolerations для job patch webhook |
|
|
Метки для ресурсов job patch webhook |
|
|
Security context для pod job создания секрета и patch webhook |
|
|
Создавать RBAC для job patch webhook |
|
|
Создавать service account для job patch webhook |
|
|
Пользовательское имя service account для job patch webhook |
|
|
Автоматически монтировать service account token в job patch webhook |
|
|
Использовать cert-manager для выпуска сертификатов admission webhook |
|
|
Срок действия корневого самоподписанного сертификата |
|
|
Лимит истории ревизий корневого сертификата |
|
|
Срок действия сертификата admission webhook |
|
|
Лимит истории ревизий сертификата admission webhook |
|
|
Порт метрик контроллера |
|
|
Имя порта метрик |
|
|
Включает экспорт метрик контроллера |
|
|
Создавать сервис метрик |
|
|
Аннотации для сервиса метрик |
|
|
Метки для ресурса сервиса метрик |
|
|
Список IP-адресов, на которых доступен сервис метрик |
|
|
Список CIDR, которым разрешен доступ к сервису метрик |
|
|
Порт сервиса метрик |
|
|
Тип сервиса метрик |
|
|
Создавать ServiceMonitor для сбора метрик Prometheus Operator |
|
|
Дополнительные метки для ServiceMonitor |
|
|
Аннотации для ServiceMonitor |
|
|
Namespace для ServiceMonitor, по умолчанию используется namespace релиза или namespaceOverride |
|
|
Селектор namespace для поиска целей ServiceMonitor |
|
|
Интервал опроса метрик |
|
|
Список меток сервиса, переносимых на метрики |
|
|
Правила relabeling для целей мониторинга |
|
|
Правила metricRelabeling для метрик |
|
|
Лимит количества меток на одну выборку |
|
|
Лимит длины имени метки на одну выборку |
|
|
Лимит длины значения метки на одну выборку |
|
|
Лимит числа выборок за один scrape |
|
|
Лимит числа целей за один scrape |
|
|
Создавать PrometheusRule с алертами для ingress-nginx |
|
|
Дополнительные метки для PrometheusRule |
|
|
Аннотации для PrometheusRule |
|
|
Список правил PrometheusRule |
|
|
Команда lifecycle hook preStop для улучшения graceful shutdown и дренирования соединений |
|
|
PriorityClass для pod контроллера |
|
revisionHistoryLimit - задать лимит хранимых ревизий Deployment#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Количество предыдущих ревизий, сохраняемых для возможности отката |
|
defaultBackend - определить настройки backend по умолчанию для ответов 404#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Включает развертывание backend по умолчанию |
|
|
Имя компонента default backend |
|
|
Имя образа default backend |
|
|
Тег образа default backend |
|
|
Политика загрузки образа default backend |
|
|
Запускать контейнер default backend не от root |
|
|
UID пользователя контейнера default backend |
|
|
GID группы контейнера default backend |
|
|
Разрешает повышение привилегий внутри контейнера default backend |
|
|
Тип seccomp-профиля для контейнера default backend |
|
|
Делает корневую файловую систему контейнера default backend только для чтения |
|
|
Дополнительные аргументы запуска default backend |
|
|
Создавать service account для default backend |
|
|
Пользовательское имя service account для default backend |
|
|
Автоматически монтировать service account token в pod default backend |
|
|
Дополнительные переменные окружения для pod default backend |
|
|
Порт контейнера default backend |
|
|
Количество неуспешных liveness-проверок до перезапуска контейнера |
|
|
Начальная задержка перед запуском livenessProbe |
|
|
Интервал выполнения livenessProbe |
|
|
Количество успешных liveness-проверок для признания контейнера живым |
|
|
Таймаут livenessProbe |
|
|
Количество неуспешных readiness-проверок до снятия контейнера с ready |
|
|
Начальная задержка перед запуском readinessProbe |
|
|
Интервал выполнения readinessProbe |
|
|
Количество успешных readiness-проверок для признания контейнера готовым |
|
|
Таймаут readinessProbe |
|
|
Стратегия обновления Deployment или DaemonSet default backend |
|
|
Минимальное время готовности pod перед возможным завершением |
|
|
Tolerations для размещения pod default backend на узлах с taints |
|
|
Правила affinity и anti-affinity для размещения pod default backend |
|
|
Topology spread constraints для равномерного распределения pod default backend |
|
|
Security context для pod default backend |
|
|
Security context для контейнера default backend |
|
|
Метки для metadata pod default backend |
|
|
Селектор узлов по операционной системе для размещения default backend |
|
|
Аннотации для pod default backend |
|
|
Количество реплик default backend |
|
|
Минимальное число доступных pod в PodDisruptionBudget, указывать вместе с maxUnavailable нельзя |
|
|
Политика eviction для нездоровых pod, защищенных PodDisruptionBudget |
|
|
Ресурсы для контейнера default backend |
|
|
Дополнительные volumeMounts для контейнера default backend |
|
|
Дополнительные volumes для pod default backend |
|
|
Дополнительные ConfigMap, подключаемые к pod default backend |
|
|
Аннотации для HPA default backend |
|
|
Включает HPA-автомасштабирование default backend |
|
|
Минимальное число реплик HPA для default backend |
|
|
Максимальное число реплик HPA для default backend |
|
|
Целевой процент загрузки CPU для HPA default backend |
|
|
Целевой процент использования памяти для HPA default backend |
|
|
Включает создание NetworkPolicy для компонента default backend |
|
|
Аннотации для сервиса default backend |
|
|
Список clusterIP сервиса default backend, значение неизменяемо после создания |
|
|
Список IP-адресов, на которых доступен сервис default backend |
|
|
Список CIDR, которым разрешен доступ к сервису default backend |
|
|
Порт сервиса default backend |
|
|
Тип сервиса default backend |
|
|
PriorityClass для pod default backend |
|
|
Имя RuntimeClass для запуска pod default backend |
|
|
Метки для ресурсов default backend |
|
rbac - определить настройки RBAC для ingress-nginx#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать RBAC-ресурсы для ingress-nginx |
|
|
Ограничивать RBAC областью namespace вместо cluster-wide прав |
|
serviceAccount - определить настройки service account для контроллера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Создавать service account для контроллера |
|
|
Пользовательское имя service account для контроллера |
|
|
Автоматически монтировать service account token в pod контроллера |
|
|
Аннотации для service account контроллера |
|
imagePullSecrets - задать секреты для загрузки образов из приватных реестров#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Массив imagePullSecrets с учетными данными приватных реестров |
|
tcp - определить TCP-сервисы, публикуемые через ingress-nginx#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Пары ключ-значение для публикации TCP-сервисов через ingress-nginx |
|
udp - определить UDP-сервисы, публикуемые через ingress-nginx#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Пары ключ-значение для публикации UDP-сервисов через ingress-nginx |
|
portNamePrefix - задать префикс имен портов TCP и UDP в сервисе контроллера#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Префикс для имен TCP и UDP портов в сервисе ingress controller, может требоваться провайдерами облачных балансировщиков |
|
dhParam - задать base64-кодированный параметр Диффи — Хеллмана#
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Строка с base64-кодированным параметром Диффи — Хеллмана для SSL |
|