Gateway API для Managed Service for Kubernetes
Примечание
Gateway API находится на стадии Preview.
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
и 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 можно:
-
Как продукт Yandex Cloud Marketplace через консоль управления.
-
Как чарт через менеджер пакетов Helm версии не ниже 3.7.0 с включенной поддержкой OCI. Чтобы скачать и установить чарт, выполните следующие команды:
export HELM_EXPERIMENTAL_OCI=1 && \ helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/gateway-api/gateway-api-helm/gateway-api \ --version 0.4.16 \ --untar && \ helm install \ --namespace <пространство_имен> \ --set folderId=<идентификатор_каталога> \ --set networkId=<идентификатор_сети> \ --set subnetId=<идентификатор_подсети> \ --set-file saKeySecretKey=<путь_к_файлу_с_ключом_сервисного_аккаунта> \ yc-alb-gateway-api ./yc-alb-gateway-api-chart/
Подробнее о каждом способе см. в полной инструкции по установке.
См. также
- Настройка групп безопасности для кластера Kubernetes и балансировщика.
- Сервисный аккаунт для работы контроллера.