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