Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Application Load Balancer
  • Начало работы
    • Обзор
      • Обзор
      • Принципы работы
      • Установить Ingress-контроллер
      • Обновить Ingress-контроллер
        • Ingress
        • HttpBackendGroup
        • GrpcBackendGroup
        • IngressClass
        • Service для Ingress
    • Настройка групп безопасности
    • Работа с сервисными аккаунтами
    • Создание и изменение ресурсов по конфигурации
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи L7-балансировщика
  • История изменений
  • Обучающие курсы

В этой статье:

  • Ingress
  • ObjectMeta
  • Аннотации (metadata.annotations)
  • IngressSpec
  • IngressTLS
  • IngressRule
  • DefaultBackend
  • IngressGroupSettings
  1. Инструменты для Managed Service for Kubernetes
  2. Ingress-контроллер
  3. Конфигурация ресурсов
  4. Ingress

Поля и аннотации ресурса Ingress

Статья создана
Yandex Cloud
Обновлена 24 февраля 2025 г.
  • Ingress
  • ObjectMeta
    • Аннотации (metadata.annotations)
  • IngressSpec
    • IngressTLS
    • IngressRule
    • DefaultBackend
  • IngressGroupSettings

В ресурсе Ingress определяются правила распределения входящего трафика между сервисами Kubernetes. По этим правилам Ingress-контроллер Application Load Balancer создает балансировщик с нужными обработчиками и HTTP-роутерами. Сервисы, выступающие в роли бэкендов Application Load Balancer, могут быть указаны в Ingress напрямую или в составе групп бэкендов HttpBackendGroup.

Ingress — стандартный ресурс Kubernetes. Ниже описаны поля и аннотации ресурса, с которыми работает Ingress-контроллер Application Load Balancer. Полное описание конфигурации ресурса см. в документации Kubernetes.

IngressIngress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata: <ObjectMeta>
spec: <IngressSpec>

Поле

Значение или тип

Описание

apiVersion

networking.k8s.io/v1

Обязательное.
Версия API Kubernetes.

kind

Ingress

Тип ресурса.

metadata

ObjectMeta

Обязательное.
Метаданные ресурса.

spec

IngressSpec

Обязательное.
Спецификация ресурса.

Пример
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: alb-demo-tls
  annotations:
    ingress.alb.yc.io/subnets: <список_идентификаторов_подсетей>
    ingress.alb.yc.io/security-groups: <список_идентификаторов_групп_безопасности>
    ingress.alb.yc.io/external-ipv4-address: <auto_или_статический_IP-адрес>
    ingress.alb.yc.io/group-name: my-ingress-group
spec:
  tls:
    - hosts:
        - <доменное_имя>
      secretName: yc-certmgr-cert-id-<идентификатор_TLS-сертификата>
  rules:
    - host: <доменное_имя>
      http:
        paths:
          - path: /app1
            pathType: Prefix
            backend:
              service:
                name: alb-demo-1
                port:
                  number: 80
          - path: /app2
            pathType: Prefix
            backend:
              service:
                name: alb-demo-2
                port:
                  number: 80
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: alb-demo-2
                port:
                  name: http

ObjectMetaObjectMeta

name: <string>
annotations:
  ingress.alb.yc.io/group-name: <string>
  ingress.alb.yc.io/subnets: <string>
  ingress.alb.yc.io/security-groups: <string>
  ingress.alb.yc.io/external-ipv4-address: <string>
  ingress.alb.yc.io/internal-ipv4-address: <string>
  ingress.alb.yc.io/internal-alb-subnet: <string>
  ingress.alb.yc.io/protocol: <string>
  ingress.alb.yc.io/group-settings-name: <string>
  ingress.alb.yc.io/group-order: <string>
  ingress.alb.yc.io/transport-security: <string> # Только до версии 0.2.0 невключительно.
  ingress.alb.yc.io/prefix-rewrite: <string>
  ingress.alb.yc.io/upgrade-types: <string>
  ingress.alb.yc.io/request-timeout: <string>
  ingress.alb.yc.io/idle-timeout: <string>
  ingress.alb.yc.io/modify-header-response-append: <string>
  ingress.alb.yc.io/modify-header-response-replace: <string>
  ingress.alb.yc.io/modify-header-response-rename: <string>
  ingress.alb.yc.io/modify-header-response-remove: <string>
  ingress.alb.yc.io/modify-header-request-append: <string>
  ingress.alb.yc.io/modify-header-request-replace: <string>
  ingress.alb.yc.io/modify-header-request-rename: <string>
  ingress.alb.yc.io/modify-header-request-remove: <string>
  ingress.alb.yc.io/security-profile-id: <string>
  ingress.alb.yc.io/use-regex: <string>
  ingress.alb.yc.io/balancing-panic-threshold: <string>
  ingress.alb.yc.io/balancing-locality-aware-routing: <string>
  ingress.alb.yc.io/autoscale-max-size: <string>
  ingress.alb.yc.io/autoscale-min-zone-size: <string>

Поле

Значение или тип

Описание

name

string

Обязательное.
Имя ресурса.
Не является именем балансировщика в Application Load Balancer.

annotations

map[string]string

Обязательное.
Аннотации ресурса.

Аннотации (metadata.annotations)Аннотации (metadata.annotations)

Аннотации — это коллекция пар ключ:значение, которые используются для присвоения метаданных объекту. Значения аннотаций всегда имеют тип данных string.

Значением аннотации могут быть несколько пар <ключ>=<значение>, перечисленные через запятую:

аннотация: <ключ>=<значение>,<ключ>=<значение>,<ключ>=<значение>

При этом одному ключу может соответствовать несколько значений. Например, чтобы добавить заголовок ответа X-Robots со значением noarchive,nofollow,noindex, запишите аннотацию так:

ingress.alb.yc.io/modify-header-response-replace: X-Robots-Tag=noarchive,X-Robots-Tag=nofollow,X-Robots-Tag=noindex

Подробнее об аннотациях см. в документации Kubernetes.

Для объекта ObjectMeta можно передать следующие аннотации:

  • ingress.alb.yc.io/group-name

    Имя группы ресурсов Ingress. Для каждой группы создается отдельный балансировщик. Несколько ресурсов Ingress можно объединить в одну группу, чтобы не создавать балансировщик для каждого отдельного ресурса Ingress. Подробнее о формате см. в документации Kubernetes.

    Поле обязательно, даже если ресурс Ingress — единственный в группе.

  • ingress.alb.yc.io/subnets

    Список подсетей Virtual Private Cloud, в которых расположен балансировщик. Идентификаторы подсетей перечисляются через запятую, например:

    ingress.alb.yc.io/subnets: b0c2kotoidco********,e2lnhhdj9a0a********,e9bud5itjnl8********
    

    Поле обязательно хотя бы для одного из Ingress, объединенных в группу (аннотация ingress.alb.yc.io/group-name) для создания одного балансировщика. В балансировщике используются все подсети, указанные в соответствующих Ingress.

    Все подсети одного балансировщика должны относиться к одной сети, из каждой зоны доступности можно указать не более одной сети.

  • ingress.alb.yc.io/security-groups

    Список групп безопасности Virtual Private Cloud для балансировщика. Идентификаторы групп перечисляются через запятую, например:

    ingress.alb.yc.io/security-groups: b0c2kotoidco********,e2lnhhdj9a0a********,e9bud5itjnl8********
    

    В балансировщике, созданном по группе из нескольких Ingress (аннотация ingress.alb.yc.io/group-name), используются все группы безопасности, указанные в этих Ingress.

    Для корректной работы балансировщика и Ingress-контроллера группы безопасности должны быть настроены, как описано в разделе Настройка групп безопасности для инструментов Application Load Balancer для Managed Service for Kubernetes.

  • ingress.alb.yc.io/external-ipv4-address

    Настройка публичного IP-адреса балансировщика.

    Чтобы использовать зарезервированный IP-адрес, укажите его в значении аннотации. Чтобы балансировщик получил IP-адрес автоматически, укажите значение auto.

    Если вы указали значение auto, то при удалении Ingress-контроллера IP-адрес также будет удален из облака. Чтобы избежать этого, используйте имеющийся зарезервированный адрес.

    Для балансировщика должен быть настроен либо публичный, либо внутренний IP-адрес (аннотация ingress.alb.yc.io/internal-ipv4-address), но не оба одновременно.

  • ingress.alb.yc.io/internal-ipv4-address

    Настройка внутреннего IP-адреса балансировщика.

    IP-адрес должен относиться к подсети, указанной в аннотации ingress.alb.yc.io/internal-alb-subnet. Чтобы использовать конкретный IP-адрес из этой подсети, укажите его в значении аннотации. Чтобы балансировщик получил IP-адрес автоматически, укажите значение auto.

    Для балансировщика должен быть настроен либо внутренний, либо публичный IP-адрес (аннотация ingress.alb.yc.io/external-ipv4-address), но не оба одновременно.

  • ingress.alb.yc.io/internal-alb-subnet

    Идентификатор подсети внутреннего IP-адреса балансировщика.

    Поле обязательно, если для балансировщика настроен внутренний IP-адрес (аннотация ingress.alb.yc.io/internal-ipv4-address).

  • ingress.alb.yc.io/protocol

    Протокол соединений между балансировщиком и бэкендами, описанными в Ingress:

    • http — HTTP/1.1. Значение по умолчанию.
    • http2 — HTTP/2.
    • grpc — gRPC.
  • ingress.alb.yc.io/group-settings-name

    Имя для настроек группы ресурсов Ingress.

    Чтобы задать настройки, создайте дополнительный ресурс IngressGroupSettings.

  • ingress.alb.yc.io/group-order

    Порядковый номер ресурса Ingress. Если для нескольких ресурсов в группе ресурсов Ingress указать порядковые номера, будет задана последовательность добавления маршрутов для внутреннего трафика. Ресурсы Ingress сортируются по неубыванию.

    Аннотация не применяется к маршрутам, заданным одним ресурсом Ingress.

    В значении аннотации укажите целое число. Значение по умолчанию — 0.

  • ingress.alb.yc.io/transport-security

    Важно

    В ALB Ingress Controller версии 0.2.0 и позднее используйте аннотацию только в объекте Service.

    Если указать аннотацию в ресурсах Ingress, где используется один сервис с одинаковыми настройками для групп бэкендов, аннотация применится корректно. Но такой механизм устарел, в дальнейшем он не будет поддерживаться.

    Протокол шифрования соединений между балансировщиком и бэкендами, указанными в Ingress напрямую (без HttpBackendGroup).

    Допустимое значение: tls — TLS без проверки сертификата.

    Если аннотация не указана, балансировщик соединяется с бэкендами без шифрования.

    Для бэкендов, входящих в состав групп, значение аннотации игнорируется. Шифрование соединений балансировщика с бэкендами из групп настраивается с помощью поля spec.backend.tls ресурса HttpBackendGroup (см. справочник ресурса).

  • ingress.alb.yc.io/prefix-rewrite

    Замена для путей в URI или имен gRPC-вызовов, перечисленных в спецификации Ingress (поле rules.http.paths), при маршрутизации запросов на бэкенды.

    Замена зависит от типа пути или имени: при pathType: Exact путь или имя заменяется целиком, при pathType: Prefix заменяется только указанное начало.

    Пример

    Чтобы при всех входящих запросах к вашему API балансировщик отправлял бэкендам запросы к конкретной версии, настройте следующую замену:

    ...
    metadata:
      annotations:
        ingress.alb.yc.io/prefix-rewrite: /api/v4/
    ...
    spec:
      rules:
        - host: <доменное имя>
          http:
            paths:
              - path: /api/
                pathType: Prefix
                ...
    

    В Application Load Balancer замена будет настроена во всех HTTP-роутерах, созданных по ресурсу Ingress.

  • ingress.alb.yc.io/upgrade-types

    Поддерживаемые балансировщиком значения HTTP-заголовка Upgrade во входящих запросах. Значения перечисляются через запятую.

    Например, с помощью этой аннотации можно включить поддержку протокола WebSocket:

    ingress.alb.yc.io/upgrade-types: WebSocket
    

    В Application Load Balancer значения Upgrade будут настроены во всех HTTP-роутерах, созданных по ресурсу Ingress.

  • ingress.alb.yc.io/request-timeout

    Максимальный период, на который может быть установлено соединение между узлом балансировщика и бэкендом. По истечении этого периода балансировщик отправляет клиенту ответ 504 Gateway Timeout.

    Значение по умолчанию: 60s.

    В Application Load Balancer таймаут будет настроен во всех HTTP-роутерах, созданных по ресурсу Ingress.

  • ingress.alb.yc.io/idle-timeout

    Максимальный период, в течение которого соединение между узлом балансировщика и бэкендом может простаивать без передачи данных. По истечении этого периода балансировщик отправляет клиенту ответ 504 Gateway Timeout.

    Если аннотация не указана, соединение может простаивать в течение любого периода до истечения общего таймаута (аннотация ingress.alb.yc.io/request-timeout).

    В Application Load Balancer таймаут будет настроен во всех HTTP-роутерах, созданных по ресурсу Ingress.

  • ingress.alb.yc.io/modify-header-response-append

    Добавляет строку к значению заголовка ответа. Заголовок и строка указываются в формате:

    ingress.alb.yc.io/modify-header-response-append: <ключ>=<значение>
    

    Где:

    • <ключ> — имя изменяемого заголовка.
    • <значение> — строка, которая будет добавлена к значению заголовка.
  • ingress.alb.yc.io/modify-header-response-replace

    Заменяет значение заголовка ответа. Заголовок и его новое значение указываются в формате:

    ingress.alb.yc.io/modify-header-response-replace: <ключ>=<значение>
    

    Где:

    • <ключ> — имя изменяемого заголовка.
    • <значение> — новое значение заголовка.
  • ingress.alb.yc.io/modify-header-response-rename

    Переименовывает заголовок ответа. Заголовок и его новое имя указываются в формате:

    ingress.alb.yc.io/modify-header-response-rename: <ключ>=<значение>
    

    Где:

    • <ключ> — имя изменяемого заголовка.
    • <значение> — новое имя заголовка.
  • ingress.alb.yc.io/modify-header-response-remove

    Удаляет заголовок ответа. Заголовок для удаления указывается в формате:

    ingress.alb.yc.io/modify-header-response-remove: <ключ>=true
    

    Где <ключ> — имя удаляемого заголовка.

  • ingress.alb.yc.io/modify-header-request-append

    Добавляет строку к значению заголовка запроса. Заголовок и строка указываются в формате:

    ingress.alb.yc.io/modify-header-request-append: <ключ>=<значение>
    

    Где:

    • <ключ> — имя изменяемого заголовка.
    • <значение> — строка, которая будет добавлена к значению заголовка.
  • ingress.alb.yc.io/modify-header-request-replace

    Заменяет значение заголовка запроса. Заголовок и его новое значение указываются в формате:

    ingress.alb.yc.io/modify-header-request-replace: <ключ>=<значение>
    

    Где:

    • <ключ> — имя изменяемого заголовка.
    • <значение> — новое значение заголовка.
  • ingress.alb.yc.io/modify-header-request-rename

    Переименовывает заголовок запроса. Заголовок и его новое имя указываются в формате:

    ingress.alb.yc.io/modify-header-request-rename: <ключ>=<значение>
    

    Где:

    • <ключ> — имя изменяемого заголовка.
    • <значение> — новое имя заголовка.
  • ingress.alb.yc.io/modify-header-request-remove

    Удаляет заголовок запроса. Заголовок для удаления указывается в формате:

    ingress.alb.yc.io/modify-header-request-remove: <ключ>=true
    

    Где <ключ> — имя удаляемого заголовка.

  • ingress.alb.yc.io/security-profile-id

    Включает поддержку сервиса Yandex Smart Web Security, который позволяет защититься от DDoS-атак и ботов, а также задействовать WAF и ограничить нагрузку на защищаемый ресурс.

    Примечание

    Для подключения профиля безопасности к виртуальному хосту Application Load Balancer у сервисного аккаунта, от имени которого работает Ingress-контроллер, должна быть роль smart-web-security.editor на каталог, в котором размещены ресурсы Application Load Balancer и Smart Web Security. Подробнее см. Назначение роли сервисному аккаунту.

    Сервис проверяет HTTP-запросы, которые поступают к защищаемому ресурсу через виртуальный хост L7-балансировщика. В зависимости от результатов проверки сервис направляет запросы на защищаемый ресурс, блокирует их или отправляет в Yandex SmartCaptcha для дополнительной верификации.

    Чтобы включить поддержку сервиса, в аннотации Ingress укажите идентификатор профиля безопасности Smart Web Security:

    ingress.alb.yc.io/security-profile-id: <идентификатор_профиля_безопасности>
    

    Профиль содержит список условий проверки и действий, которые применяются к приходящим HTTP-запросам по результатам проверки.

    Если у вас нет профиля безопасности, создайте его.

  • ingress.alb.yc.io/use-regex

    Включает поддержку регулярных выражений стандарта RE2 при сопоставлении пути запроса, если передана строка true. Применимо только если для параметра pathType указано значение Exact.

  • ingress.alb.yc.io/balancing-panic-threshold

    Задает пороговое значения для активации режима паники. Режим включится, если процент работоспособных эндпоинтов опустится ниже указанного значения.

    Значение по умолчанию — 0, при котором режим паники не активируется никогда.

  • ingress.alb.yc.io/balancing-locality-aware-routing

    Задает процент входящего трафика, который балансировщик передает бэкендам из своей зоны доступности. Остальной трафик поровну делится между другими зонами.

    Значение по умолчанию — 0.

    Подробнее о локализации трафика.

  • ingress.alb.yc.io/autoscale-max-size

    Задает максимальное суммарное количество ресурсных единиц. По умолчанию количество не ограничено. Значение должно быть не меньше, чем количество зон доступности балансировщика, умноженное на минимальное количество ресурсных единиц в каждой зоне.

    Подробнее о настройках автомасштабирования.

  • ingress.alb.yc.io/autoscale-min-zone-size

    Задает минимальное количество ресурсных единиц в каждой зоне доступности. Минимальное значение и значение по умолчанию — 2.

    Подробнее о настройках автомасштабирования.

