• Русский
  • Обновление с использованием стратегии InPlace

    Стратегия обновления InPlace запускает только одну ревизию контрольной плоскости за раз. Во время обновления все рабочие нагрузки сразу подключаются к новой версии контрольной плоскости. Чтобы поддерживать совместимость между сайдкарами и контрольной плоскостью, можно обновлять только одну минорную версию за раз.

    Стратегия InPlace обновляет и перезапускает существующую контрольную плоскость Istio на месте. В процессе обновления существует только один экземпляр контрольной плоскости, что исключает необходимость перемещать рабочие нагрузки на новый экземпляр контрольной плоскости. Для завершения обновления перезапустите рабочие нагрузки приложений и шлюзы, чтобы обновить прокси Envoy.

    Хотя стратегия InPlace обеспечивает простоту и эффективность, существует небольшая вероятность прерывания трафика приложения, если под рабочей нагрузки обновляется, перезапускается или масштабируется во время перезапуска контрольной плоскости. Вы можете снизить этот риск, запуская несколько реплик контрольной плоскости Istio (istiod).

    Содержание

    Выбор стратегии InPlace

    Чтобы выбрать стратегию InPlace, установите значение spec.updateStrategy.type в ресурсе Istio в InPlace.

    Пример спецификации для выбора стратегии обновления InPlace

    kind: Istio
    spec:
      updateStrategy:
        type: InPlace

    Вы можете установить это значение при создании ресурса или изменить его позже. Если вы редактируете ресурс после создания, внесите изменение до обновления контрольной плоскости Istio.

    Установка с использованием стратегии обновления InPlace

    Вы можете установить контрольную плоскость Istio, Istio CNI и демонстрационное приложение Bookinfo с использованием стратегии обновления InPlace.

    NOTE

    Вы можете использовать следующий раздел для понимания процесса обновления. Если в кластере уже развернут Istio, эту установку можно пропустить.

    Процедура

    1. Создайте пространства имён istio-cni и istio-system, выполнив следующие команды:

      kubectl create ns istio-cni
      kubectl create ns istio-system
    2. Присоедините рабочие нагрузки к контрольной плоскости, развернутой с использованием стратегии InPlace:

      • Пометьте пространство имён для автоматического включения всех рабочих нагрузок, выполнив команду:

        kubectl label namespace <namespace_name> istio.io/rev=<revision_name>
      • Примените метку ревизии к отдельным рабочим нагрузкам, изменив шаблон пода в ресурсе Deployment. Например:

        apiVersion: apps/v1
        kind: Deployment
        spec:
          template:
            metadata:
              labels:
                istio.io/rev: <revision_name>
    3. Если имя ревизии — default, присоедините рабочие нагрузки к ревизии, выполнив следующую команду. В примере пространство имён помечается меткой istio-injection: enabled.

      kubectl label namespace <namespace_name> istio-injection=enabled
    4. Установите плагин Istio CNI нужной версии. В следующем примере создаётся ресурс IstioCNI с именем default в пространстве имён istio-cni:

      apiVersion: sailoperator.io/v1
      kind: IstioCNI
      metadata:
        name: default
      spec:
        version: v1.24.6
        namespace: istio-cni
        values:
          cni:
            cniConfDir: /etc/cni/multus/net.d # /etc/cni/net.d в ACP 4.0
            excludeNamespaces:
              - istio-cni
              - kube-system
    5. Разверните контрольную плоскость Istio с использованием стратегии обновления InPlace. В следующем примере создаётся ресурс Istio с именем default в пространстве имён istio-system:

      Пример конфигурации

      apiVersion: sailoperator.io/v1
      kind: Istio
      metadata:
        name: default
      spec:
        namespace: istio-system
        version: v1.24.6
        updateStrategy:
          type: InPlace
    6. Настройте рабочие нагрузки приложений для запуска в кластере. Например, вы можете развернуть демонстрационное приложение bookinfo в пространстве имён bookinfo.

      a. Создайте пространство имён bookinfo командой:

      kubectl create ns bookinfo

      b. Примените метку к пространству имён bookinfo для активации автоматической инъекции сайдкара. Используйте команду:

      kubectl label namespace bookinfo istio-injection=enabled

      c. Разверните поды приложения bookinfo в пространстве имён bookinfo, выполнив команду:

      kubectl -n bookinfo apply -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml
    7. Проверьте ресурс Istio с помощью команды:

      kubectl get istio -n istio-system

      Пример вывода

      NAME      NAMESPACE      PROFILE   REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
      default   istio-system             1           1       1        default           Healthy   v1.24.6   6m3s

      Значение 1 в столбце IN USE означает, что ресурс IstioRevision ссылается как на метку в пространстве имён, так и на внедрённые прокси сайдкара.

    Обновление контрольной плоскости Istio со стратегией InPlace

    При обновлении Istio с использованием стратегии InPlace вы можете увеличивать версию только на одну минорную версию за раз. Чтобы обновить более чем на одну минорную версию, необходимо увеличить версию и перезапустить рабочие нагрузки после каждого обновления. Перезапуск рабочих нагрузок гарантирует совместимость между версиями сайдкара и контрольной плоскости. Процесс обновления завершается после перезапуска всех рабочих нагрузок.

    Предварительные условия

    • Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.
    • Установлен плагин Alauda Container Platform Networking для Multus, kube-ovn должен быть версии v4.1.5 или новее.
    • Установлен оператор Alauda Service Mesh v2 и развернут Istio.
    • На локальной машине установлен istioctl.
    • Контрольная плоскость Istio настроена на использование стратегии обновления InPlace. В этом примере ресурс Istio с именем default развернут в пространстве имён istio-system.
    • Установлен плагин Istio CNI нужной версии. В этом примере ресурс IstioCNI с именем default развернут в пространстве имён istio-cni.
    • Пространство имён bookinfo помечено для включения инъекции сайдкара.
    • В кластере запущены рабочие нагрузки приложений. В этом примере приложение bookinfo развернуто в пространстве имён bookinfo.

    Процедура

    1. Измените версию в ресурсе Istio. Например, чтобы обновиться до Istio 1.26.3, установите поле spec.version в v1.26.3, выполнив команду:

      kubectl patch istio default --type='merge' -p '{"spec":{"version":"v1.26.3"}}'

      Обновление версии в CR Istio

      kind: Istio
      spec:
        version: v1.26.3
        updateStrategy:
          type: InPlace

      Оператор Service Mesh v2 развернёт новую версию контрольной плоскости, которая заменит старую. Сайдкары автоматически переподключатся к новой контрольной плоскости.

    2. Убедитесь, что новая версия контрольной плоскости готова, выполнив команду:

      kubectl get istio

      Пример вывода

      NAME      NAMESPACE      PROFILE   REVISIONS   READY   IN USE   ACTIVE REVISION   STATUS    VERSION   AGE
      default   istio-system             1           1       1        default           Healthy   v1.26.3   18m5s
    3. Перезапустите рабочие нагрузки приложений, чтобы новая версия сайдкара была внедрена, выполнив команду:

      kubectl rollout restart deployment -n bookinfo

    Проверка

    Проверьте, что новая версия сайдкара запущена, выполнив команду:

    istioctl proxy-status

    Пример вывода

    NAME                                        CLUSTER        CDS              LDS              EDS              RDS              ECDS        ISTIOD                      VERSION
    details-v1-5c89dbb599-4t927.bookinfo        Kubernetes     SYNCED (92s)     SYNCED (92s)     SYNCED (85s)     SYNCED (92s)     IGNORED     istiod-57559f96c4-v2h9g     1.26.3-asm-r0
    productpage-v1-f8fdd5649-xmxkt.bookinfo     Kubernetes     SYNCED (92s)     SYNCED (92s)     SYNCED (85s)     SYNCED (92s)     IGNORED     istiod-57559f96c4-v2h9g     1.26.3-asm-r0
    ratings-v1-ccf8bc48c-766tl.bookinfo         Kubernetes     SYNCED (93s)     SYNCED (93s)     SYNCED (85s)     SYNCED (93s)     IGNORED     istiod-57559f96c4-v2h9g     1.26.3-asm-r0
    reviews-v1-85dc746bfc-gsf6l.bookinfo        Kubernetes     SYNCED (92s)     SYNCED (92s)     SYNCED (85s)     SYNCED (92s)     IGNORED     istiod-57559f96c4-v2h9g     1.26.3-asm-r0
    reviews-v2-5bd759b4c5-nkb62.bookinfo        Kubernetes     SYNCED (93s)     SYNCED (93s)     SYNCED (85s)     SYNCED (93s)     IGNORED     istiod-57559f96c4-v2h9g     1.26.3-asm-r0
    reviews-v3-55d5b84fb9-wq9ds.bookinfo        Kubernetes     SYNCED (94s)     SYNCED (94s)     SYNCED (85s)     SYNCED (94s)     IGNORED     istiod-57559f96c4-v2h9g     1.26.3-asm-r0

    Столбец VERSION должен соответствовать новой версии контрольной плоскости.