Маршрутизация исходящего трафика через шлюз с помощью Istio APIs
В этом разделе объясняется, как использовать Istio APIs для маршрутизации исходящего HTTP-трафика через шлюз, установленный с помощью gateway injection.
Предварительные требования
- Шлюз Istio установлен с использованием gateway injection.
Процедура
-
Создайте namespace с именем
curl, выполнив следующую команду: -
Включите sidecar injection для namespace. Если в вашей конфигурации используется стратегия обновления
InPlace, выполните эту команду:NOTEЕсли вы используете стратегию обновления
RevisionBased, выполните следующие команды:-
Чтобы узнать ваше
<revision-name>, выполните:Пример вывода:
-
Пометьте namespace с помощью имени ревизии, чтобы включить sidecar injection:
-
-
Разверните приложение
curl, выполнив команду: -
Инициализируйте и экспортируйте переменную окружения
CURL_POD, содержащую имя pod с curl: -
Создайте YAML-файл с именем
http-se.yamlдля направления трафика из mesh к внешнему сервису. В примере ниже определяетсяServiceEntryдля конкретного URL.Пример конфигурации
-
Примените этот YAML-файл, выполнив команду:
-
Подтвердите успешное применение конфигурации
ServiceEntry. Отправьте HTTP-запрос к хосту, указанному на предыдущем шаге, выполнив команду:Эта команда должна вернуть HTTP-коды статуса, такие как
302(перенаправление) или200(успех), что подтверждает работоспособность соединения. -
Создайте YAML-файл с именем
http-egress-gw.yaml, который создаст egressGatewayи направит трафик из mesh к хосту, определённому для внешнего сервиса.Пример конфигурации
-
Примените YAML-файл, выполнив команду:
-
Создайте YAML-файл с именем
http-egress-vs.yamlдля настройкиVirtualService, который будет управлять потоком трафика от sidecar приложений через egress gateway к внешнему хосту.Пример конфигурации
-
Примените этот YAML-файл, выполнив команду:
-
Повторно отправьте HTTP-запрос к URL:
Вывод в терминале должен быть похож на следующий:
Пример вывода
-
Подтвердите, что запрос был маршрутизирован через шлюз, выполнив команду:
Включение логирования доступаДля корректной работы этого шага необходимо, чтобы логирование доступа было включено. Вы можете включить его, создав следующий ресурс
Telemetry.В вашем терминале должна отобразиться информация, похожая на следующий вывод:
Пример вывода