Установка мульти-первичной мульти-сетевой mesh

Установите Istio в топологии мульти-первичной мульти-сетевой mesh на двух кластерах.

NOTE

В этой процедуре CLUSTER1 — это кластер East, а CLUSTER2 — кластер West.

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

Топология

Сервисные рабочие нагрузки, расположенные в разных кластерах, взаимодействуют косвенно через выделенные шлюзы для трафика east-west. Шлюз в каждом кластере должен быть доступен из другого кластера.

Топология мульти-первичной мульти-сетевой mesh

Требования

Содержание

Процедура

Создайте переменную окружения ISTIO_VERSION, определяющую версию Istio для установки

export ISTIO_VERSION=1.26.3

Установите Istio в кластере East

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

    cat <<EOF | kubectl --context "${CTX_CLUSTER1}" apply -f -
    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      version: v${ISTIO_VERSION}
      namespace: istio-system
      values:
        global:
          meshID: mesh1
          network: network1
          multiCluster:
            clusterName: cluster1
    EOF
  2. Дождитесь, пока управляющая плоскость не вернет состояние Ready, выполнив команду:

    kubectl --context "${CTX_CLUSTER1}" wait --for condition=Ready istio/default --timeout=3m
  3. Создайте шлюз East-West в кластере East, выполнив команду:

    Нажмите, чтобы развернуть
    kubectl --context "${CTX_CLUSTER1}" apply -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net1.yaml
  4. Откройте доступ к сервисам через шлюз, выполнив команду:

    Нажмите, чтобы развернуть
    kubectl --context "${CTX_CLUSTER1}" apply -n istio-system -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/expose-services.yaml

Установите Istio в кластере West

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

    cat <<EOF | kubectl --context "${CTX_CLUSTER2}" apply -f -
    apiVersion: sailoperator.io/v1
    kind: Istio
    metadata:
      name: default
    spec:
      version: v${ISTIO_VERSION}
      namespace: istio-system
      values:
        global:
          meshID: mesh1
          network: network2
          multiCluster:
            clusterName: cluster2
    EOF
  2. Дождитесь, пока управляющая плоскость не вернет состояние Ready, выполнив команду:

    kubectl --context "${CTX_CLUSTER2}" wait --for condition=Ready istio/default --timeout=3m
  3. Создайте шлюз East-West в кластере West, выполнив команду:

    kubectl --context "${CTX_CLUSTER2}" apply -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/east-west-gateway-net2.yaml
  4. Откройте доступ к сервисам через шлюз, выполнив команду:

    kubectl --context "${CTX_CLUSTER2}" apply -n istio-system -f https://raw.githubusercontent.com/alauda-mesh/sail-operator/main/docs/deployment-models/resources/expose-services.yaml

Создайте сервисный аккаунт istio-reader-service-account для кластера East

kubectl --context="${CTX_CLUSTER1}" create serviceaccount istio-reader-service-account -n istio-system

Создайте сервисный аккаунт istio-reader-service-account для кластера West

kubectl --context="${CTX_CLUSTER2}" create serviceaccount istio-reader-service-account -n istio-system

Добавьте роль cluster-reader в кластере East

kubectl --context="${CTX_CLUSTER1}" create clusterrolebinding cluster-reader-istio-reader-sa \
  --clusterrole=cluster-reader \
  --serviceaccount=istio-system:istio-reader-service-account

Добавьте роль cluster-reader в кластере West

kubectl --context="${CTX_CLUSTER2}" create clusterrolebinding cluster-reader-istio-reader-sa \
  --clusterrole=cluster-reader \
  --serviceaccount=istio-system:istio-reader-service-account

Установите remote secret в кластере East для доступа к API серверу кластера West

istioctl create-remote-secret \
  --context="${CTX_CLUSTER2}" \
  --name=cluster2 \
  --create-service-account=false | \
  kubectl --context="${CTX_CLUSTER1}" apply -f -

Установите remote secret в кластере West для доступа к API серверу кластера East

istioctl create-remote-secret \
  --context="${CTX_CLUSTER1}" \
  --name=cluster1 \
  --create-service-account=false | \
  kubectl --context="${CTX_CLUSTER2}" apply -f -