В этом разделе объясняется, как использовать Istio APIs для маршрутизации исходящего HTTP-трафика через шлюз, установленный с помощью gateway injection.
Создайте namespace с именем curl
, выполнив следующую команду:
Включите sidecar injection для namespace. Если в вашей конфигурации используется стратегия обновления InPlace
, выполните команду:
Если вы используете стратегию обновления 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
, который создаст egress Gateway
и направит трафик из mesh к хосту, определённому для внешнего сервиса.
Пример конфигурации
Примените YAML-файл, выполнив команду:
Создайте YAML-файл с именем http-egress-vs.yaml
для настройки VirtualService
, который будет управлять потоком трафика от sidecar приложений через egress gateway к внешнему хосту.
Пример конфигурации
Примените этот YAML-файл, выполнив команду:
Повторно отправьте HTTP-запрос на URL:
Вывод в терминале должен быть похож на следующий:
Пример вывода
Подтвердите, что запрос был направлен через шлюз, выполнив команду:
Для корректной работы этого шага проверки необходимо, чтобы логирование доступа было включено. Вы можете включить его, создав следующий ресурс Telemetry
.
В вашем терминале должна отобразиться информация, похожая на следующий вывод:
Пример вывода