Ingress-контроллер для Managed Service for Kubernetes
Application Load Balancer предоставляет инструмент для создания и управления балансировщиками нагрузки в кластерах Yandex Managed Service for Kubernetes — Ingress-контроллер Application Load Balancer.
Ingress-контроллер, установленный в кластер, будет автоматически разворачивать L7-балансировщики со всеми необходимыми ресурсами Application Load Balancer, основываясь на конфигурации созданных вами ресурсов Ingress
Полную конфигурацию ресурсов для Ingress-контроллера Application Load Balancer см. в следующих разделах:
- Ingress — правила распределения трафика между бэкендами и настройки Ingress-контроллера.
- HttpBackendGroup и GrpcBackendGroup — объединение бэкендов в группы.
- IngressClass — управление несколькими Ingress-контроллерами в кластере Kubernetes.
- Service — описание сервисов Kubernetes, используемых в качестве бэкендов.
Пример конфигурации
Ниже приведен сокращенный пример конфигурации ресурса Ingress
. По ней будет создан балансировщик, принимающий HTTPS-трафик и распределяющий его по двум сервисам в зависимости от пути в URI запроса.
Пример
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: alb-demo-tls
spec:
tls:
- hosts:
- <доменное_имя>
secretName: yc-certmgr-cert-id-<идентификатор_сертификата>
rules:
- host: <доменное_имя>
http:
paths:
- path: /app1
pathType: Prefix
backend:
service:
name: alb-demo-1
port:
number: 80
- path: /app2
pathType: Prefix
backend:
service:
name: alb-demo-2
port:
number: 80
- pathType: Prefix
path: "/"
backend:
service:
name: alb-demo-2
port:
name: http
Где secretName
— идентификатор сертификата из Yandex Certificate Manager.
При такой конфигурации ресурса Ingress
в ALB Ingress Controller версии 0.2.0 и позднее группы бэкендов соответствуют параметру backend.service
. В версиях 0.1.x используются другие параметры: host
, http.paths.path
и http.paths.pathType
. В результате при обновлении ALB Ingress Controller могут возникнуть коллизии. Чтобы избежать их, узнайте, применимы ли ограничения при обновлении к вашей инфраструктуре.
Установка и требования
Для установки Ingress-контроллера Application Load Balancer требуются:
- Кластер Managed Service for Kubernetes.
- Группа узлов в кластере.
- Пространство имен в кластере для хранения ключа сервисного аккаунта.
Установить Ingress-контроллер можно по инструкции.
Настройки логирования
Чтобы задать настройки логирования для L7-балансировщика, созданного с помощью Ingress-контроллера Application Load Balancer в кластере Managed Service for Kubernetes, добавьте аннотацию ingress.alb.yc.io/group-settings-name
с именем для настроек группы ресурсов Ingress и укажите настройки в дополнительном ресурсе IngressGroupSettings
. Подробнее см. в разделе Аннотации ресурса Ingress.
Интеграция с сервисом Yandex Smart Web Security
В Ingress-контроллере вы можете включить поддержку сервиса Yandex Smart Web Security, который позволяет защититься от DDoS-атак и ботов, а также задействовать WAF и ограничить нагрузку на защищаемый ресурс.
Сервис проверяет HTTP-запросы, которые поступают к защищаемому ресурсу через виртуальный хост L7-балансировщика. В зависимости от результатов проверки сервис направляет запросы на защищаемый ресурс, блокирует их или отправляет в Yandex SmartCaptcha для дополнительной верификации.
Чтобы включить поддержку сервиса, в аннотации Ingress укажите идентификатор профиля безопасности Smart Web Security:
ingress.alb.yc.io/security-profile-id: <идентификатор_профиля_безопасности>
Профиль содержит список условий проверки и действий, которые применяются к приходящим HTTP-запросам по результатам проверки.
Если у вас нет профиля безопасности, создайте его.
Маршрутизация трафика с помощью нескольких Ingress-контроллеров
Для одного приложения можно использовать несколько Ingress-контроллеров, например Application Load Balancer и NGINX. Чтобы корректно маршрутизировать трафик в такой инфраструктуре, создайте ресурс IngressClass для каждого Ingress-контроллера. В ресурсе Ingress
, в поле spec.ingressClassName
укажите, к какому IngressClass
относится ресурс Ingress
. На GitHub есть примерIngress
и маршрутизировать трафик с помощью нескольких Ingress-контроллеров.
См. также
- Принципы работы контроллера.
- Настройка групп безопасности для кластера Kubernetes и балансировщика.
- Сервисный аккаунт для работы контроллера.
- ALB Ingress Controller в Yandex Cloud Marketplace.