Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Application Load Balancer
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Целевые группы
      • Создать целевую группу
      • Изменить целевую группу
      • Удалить целевую группу
    • Группы бэкендов
      • Создать группу бэкендов
      • Изменить группу бэкендов
      • Удалить группу бэкендов
    • HTTP-роутеры
      • Создать HTTP-роутер для HTTP-трафика
      • Создать HTTP-роутер для gRPC-трафика
      • Изменить HTTP-роутер
      • Удалить HTTP-роутер
    • L7-балансировщики
      • Создать L7-балансировщик
      • Изменить L7-балансировщик
      • Посмотреть статистику L7-балансировщика
      • Посмотреть логи L7-балансировщика
      • Получить идентификатор лог-группы L7-балансировщика
      • Остановить и запустить L7-балансировщик
      • Удалить L7-балансировщик
    • Инструменты для Managed Service for Kubernetes
      • Установить Ingress-контроллер
      • Установить Gateway API
      • Создать или изменить ресурсы по конфигурации
  • Практические руководства
    • Все практические руководства
    • Организация виртуального хостинга
    • Создание балансировщика с защитой от DDoS
    • Интеграция L7-балансировщика с CDN и Object Storage
    • Сине-зеленое и канареечное развертывание версий сервиса
    • Терминирование TLS-соединений
    • Запись логов балансировщика в PostgreSQL
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
  • Концепции
    • Обзор
    • Балансировщики нагрузки
    • HTTP-роутеры
    • Группы бэкендов
    • Целевые группы
    • Квоты и лимиты
  • Инструменты для Managed Service for Kubernetes
    • Ingress-контроллер
      • Обзор
      • Принципы работы
    • Gateway API
    • Необходимые настройки
      • Группы безопасности
      • Сервисный аккаунт
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackendGroupService
      • HttpRouterService
      • LoadBalancerService
      • TargetGroupService
      • VirtualHostService
      • OperationService
    • REST (англ.)
      • Overview
      • BackendGroup
        • Overview
        • addBackend
        • create
        • delete
        • get
        • list
        • listOperations
        • removeBackend
        • update
        • updateBackend
      • HttpRouter
        • Overview
        • create
        • delete
        • get
        • list
        • listOperations
        • update
      • LoadBalancer
        • Overview
        • addListener
        • addSniMatch
        • create
        • delete
        • get
        • getTargetStates
        • list
        • listOperations
        • removeListener
        • removeSniMatch
        • start
        • stop
        • update
        • updateListener
        • updateSniMatch
      • TargetGroup
        • Overview
        • addTargets
        • create
        • delete
        • get
        • list
        • listOperations
        • removeTargets
        • update
      • VirtualHost
        • Overview
        • create
        • delete
        • get
        • list
        • removeRoute
        • update
        • updateRoute
  • Справочники инструментов для Managed Service for Kubernetes
    • Обзор
    • Ingress-контроллер
      • Ingress
      • HttpBackendGroup
    • Gateway API
      • Gateway
      • HTTPRoute
    • Service
  • Справочник логов
  1. Справочники инструментов для Managed Service for Kubernetes
  2. Gateway API
  3. Gateway

Поля ресурса Gateway

Статья создана
Yandex Cloud
  • Gateway
  • GatewaySpec

В ресурсе Gateway определяются правила приема входящего трафика и выбора маршрутов (ресурсов HTTPRoute) для этого трафика. По этим правилам Gateway API Application Load Balancer создает балансировщик с нужными обработчиками и HTTP-роутерами.

Gateway предназначен для оператора кластера. Разработчики приложений должны использовать HTTPRoute.

Gateway — ресурс Kubernetes, определенный проектом Kubernetes Gateway API. В этом справочнике описаны поля и аннотации ресурса, с которыми работает Gateway API Application Load Balancer. Полный справочник ресурса см. в документации Kubernetes Gateway API.

Gateway

apiVersion: gateway.networking.k8s.io/v1alpha2
kind: Gateway
metadata:
  name: <string>
  namespace: <string>
  annotations:
    gateway.alb.yc.io/security-groups: <string>
spec: <GatewaySpec>

Где:

  • apiVersion: gateway.networking.k8s.io/v1alpha2

  • kind: Gateway

  • metadata (ObjectMeta, обязательное)

    Метаданные ресурса.

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

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

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

    • namespace (string)

      Пространство имен, к которому относится ресурс. Значение по умолчанию — default.

    • annotations (map[string]string, обязательное)

      Аннотации ресурса.

      • gateway.alb.yc.io/security-groups (string, обязательное)

        Примечание

        Группы безопасности находятся на стадии Preview. Если они недоступны в вашей сети, для ресурсов будет разрешен весь входящий и исходящий трафик и дополнительной настройки не требуется.

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

        gateway.alb.yc.io/security-groups: b0c2kotoidcoh6haf8cu,e2lnhhdj9a0aqmr78d36,e9bud5itjnl8mkjj7td1
        

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

  • spec (GatewaySpec, обязательное)

    Спецификация ресурса. Подробнее см. ниже.

GatewaySpec

gatewayClassName: yc-df-class
listeners:
  - name: <string>
    hostname: <string>
    port: <int32>
    protocol: <string>
    tls:
      mode: <string>
      certificateRefs:
        - group: <string>
          kind: <string>
          name: <string>
          namespace: <string>
        - ...
    allowedRoutes:
      namespaces:
        from: <string>
        selector:
          matchExpressions:
            - key: <string>
              operator: <string>
              values:
                - <string>
                - ...
          matchLabels:
            <string>: <string>
            ...
  - ...
addresses:
  - type: IPAddress
    value: <string>
  - ...

Где:

  • gatewayClassName: yc-df-class

  • listeners ([]Listener)

    Обработчики балансировщика.

    • name (string)

      Внутреннее имя обработчика.

      Используется только для нужд Kubernetes и не соответствует имени обработчика в Application Load Balancer.

      Имя должно иметь формат доменного, то есть соответствовать следующему регулярному выражению:

      [a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*

      Например, имена example, example.com, foo.example.com подходят, а example.com/bar, -example. — нет.

      Максимальная длина имени — 63 символа.

    • hostname (string)

      Доменное имя, для которого действует обработчик.

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

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

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

      К обработчику будут привязаны только те маршруты (ресурсы HTTPRoute), доменные имена которых (поле spec.hostnames) пересекаются с доменным именем в этом поле.

    • port (int32)

      Порт, на котором обработчик принимает входящий трафик.

    • protocol (string)

      Протокол, по которому обработчик принимает входящий трафик: HTTP или HTTPS.

    • tls (GatewayTlsConfig)

      Настройки, по которым обработчик принимает входящий HTTPS-трафик.

      • mode (string)

        Режим терминирования TLS-соединений.

        Единственное поддерживаемое значение и значение по умолчанию — Terminate: соединения терминируются с использованием сертификатов из поля certificateRefs, расшифрованный трафик отправляется на бэкенды. Режим Passthrough (соединения не терминируются) не поддерживается.

      • certificateRefs ([]SecretObjectReference)

        Список ресурсов Kubernetes, в которых хранятся TLS-сертификаты.

        Используется, только если значение поля protocol — HTTPS. В этом случае в списке должен быть хотя бы один сертификат.

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

        Добавить сертификат в кластер можно в виде секрета (ресурса Secret) через консоль управления Managed Service for Kubernetes или с помощью kubectl:

        kubectl create secret tls <имя_секрета> \
          -n <имя_пространства_имен> \
          --cert <путь_к_файлу_с_сертификатом> \
          --key <путь_к_файлу_с_закрытым_ключом_сертификата>
        
        • group (string)

          Имя группы API Kubernetes, к которой относится ресурс с сертификатом, например networking.k8s.io.

          Значение по умолчанию — пустая строка, обозначающая корневую группу API.

        • kind (string)

          Тип ресурса Kubernetes, в котором хранится сертификат.

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

        • name (string)

          Имя ресурса Kubernetes, в котором хранится сертификат.

        • namespace (string)

          Пространство имен, к которому относится имя ресурса с сертификатом.

    • allowedRoutes (AllowedRoutes)

      Правила, по которым для обработчика выбираются маршруты (ресурсы HTTPRoute). По этим маршрутам создаются HTTP-роутеры и группы бэкендов, привязываемые к обработчику.

      Чтобы HTTPRoute был выбран, в его спецификации (поле spec.parentRefs) должно быть указание на Gateway.

      • namespaces (RouteNamespaces)

        Правило выбора пространств имен, к которым относятся ресурсы HTTPRoute, привязываемые к обработчику.

        • from (string)

          Тип правила:

          • All — выбираются ресурсы из всех пространств имен.
          • Same — выбираются ресурсы только из того же пространства имен, что и ресурс Gateway (поле metadata.namespace).
          • Selector — выбираются ресурсы из пространств имен, соответствующих требованиям из поля selector.
        • selector (LabelSelector)

          Селектор — набор требований к пространствам имен. Выбираются только те пространства, которые удовлетворяют всем требованиям из полей matchExpressions и matchLabels.

          Подробнее см. в справочнике API Kubernetes.

          Если значение поля from — не Selector, то поле selector игнорируется.

  • addresses ([]GatewayAddress)

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

    Если поле не указано, балансировщику будет автоматически присвоен один публичный адрес.

    • type: IPAddress

    • value (string)

      Публичный IP-адрес Yandex Virtual Private Cloud, присваиваемый балансировщику.

      Перед указанием адреса в этом поле его нужно зарезервировать по инструкции.

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

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Gateway
  • GatewaySpec