Обновление waypoint-прокси
Waypoint-прокси развертываются через Kubernetes Gateway API и управляются плоскостью управления Istio. Когда вы обновляете плоскость управления с помощью стратегии InPlace, istiod самостоятельно поэтапно переводит развертывания waypoint на соответствующую версию proxy — вы не обновляете waypoint отдельно, и рабочие нагрузки приложения, которые они обслуживают, продолжают работать на протяжении всего процесса.
Поскольку waypoint всегда следует за активной плоскостью управления, держите его не более чем в одной minor-версии от плоскости управления (та же версия или n-1). Это соответствует политике поддержки Istio, которая требует, чтобы компоненты data plane никогда не опережали плоскость управления; то же правило применяется к плагину Istio CNI и ZTunnel. Стратегия RevisionBased недоступна в ambient mode — см. Updating Alauda Service Mesh in ambient mode, чтобы понять почему.
Предварительные требования
- Вы обновили плоскость управления Istio, как описано в Обновление компонентов ambient mode.
- Приложение Bookinfo развернуто в ambient mode; см. Развертывание приложения Bookinfo в ambient mode.
- В пространстве имен
bookinfoсуществует waypoint-прокси с именемwaypoint; см. Waypoint-прокси.
Содержание
Проверка версии waypoint-проксиПроверка маршрутизации трафика L7Проверка политик авторизации L7Проверка версии waypoint-прокси
Убедитесь, что waypoint-прокси повторно подключился к обновленной плоскости управления и работает под новой версией proxy:
Пример вывода
В выводе перечислены pod waypoint, pod istiod, к которому он подключен, версия proxy, под которой он работает, а также типы конфигурации xDS, на которые proxy подписан. Заполненный список подписок подтверждает, что waypoint получает конфигурацию от плоскости управления, а в столбце VERSION теперь должна отображаться обновленная версия.
Проверка маршрутизации трафика L7
После обновления waypoint-прокси убедитесь, что управление трафиком уровня 7 (L7) по-прежнему работает так, как настроено. Если вы маршрутизируете трафик с помощью ресурсов HTTPRoute, проверьте, что настроенные веса по-прежнему применяются.
Предварительные требования
- Сервисы
bookinfo-versionsсозданы (это часть развертывания Bookinfo в ambient mode). - Ресурс
HTTPRouteразделяет трафикreviews.
Процедура
-
Необязательно: если ресурс
HTTPRouteеще не существует, создайте его, чтобы распределять трафикreviewsв соотношении 80/20 междуreviews-v1иreviews-v2: -
Отправьте повторяющиеся запросы через mesh и наблюдайте, какая версия
reviewsотвечает:Ответы должны примерно соответствовать заданному распределению — при весах 80/20 примерно шестнадцать из двадцати запросов достигают
reviews-v1, а остальные —reviews-v2. Балансировка нагрузки вносит некоторую вариативность в каждом запуске, но при повторных попытках соотношение сходится к заданным весам.
Проверка политик авторизации L7
Убедитесь, что решения авторизации L7 сохраняются после обновления. В следующем примере используется AuthorizationPolicy с именем productpage-waypoint, которая разрешает только запросы GET, отправленные service account curl в namespace curl, к сервису productpage.
Предварительные требования
- В namespace
curlзапущен клиент curl, а namespace помечен меткамиistio-discovery=enabledиistio.io/dataplane-mode=ambient. Шаги развертывания см. в разделе Функции уровня 7 в ambient mode.
Процедура
-
Необязательно: если ресурс
AuthorizationPolicyеще не существует, создайте его:- Principal должен соответствовать namespace и service account вашей клиентской рабочей нагрузки. В этом примере используется service account
curlв namespacecurl.
- Principal должен соответствовать namespace и service account вашей клиентской рабочей нагрузки. В этом примере используется service account
-
Убедитесь, что запрос
GETот разрешенного клиента завершается успешно с ответомHTTP 200:Ожидаемый вывод
-
Убедитесь, что рабочая нагрузка вне списка разрешений, например pod
ratings, по-прежнему отклоняется:Ожидаемый вывод
Отказ подтверждает, что обновленный waypoint-прокси по-прежнему применяет правила авторизации L7: service account
ratingsне указан в политике, тогда как клиентcurlсоответствует и principal, и операцииGET.
Очистка ресурсов проверки
Если вы создали ресурсы маршрутизации и авторизации только для этой проверки, удалите их после завершения: