Cloud Service Mesh용 Gateway API 설정 준비
이 페이지에서는 게이트웨이에 필요한 커스텀 리소스 정의를 클러스터에 설치하는 방법을 설명합니다.
제한사항
- 동일한 Fleet에
gateway
config-api 및istio
config-api 클러스터를 혼합하는 것은 지원되지 않습니다. gateway
config-api 클러스터에는 멀티 클러스터 서비스 검색 및 부하 분산이 지원되지 않습니다.- 기존
--management automatic
플래그를 사용하여 클러스터를 온보딩하면 클러스터는istio
구성 API를 사용하기 시작하며gateway
API로 변경할 수 없습니다. - FQDN만 지원됩니다. 닉네임은 지원되지 않습니다.
기본 요건
먼저 이 가이드에서는 이미 Google Cloud 프로젝트를 만들고 kubectl
을 설치했다고 가정합니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
- 클러스터의 kubeconfig 항목을 생성합니다.
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
각 항목의 의미는 다음과 같습니다.
- CLUSTER_NAME은 클러스터 이름입니다.
- LOCATION은 클러스터의 위치입니다.
- PROJECT_ID는 클러스터의 프로젝트 ID입니다.
GKE 클러스터 만들기 및 등록
GKE 클러스터를 만듭니다.
gcloud container clusters create CLUSTER_NAME \ --location=LOCATION \ --enable-ip-alias \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --release-channel=regular \ --project=PROJECT_ID \ --gateway-api=standard
각 항목의 의미는 다음과 같습니다.
- CLUSTER_NAME은 클러스터 이름입니다.
- LOCATION은 클러스터의 위치입니다.
- PROJECT_ID는 클러스터의 프로젝트 ID입니다.
GKE용 워크로드 아이덴티티 제휴 사용 설정
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
노드에서 GKE 메타데이터 서버를 실행합니다.
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATA
Fleet에 클러스터를 등록합니다.
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
클러스터가 Fleet에 등록되었는지 확인합니다.
gcloud container hub memberships list --project=PROJECT_ID
출력은 다음과 비슷합니다.
NAME EXTERNAL_ID LOCATION my-cluster 91980bb9-593c-4b36-9170-96445c9edd39 us-west1
권한 설정
다음 명령어는 모든 인증된 사용자에게 권한을 부여하지만 GKE용 워크로드 아이덴티티 제휴를 사용하여 일부 계정에만 권한을 부여할 수 있습니다.
trafficdirector.client
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
container.developer
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role "roles/container.developer"
여기서 PROJECT_NUMBER는 프로젝트 번호입니다.
compute.networkAdmin
역할을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \ --role "roles/compute.networkAdmin"
여기서 PROJECT_NUMBER는 프로젝트 번호입니다.
Cloud Service Mesh 사용 설정
메시 기능을 사용 설정합니다.
gcloud container hub mesh enable --project PROJECT_ID
Gateway API를 사용하도록 메시지를 업데이트합니다.
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
Cloud Service Mesh 리소스의 상태를 설명하여 업데이트를 확인합니다.
gcloud alpha container fleet mesh describe
커스텀 리소스 정의 설치
GRPCRoute 커스텀 리소스 정의(CRD)를 설치합니다.
curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -
출력은 다음과 비슷합니다.
customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created