Встановлення ambient multi-primary в різних мережах

Слідуйте цьому посібнику, щоб встановити панель управління Istio на cluster1 і cluster2, зробивши кожен з них основним кластером (це наразі єдина підтримувана конфігурація в режимі ambient). Кластер cluster1 знаходиться в мережі network1, тоді як cluster2 — в мережі network2. Це означає, що між podʼами кластерів немає прямого зʼєднання.

Перед продовженням обовʼязково виконайте кроки в розділі Як розпочати.

У цій конфігурації як cluster1, так і cluster2 спостерігають за API-серверами в кожному кластері для отримання точок доступу.

Робочі навантаження сервісів між кластерами спілкуються опосередковано, через спеціальні шлюзи для схід-захід трафіку. Шлюз у кожному кластері повинен бути доступним з іншого кластера.

Кілька основних кластерів у окремих мережах
Кілька основних кластерів у окремих мережах

Встановлення стандартної мережі для cluster1

Якщо простір імен istio-system вже створено, нам потрібно встановити мережу кластера там:

$ kubectl --context="${CTX_CLUSTER1}" label namespace istio-system topology.istio.io/network=network1

Налаштування cluster1 як основного

Створіть конфігурацію istioctl для cluster1:

Встановіть Istio як основний у cluster1 за допомогою istioctl та API IstioOperator.

$ cat <<EOF > cluster1.yaml
apiVersion: insall.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: ambient
  components:
    pilot:
      k8s:
        env:
          - name: AMBIENT_ENABLE_MULTI_NETWORK
            value: "true"
  values:
    global:
      meshID: mesh1
      multiCluster:
        clusterName: cluster1
      network: network1
EOF

Застосувати конфігурацію до cluster1:

$ istioctl install --context="${CTX_CLUSTER1}" -f cluster1.yaml

Встановлення ambient шлюзу схід-захід в cluster1

Встановіть шлюз у cluster1, який призначений для ambient east-west трафіку. Зверніть увагу, що в залежності від вашого середовища Kubernetes, цей шлюз може бути розгорнутий та бути стандартно доступним в Інтернет. Системи у виробничому середовищі можуть вимагати додаткових обмежень доступу (наприклад, через правила брандмауера), щоб запобігти зовнішнім атакам. Звіртесь з документацією вашого постачальника хмари, щоб дізнатися, які варіанти доступні.

Zip
$ @samples/multicluster/gen-eastwest-gateway.sh@ \
    --network network1 \
    --ambient | \
    kubectl --context="${CTX_CLUSTER1}" apply -f -

Дочекайтеся, поки шлюзу схід-захід буде призначено зовнішню IP-адресу:

$ kubectl --context="${CTX_CLUSTER1}" get svc istio-eastwestgateway -n istio-system
NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)   AGE
istio-eastwestgateway   LoadBalancer   10.80.6.124   34.75.71.237   ...       51s

Встановлення стандартної мережі для cluster2

Якщо простір імен istio-system вже створено, нам потрібно встановити мережу кластера там:

$ kubectl --context="${CTX_CLUSTER2}" get namespace istio-system && \
  kubectl --context="${CTX_CLUSTER2}" label namespace istio-system topology.istio.io/network=network2

Налаштування cluster2 як основного

Створіть конфігурацію istioctl для cluster2:

Встановіть Istio як основний у cluster2, використовуючи istioctl та API IstioOperator.

$ cat <<EOF > cluster2.yaml
apiVersion: insall.istio.io/v1alpha1
kind: IstioOperator
spec:
  profile: ambient
  components:
    pilot:
      k8s:
        env:
          - name: AMBIENT_ENABLE_MULTI_NETWORK
            value: "true"
  values:
    global:
      meshID: mesh1
      multiCluster:
        clusterName: cluster2
      network: network2
EOF

Застосуйте конфігурацію до cluster2:

$ istioctl install --context="${CTX_CLUSTER2}" -f cluster2.yaml

Встановлення ambient шлюзу схід-захід в cluster2

Як і в cluster1, встановіть шлюз у cluster2, який буде призначений для трафіку схід-захід.

Zip
$ @samples/multicluster/gen-eastwest-gateway.sh@ \
    --network network2 \
    --ambient | \
    kubectl apply --context="${CTX_CLUSTER2}" -f -

Дочекайтеся, поки шлюзу схід-захід буде призначено зовнішню IP-адресу:

$ kubectl --context="${CTX_CLUSTER2}" get svc istio-eastwestgateway -n istio-system
NAME                    TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)   AGE
istio-eastwestgateway   LoadBalancer   10.0.12.121   34.122.91.98   ...       51s

Увімкнення виявлення точок доступу

Встановіть віддалений секрет у cluster2, який надає доступ до API-сервера cluster1.

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

Встановіть віддалений секрет у cluster1, який надає доступ до сервера API cluster2.

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

Вітаємо! Ви успішно встановили мережу Istio на декількох основних кластерах у різних мережах!

Наступні кроки

Тепер ви можете перевірити встановлення.

Очищення

Видаліть Istio з обох кластерів cluster1 та cluster2, використовуючи той самий механізм, яким ви встановлювали Istio (istioctl або Helm).

Видаліть Istio в cluster1:

$ istioctl uninstall --context="${CTX_CLUSTER1}" -y --purge
$ kubectl delete ns istio-system --context="${CTX_CLUSTER1}"

Видаліть Istio в cluster2:

$ istioctl uninstall --context="${CTX_CLUSTER2}" -y --purge
$ kubectl delete ns istio-system --context="${CTX_CLUSTER2}"
Чи була ця інформація корисною?
Чи є у вас пропозиції щодо покращення?

Дякуємо за ваш відгук!