Istio со стратегией RevisionBased
Содержание
Установка Istio со стратегией RevisionBasedПроцедураОбновление control plane Istio со стратегией RevisionBasedПредварительные требованияПроцедураПроверкаУдаление ресурсов обновления RevisionBased из среды разработкиУстановка Istio со стратегией RevisionBased
Вы можете установить control plane Istio, Istio CNI и демонстрационное приложение Bookinfo, используя стратегию обновления RevisionBased.
Следующий раздел можно использовать, чтобы понять процесс обновления. Вы можете пропустить эту установку, если в кластере уже развернут Istio.
Процедура
-
Создайте пространства имен
istio-cniиistio-system, выполнив следующую команду: -
Установите плагин Istio CNI с нужной версией. Следующий пример конфигурации создает ресурс
IstioCNIс именем default в пространстве именistio-cni: -
Разверните control plane Istio, используя стратегию обновления
RevisionBased. Следующий пример конфигурации создает ресурсIstioс именемdefaultв пространстве именistio-system:Пример конфигурации
-
Получите имя
IstioRevision, выполнив следующую команду:Пример вывода
Имя
IstioRevisionимеет формат<istio_resource_name>-<version>. -
Настройте рабочие нагрузки приложения для выполнения в кластере. Например, вы можете развернуть образец приложения
bookinfoв пространстве именbookinfo.a. Создайте пространство имен
bookinfo, выполнив команду ниже:b. Примените метку к пространству имен
bookinfo, чтобы включить автоматическую инъекцию sidecar. Используйте следующую команду:c. Разверните pod'ы приложения
bookinfoв пространстве именbookinfo, выполнив эту команду: -
Проверьте ресурс
Istio, используя следующую команду:Пример вывода
Поле
IN USEбудет иметь значение1после развертывания приложения. -
Убедитесь, что версия proxy совпадает с версией control plane, выполнив следующую команду:
Столбец
VERSIONдолжен совпадать с версией control plane.Пример вывода
Обновление control plane Istio со стратегией RevisionBased
При обновлении Istio с использованием стратегии RevisionBased вы можете переходить более чем на одну minor-версию за раз. Оператор Alauda Service Mesh v2 создает новый ресурс IstioRevision для каждого изменения поля .spec.version и развертывает соответствующий экземпляр control plane. Чтобы перенести рабочие нагрузки на новый control plane, задайте для пространства имен метку istio.io/rev, соответствующую имени ресурса IstioRevision, а затем перезапустите рабочие нагрузки.
Предварительные требования
- Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.
- Вы развернули Istio и обновили оператор Alauda Service Mesh v2 до версии, которая поддерживает новую целевую версию Istio. Подробнее см. в разделе Understanding Operator updates and channels.
- Вы установили плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.1.5 или новее.
- Вы установили
istioctlна локальной машине. - Вы настроили control plane Istio для использования стратегии обновления
RevisionBased. В этом примере ресурсIstioс именемdefaultразвернут в пространстве именistio-system. - Вы установили плагин Istio CNI с нужной версией. В этом примере ресурс
IstioCNIс именемdefaultразвернут в пространстве именistio-cni. - Вы пометили пространство имен
bookinfo, чтобы включить инъекцию sidecar. - В кластере запущены рабочие нагрузки приложения. В этом примере приложение bookinfo развернуто в пространстве имен
bookinfo.
Процедура
-
Измените версию в ресурсе
Istio. Например, чтобы обновиться до Istio1.28.6, задайте для поля spec.version значениеv1.28.6, выполнив следующую команду:Обновление версии в Istio CR
Оператор Service Mesh v2 развертывает новую версию control plane рядом со старой версией control plane. Sidecar'ы остаются подключенными к старому control plane.
-
Убедитесь, что ресурсы
IstioиIstioRevisionготовы с новой ревизией.a. Убедитесь, что ресурс
Istioготов, выполнив следующую команду:Пример вывода
b. Убедитесь, что ресурс
IstioRevisionготов, выполнив следующую команду:Пример вывода
-
Убедитесь, что запущены два pod'а control plane, по одному для каждой ревизии, выполнив следующую команду:
Пример вывода
-
Убедитесь, что sidecar'ы рабочих нагрузок по-прежнему подключены к предыдущему control plane, выполнив следующую команду:
Пример вывода
Столбец
VERSIONдолжен совпадать со старой версией control plane. -
Обновите плагин Istio CNI до той же версии, что и новая ревизия control plane. Ресурс
IstioCNIобновляется независимо от ресурсаIstio, а обновленный плагин CNI продолжает перенаправлять трафик для обеих ревизий control plane во время миграции. Подробные шаги см. в разделе The Istio CNI update process. -
Переведите рабочие нагрузки на новый control plane, обновив метку
istio.io/revв пространстве имен приложения или на pod'ах до имени ревизии. Например, обновите метку для всего пространства имен, выполнив следующую команду: -
Перезапустите рабочие нагрузки приложения, чтобы новая версия sidecar была внедрена, выполнив следующую команду:
Проверка
-
Проверьте, что запущена новая версия sidecar, выполнив следующую команду:
Столбец
VERSIONдолжен совпадать с новой версией control plane. -
Убедитесь, что старый control plane, ресурсы
IstioиIstioRevisionудалены.a. Убедитесь, что старый control plane удален, выполнив следующую команду:
b. Убедитесь, что ресурс
Istioудален, выполнив следующую команду:c. Убедитесь, что ресурс
IstioRevisionудален, выполнив следующую команду:
Оператор Alauda Service Mesh v2 удаляет старый ресурс IstioRevision и связанный с ним control plane после истечения периода ожидания, заданного в поле spec.updateStrategy.inactiveRevisionDeletionGracePeriodSeconds. Период ожидания по умолчанию составляет 30 секунд.
Вы можете увеличить период ожидания, чтобы дать достаточно времени для проверки нового control plane перед удалением предыдущей ревизии. Установите большее значение во время canary-обновлений, чтобы обеспечить стабильность рабочих нагрузок перед полным переходом.
Удаление ресурсов обновления RevisionBased из среды разработки
После завершения проверки и экспериментов следует удалить конфигурацию обновления RevisionBased, чтобы очистить среду разработки и освободить ресурсы.
Процедура
Выполните следующие команды, чтобы удалить все компоненты Istio и примеры приложений: