Использование Kgateway
Используйте аддон Kgateway, чтобы настроить маршрутизацию трафика в кластере Kubernetes через Gateway API и направить запросы к тестовому приложению.
- Создайте кластер актуальной версии, если это еще не сделано.
- Установите и настройте
kubectl, если это еще не сделано. - Подключитесь к кластеру при помощи
kubectl. - Установите аддон Kgateway, если это еще не сделано.
-
Создайте файл манифеста
httpbin.yamlдля тестового приложенияhttpbin:apiVersion: v1kind: Namespacemetadata:name: httpbin---apiVersion: v1kind: Servicemetadata:name: httpbinnamespace: httpbinspec:ports:- port: 8000targetPort: 8080selector:app: httpbin---apiVersion: apps/v1kind: Deploymentmetadata:name: httpbinnamespace: httpbinspec:replicas: 1selector:matchLabels:app: httpbintemplate:metadata:labels:app: httpbinspec:containers:- name: httpbinimage: docker.io/mccutchen/go-httpbin:v2.6.0ports:- containerPort: 8080 -
Примените созданный манифест в кластере:
kubectl apply -f httpbin.yaml
В результате применения манифеста будет запущено тестовое приложение httpbin в виде Deployment, а также будет создан сервис для внутреннего доступа к этому приложению. Kgateway в дальнейшем будет принимать внешний HTTP-трафик, маршрутизировать его и перенаправлять в этот сервис.
-
Создайте файл манифеста
my-gateway.yamlдля ресурса Gateway API типаGateway:apiVersion: gateway.networking.k8s.io/v1kind: Gatewaymetadata:name: httpnamespace: httpbinspec:gatewayClassName: kgatewaylisteners:- name: httpprotocol: HTTPport: 8080 -
Примените созданный манифест в кластере:
kubectl apply -f my-gateway.yaml
В результате применения манифеста Kgateway создаст сервис типа LoadBalancer. VK Cloud автоматически создаст стандартный балансировщик нагрузки и назначит ему публичный Floating IP-адрес для приема трафика.
-
Создайте файл манифеста
my-route.yamlдля ресурса Gateway API типаHTTPRoute, который описывает правило маршрутизации HTTP-трафика для Kgateway:apiVersion: gateway.networking.k8s.io/v1kind: HTTPRoutemetadata:name: httpbinnamespace: httpbinspec:parentRefs:- name: httprules:- backendRefs:- name: httpbinport: 8000 -
Примените созданный манифест в кластере:
kubectl apply -f my-route.yaml
В результате применения манифеста HTTP-запросы будут отправляться в сервис httpbin.
-
Подождите несколько минут, пока балансировщик нагрузки получит внешний IP-адрес, и выполните команду, чтобы его узнать:
kubectl get svc -n httpbinНайдите для этого балансировщика значение
EXTERNAL-IPв выведенной таблице:NAME TYPE ... EXTERNAL-IP PORT(S) ...http LoadBalancer ... 100.70.151.108 8080:30000/TCP ... -
Отправьте тестовый запрос на внешний IP-адрес балансировщика:
curl http://100.70.151.108:8080/getУспешный ответ на запрос означает, что Kgateway корректно обрабатывает ресурсы Gateway API и маршрутизирует трафик к сервису
httpbin.
Работающий кластер тарифицируется и потребляет вычислительные ресурсы. Если ресурсы Kubernetes, созданные для проверки работы аддона Kgateway, вам больше не нужны, удалите их:
-
Удалите пространство имен
httpbinи связанные с ним ресурсы, включая созданный балансировщик и Floating IP-адрес:kubectl delete namespace httpbin -
Остановите созданный кластер, чтобы воспользоваться им позже, или удалите его навсегда.