Google Kubernetes Engine
請依照這些指示準備 GKE 叢集以供 Istio 使用。
建立新的叢集。
$ 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
擷取您用於
kubectl
的憑證。$ gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT_ID
將叢集管理員 (admin) 權限授與目前的使用者。若要為 Istio 建立必要的 RBAC 規則,目前的使用者需要管理員權限。
$ kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user=$(gcloud config get-value core/account)
多叢集通訊
在某些情況下,必須明確建立防火牆規則,以允許跨叢集流量。
收集關於您叢集網路的資訊。
$ 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}"))
建立防火牆規則。
$ 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