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-балансировщика
  • История изменений
  • Обучающие курсы
  1. Инструменты для Managed Service for Kubernetes
  2. Ingress-контроллер
  3. Конфигурация ресурсов
  4. GrpcBackendGroup

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

Статья создана
Yandex Cloud
Обновлена 24 февраля 2025 г.

Ресурс GrpcBackendGroup позволяет объединять бэкенды — сервисы Kubernetes, между которыми распределяется gRPC-трафик, — в группу. По таким ресурсам Ingress-контроллер Application Load Balancer создает группы бэкендов.

Указание на GrpcBackendGroup нужно добавить в ресурс Ingress. Этот Ingress должен иметь аннотацию ingress.alb.yc.io/protocol: grpc.

Пример
---
apiVersion: alb.yc.io/v1alpha1
kind: GrpcBackendGroup
metadata:
  namespace: testapp-ns
  name: grpc-bg
spec:
  backends:
    - name: ying
      weight: 50
      service:
        name: grpc-testapp-service
        port:
          number: 8080

    - name: yang
      weight: 50
      service:
        name: grpc-testapp-service2
        port:
          number: 8080
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: testapp-ingress-with-grpc-bg
  namespace: testapp-ns
  annotations:
    ingress.alb.yc.io/group-name: default
    ingress.alb.yc.io/protocol: grpc
spec:
  rules:
    - host: grpc-first-server.info
      http:
        paths:
          - path: /helloworld.Greeter/SayHello
            pathType: Prefix
            backend:
              resource:
                apiGroup: alb.yc.io
                kind: GrpcBackendGroup
                name: grpc-bg

GrpcBackendGroup — custom resource из группы API alb.yc.io, предоставляемой Ingress-контроллером.

GrpcBackendGroupGrpcBackendGroup

apiVersion: alb.yc.io/v1alpha1
kind: GrpcBackendGroup
metadata:
  name: <string>
spec:
  backends:
    - name: <string>
      weight: <int64>
      service:
         name: <int64>
         port:
           name: <string>
           number: <int32>
      tls:
        sni: <string>
        trustedCa: <string>
      healthChecks:
        - grpc:
            serviceName: <string>
          port: <int32>
          healthyThreshold: <int32>
          unhealthyThreshold: <int32>
          timeout: <string>
          interval: <string>
    - ...

Где:

  • apiVersion: alb.yc.io/v1alpha1

  • kind: GrpcBackendGroup

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

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

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

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

      Это имя нужно указать в поле spec.rules.http.paths.backend.resource.name ресурса Ingress (см. конфигурацию).

      Не является именем группы бэкендов в Application Load Balancer.

  • spec (GrpcBackendGroupSpec)

    Спецификация ресурса.

    • backends ([]GrpcBackend)

      Список бэкендов, входящих в группу.

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

        Имя бэкенда.

      • weight (int64)

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

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

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

      • service (ServiceBackend)

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

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

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

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

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

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

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

          • name (string)

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

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

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

          • number (int32)

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

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

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

      • tls (BackendTLS)

        Настройки TLS-соединений между узлами балансировщика и эндпоинтами бэкенда.

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

        • sni (string)

          Доменное имя, указываемое как значение TLS-расширения Server Name Indication (SNI).

        • trustedCa (string)

          Содержимое X.509-сертификата, выпущенного центром сертификации, в формате PEM.

      • healthChecks ([]HealthChecks)

        Настройки пользовательских проверок состояния приложений в кластере Managed Service for Kubernetes.

        По умолчанию Ingress-контроллер Application Load Balancer принимает от L7-балансировщика проверочные запросы на TCP-порт 10501 и проверяет работоспособность подов kube-proxy на каждом узле кластера. Суть проверки состояния заключается в том, что когда kube-proxy работоспособен, то даже если приложение в конкретном поде не отвечает, Kubernetes перенаправит трафик в другой под с этим приложением или на другой узел.

        С помощью параметров healthChecks вы можете настроить собственные проверки состояния приложений.

        • grpc (GrpcBackend)

          Протокол, по которому будет осуществляться проверка — gRPC.

          • serviceName (string)

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

        • port (int32)

          Порт на узлах кластера для проверки доступности приложения. Значение совпадает с портом, указанным в ресурсе Service типа NodePort, в параметре spec.ports.nodePort.

          Приложение будет доступно для проверок состояния по адресу http://<IP-адрес_узла>:<порт>/<путь>.

        • healthyThreshold (int32)

          Количество последовательных успешных проверок, после которых эндпоинт приложения считается работоспособным.

        • unhealthyThreshold (int32)

          Количество последовательных неуспешных проверок, после которых эндпоинт приложения считается неработоспособным.

        • timeout (string)

          Время ожидания ответа в секундах. Возможные значения — от 1s до 60s.

        • interval (string)

          Интервал отправки проверочных запросов в секундах.

          Возможные значения — от 1s до 60s. Значение interval должно быть больше значения timeout минимум на одну секунду.

        Примечание

        Настроить проверки состояния приложения также можно с помощью аннотации ingress.alb.yc.io/health-checks ресурса Service.

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

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