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

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

    • Установка Alauda Service Mesh v2 Operator
    • Развертывание плагина Istio CNI
    • Развертывание control plane Istio
    WARNING

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

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

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

    Для развертывания Istio с помощью Alauda Service Mesh v2 Operator необходимо создать ресурс Istio. Затем Operator создает ресурсы IstioRevision, представляющие отдельные ревизии control plane Istio. После этого control plane Istio развертывается на основе этих ресурсов IstioRevision.

    Если стратегия обновления ресурса Istio установлена в RevisionBased, Operator может создавать дополнительные ресурсы IstioRevision для управления обновлениями control plane.

    Установка Alauda Service Mesh v2 Operator

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

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

    • Alauda Service Mesh v2 должен быть загружен.

    • Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.

    • Должен быть установлен плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.1.5 или более поздней.

      Плагин Multus должен быть установлен до установки Alauda Service Mesh v2 Operator.

      Если Operator будет установлен раньше, его необходимо удалить и установить заново после того, как плагин Multus будет установлен.

    Процедура

    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 Operator. Это канал по умолчанию для установки Operator.
        • Чтобы установить конкретную версию Alauda Service Mesh v2 Operator, выберите соответствующий канал stable-<version>. Например, чтобы установить Alauda Service Mesh v2 Operator версии 2.0.x, используйте канал stable-2.0.
    7. Нажмите Install и Confirm, чтобы установить Operator.

    Проверка

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

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

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

    • Alauda Service Mesh v2 должен быть загружен.

    • Активная сессия ACP CLI (kubectl) от администратора кластера с ролью cluster-admin.

    • Должен быть установлен плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.1.5 или более поздней.

      Плагин Multus должен быть установлен до установки Alauda Service Mesh v2 Operator.

      Если Operator будет установлен раньше, его необходимо удалить и установить заново после того, как плагин Multus будет установлен.

    Процедура

    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: имя канала Operator
      • NAME: имя ресурса CSV
      • VERSION: версия Operator
    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, в котором будет установлен Operator.
      • .spec.channel: канал Operator, на который выполнена подписка.
      • .spec.installPlanApproval: стратегия утверждения (Manual или Automatic). В данном случае Manual требует ручного утверждения для установки/обновления.
      • .spec.source: catalogSource Operator.
      • .spec.sourceNamespace: должен быть установлен в cpaas-system, поскольку все catalogSource, предоставляемые платформой, находятся в этом namespace.
      • .spec.startingCSV: указывает версию для установки при Manual-утверждении; если поле пустое, по умолчанию используется последняя версия в канале. Для Automatic не требуется.
    5. Проверьте статус Subscription

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

      Ключевые значения вывода

      • .status.state: UpgradePending означает, что Operator ожидает установки или обновления.
      • 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; значение Phase изменится на 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: отображаемое имя Operator
    • VERSION: версия Operator
    • REPLACES: CSV, замененный во время обновления
    • PHASE: статус установки (Succeeded означает успешное завершение)

    Custom Resource Definitions, устанавливаемые Operator

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

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

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

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

    Для развертывания control plane и плагина 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 Operator использует конфигурацию этого ресурса для развертывания pod CNI.

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

    • Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.
    • Alauda Service Mesh v2 Operator должен быть установлен.
    • Должен быть установлен плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.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:
        # Applying the following contents to the yaml code editor:
        values:
          cni:
            cniConfDir: /etc/cni/multus/net.d # /etc/cni/net.d in ACP 4.0
            excludeNamespaces:
              - istio-cni
              - kube-system
    11. Нажмите Create.

    Проверка

    Дождитесь, пока поле .status.state ресурса IstioCNI не примет значение Healthy.

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

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

    • Активная сессия ACP CLI (kubectl) от администратора кластера с ролью cluster-admin.
    • Alauda Service Mesh v2 Operator должен быть установлен.
    • Должен быть установлен плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.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 in ACP 4.0
            excludeNamespaces:
              - istio-cni
              - kube-system
      EOF
    2. Дождитесь возврата условия состояния Ready для ресурса IstioCNI, выполнив следующую команду:

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

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

    kubectl create namespace istio-system

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

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

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

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

    • Alauda Service Mesh v2 Operator должен быть установлен.
    • Вы вошли в веб-консоль Alauda Container Platform как cluster-admin.
    • Должен быть установлен плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.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 Operator должен быть установлен.
    • Должен быть установлен плагин Alauda Container Platform Networking for Multus, а версия kube-ovn должна быть v4.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.6
      EOF
    2. Дождитесь возврата условия состояния Ready для control plane Istio, выполнив следующую команду:

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

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