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

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

  • Порядок маршрутов в виртуальных хостах
  • Пример конфигурации
  • Установка и требования
  1. Инструменты для Managed Service for Kubernetes
  2. Gateway API
  3. Обзор

Gateway API для Managed Service for Kubernetes

Статья создана
Yandex Cloud
Обновлена 21 июля 2025 г.
  • Порядок маршрутов в виртуальных хостах
  • Пример конфигурации
  • Установка и требования

Application Load Balancer предоставляет инструмент для создания и управления балансировщиками нагрузки в кластерах Yandex Managed Service for Kubernetes — Gateway API. Подробнее о проекте Gateway API см. на его сайте.

После установки Gateway API вы сможете создать с его помощью ресурс Gateway, а также связанные с ним ресурсы HTTPRoute и GRPCRoute:

  • Ресурсом Gateway управляет оператор кластера. В этом ресурсе описывается прием входящего трафика и правила, по которым выбираются маршруты для этого трафика — ресурсы HTTPRoute и GRPCRoute. Для приема трафика по Gateway создается L7-балансировщик, а для маршрутизации к балансировщику привязываются HTTP-роутеры.
  • Ресурсами HTTPRoute и GRPCRoute управляют разработчики приложений — сервисов Kubernetes. HTTPRoute и GRPCRoute — описание маршрута для принятого входящего трафика. В соответствии с этим описанием трафик может быть отправлен в сервис Kubernetes, выполняющий роль бэкенда, или перенаправлен на другой URI. По HTTPRoute и GRPCRoute создаются виртуальные хосты и маршруты в HTTP-роутерах, а также группы бэкендов.

Полную конфигурацию ресурсов для Gateway API см. в следующих разделах:

  • Gateway — правила приема входящего трафика и выбора маршрутов (HTTPRoute) для этого трафика.
  • GatewayPolicy — политика применения правил ресурса Gateway, конфигурация обработки входящего трафика.
  • YCCertificate — параметры сертификата Certificate Manager для настройки TLS-соединений в ресурсе Gateway.
  • HTTPRoute и GRPCRoute — правила маршрутизации трафика по бэкендам или его перенаправления.
  • RoutePolicy — политика применения правил ресурса HTTPRoute и настройка правил доступа к бэкендам.
  • YCStorageBucket — параметры бакета Object Storage для настройки бэкенда в ресурсе HTTPRoute.
  • Service — описание сервисов Kubernetes, используемых в качестве бэкендов.

Порядок маршрутов в виртуальных хостахПорядок маршрутов в виртуальных хостах

Порядок маршрутов в виртуальных хостах определяется алгоритмами, описанными в спецификации Gateway API. Эти алгоритмы отличаются для HTTP-запросов и gRPC-вызовов.

HTTP-запросы
gRPC-вызовы

Алгоритм сортирует маршруты по условиям совпадения параметров маршрута и входящего HTTP-запроса.

Условия совпадения в порядке уменьшения приоритета:

  1. Точное совпадение пути.
  2. Совпадение по префиксу пути с наибольшим числом символов.
  3. Соответствие метода.
  4. Наибольшее число совпадений по заголовкам.
  5. Наибольшее число совпадений по параметрам запроса.

Если запрос не соответствует ни одному из правил, привязанных к текущему родительскому элементу, возвращается код 404.

Алгоритм сортирует маршруты по количеству символов в параметрах маршрута и входящего gRPC-вызова. Совпадения учитываются только по заголовкам.

Условия сравнения в порядке уменьшения приоритета:

  1. Наибольшее число символов в доменном имени без звездочек *.
  2. Наибольшее число символов в доменном имени.
  3. Наибольшее число символов в имени сервиса.
  4. Наибольшее число символов в имени метода.
  5. Наибольшее число совпадений по заголовкам.

Если после применения этих условий среди маршрутов из разных ресурсов остаются маршруты с равным приоритетом, то сначала больший приоритет получают старые маршруты, а затем — маршруты в алфавитном порядке по формату {namespace}/{name}.

В случае, если в пределах одного HTTPRoute/GRPCRoute все еще остаются маршруты с равным приоритетом, предпочтение отдается первому подходящему правилу в порядке их перечисления с учетом предыдущих критериев.

Порядок маршрутов может влиять на логику обработки запросов/вызовов.

Пример конфигурацииПример конфигурации

Ниже приведен пример конфигурации ресурсов Gateway и HTTPRoute. По ней будет создан балансировщик, принимающий HTTPS-трафик и распределяющий его по двум сервисам в зависимости от пути в URI запроса.

Пример
---
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: alb-gwapi-gw
spec:
  gatewayClassName: yc-df-class
  listeners:
    - name: alb-gwapi-listener
      protocol: HTTPS
      port: 443
      hostname: <доменное_имя>
      allowedRoutes:
        namespaces:
          from: Selector
          selector:
            matchLabels:
              gatewayName: alb-gwapi-gw
      tls:
        certificateRefs:
          - kind: Secret
            group: ""
            name: alb-gwapi-cert
            namespace: alb-gwapi-ns
---
apiVersion: v1
kind: Namespace
metadata:
  name: alb-gwapi-apps-ns
  labels:
    gatewayName: alb-gwapi-gw

---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: alb-gwapi-route
  namespace: alb-gwapi-apps-ns
spec:
  hostnames:
    - "<доменное_имя>"
  parentRefs:
    - name: alb-gwapi-gw
      namespace: default
  rules:
    - matches:
        - path: 
            type: PathPrefix
            value: /app1
      backendRefs:
        - name: alb-demo-1
          port: 80
    - matches:
        - path:
            type: PathPrefix
            value: /app2
      backendRefs:
        - name: alb-demo-2
          port: 80
    - backendRefs: # Default match (implicit "/" path prefix)
        - name: alb-demo-2
          port: 80

Установка и требованияУстановка и требования

Для установки Gateway API требуются:

  • Кластер Managed Service for Kubernetes.
  • Группа узлов в кластере.
  • Пространство имен в кластере для хранения ключа сервисного аккаунта.

Установить Gateway API можно по инструкции.

См. такжеСм. также

  • Настройка групп безопасности для кластера Kubernetes и балансировщика.
  • Сервисный аккаунт для работы контроллера.
  • Gateway API в Yandex Cloud Marketplace.

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

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