Функции уровня 7 в ambient режиме
Ambient режим обеспечивает стабильные возможности L7 через ресурс Gateway API HTTPRoute и ресурс Istio AuthorizationPolicy.
Ресурс AuthorizationPolicy работает как в sidecar, так и в ambient режиме. В ambient режиме политики авторизации могут быть нацелены на применение через ZTunnel или прикреплены к waypoint для применения на waypoint. Чтобы прикрепить политику к waypoint, включите targetRef, который ссылается либо на сам waypoint, либо на Service, настроенный на использование этого waypoint.
Вы можете прикреплять политики L4 или L7 к прокси waypoint для применения на основе идентичности. Как только waypoint становится частью пути трафика, конечный ZTunnel идентифицирует трафик по идентичности waypoint.
Политики Istio peer authentication, которые настраивают режимы mTLS, поддерживаются ZTunnel. В ambient режиме политики, устанавливающие режим в DISABLE, игнорируются, так как ZTunnel и HBONE всегда обеспечивают mTLS. Подробнее см. в разделе Peer authentication (документация Istio).
Содержание
Предварительные требованияМаршрутизация трафика с использованием прокси waypointДобавление политики авторизацииДополнительные ресурсыПредварительные требования
- Активная сессия ACP CLI (
kubectl) от имени администратора кластера с рольюcluster-admin. - Istio развернут в ambient режиме.
- Пример приложения Bookinfo развернут (для следующего примера).
- Прокси waypoint развернут (для следующего примера).
Маршрутизация трафика с использованием прокси waypoint
С развернутым прокси waypoint вы можете разделять трафик между разными версиями сервиса Bookinfo reviews для тестирования функций или A/B тестирования.
Процедура
-
Создайте конфигурацию маршрутизации трафика. Сохраните следующий файл как
traffic-route.yaml: -
Примените конфигурацию маршрутизации трафика:
Проверка
Доступ к сервису productpage из пода ratings:
Большинство ответов (80%) будут содержать вывод reviews-v1, а меньшая часть (20%) — reviews-v2.
Пример вывода
Очистка конфигурации маршрутизации
Добавление политики авторизации
Используйте политику авторизации L7, чтобы явно разрешить сервису curl отправлять GET-запросы к сервису productpage, блокируя все остальные операции.
Процедура
-
Создайте политику авторизации. Сохраните следующий файл как
authorization-policy.yaml:- Поле
targetRefsуказывает сервис, на который направлена политика авторизации прокси waypoint.
- Поле
-
Примените политику авторизации:
Проверка
-
Создайте namespace для клиента curl:
-
Разверните клиента curl:
-
Добавьте метку
istio-discovery=enabledв namespacecurl: -
Включите ambient режим для namespace
curl: -
Проверьте, что GET-запрос к сервису
productpageпроходит успешно с ответомHTTP 200:Ожидаемый вывод
-
Проверьте, что POST-запрос к тому же сервису отклоняется с ответом
HTTP 403:Ожидаемый вывод
-
Проверьте, что GET-запрос от другого сервиса (например, пода
ratingsв namespacebookinfo) также отклоняется с сообщениемRBAC: access denied:Ожидаемый вывод
Очистка ресурсов проверки
Дополнительные ресурсы
- Архитектура ambient режима (документация Istio)
- Peer authentication (документация Istio)