IngressSpecIngressSpec

ingressClassName: <string>
tls:
  - <IngressTLS>
  - ...
rules:
  - <IngressRule>
  - ...
defaultBackend:
  - <IngressBackend>
  - ...

Поле

Значение или тип

Описание

ingressClassName

string

Имя ресурса IngressClass, к которому относится ресурс Ingress.

IngressClass нужен, чтобы маршрутизировать трафик в рамках одного приложения с помощью нескольких Ingress-контроллеров. Если вы не используете параметр ingressClassName, но используете несколько Ingress-контроллеров, создайте ресурс IngressClass, который будет применяться по умолчанию.

tls

[]IngressTLS

Обязательное.
Настройки для приема HTTPS-трафика: наборы доменных имен и соответствующие этим наборам TLS-сертификаты.

Если поле указано, для балансировщика будут созданы обработчики двух видов: одни будут принимать HTTPS-трафик на порте 443, а другие — перенаправлять запросы с HTTP (порт 80) на HTTPS. При этом правила распределения трафика для тех же доменных имен, явно указанные в других Ingress, без поля tls, будут иметь приоритет над перенаправлением с HTTP на HTTPS.

Если поле не указано, для балансировщика будут созданы только обработчики для приема HTTP-трафика на порте 80.

rules

[]IngressRule

