Gateway API для Managed Service for Kubernetes
Статья создана
Обновлена 15 ноября 2024 г.
Application Load Balancer предоставляет инструмент для создания и управления балансировщиками нагрузки в кластерах Yandex Managed Service for Kubernetes — Gateway API. Подробнее о проекте Gateway API см. на его сайте
После установки Gateway API вы сможете создать с его помощью ресурс Gateway
и связанные с ним ресурсы HTTPRoute
:
- Ресурсом
Gateway
управляет оператор кластера. В этом ресурсе описывается прием входящего трафика и правила, по которым выбираются маршруты для этого трафика — ресурсыHTTPRoute
. Для приема трафика поGateway
создается L7-балансировщик, а для маршрутизации к балансировщику привязываются HTTP-роутеры. - Ресурсами
HTTPRoute
управляют разработчики приложений — сервисов Kubernetes.HTTPRoute
— описание маршрута для принятого входящего трафика. В соответствии с этим описанием трафик может быть отправлен в сервис Kubernetes, выполняющий роль бэкенда, или перенаправлен на другой URI. ПоHTTPRoute
создаются виртуальные хосты и маршруты в HTTP-роутерах и группы бэкендов.
Полную конфигурацию ресурсов для Gateway API см. в следующих разделах:
- Gateway — правила приема входящего трафика и выбора маршрутов (
HTTPRoute
) для этого трафика. - HTTPRoute — правила маршрутизации трафика по бэкендам или его перенаправления.
- Service — описание сервисов Kubernetes, используемых в качестве бэкендов.
Пример конфигурации
Ниже приведен пример конфигурации ресурсов Gateway
и HTTPRoute
. По ней будет создан балансировщик, принимающий HTTPS-трафик и распределяющий его по двум сервисам в зависимости от пути в URI запроса.
Пример
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: Gateway
metadata:
name: alb-gwapi-gw
spec:
gatewayClassName: yc-df-class
listeners:
- name: alb-gwapi-listener
protocol: HTTPS
port: 443
hostname: <доменное_имя>
allowedRoutes:
namespaces:
from: Selector
selector:
matchLabels:
gatewayName: alb-gwapi-gw
tls:
certificateRefs:
- kind: Secret
group: ""
name: alb-gwapi-cert
namespace: alb-gwapi-ns
---
apiVersion: v1
kind: Namespace
metadata:
name: alb-gwapi-apps-ns
labels:
gatewayName: alb-gwapi-gw
---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: alb-gwapi-route
namespace: alb-gwapi-apps-ns
spec:
hostnames:
- "<доменное_имя>"
parentRefs:
- name: alb-gwapi-gw
namespace: default
rules:
- matches:
- path:
type: PathPrefix
value: /app1
backendRefs:
- name: alb-demo-1
port: 80
- matches:
- path:
type: PathPrefix
value: /app2
backendRefs:
- name: alb-demo-2
port: 80
- backendRefs: # Default match (implicit "/" path prefix)
- name: alb-demo-2
port: 80
Установка и требования
Для установки Gateway API требуются:
- Кластер Managed Service for Kubernetes.
- Группа узлов в кластере.
- Пространство имен в кластере для хранения ключа сервисного аккаунта.
Установить Gateway API можно по инструкции.
См. также
- Настройка групп безопасности для кластера Kubernetes и балансировщика.
- Сервисный аккаунт для работы контроллера.
- Gateway API в Yandex Cloud Marketplace.