Поля и аннотации ресурса Service для Ingress-контроллера
Ресурс Service
соответствует сервису Kubernetes. Для Ingress-контроллера Application Load Balancer сервисы представляют собой бэкенды, между которыми распределяется входящий трафик в кластере Managed Service for Kubernetes. Сервисы, выступающие в роли бэкендов Application Load Balancer, могут быть указаны в ресурсе Ingress напрямую или в составе групп бэкендов HttpBackendGroup.
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 запроса к эндпоинту приложения для проверок состояния. Значение по умолчанию —/healthz
. -
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. |