• Русский
  • Установка Alauda Service Mesh

    Установка Alauda Service Mesh состоит из четырёх основных частей:

    • Установка оператора Alauda Service Mesh v2
    • Развёртывание плагина Istio CNI
    • Развёртывание управляющей плоскости Istio
    WARNING

    Не устанавливайте Alauda Service Mesh и Alauda Service Mesh v2 в одном и том же Kubernetes кластере, так как это может привести к функциональным конфликтам.

    Руководство по миграции будет доступно в будущих релизах.

    Развёртывание Istio с помощью оператора Alauda Service Mesh v2

    Для развёртывания Istio с использованием оператора Alauda Service Mesh v2 необходимо создать ресурс Istio. Оператор затем создаёт ресурсы IstioRevision, представляющие отдельные ревизии управляющей плоскости Istio. Управляющая плоскость Istio развёртывается на основе этих ресурсов IstioRevision.

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

    Установка оператора Alauda Service Mesh v2

    Установка через веб-консоль

    Требования

    • Alauda Service Mesh v2 должен быть загружен.
    • Вы вошли в веб-консоль Alauda Container Platform с ролью cluster-admin.
    • Плагин Alauda Container Platform Networking для Multus должен быть установлен, а kube-ovn — версии 4.1.5 или выше.

    Процедура

    1. В веб-консоли Alauda Container Platform перейдите в раздел Administrator.
    2. Выберите Marketplace > OperatorHub.
    3. Найдите Alauda Service Mesh v2.
    4. Найдите Alauda Service Mesh v2 и кликните для выбора.
    5. Нажмите Install.
    6. В диалоговом окне Install Alauda Service Mesh v2 выполните следующие действия:
      1. Выберите Channel
        • Выберите канал stable для установки последней стабильной версии оператора Alauda Service Mesh v2. Это канал по умолчанию для установки оператора.
        • Чтобы установить конкретную версию оператора Alauda Service Mesh v2, выберите соответствующий канал stable-<version>. Например, для установки версии 2.0.x используйте канал stable-2.0.
    7. Нажмите Install и Confirm для установки оператора.

    Проверка

    Убедитесь, что статус установки оператора отображается как Succeeded в разделе Installation Info.

    Установка через CLI

    Требования

    • Alauda Service Mesh v2 должен быть загружен.
    • Активная сессия ACP CLI (kubectl) с ролью cluster-admin.
    • Плагин Alauda Container Platform Networking для Multus должен быть установлен, а kube-ovn — версии 4.1.5 или выше.

    Процедура

    1. Проверка доступных версий

      (
        echo -e "CHANNEL\tNAME\tVERSION"
        kubectl get packagemanifest servicemesh-operator2 -o json | jq -r '
          .status.channels[] |
          .name as $channel |
          .entries[] |
          [$channel, .name, .version] | @tsv
        '
      ) | column -t -s $'\t'

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

      CHANNEL     NAME                          VERSION
      stable      servicemesh-operator2.v2.1.0  2.1.0
      stable-2.1  servicemesh-operator2.v2.1.0  2.1.0

      Пояснения к полям:

      • CHANNEL: имя канала оператора
      • NAME: имя ресурса CSV
      • VERSION: версия оператора
    2. Подтверждение catalogSource

      kubectl get packagemanifests servicemesh-operator2 -ojsonpath='{.status.catalogSource}'

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

      platform

      Это означает, что servicemesh-operator2 поставляется из catalogSource platform.

    3. Создание namespace

      kubectl get namespace sail-operator || kubectl create namespace sail-operator
    4. Создание Subscription

      kubectl apply -f - <<EOF
      apiVersion: operators.coreos.com/v1alpha1
      kind: Subscription
      metadata:
        annotations:
          cpaas.io/target-namespaces: ""
        labels:
          catalog: platform
        name: servicemesh-operator2
        namespace: sail-operator
      spec:
        channel: stable
        installPlanApproval: Manual
        name: servicemesh-operator2
        source: platform
        sourceNamespace: cpaas-system
        startingCSV: servicemesh-operator2.v2.1.0
      EOF

      Пояснения к полям

      • annotation cpaas.io/target-namespaces: рекомендуется оставить пустым; пустое значение означает установку на весь кластер.
      • .metadata.name: имя Subscription (должно соответствовать DNS, максимум 253 символа).
      • .metadata.namespace: namespace для установки оператора.
      • .spec.channel: канал оператора для подписки.
      • .spec.installPlanApproval: стратегия одобрения (Manual или Automatic). Здесь Manual требует ручного одобрения установки/обновления.
      • .spec.source: catalogSource оператора.
      • .spec.sourceNamespace: должно быть cpaas-system, так как все catalogSource, предоставляемые платформой, находятся в этом namespace.
      • .spec.startingCSV: версия для установки при ручном одобрении; если пусто, устанавливается последняя версия в канале. Не требуется для автоматического одобрения.
    5. Проверка статуса Subscription

      kubectl -n sail-operator get subscriptions servicemesh-operator2 -o yaml

      Ключевые поля вывода

      • .status.state: UpgradePending означает, что оператор ожидает установки или обновления.
      • Condition InstallPlanPending = True: ожидает ручного одобрения.
      • .status.currentCSV: текущий подписанный CSV.
      • .status.installPlanRef: связанный InstallPlan; должен быть одобрен перед установкой.

      Ожидайте, пока условие InstallPlanPending станет True:

      kubectl -n sail-operator wait --for=condition=InstallPlanPending subscription servicemesh-operator2 --timeout=2m
    6. Одобрение InstallPlan

      kubectl -n sail-operator get installplan \
        "$(kubectl -n sail-operator get subscriptions servicemesh-operator2 -o jsonpath='{.status.installPlanRef.name}')"

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

      NAME            CSV                            APPROVAL   APPROVED
      install-rlgnp   servicemesh-operator2.v2.1.0   Manual     false

      Ручное одобрение

      PLAN="$(kubectl -n sail-operator get subscription servicemesh-operator2 -o jsonpath='{.status.installPlanRef.name}')"
      kubectl -n sail-operator patch installplan "$PLAN" --type=json -p='[{"op": "replace", "path": "/spec/approved", "value": true}]'

    Проверка

    Ожидайте создания CSV; фаза должна измениться на Succeeded:

    kubectl wait --for=jsonpath='{.status.phase}'=Succeeded csv --all -n sail-operator --timeout=3m

    Проверьте статус CSV:

    kubectl -n sail-operator get csv

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

    NAME                           DISPLAY                  VERSION   REPLACES   PHASE
    servicemesh-operator2.v2.1.0   Alauda Service Mesh v2   2.1.0                Succeeded

    Пояснения к полям

    • NAME: имя установленного CSV
    • DISPLAY: отображаемое имя оператора
    • VERSION: версия оператора
    • REPLACES: CSV, заменённый при обновлении
    • PHASE: статус установки (Succeeded означает успешную установку)

    Custom Resource Definitions, устанавливаемые оператором

    Оператор устанавливает следующие категории Custom Resource Definitions (CRD):

    • CRD Sail Operator: Эти CRD принадлежат API группе sailoperator.io и определяют кастомные ресурсы для управления компонентами Istio, включая Istio, IstioRevision, IstioCNI и ZTunnel. Подробнее см. в Sail Operator API reference.

    • CRD Istio: Эти CRD управляют конфигурацией mesh, обнаружением сервисов, маршрутизацией трафика и наблюдаемостью. Они принадлежат API группам istio.io, таким как networking.istio.io, security.istio.io и telemetry.istio.io. Руководство по конфигурации доступно в документации Istio.

    Развёртывание компонентов Istio

    Для развёртывания управляющей плоскости и плагина Istio CNI необходимо создать кастомные ресурсы Istio и IstioCNI.

    Рекомендуется создавать ресурсы Istio и IstioCNI в разных namespace.

    Создание namespace для IstioCNI

    kubectl create namespace istio-cni

    Создание ресурса IstioCNI

    Создание через веб-консоль

    Создайте ресурс Istio Container Network Interface (CNI), который содержит конфигурационный файл для плагина Istio CNI. Оператор Alauda Service Mesh v2 использует конфигурацию этого ресурса для развёртывания CNI pod.

    Требования

    • Вы вошли в веб-консоль Alauda Container Platform с ролью cluster-admin.
    • Оператор Alauda Service Mesh v2 должен быть установлен.
    • Плагин Alauda Container Platform Networking для Multus должен быть установлен, а kube-ovn — версии 4.1.5 или выше.

    Процедура

    1. В веб-консоли Alauda Container Platform перейдите в раздел Administrator.
    2. Выберите Marketplace > OperatorHub.
    3. Найдите Alauda Service Mesh v2.
    4. Найдите Alauda Service Mesh v2 и кликните для выбора.
    5. Перейдите на вкладку All Instances.
    6. Нажмите Create.
    7. Найдите и выберите IstioCNI, затем нажмите Create.
    8. Выберите istio-cni в выпадающем списке Namespace.
    9. Перейдите на вкладку YAML.
    10. Добавьте следующий YAML-фрагмент в редактор кода YAML:
      apiVersion: sailoperator.io/v1
      kind: IstioCNI
      spec:
        # Применяемое содержимое в редактор YAML:
        values:
          cni:
            cniConfDir: /etc/cni/multus/net.d # /etc/cni/net.d в ACP 4.0
            excludeNamespaces:
              - istio-cni
              - kube-system
    11. Нажмите Create.

    Проверка

    Ожидайте, пока поле .status.state ресурса IstioCNI не станет Healthy.

    Создание через CLI

    Требования

    • Активная сессия ACP CLI (kubectl) с ролью cluster-admin.
    • Оператор Alauda Service Mesh v2 должен быть установлен.
    • Плагин Alauda Container Platform Networking для Multus должен быть установлен, а kube-ovn — версии 4.1.5 или выше.

    Процедура

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

      cat <<EOF | kubectl apply -f -
      apiVersion: sailoperator.io/v1
      kind: IstioCNI
      metadata:
        name: default
      spec:
        namespace: istio-cni
        values:
          cni:
            cniConfDir: /etc/cni/multus/net.d # /etc/cni/net.d в ACP 4.0
            excludeNamespaces:
              - istio-cni
              - kube-system
      EOF
    2. Ожидайте, пока ресурс IstioCNI не получит состояние Ready, выполнив команду:

      kubectl wait --for condition=Ready istiocni/default --timeout=3m

    Создание namespace для Istio

    kubectl create namespace istio-system

    Создание ресурса Istio

    Создание через веб-консоль

    Создайте ресурс Istio, который будет содержать YAML-конфигурацию для вашего развёртывания Istio. Оператор Alauda Service Mesh v2 использует конфигурацию этого ресурса для развёртывания управляющей плоскости Istio.

    Требования

    • Оператор Alauda Service Mesh v2 должен быть установлен.
    • Вы вошли в веб-консоль Alauda Container Platform с ролью cluster-admin.
    • Плагин Alauda Container Platform Networking для Multus должен быть установлен, а kube-ovn — версии 4.1.5 или выше.

    Процедура

    1. В веб-консоли Alauda Container Platform перейдите в раздел Administrator.
    2. Выберите Marketplace > OperatorHub.
    3. Найдите Alauda Service Mesh v2.
    4. Найдите Alauda Service Mesh v2 и кликните для выбора.
    5. Перейдите на вкладку All Instances.
    6. Нажмите Create.
    7. Найдите и выберите Istio, затем нажмите Create.
    8. Выберите istio-system в выпадающем списке Namespace.
    9. Нажмите Create.

    Проверка

    Ожидайте, пока поле .status.state ресурса Istio не станет Healthy.

    Создание через CLI

    Требования

    • Активная сессия ACP CLI (kubectl) с ролью cluster-admin.
    • Оператор Alauda Service Mesh v2 должен быть установлен.
    • Плагин Alauda Container Platform Networking для Multus должен быть установлен, а kube-ovn — версии 4.1.5 или выше.

    Процедура

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

      cat <<EOF | kubectl apply -f -
      apiVersion: sailoperator.io/v1
      kind: Istio
      metadata:
        name: default
      spec:
        namespace: istio-system
        version: v1.28.3
      EOF
    2. Ожидайте, пока управляющая плоскость Istio не получит состояние Ready, выполнив команду:

      kubectl wait --for condition=Ready istio/default --timeout=3m

    Дополнительные ресурсы