Настройка GatewayAPI Gateway
Содержание
Предварительные требованияНастройка через веб-консольНастройка через YAMLВведениеТип сервисаLoadBalancer (Рекомендуется)NodePortClusterIPListenerПоддерживаемый тип слушателяРазрешённые namespace для маршрутовTLSHostnameПравила пересечения hostname слушателя и hostname маршрутовСопутствующий EnvoyProxyРепозиторий образовСледующий шагПредварительные требования
Пожалуйста, убедитесь, что вы прочитали документацию по установке перед продолжением.
Настройка через веб-консоль
-
Перейдите в
Alauda Container Platform -> Networking -> Gateways -
Нажмите кнопку
Create Gateway -
На странице
Create Gatewayвыберитеenvoy-gateway-operator-cpaas-defaultв поле GatewayClass, после чего отобразятся следующие параметры конфигурации:WARNINGФорма веб-консоли поддерживает только GatewayClasses, созданные с помощью
EnvoyGatewayCtl. Для других GatewayClasses используйте редактор YAML.NOTEПри использовании
GatewayClass, созданногоEnvoyGatewayCtl, веб-консоль автоматически создаёт сопутствующий ресурс envoyproxy с именем и пространством имён, совпадающими с Gateway.
Настройка через YAML
- Сопутствующий envoyproxy
- Указание, к какому
GatewayClassотносится - Listener
- Hostname слушателя
- Поддерживаемый тип слушателя
- Разрешённые namespace для маршрутов
- Конфигурация TLS
- Имя сопутствующего envoyproxy
- Тип сервиса
- Пожалуйста, сохраните и не изменяйте значение по умолчанию репозитория
- Ресурсы для экземпляра
envoy-proxy - Пожалуйста, сохраните и не изменяйте
Введение
Тип сервиса
Тип сервиса определяет, как будет открыт доступ к шлюзу. Существует три режима: LoadBalancer, NodePort и ClusterIP.
LoadBalancer (Рекомендуется)
Преимущество — простота использования и возможности высокодоступного балансировщика нагрузки. Для использования LoadBalancer в кластере должна быть поддержка LoadBalancer, которую можно включить через MetalLB.
NodePort
Преимущество — отсутствие внешних зависимостей.
Однако у NodePort есть следующие недостатки:
- Можно использовать только в кластерах с количеством узлов менее 16, иначе статус шлюза может стать некорректным.
- При использовании NodePort Kubernetes назначает номера портов NodePort, отличающиеся от портов сервиса. Для доступа необходимо использовать порт NodePort, а не порт сервиса.
- Сервис доступен по IP-адресу любого узла кластера, что может представлять потенциальные риски безопасности.
Как получить правильный порт при использовании NodePort
Выводом будет порт NodePort.
ClusterIP
Очень удобно, если внешний доступ не требуется.
Listener
Listener определяет порт и протокол, на которых слушает шлюз. Для протоколов HTTP или HTTPS разные hostnames могут рассматриваться как разные слушатели.
Нельзя создавать слушателя с конфликтующим портом, протоколом или hostname.
В Gateway должен быть создан хотя бы один listener.
Поддерживаемый тип слушателя
Каждый listener поддерживает разные типы маршрутов в зависимости от протокола:
При настройке маршрутов убедитесь, что они соответствуют протоколу слушателя, к которому будут прикреплены. Например, нельзя прикрепить HTTPRoute к TCP listener.
Разрешённые namespace для маршрутов
По умолчанию маршруты могут прикрепляться только к Gateway в том же namespace. Чтобы разрешить маршрутизацию между namespace, необходимо указать, какие namespace разрешены для прикрепления маршрутов к listener этого Gateway с помощью поля allowedRoutes.
Для подробностей смотрите attach to gateway create on other ns.
TLS
По умолчанию можно использовать только secret, созданный в том же namespace. В противном случае смотрите use secret create on other ns.
По умолчанию используется режим Terminate. Для других режимов смотрите ssl passthrough.
Hostname
Hostname в listener является уникальным идентификатором для слушателей с одинаковым протоколом. Нельзя добавить или обновить слушателя с конфликтующим hostname в одном Gateway.
Правила пересечения hostname слушателя и hostname маршрутов
При поступлении запроса он сопоставляется с пересечением hostname слушателя и hostname маршрутов. Для маршрутизации используются только hostname из пересечения.
Подстановочные знаки (*) выполняют сопоставление по суффиксу. Например, *.example.com соответствует foo.example.com и bar.example.com, но не example.com.
Отсутствие пересечения — статус маршрута некорректен, маршрут не может обрабатывать трафик.
Сопутствующий EnvoyProxy
Envoy Gateway предоставляет различные уровни контроля над развертыванием шлюзов. Рекомендуется создавать отдельный ресурс EnvoyProxy для каждого Gateway и ссылаться на него через поле .spec.infrastructure.parametersRef Gateway.
Такой подход один к одному обеспечивает лучшую изоляцию и более тонкий контроль над конфигурациями развертывания, такими как количество реплик, ресурсы и ограничения планирования.
Для других способов конфигурации развертывания смотрите deployment-mode.
Репозиторий образов
Это значение по умолчанию. Оно будет заменено на фактический репозиторий образов текущего кластера, пожалуйста, не изменяйте его.