В следующих процедурах используется приложение Bookinfo для иллюстрации различных методов настройки инъекции sidecar.
Istio
, и оператор успешно развернул Istio.IstioCNI
, и оператор развернул необходимые поды IstioCNI
.bookinfo
, но инъекция sidecar (как описано в шаге 2) ещё не настроена. Подробнее см. "Deploying the Bookinfo application".Этот метод внедряет sidecar proxy во все рабочие нагрузки в заданном пространстве имён. Это оптимальный подход, когда большинство рабочих нагрузок в этом пространстве должны быть частью mesh.
Проверьте имя ревизии управляющей плоскости Istio с помощью следующей команды:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Поскольку имя ревизии — default
, можно использовать стандартные метки инъекции без указания конкретной ревизии.
Убедитесь, что существующие рабочие нагрузки в целевом пространстве имён показывают 1/1
готовых контейнеров, выполнив команду ниже. Это подтверждает, что поды сейчас работают без sidecar.
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Примените метку инъекции к пространству имён bookinfo
, выполнив следующую команду:
Пример вывода
Чтобы применить инъекцию sidecar, повторно разверните рабочие нагрузки в пространстве имён bookinfo
. Запустите rolling update для всех деплойментов этой командой:
Для проверки rollout убедитесь, что новые поды показывают 2/2
контейнеров в состоянии READY
, что подтверждает успешную инъекцию sidecar. Используйте следующую команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Можно запретить инъекцию sidecar для конкретной рабочей нагрузки, даже если инъекция включена для всего её пространства имён.
Этот пример приведён только для демонстрации. Для корректной работы приложения Bookinfo все его рабочие нагрузки должны быть частью mesh.
Отредактируйте ресурс Deployment
приложения. В этом примере исключим сервис ratings-v1
.
В разделе spec.template.metadata.labels
ресурса Deployment
добавьте метку sidecar.istio.io/inject: "false"
, чтобы отключить инъекцию sidecar.
Процесс инъекции sidecar не затрагивается, если эта метка добавлена в верхний уровень секции labels
ресурса Deployment
.
При обновлении деплоймента запускается rollout, который создаёт новый ReplicaSet с изменёнными подами.
Убедитесь, что обновлённые поды не содержат контейнер sidecar и показывают 1/1
запущенных контейнеров, выполнив команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
С помощью этого метода можно выбрать отдельные рабочие нагрузки для инъекции sidecar, а не включать её для всего пространства имён. Это подходит, когда в mesh нужно включить лишь небольшое количество рабочих нагрузок. В примере также показано, как использовать метку ревизии для инъекции sidecar, где ресурс Istio
называется my-mesh
. Использование уникального имени ресурса Istio
необходимо, когда в кластере существует несколько управляющих плоскостей Istio или при обновлении управляющей плоскости на основе ревизий.
Проверьте имя ревизии управляющей плоскости Istio, выполнив команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Поскольку имя ревизии — my-mesh
, для активации инъекции sidecar необходимо использовать метку ревизии istio.io/rev=my-mesh
.
Убедитесь, что существующие поды работают без sidecar, проверив, что они показывают 1/1
контейнеров в состоянии READY
. Используйте команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Отредактируйте ресурс Deployment
приложения. В этом примере измените сервис ratings-v1
.
Измените раздел spec.template.metadata.labels
ресурса Deployment
, добавив необходимую метку инъекции пода или метку ревизии. Здесь это istio.io/rev: my-mesh
:
Размещение метки в верхнем уровне секции labels
ресурса Deployment
не повлияет на инъекцию sidecar.
Это обновление деплоймента запускает rollout, в результате которого создаётся новый ReplicaSet с изменёнными подами.
Убедитесь, что sidecar был успешно внедрён, проверив, что только под ratings-v1
показывает 2/2
готовых контейнеров. Выполните команду:
Вы должны увидеть вывод, похожий на следующий пример:
Пример вывода
Повторите тот же процесс для любых других рабочих нагрузок, которые вы хотите добавить в mesh.