Включение внедрения sidecar
Следующие процедуры используют приложение Bookinfo, чтобы продемонстрировать различные способы настройки внедрения sidecar.
Содержание
Предварительные требованияВключение внедрения sidecar с использованием меток NamespaceПроцедураПроверкаИсключение рабочей нагрузки из meshПроцедураПроверкаВключение внедрения sidecar с использованием меток PodПроцедураПроверкаПредварительные требования
- Установлен Alauda Service Mesh v2 Operator, создан ресурс
Istio, и Operator успешно развернул Istio. - Создан ресурс
IstioCNI, и Operator развернул необходимые pod'ыIstioCNI. - Созданы пространства имен, предназначенные для mesh, и они обнаруживаются control plane Istio.
- Необязательно: рабочие нагрузки, которые должны быть включены в mesh, уже развернуты. В последующих примерах приложение Bookinfo развернуто в пространстве имен
bookinfo, но внедрение sidecar (как описано в шаге 2) еще не настроено. Дополнительные сведения см. в разделе "Deploying the Bookinfo application".
Включение внедрения sidecar с использованием меток Namespace
Этот способ внедряет sidecar proxy во все рабочие нагрузки в заданном пространстве имен. Это оптимальный подход, когда большинству рабочих нагрузок в этом пространстве имен необходимо быть частью mesh.
Процедура
-
Проверьте имя revision control plane Istio с помощью следующей команды:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Поскольку имя revision —
default, можно использовать стандартные метки внедрения, не указывая точную revision. -
Убедитесь, что существующие рабочие нагрузки в целевом пространстве имен отображают
1/1готовых контейнеров, выполнив команду ниже. Это подтверждает, что pod'ы в данный момент запущены без sidecar.Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
-
Примените метку внедрения к пространству имен
bookinfo, выполнив следующую команду:Пример вывода
-
Чтобы применить внедрение sidecar, повторно разверните рабочие нагрузки в пространстве имен
bookinfo. Запустите rolling update для всех deployments с помощью этой команды:
Проверка
-
Чтобы проверить rollout, убедитесь, что новые pod'ы отображают
2/2контейнеров в состоянииREADY, что подтверждает успешное внедрение sidecar. Используйте следующую команду:Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Исключение рабочей нагрузки из mesh
Можно запретить внедрение sidecar для конкретной рабочей нагрузки, даже если внедрение включено для всего ее пространства имен.
Этот пример приведен только в демонстрационных целях. Для корректной работы приложения Bookinfo все его рабочие нагрузки должны быть частью mesh.
Процедура
-
Отредактируйте ресурс
Deploymentдля приложения. В этом примере мы исключим сервисratings-v1. -
В разделе
spec.template.metadata.labelsресурсаDeploymentдобавьте меткуsidecar.istio.io/inject: "false", чтобы отключить внедрение sidecar.NOTEПроцесс внедрения sidecar не затрагивается, если эта метка добавлена в верхнеуровневый раздел
labelsресурсаDeployment.При обновлении deployment запускается rollout, который создает новый ReplicaSet, содержащий измененный pod'ы.
Проверка
-
Убедитесь, что в обновленном pod'е или pod'ах отсутствует sidecar container и отображается
1/1запущенных контейнеров, выполнив эту команду:Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Включение внедрения sidecar с использованием меток Pod
С помощью этого метода можно выбирать отдельные рабочие нагрузки для внедрения sidecar, а не включать его для всего пространства имен. Это лучше всего подходит для случаев, когда только небольшому числу рабочих нагрузок требуется включение в service mesh. В примере также показано, как использовать revision label для внедрения sidecar, где ресурс Istio называется my-mesh. Использование отдельного имени ресурса Istio необходимо, когда в одном кластере существует несколько control plane Istio или при обновлении control plane на основе revision.
Процедура
-
Проверьте имя revision control plane Istio, выполнив следующую команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Поскольку имя revision —
my-mesh, для активации внедрения sidecar необходимо использовать revision labelistio.io/rev=my-mesh. -
Убедитесь, что существующие pod'ы запущены без sidecar, проверив, что в состоянии
READYони отображают1/1контейнеров. Используйте эту команду:Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
-
Отредактируйте ресурс
Deploymentприложения. В этом примере измените сервисratings-v1. -
Измените раздел
spec.template.metadata.labelsресурсаDeployment, добавив необходимую метку внедрения pod или revision. Здесь этоistio.io/rev: my-mesh:NOTEРазмещение метки в верхнеуровневом разделе
labelsресурсаDeploymentне повлияет на внедрение sidecar.Это обновление deployment инициирует rollout, в результате которого создается новый ReplicaSet с измененным pod'ом или pod'ами.
Проверка
-
Убедитесь, что sidecar был успешно внедрен, проверив, что только pod
ratings-v1отображает2/2готовых контейнеров. Выполните следующую команду:Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
-
Выполните тот же процесс для любых других рабочих нагрузок, которые вы хотите добавить в mesh.