Список правил распределения входящего трафика по бэкендам в зависимости от доменного имени (поле host) и запрашиваемого ресурса (поле http.paths).

В Application Load Balancer правила соответствуют виртуальным хостам HTTP-роутеров.

Если правила не определены, необходимо указать бэкенд по умолчанию — трафик будет перенаправляться на него.

IngressTLSIngressTLS

hosts:
  - <string>
  - ...
secretName: <string>

Поле

Значение или тип

Описание

hosts

[]string

Обязательное.
Доменные имена, которым соответствует TLS-сертификат secretName.

Для каждого имени, как для значения TLS-расширения Server Name Indication (SNI), в балансировщике будет создан отдельный обработчик.

Чтобы указать на все возможные поддомены любых уровней, вместо первого уровня доменного имени используйте звездочку *. В этом случае значение нужно обернуть в кавычки.

Например, значение "*.example.com" соответствует доменным именам foo.example.com, foo-bar.example.com, foo.bar.example.com, foo.bar.baz.example.com и т. п. (но не example.com).

Заменить звездочкой только часть первого уровня доменного имени, например *foo.example.com, нельзя.

secretName

string

Обязательное.
Указание на TLS-сертификат из Yandex Certificate Manager в формате yc-certmgr-cert-id-<идентификатор сертификата>. Под этим именем в Managed Service for Kubernetes доступен секрет с сертификатом.

