Waypoint proxies
После развертывания прокси ZTunnel можно внедрять waypoint proxies для обеспечения расширенных возможностей обработки на уровне Layer 7.
Ambient mode разделяет функциональность Istio на два отдельных слоя:
- безопасный L4 оверлей, управляемый прокси ZTunnel
- L7 слой, управляемый опциональными waypoint proxies
Waypoint proxy — это прокси на базе Envoy, который выполняет обработку L7 для рабочих нагрузок, работающих в ambient mode. Он функционирует как шлюз для конкретного ресурса — например, namespace, сервиса или pod — и может устанавливаться, обновляться и масштабироваться независимо от приложений, которые он обслуживает. Конфигурация основана на Kubernetes Gateway API.
В отличие от модели sidecar, где у каждой рабочей нагрузки свой прокси Envoy, waypoint proxies снижают потребление ресурсов, обслуживая несколько рабочих нагрузок, которые разделяют одну и ту же границу безопасности (например, все рабочие нагрузки в namespace).
Waypoint назначения обеспечивает применение политик, выступая в роли шлюза: весь входящий трафик, направленный к ресурсу, такому как namespace, сервис или pod, проходит через waypoint перед достижением назначения.
Прокси узла ZTunnel обрабатывает функции L4, включая шифрование mTLS, обработку L4 трафика и телеметрию. ZTunnel и waypoint proxies взаимодействуют через HBONE (HTTP-Based Overlay Network) — протокол, который туннелирует трафик поверх HTTP/2 CONNECT с mTLS на порту 15008.
Рассмотрите возможность развертывания waypoint proxy, если вашим рабочим нагрузкам необходимы следующие возможности L7:
- Управление трафиком — расширенный HTTP-маршрутизатор, балансировка нагрузки, circuit breaking, ограничение скорости, fault injection, повторные попытки и тайм-ауты
- Безопасность — политики авторизации на основе атрибутов L7, таких как тип запроса или HTTP-заголовки
- Наблюдаемость — HTTP-метрики, логирование доступа и трассировка трафика приложений
Содержание
Развертывание waypoint proxyВключение использования waypoint между namespaceДополнительные ресурсыРазвертывание waypoint proxy
Вы можете развернуть waypoint proxy в namespace приложения Bookinfo, чтобы маршрутизировать трафик через Istio ambient data plane и применять политики L7.
Требования
- Установлен Alauda Service Mesh Operator версии 2.1.1 или выше.
- Активная сессия ACP CLI (
kubectl) с правами администратора кластера (cluster-admin). - Локально установлен
istioctlдля выполнения инструкций. - Istio развернут в ambient mode.
- Развернуто примерное приложение Bookinfo (для следующего примера).
- К namespace назначения применена метка
istio.io/dataplane-mode=ambient.
Процедура
-
Создайте waypoint proxy в namespace
bookinfo. Сохраните следующий манифест какwaypoint.yaml:- Метка
istio.io/waypoint-for: serviceуказывает, что этот waypoint обрабатывает трафик для сервисов. Значение метки определяет тип обрабатываемого трафика. Подробнее см. Waypoint traffic types (документация Istio).
- Метка
-
Примените кастомный ресурс waypoint (CR):
-
Зарегистрируйте namespace
bookinfoдля использования waypoint:После регистрации namespace все запросы от pod-ов в ambient data plane к сервисам в
bookinfoбудут маршрутизироваться через waypoint для обработки L7 и применения политик.
Проверка
Убедитесь, что waypoint proxy связан со всеми сервисами в namespace bookinfo:
Пример вывода
Вы также можете настроить использование waypoint только для конкретных сервисов или pod-ов, добавив соответствующие метки к сервису или pod. При явной регистрации pod добавьте метку istio.io/waypoint-for: workload к соответствующему ресурсу gateway.
Включение использования waypoint между namespace
Cross-namespace waypoint позволяет ресурсам из одного namespace маршрутизировать трафик через waypoint, развернутый в другом namespace.
Процедура
-
Добавьте метку
istio-discovery=enabledк namespacecommon-infrastructure: -
Создайте ресурс Gateway, который разрешит рабочим нагрузкам в namespace
bookinfoиспользовать waypoint из namespacecommon-infrastructure. Сохраните следующий манифест какwaypoint-common.yaml: -
Примените cross-namespace waypoint:
-
Добавьте метки, необходимые для использования cross-namespace waypoint:
-
Укажите namespace, где расположен waypoint:
-
Укажите waypoint для использования:
-
Дополнительные ресурсы
- Waypoint traffic types (документация Istio)