Google Kubernetes Engine
Google Kubernetes Engine
Istio용 GKE 클러스터를 준비하는 방법을 알려드려요.
출처: Istio 문서
본문
다음 안내를 따라 Istio용 GKE 클러스터를 준비하세요.
- 새 클러스터를 만들어요.
$ 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 규칙을 만들려면 현재 사용자에게 admin 권한이 필요해요.
$ 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