В Certificate Manager можно выпустить сертификат от Let's Encrypt® или загрузить собственный сертификат.

Если сертификат пока не добавлен в Certificate Manager, укажите секрет Kubernetes с сертификатом в поле secretName. Тогда Ingress-контроллер Application Load Balancer автоматически добавит сертификат в Certificate Manager.

IngressRuleIngressRule

host: <string>
http:
  paths:
    - path: <string>
      pathType: <string>
      backend: <IngressBackend>

В версиях ALB Ingress Controller до 0.2.0 каждая группа бэкендов соответствует связке параметров host, http.paths.path и http.paths.pathType. В версиях 0.2.0 и позднее группа бэкендов соответствует параметру backend.service (IngressBackend). Из-за этого при обновлении ALB Ingress Controller могут возникнуть коллизии. Чтобы избежать их, узнайте, применимы ли ограничения при обновлении к вашей инфраструктуре.

Поле

Значение или тип

Описание

host

string

Обязательное.
Доменное имя (значение заголовка Host для HTTP/1.1 или псевдозаголовка :authority для HTTP/2), для которого действует правило.

Чтобы указать на все возможные поддомены любых уровней, вместо первого уровня доменного имени используйте звездочку *. В этом случае значение нужно обернуть в кавычки.

Например, значение "*.example.com" соответствует доменным именам foo.example.com, foo-bar.example.com, foo.bar.example.com, foo.bar.baz.example.com и т. п. (но не example.com).

Заменить звездочкой только часть первого уровня доменного имени, например *foo.example.com, нельзя.

http

HTTPIngressRuleValue

Обязательное.
Правило распределения входящих запросов с доменным именем, указанным в поле host, в зависимости от запрашиваемого ресурса.

http.paths

[]HTTPIngressPath

Обязательное.
Список маршрутов: запрашиваемых ресурсов, для которых действует правило, и соответствующих им бэкендов.

Порядок маршрутов в списке важен: они сверяются с входящим запросом по очереди, и первый подошедший маршрут используется в маршрутизации. Поэтому рекомендуется помещать наиболее специфичные маршруты в начало списка. Эта логика отличается от описанной в документации Kubernetes, где приоритет имеют маршруты с самыми длинными путями (поле rules.http.paths.path).

Важно

Если балансировщик создается по нескольким Ingress (с одинаковым значением аннотации ingress.alb.yc.io/group-name) и в них есть правила для одного доменного имени, то порядок обработки маршрутов гарантируется только внутри каждого из Ingress, но не между ними.

http.paths.path

string

Обязательное.
Указание на запрашиваемый ресурс:

  • Для простого HTTP — путь в URI входящего запроса (если тип — Exact) или его начало (если тип — Prefix).
  • Для gRPC (когда значение аннотации ingress.alb.yc.io/protocol — grpc) — полное имя gRPC-вызова (если тип — Exact) или его начало (если тип — Prefix). Пример: /my.custom.server.Service/Method.

В обоих случаях значение должно начинаться с /.

http.paths.pathType

string

Обязательное.
Тип указания на запрашиваемый ресурс:

  • Exact: путь в URI запроса или имя gRPC-вызова должно совпадать со значением поля rules.http.paths.path.
  • Prefix: путь в URI запроса или имя gRPC-вызова должно начинаться со значения поля rules.http.paths.path.

Помимо распределения трафика, от типа зависит механизм замены пути или имени вызова в запросах к бэкендам, если замена настроена с помощью аннотации ingress.alb.yc.io/prefix-rewrite.

http.paths.backend

IngressBackend

Обязательное.
Указание на бэкенд или группу бэкендов, которые должны обрабатывать запросы с указанным доменным именем и путем в URI или именем gRPC-вызова.

IngressBackendIngressBackend

service:
  name: <string>
  port:
    name: <string>
    number: <int32>
