5.0 KiB
| title | description | weight | skip_seealso | aliases | keywords | owner | test | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Google Kubernetes Engine | Інструкції для налаштування кластера Google Kubernetes Engine для Istio. | 20 | true |
|
|
istio/wg-environments-maintainers | no |
Дотримуйтесь цих інструкцій, щоб підготувати кластер GKE для Istio.
-
Створіть новий кластер.
{{< text bash >}} $ export PROJECT_ID=
gcloud config get-value project&&
export M_TYPE=n1-standard-2 &&
export ZONE=us-west2-a &&
export CLUSTER_NAME={PROJECT_ID}-{RANDOM} &&
gcloud services enable container.googleapis.com &&
gcloud container clusters create $CLUSTER_NAME
--cluster-version latest
--machine-type=$M_TYPE
--num-nodes 4
--zone $ZONE
--project $PROJECT_ID {{< /text >}}{{< tip >}} Стандартно для Istio потрібні вузли з більше ніж 1 vCPU. Якщо ви встановлюєте з профілем конфігурації demo, ви можете прибрати аргумент
--machine-type, щоб використовувати менший розмір машиниn1-standard-1. {{< /tip >}}{{< warning >}} Щоб використовувати функцію Istio CNI на GKE Standard, будь ласка, перевірте посібник з установки CNI для кроків з налаштування кластера. Оскільки агент вузла CNI потребує можливості SYS_ADMIN, вона недоступна у GKE Autopilot. Замість цього використовуйте контейнер istio-init. {{< /warning >}}
{{< warning >}} Для приватних кластерів GKE
Автоматично створене правило брандмауера не відкриває порт 15017. Це потрібно для валідаційного вебхука istiod discovery.
Щоб перевірити це правило брандмауера для доступу до майстра:
{{< text bash >}}
gcloud compute firewall-rules list --filter="name~gke-{CLUSTER_NAME}-[0-9a-z]*-master" {{< /text >}}Щоб замінити поточне правило та дозволити доступ до майстра:
{{< text bash >}} $ gcloud compute firewall-rules update --allow tcp:10250,tcp:443,tcp:15017 {{< /text >}}
{{< /warning >}}
-
Отримайте ваші облікові дані для
kubectl.{{< text bash >}} $ gcloud container clusters get-credentials $CLUSTER_NAME
--zone $ZONE
--project $PROJECT_ID {{< /text >}} -
Надайте права адміністратора кластера (admin) поточному користувачеві. Для створення необхідних правил RBAC для Istio поточному користувачеві потрібні права адміністратора.
{{< text bash >}} $ kubectl create clusterrolebinding cluster-admin-binding
--clusterrole=cluster-admin
--user=$(gcloud config get-value core/account) {{< /text >}}
Комунікація між кластерами
В деяких випадках необхідно явно створити правило брандмауера для дозволу міжкластерного трафіку.
{{< warning >}} Наступні інструкції дозволять комунікацію між усіма кластерами у вашому проєкті. Налаштуйте команди за потреби. {{< /warning >}}
-
Зберіть інформацію про мережу ваших кластерів.
{{< text bash >}}
function join_by { local IFS="$1"; shift; echo "*"; }ALL_CLUSTER_CIDRS=(gcloud --project $PROJECT_ID container clusters list --format='value(clusterIpv4Cidr)' | sort | uniq)ALL_CLUSTER_CIDRS=(join_by ,(echo "{ALL_CLUSTER_CIDRS}"))ALL_CLUSTER_NETTAGS=(gcloud --project $PROJECT_ID compute instances list --format='value(tags.items.[0])' | sort | uniq)ALL_CLUSTER_NETTAGS=(join_by ,(echo "{ALL_CLUSTER_NETTAGS}")) {{< /text >}} -
Створіть правило брандмауера.
{{< text bash >}} $ gcloud compute firewall-rules create istio-multicluster-pods
--allow=tcp,udp,icmp,esp,ah,sctp
--direction=INGRESS
--priority=900
--source-ranges="${ALL_CLUSTER_CIDRS}"
--target-tags="${ALL_CLUSTER_NETTAGS}" --quiet {{< /text >}}