Обновление с использованием стратегии InPlace
Стратегия обновления InPlace запускает только одну revision control plane одновременно. Во время обновления все workload немедленно подключаются к новой версии control plane. Чтобы поддерживать совместимость между sidecar и control plane, вы можете выполнять обновление только на одну minor-версию за раз.
Стратегия InPlace обновляет и перезапускает существующий Istio control plane на месте. В этом процессе существует только один экземпляр control plane, что исключает необходимость переносить workload в новый экземпляр control plane. Чтобы завершить обновление, перезапустите application workload и gateway, чтобы обновить Envoy proxies.
Хотя стратегия InPlace отличается простотой и эффективностью, существует небольшая вероятность прерывания application traffic, если pod workload обновится, перезапустится или масштабируется в момент перезапуска control plane. Вы можете снизить этот риск, запустив несколько реплик Istio control plane (istiod).
Содержание
Выбор стратегии InPlaceУстановка с использованием стратегии обновления InPlaceПроцедураОбновление Istio control plane со стратегией InPlaceПредварительные требованияПроцедураПроверкаУдаление ресурсов обновления InPlace из среды разработкиВыбор стратегии InPlace
Чтобы выбрать стратегию InPlace, установите значение spec.updateStrategy.type в ресурсе Istio в InPlace.
Пример спецификации для выбора стратегии обновления InPlace
Вы можете задать это значение при создании ресурса или изменить его позже. Если вы редактируете ресурс после создания, внесите изменение до обновления Istio control plane.
Чтобы минимизировать прерывание трафика во время обновления, вы можете запустить Istio control plane в режиме High Availability (HA), который требует дополнительной настройки в ресурсе Istio. Дополнительные сведения см. в разделе Istio High Availability.
Установка с использованием стратегии обновления InPlace
Вы можете установить Istio control plane, Istio CNI и демонстрационное приложение Bookinfo, используя стратегию обновления InPlace.
Следующий раздел можно использовать для понимания процесса обновления. Эту установку можно пропустить, если в кластере уже развернут Istio.
При использовании стратегии InPlace ресурс IstioRevision, который создает Alauda Service Mesh v2 Operator, всегда имеет то же имя, что и родительский ресурс Istio.
Процедура
-
Создайте namespace
istio-cniиistio-system, выполнив следующую команду: -
Привяжите workload к control plane, развернутому с использованием стратегии
InPlace:-
Присвойте namespace label, чтобы автоматически включить все workload, выполнив следующую команду:
-
Примените revision label к отдельным workload, изменив pod template в ресурсе
Deployment. Например:
-
-
Если имя revision —
default, привяжите workload к revision, выполнив следующую команду. В следующем примере namespace помечается labelistio-injection: enabled. -
Установите Istio CNI plugin с требуемой версией. Следующий пример конфигурации создает ресурс
IstioCNIс именемdefaultв namespaceistio-cni: -
Разверните Istio control plane с использованием стратегии обновления
InPlace. Следующий пример конфигурации создает ресурсIstioс именемdefaultв namespaceistio-system:Пример конфигурации
-
Дождитесь, пока Istio control plane будет готов, выполнив следующую команду:
-
Настройте application workload для выполнения в кластере. Например, вы можете развернуть sample application
bookinfoв namespacebookinfo.a. Создайте namespace
bookinfoс помощью следующей команды:b. Примените label к namespace
bookinfo, чтобы включить автоматическую инъекцию sidecar. Используйте следующую команду:c. Разверните application pods
bookinfoв namespacebookinfo, выполнив эту команду: -
Проверьте ресурс
Istio, выполнив следующую команду:Пример вывода
Значение
1в столбцеIN USEозначает, что на ресурсIstioRevisionссылаются и label namespace, и внедренные sidecar proxies.
Обновление Istio control plane со стратегией InPlace
При обновлении Istio с использованием стратегии InPlace вы можете повышать версию только на один minor release за раз. Чтобы обновиться более чем на одну minor-версию, необходимо повышать версию и перезапускать workload после каждого обновления. Перезапуск workload обеспечивает совместимость между версиями sidecar и control plane. Процесс обновления завершается после перезапуска всех workload.
Предварительные требования
- Вы вошли в web console Alauda Container Platform как cluster-admin.
- Вы установили плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.1.5 или более поздней.
- Вы развернули Istio и обновили Alauda Service Mesh v2 Operator до версии, которая предоставляет новую целевую версию Istio. Дополнительные сведения см. в разделе Понимание обновлений и каналов Operator.
- Вы установили
istioctlна локальной машине. - Вы настроили Istio control plane на использование стратегии обновления
InPlace. В этом примере ресурсIstioс именемdefaultразвернут в namespaceistio-system. - Вы установили Istio CNI plugin с требуемой версией. В этом примере ресурс
IstioCNIс именемdefaultразвернут в namespaceistio-cni. - Вы применили label к namespace
bookinfo, чтобы включить инъекцию sidecar. - В кластере запущены application workload. В этом примере приложение bookinfo развернуто в namespace
bookinfo.
Процедура
-
Измените версию в ресурсе
Istio. Например, чтобы обновиться до Istio1.28.6, задайте значение поляspec.versionкакv1.28.6, выполнив следующую команду:Обновление версии в Istio CR
Service Mesh v2 Operator развертывает новую версию control plane, которая заменяет старую версию control plane. Sidecar автоматически переподключаются к новому control plane.
-
Дождитесь, пока Istio control plane будет готов, выполнив следующую команду:
-
Подтвердите, что новая версия control plane готова, выполнив следующую команду:
Пример вывода
-
Обновите Istio CNI plugin до той же версии, что и control plane. Ресурс
IstioCNIобновляется независимо от ресурсаIstio, поэтому изменение версии control plane не обновляет CNI plugin автоматически. Подробные шаги см. в разделе Процесс обновления Istio CNI. -
Перезапустите application workload, чтобы была внедрена новая версия sidecar, выполнив следующую команду:
Проверка
Проверьте, что запущена новая версия sidecar, выполнив следующую команду:
Пример вывода
Значение в столбце VERSION должно соответствовать новой версии control plane.
Удаление ресурсов обновления InPlace из среды разработки
После завершения проверки и экспериментов следует удалить конфигурацию обновления InPlace, чтобы очистить среду разработки и освободить ресурсы.
Процедура
Выполните следующие команды, чтобы удалить все компоненты Istio и sample applications: