Встановлення Multi-Primary
Слідуйте цьому посібнику, щоб встановити панель управління Istio на cluster1 та cluster2, роблячи кожен з них primary кластером. Обидва кластери знаходяться в мережі network1, що означає пряму взаємодію між podʼами в обох кластерах.
Перед тим, як продовжити, обовʼязково виконайте кроки, наведені в розділі перш ніж почати.
У цій конфігурації кожна панель управління спостерігає за API-серверами в обох кластерах для моніторингу точок доступу.
Сервісні навантаження спілкуються безпосередньо (pod-pod) через межі кластерів.
Налаштування cluster1 як primary
Створіть конфігурацію istioctl для cluster1:
Встановіть Istio як primary в cluster1 використовуючи istioctl та IstioOperator API.
$ cat <<EOF > cluster1.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
values:
global:
meshID: mesh1
multiCluster:
clusterName: cluster1
network: network1
EOFЗастосуйте конфігурацію до cluster1:
$ istioctl install --context="${CTX_CLUSTER1}" -f cluster1.yamlВстановіть Istio як primary у cluster1 за допомогою наступних команд Helm:
Встановіть чарт base в cluster1:
$ helm install istio-base istio/base -n istio-system --kube-context "${CTX_CLUSTER1}"Потім встановіть чарт istiod в cluster1 з наступними параметрами для мультикластера:
$ helm install istiod istio/istiod -n istio-system --kube-context "${CTX_CLUSTER1}" --set global.meshID=mesh1 --set global.multiCluster.clusterName=cluster1 --set global.network=network1Налаштування cluster2 як primary
Створіть конфігурацію istioctl для cluster2:
Встановіть Istio як primary у cluster2 за допомогою istioctl та API IstioOperator.
$ cat <<EOF > cluster2.yaml
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
values:
global:
meshID: mesh1
multiCluster:
clusterName: cluster2
network: network1
EOFЗастосуйте конфігурацію до cluster2:
$ istioctl install --context="${CTX_CLUSTER2}" -f cluster2.yamlВстановіть Istio як primary у cluster2 за допомогою наступних команд Helm:
Встановіть чарт base у cluster2:
$ helm install istio-base istio/base -n istio-system --kube-context "${CTX_CLUSTER2}"Потім встановіть чарт istiod у cluster2 з наступними налаштуваннями мультикластера:
$ helm install istiod istio/istiod -n istio-system --kube-context "${CTX_CLUSTER2}" --set global.meshID=mesh1 --set global.multiCluster.clusterName=cluster2 --set global.network=network1Увімкнення виявлення точок доступу
Встановіть віддалений секрет у 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 на кілька primary кластерів!
Наступні кроки
Тепер ви можете перевірити встановлення.
Очищення
Видаліть 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}"Видаліть встановлення Istio Helm з cluster1:
$ helm delete istiod -n istio-system --kube-context "${CTX_CLUSTER1}"
$ helm delete istio-base -n istio-system --kube-context "${CTX_CLUSTER1}"Видаліть простір імен istio-system з cluster1:
$ kubectl delete ns istio-system --context="${CTX_CLUSTER1}"Видаліть встановлення Istio Helm з cluster2:
$ helm delete istiod -n istio-system --kube-context "${CTX_CLUSTER2}"
$ helm delete istio-base -n istio-system --kube-context "${CTX_CLUSTER2}"Видаліть простір імен istio-system з cluster2:
$ kubectl delete ns istio-system --context="${CTX_CLUSTER2}"(Опціонально) Видаліть CRD, встановлені Istio:
Видалення CRD назавжди видаляє всі ресурси Istio, які ви створили у ваших кластерах. Видаліть CRD Istio, встановлені у ваших кластерах, за допомогою запуску:
$ kubectl get crd -oname --context "${CTX_CLUSTER1}" | grep --color=never 'istio.io' | xargs kubectl delete --context "${CTX_CLUSTER1}"
$ kubectl get crd -oname --context "${CTX_CLUSTER2}" | grep --color=never 'istio.io' | xargs kubectl delete --context "${CTX_CLUSTER2}"