Поля и аннотации ресурса Service для Ingress-контроллера
Ресурс Service соответствует сервису Kubernetes. Для Ingress-контроллера Application Load Balancer сервисы представляют собой бэкенды, между которыми распределяется входящий трафик в кластере Managed Service for Kubernetes. Сервисы, выступающие в роли бэкендов Application Load Balancer, могут быть указаны в ресурсе Ingress напрямую или в составе групп бэкендов HttpBackendGroup.
Совет
Вместо Ingress-контроллера Application Load Balancer рекомендуется использовать новый контроллер Yandex Cloud Gwin.
Service — стандартный ресурс Kubernetes. Ниже описаны поля и аннотации ресурса, с которыми работают инструменты Application Load Balancer для Managed Service for Kubernetes. Полное описание конфигурации ресурса см. в документации Kubernetes
Service
apiVersion: v1
kind: Service
metadata: <ObjectMeta>
spec: <ServiceSpec>
|
Поле |
Значение или тип |
Описание |
|
|
|
Обязательное. Версия API Kubernetes. |
|
|
|
Тип ресурса. |
|
|
|
Обязательное. Метаданные ресурса. |
|
|
|
Обязательное. Спецификация ресурса. |
Пример
apiVersion: v1
kind: Service
metadata:
name: alb-demo-1
spec:
selector:
app: alb-demo-1
type: NodePort
ports:
- name: http
port: 80
protocol: TCP
nodePort: 30081
ObjectMeta
name: <string>
annotations:
ingress.alb.yc.io/protocol: <string>
ingress.alb.yc.io/transport-security: <string>
ingress.alb.yc.io/health-checks: <string>
|
Поле |
Значение или тип |
Описание |
|
|
|
Обязательное. Не является именем балансировщика в Application Load Balancer. |
|
|
|
Обязательное. Аннотации ресурса. |
Аннотации (metadata.annotations)
Аннотации — это коллекция пар ключ:значение, которые используются для присвоения метаданных объекту. Значения аннотаций всегда имеют тип данных string. Подробнее об аннотациях см. в документации Kubernetes
В Application Load Balancer аннотации используются в ресурсах Service только для настройки Ingress-контроллеров.
Для объекта ObjectMeta можно передать следующие аннотации:
-
ingress.alb.yc.io/protocol
Протокол соединений между балансировщиком и бэкендами, описанными в
Ingress:http— HTTP/1.1. Значение по умолчанию.http2— HTTP/2.grpc— gRPC.
-
ingress.alb.yc.io/transport-security
Протокол шифрования соединений между балансировщиком и бэкендами, указанными в
Ingressнапрямую (безHttpBackendGroup).Допустимое значение:
tls— TLS без проверки сертификата.Если аннотация не указана, балансировщик соединяется с бэкендами без шифрования.
Для бэкендов, входящих в состав групп, значение аннотации игнорируется. Шифрование соединений балансировщика с бэкендами из групп настраивается с помощью поля
spec.backend.tlsресурсаHttpBackendGroup(см. конфигурацию ресурса). -
ingress.alb.yc.io/health-checks
Параметры, которые позволяют настроить пользовательские проверки состояния приложений в кластере. Рекомендуется настраивать проверки состояния для всех бэкендов.
-
http-path— путь в URI запроса к эндпоинту приложения для проверок состояния (только для соединений с бэкендами по протоколамhttpиhttp2). Значение по умолчанию —/healthz. -
grpc-service-name— имя GRPC-сервиса приложения для проверок состояния (только для соединений с бэкендами по протоколуgrpc). Если не указано, то выполняется проверка состояния бэкенда в целом. -
port— порт на узлах кластера для проверки доступности приложения. Приложение будет доступно для проверок состояния по адресуhttp://<IP-адрес_узла>:<порт>/<путь>. -
healthy-threshold— количество последовательных успешных проверок, после которых эндпоинт приложения считается работоспособным. Значение по умолчанию —1. -
unhealthy-threshold— количество последовательных неуспешных проверок, после которых эндпоинт приложения считается неработоспособным. Значение по умолчанию —1. -
timeout— время ожидания ответа в секундах. Возможные значения — от1sдо60s, по умолчанию —2s. -
interval— интервал отправки проверочных запросов в секундах. Возможные значения — от1sдо60s, по умолчанию —5s. Значениеintervalдолжно быть больше значенияtimeoutминимум на одну секунду.
Обязательный параметр —
port. Если не указывать остальные, вместо них будут использоваться значения по умолчанию.Параметры перечисляются через запятую. Пример:
... annotations: ingress.alb.yc.io/health-checks: port=30103,http-path=/health-1,timeout=10s,interval=20s,healthy-threshold=3,unhealthy-threshold=2 ... -
ServiceSpec
type: NodePort
ports:
- <ServicePort>
-
|
Поле |
Значение или тип |
Описание |
|
|
|
Обязательное. Тип сервиса. Важно Сервисы Kubernetes, используемые в качестве бэкендов (указанные в правилах |
|
|
|
Обязательное. Список портов, на которых доступен сервис. |
ServicePort
port: <int32>
name: <string>
protocol: <protocol>
nodePort: <int32>
|
Поле |
Значение или тип |
Описание |
|
|
|
Обязательное. Номер используется при указании сервиса в качестве бэкенда:
|
|
|
|
Имя порта внутри сервиса. Имя используется при указании сервиса в качестве бэкенда:
|
|
|
|
Сетевой протокол для порта. Только |
|
|
|
Номер порта, открытого на узлах кластера, на которых развернут сервис. Балансировщик отправляет трафик на этот порт, а Kubernetes перенаправляет трафик сервису на его порт в параметре Соответствует порту бэкенда в группе бэкендов Application Load Balancer. |