Поля ресурса GrpcBackendGroup
Ресурс GrpcBackendGroup позволяет объединять бэкенды — сервисы Kubernetes, между которыми распределяется gRPC-трафик, — в группу. По таким ресурсам Ingress-контроллер Application Load Balancer создает группы бэкендов.
Совет
Вместо Ingress-контроллера Application Load Balancer рекомендуется использовать новый контроллер Yandex Cloud Gwin.
Указание на 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 resourcealb.yc.io, предоставляемой Ingress-контроллером.
GrpcBackendGroup
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.
-
-
-