Как запустить Gateway API локально с kind: пошаговое руководство
Kubernetes Gateway API — это современный стандарт управления сетевым трафиком, который постепенно вытесняет устаревший Ingress. Однако его настройка в боевых условиях может быть сложной из-за множества провайдеров и конфигураций. Чтобы упростить знакомство с технологией, команда Kubernetes опубликов

Kubernetes Gateway API — это современный стандарт управления сетевым трафиком, который постепенно вытесняет устаревший Ingress. Однако его настройка в боевых условиях может быть сложной из-за множества провайдеров и конфигураций. Чтобы упростить знакомство с технологией, команда Kubernetes опубликовала подробное руководство по развертыванию Gateway API на локальной машине с помощью kind (Kubernetes in Docker). Этот подход позволяет безопасно экспериментировать, не рискуя production-средой. Руководство предназначено для обучения и тестирования, не подходит для продакшена, но дает полное понимание работы Gateway, HTTPRoute и других ресурсов Gateway API. Вам понадобятся только Docker, kubectl, kind и curl — всё это бесплатно и доступно для любой ОС.
Как развернуть Gateway API с kind: пошаговая инструкция
Первым шагом необходимо создать кластер kind. Для этого достаточно выполнить команду kind create cluster. Она создаст одноузловой кластер Kubernetes внутри Docker-контейнера. Это минимальная среда, которая полностью функциональна для экспериментов с Gateway API.
После создания кластера нужно установить cloud-provider-kind — ключевой компонент, предоставляющий две важные возможности: контроллер LoadBalancer, назначающий адреса сервисам типа LoadBalancer, и контроллер Gateway API, реализующий спецификацию Gateway API. Кроме того, cloud-provider-kind автоматически устанавливает Custom Resource Definitions (CRDs) Gateway API в ваш кластер.
Установка cloud-provider-kind выполняется одной командой: сначала определяется последняя версия через curl, затем запускается Docker-контейнер с соответствующим образом. Например: docker run -d --name cloud-provider-kind --rm --network host $(basename $(curl -s -L -o /dev/null -w '%{urleffective}' https://github.com/kubernetes-sigs/cloud-provider-kind/releases/latest)). После этого cloud-provider-kind начнет работать в фоне, и вы сможете создавать ресурсы Gateway API.
Как создать Gateway и HTTPRoute для тестового приложения?
После установки cloud-provider-kind вы можете развернуть демонстрационное приложение и настроить маршрутизацию. Руководство рекомендует использовать простой HTTP-сервер (например, httpbin или echo-сервер). Сначала создайте Deployment и Service типа LoadBalancer для приложения. Затем определите ресурс Gateway, который будет слушать трафик на определенном порту (обычно 80). И наконец, создайте HTTPRoute, который связывает пути (например, /) с этим сервисом.
Например, вы можете применить манифест Gateway, который ссылается на класс gateway (в случае cloud-provider-kind это cloud-provider-kind). После этого HTTPRoute будет направлять все запросы на порт 80 вашего локального хоста на внутренний сервис. Проверить работу можно с помощью curl: выполните curl http://localhost:80/ и убедитесь, что получаете ответ от демо-приложения.
Технические детали: что такое cloud-provider-kind и как он работает
cloud-provider-kind — это неофициальный, но поддерживаемый сообществом инструмент, который эмулирует облачного провайдера для локального кластера kind. Он состоит из двух основных компонентов: LoadBalancer-контроллера и Gateway API-контроллера. LoadBalancer-контроллер назначает IP-адреса из диапазона Docker-сети сервисам типа LoadBalancer, делая их доступными с хост-машины. Gateway API-контроллер обрабатывает ресурсы Gateway, HTTPRoute и другие, преобразуя их в конфигурацию нижележащего прокси (в данном случае используется Envoy).
Важно отметить, что cloud-provider-kind не предназначен для production: он не обеспечивает высокой доступности, не поддерживает масштабирование и использует упрощенные сетевые настройки. Однако для обучения и локальной разработки его функциональности более чем достаточно. При переходе к продакшену следует выбрать один из официальных реализаций Gateway API, таких как Istio, Contour или Kong.
Какие альтернативы существуют для локального тестирования Gateway API?
Помимо cloud-provider-kind, существуют и другие способы локального тестирования Gateway API. Например, можно использовать minikube с включенным аддоном ingress, но он не поддерживает Gateway API напрямую. Другой вариант — развернуть полноценный кластер с помощью k3s или microk8s, но это требует больше ресурсов. cloud-provider-kind остается самым простым и быстрым решением для знакомства с Gateway API.
Кого затронет это руководство и как его использовать
Руководство будет полезно прежде всего разработчикам и DevOps-инженерам, которые хотят изучить Gateway API без необходимости разворачивать полноценный кластер в облаке. Оно также подходит для команд, которые тестируют миграцию с Ingress на Gateway API: локальная среда позволяет проверить совместимость и понять разницу в подходах.
В российском контексте это руководство особенно актуально, так как многие компании активно внедряют Kubernetes, но сталкиваются с санкционными ограничениями при использовании облачных сервисов. Локальное тестирование с kind позволяет снизить зависимость от внешних провайдеров и ускорить цикл разработки.
Что будет дальше: развитие Gateway API и планы сообщества
Gateway API продолжает активно развиваться: на момент написания статьи актуальна версия v1.2, а в планах — поддержка более сложных сценариев маршрутизации, таких как взвешенное распределение трафика и канареечные развертывания. cloud-provider-kind также обновляется, добавляя поддержку новых фич Gateway API. Следующим шагом после экспериментов с kind может стать развертывание Gateway API в staging-среде с использованием одного из production-реализаций.
Итог
Руководство Kubernetes по экспериментам с Gateway API на kind — это отличная отправная точка для всех, кто хочет освоить современные подходы к управлению трафиком. Всего за несколько команд вы получаете рабочий локальный кластер с полноценной поддержкой Gateway API, что позволяет безопасно изучать концепции и готовиться к production-развертыванию.