Маршрутизация исходящего трафика через шлюз с помощью 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.В вашем терминале должна отобразиться информация, похожая на следующий вывод:
Пример вывода