Маршрутизация исходящего трафика через шлюз с использованием Kubernetes Gateway API в режиме ambient
В этом руководстве показано, как использовать Kubernetes Gateway API вместе с waypoint proxy для маршрутизации исходящего HTTP-трафика через egress gateway в режиме ambient.
Предварительные требования
- Установлен Alauda Service Mesh v2 Operator.
- Ресурсы
IstioиIstioCNIнастроены с профилем ambient. - Создан ресурс
Ztunnel. - Подтвердите совместимость с ядром Linux.
Процедура
-
Создайте namespace с именем
egress-gateway: -
Добавьте метку
istio-discovery=enabledв namespaceegress-gateway: -
Включите режим ambient для namespace, применив метку режима dataplane:
-
Создайте YAML-файл с именем
egress-se.yaml, который определяетServiceEntryдля внешнего сервиса. Меткаistio.io/use-waypointсвязывает эту запись с waypoint proxy.- Направляет трафик для этого
ServiceEntryчерез waypoint proxy с именемwaypointв том же namespace.
- Направляет трафик для этого
-
Примените
ServiceEntry: -
Создайте YAML-файл с именем
waypoint.yaml, который развертывает waypoint proxy в namespaceegress-gateway. Waypoint proxy перехватывает и обрабатывает L7 трафик для сервисов в этом namespace.- Метка
istio.io/waypoint-for: serviceуказывает, что этот waypoint обрабатывает трафик для сервисов. Значение метки определяет тип обрабатываемого трафика. Подробнее см. в разделе Waypoint traffic types (документация Istio). - Указывает класс шлюза
istio-waypoint, который разворачивает waypoint proxy вместо стандартного ingress gateway.
- Метка
-
Примените конфигурацию waypoint proxy:
NOTEВ качестве альтернативы созданию YAML-файла вручную, вы можете развернуть waypoint proxy с помощью следующей команды:
При использовании опции
--enroll-namespaceвсе сервисы в namespaceegress-gateway(включаяServiceEntries) будут направлять свой трафик через waypoint.
Проверка
-
Убедитесь, что waypoint proxy готов, проверив его статус:
В столбце
PROGRAMMEDдолжно отображатьсяTrue, что означает успешную настройку.Пример вывода
-
Разверните клиент
curlв namespaceegress-gateway: -
Сохраните имя pod
curlв переменную: -
С клиента
curlпроверьте, что можно достучаться доhttpbin.orgчерез egress gateway:Успешный ответ от
httpbin.orgподтверждает, что исходящий трафик маршрутизируется через настроенный шлюз.Пример вывода
Логи ztunnel должны показывать прохождение трафика через waypoint, примерно так:
Пример вывода логов ztunnel
Очистка
Удалите namespace egress-gateway и все связанные ресурсы: