• Русский
  • Установка Istio в ambient mode

    Вы можете развернуть Istio в ambient mode на платформе Alauda Container Platform с помощью Alauda Service Mesh Operator версии 2.1.1 или новее.

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

    • Должен быть установлен плагин Alauda Container Platform Networking для Multus, а версия kube-ovn должна быть 4.1.5 или выше.
    • Установлен Alauda Service Mesh Operator версии 2.1.1 или новее.
    • Активная сессия ACP CLI (kubectl) с правами администратора кластера (cluster-admin).
    • Локально установлен istioctl для выполнения данных инструкций.

    Процедура

    Установка Istio Container Network Interface (CNI)

    1. Создайте namespace istio-cni и добавьте метку istio-discovery=enabled:

      kubectl create namespace istio-cni
      kubectl label namespace istio-cni istio-discovery=enabled
    2. Создайте ресурс IstioCNI с именем istio-cni.yaml:

      apiVersion: sailoperator.io/v1
      kind: IstioCNI
      metadata:
        name: default
      spec:
        namespace: istio-cni
        profile: ambient
        values:
          cni:
            cniConfDir: /etc/cni/multus/net.d
            excludeNamespaces:
              - istio-cni
              - kube-system
            ambient:
              reconcileIptablesOnStartup: true
      1. Необходимо установить поле profile в значение ambient.
      2. Установите spec.values.cni.ambient.reconcileIptablesOnStartup в true. Опция reconcileIptablesOnStartup позволяет агенту IstioCNI обнаруживать и исправлять несовместимые правила iptables в уже запущенных ambient-подах при запуске агента CNI, что полезно при обновлениях или изменениях правил.
    3. Примените CR IstioCNI:

      kubectl apply -f istio-cni.yaml
    4. Дождитесь готовности подов IstioCNI:

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

    Установка управляющей плоскости Istio

    1. Создайте namespace istio-system и добавьте метку istio-discovery=enabled:

      kubectl create namespace istio-system
      kubectl label namespace istio-system istio-discovery=enabled
    2. Создайте ресурс Istio с именем istio.yaml:

      apiVersion: sailoperator.io/v1
      kind: Istio
      metadata:
        name: default
      spec:
        namespace: istio-system
        profile: ambient
        values:
          pilot:
            trustedZtunnelNamespace: ztunnel
          meshConfig:
            discoverySelectors:
              - matchLabels:
                  istio-discovery: enabled
      1. Необходимо установить поле profile в значение ambient.
      2. Настройте .spec.values.pilot.trustedZtunnelNamespace в соответствии с namespace, в котором будет установлен ресурс ZTunnel.
      3. Конфигурация discoverySelectors гарантирует, что управляющая плоскость будет отслеживать только namespaces с меткой istio-discovery=enabled, что снижает нагрузку на конфигурацию и позволяет нескольким сервисным мешам сосуществовать в одном кластере. Подробнее см. Discovery selectors in ambient mode.
    3. Примените CR Istio:

      kubectl apply -f istio.yaml
    4. Дождитесь готовности управляющей плоскости Istio:

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

    Установка прокси ZTunnel

    1. Создайте namespace ztunnel и добавьте метку istio-discovery=enabled:

      kubectl create namespace ztunnel
      kubectl label namespace ztunnel istio-discovery=enabled
      NOTE

      Имя namespace для ресурса ZTunnel должно совпадать с параметром trustedZtunnelNamespace в конфигурации Istio.

    2. Создайте ресурс ZTunnel с именем ztunnel.yaml:

      apiVersion: sailoperator.io/v1
      kind: ZTunnel
      metadata:
        name: default
      spec:
        namespace: ztunnel
    3. Примените CR ZTunnel:

      kubectl apply -f ztunnel.yaml
    4. Дождитесь готовности подов ZTunnel:

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