resource:
  kind: HttpBackendGroup
  name: <string>
  apiGroup: alb.yc.io

Поле

Значение или тип

Описание

service

IngressServiceBackend

Обязательное.
Указание на сервис Kubernetes, который должен обрабатывать запросы в качестве бэкенда.

Ресурс Service, на который указывает это поле, должен быть описан по принятой конфигурации.

Для элемента списка spec.rules.http.paths должен быть указан либо сервис-бэкенд, либо группа бэкендов (resource), но не оба одновременно.

  • name (string, обязательное)

    Имя сервиса Kubernetes.

  • port (ServiceBackendPort, обязательное)

    Порт сервиса, к которому будет обращаться Ingress.

    Поле предназначено для работы Ingress-контроллера и не соответствует ни одному из полей ресурсов Application Load Balancer.

    • name (string)

      Имя порта сервиса.

      Имя должно совпадать с одним из имен портов, указанных в полях spec.ports.name ресурса Service. Подробнее см. в спецификации ресурса.

      Для порта сервиса должно быть указано либо имя, либо номер (number), но не оба одновременно.

    • number (int32)

      Номер порта сервиса.

      Номер должен совпадать с одним из номеров портов, указанных в полях spec.ports.port ресурса Service. Подробнее см. в спецификации ресурса.

      Для порта сервиса должен быть указан либо номер, либо имя (name), но не оба одновременно.

resource

TypedLocalObjectReference

Обязательное.
Указание на группу бэкендов, которые должны обрабатывать запросы.

Ресурс HttpBackendGroup, на который указывает это поле, реализован Ingress-контроллером как custom resource. Он должен быть описан по принятой конфигурации.

Для элемента списка spec.rules.http.paths должна быть указана либо группа бэкендов, либо сервис-бэкенд (service), но не оба одновременно.

  • kind: HttpBackendGroup

  • name (string) — имя группы бэкендов.

    Имя должно совпадать с именем, указанным в поле metadata.name ресурса HttpBackendGroup. Подробнее см. в конфигурации ресурса.

  • apiGroup: alb.yc.io

DefaultBackendDefaultBackend

Бэкенд по умолчанию, на который перенаправляется трафик, когда правила распределения входящего трафика по бэкендам не заданы. Если в описании Ingress нет поля spec.rules, то должно быть поле spec.defaultBackend.

Если доменное имя и запрашиваемый ресурс не соответствуют тем, что указаны в правилах, трафик также перенаправляется на бэкенд по умолчанию.

Поле spec.defaultBackend указывает либо на сервис-бэкенд (service), либо на группу бэкендов (resource) и заполняется так же, как IngressBackend.

Пример spec.defaultBackend.service
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: testapp-ingress-with-default-backend
  namespace: testapp-ns
  annotations:
    ...
spec:
  defaultBackend:
    service:
      name: testapp-service
      port:
        name: http
Пример spec.defaultBackend.resource
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-1
  annotations:
    ...
spec:
  defaultBackend:
    resource:
      apiGroup: alb.yc.io
      kind: HttpBackendGroup
      name: bg-with-bucket

Важно

Для одной группы ресурсов Ingress (с одинаковым значением аннотации ingress.alb.yc.io/group-name) можно задать только один бэкенд по умолчанию.

IngressGroupSettingsIngressGroupSettings

apiVersion: alb.yc.io/v1alpha1
kind: IngressGroupSettings
metadata:
  name: non-default-settings
logOptions:
  logGroupID: <идентификатор_лог-группы>
  discardRules:
    - discardPercent: 50
      grpcCodes:
        - OK
        - CANCELLED
        - UNKNOWN
    - discardPercent: 67
      httpCodeIntervals:
        - HTTP_1XX
    - discardPercent: 20
      httpCodes:
        - 200
        - 404

Укажите идентификатор лог-группы и параметры правил отбрасывания логов:

  • httpCodes — HTTP-коды.
  • httpCodeIntervals — классы HTTP-кодов.
  • grpcCodes — gRPC-коды.
  • discardPercent — процент отбрасываемых логов.

Была ли статья полезна?

Предыдущая
Обновить Ingress-контроллер
Следующая
HttpBackendGroup
Проект Яндекса
© 2025 ООО «Яндекс.Облако»