Google Kubernetes Engine

Google Kubernetes Engine

Istio용 GKE 클러스터를 준비하는 방법을 알려드려요.

출처: Istio 문서

본문

다음 안내를 따라 Istio용 GKE 클러스터를 준비하세요.

  1. 새 클러스터를 만들어요.
$ 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
  1. kubectl용 자격 증명을 가져와요.
$ gcloud container clusters get-credentials $CLUSTER_NAME \
    --zone $ZONE \
    --project $PROJECT_ID
  1. 현재 사용자에게 클러스터 관리자(admin) 권한을 부여해요. Istio에 필요한 RBAC 규칙을 만들려면 현재 사용자에게 admin 권한이 필요해요.
$ kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole=cluster-admin \
    --user=$(gcloud config get-value core/account)

멀티클러스터 통신

어떤 경우에는 클러스터 간 트래픽을 허용하도록 방화벽 규칙을 명시적으로 만들어야 해요.

  1. 클러스터의 네트워크 정보를 모아요.
$ 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}"))
  1. 방화벽 규칙을 만들어요.
$ 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

더 알아보기 (Learn more)