클러스터에 구성 적용
다음 단계를 따라 클러스터에 Apigee Hybrid를 설치합니다.
- 현재 위치가
hybrid-base-directory/hybrid-files
디렉터리인지 확인합니다.cd $HYBRID_FILES
- 다음 명령어를 사용하여
kubectl
이 올바른 컨텍스트로 설정되었는지 확인합니다. 현재 컨텍스트를 Apigee Hybrid를 배포하는 클러스터로 설정해야 합니다.kubectl config current-context
결과에는 Apigee Hybrid를 배포하는 클러스터 이름이 포함됩니다. 예를 들어 GKE에서 컨텍스트 이름은 일반적으로 다음과 같이
gke_project-id_cluster-location_cluster-name
형식입니다.gke_my-project_us-central1_my-cluster
이름이 컨텍스트의 클러스터 이름과 일치하지 않으면 다음 명령어는 클러스터의
gcloud
사용자 인증 정보를 가져오고kubectl
컨텍스트를 설정합니다.리전 클러스터
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID
영역 클러스터
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- 베어메탈용 Anthos, AWS on GKE, EKS, GKE On-Prem 플랫폼의 경우 다음 명령어를 통해
KUBECONFIG
변수가 설정되었는지 확인합니다.echo ${KUBECONFIG}
- 테스트 실행를 초기화합니다. 테스트 실행을 수행하면 클러스터를 변경하기 전에 오류를 확인할 수 있습니다. 다음과 같이
--dry-run
플래그를 사용하여init
명령어를 실행합니다.${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
- 오류가 없으면 다음과 같이
init
명령어를 실행합니다.${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
init
명령어는 Apigee 배포 서비스 Apigee 배포 컨트롤러와 Apigee 허용 웹훅을 설치합니다. - 배포 상태를 확인하려면 다음 명령어를 사용하면 됩니다.
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
kubectl get pods -n apigee-system
kubectl get pods -n apigee
포드가 준비되면 다음 단계로 이동합니다.
- 테스트 실행을 설치합니다.
--dry-run
플래그를 사용하여apply
명령어를 실행합니다.${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
- 오류가 없으면 다음 명령어를 사용하여 클러스터에 Apigee별 런타임 구성요소를 적용할 수 있습니다.
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
- 배포 상태를 확인하기 위해 다음 명령어를 실행하세요.
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
포드가 모두 준비될 때까지 이 단계를 반복합니다. 포드가 시작되는 데 몇 분 정도 걸릴 수 있습니다.
워크로드 아이덴티티가 있는 GKE
GKE에서 워크로드 아이덴티티를 사용하는 경우 다음 안내를 따라 apigeectl
에서 생성된 Kubernetes 서비스 계정을 4단계: 서비스 계정 및 사용자 인증 정보 만들기에서 생성한 Google 서비스 계정과 연결합니다.
이 절차에서는 다음 환경 변수를 사용합니다. 명령어 셸에서 이들을 설정하거나 코드 샘플에서 실제 값으로 바꿉니다.
APIGEECTL_HOME
:apigeectl
을 설치한 디렉터리CLUSTER_LOCATION
: 클러스터의 리전 또는 영역(예:us-west1
)CLUSTER_LOCATION
: 클러스터 이름입니다.ENV_NAME
: Apigee 환경의 이름NAMESPACE
: Apigee 네임스페이스. 기본적으로apigee
입니다.HYBRID_FILES
: 하이브리드 파일 디렉터리(예:hybrid-base-directory/hybrid-files
)ORG_NAME
: Apigee 조직의 이름PROJECT_ID
: Google Cloud 프로젝트의 ID
환경 변수 확인:
echo $APIGEECTL_HOMEecho $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $ORG_NAME
echo $PROJECT_ID
필요한 변수 초기화:
export APIGEECTL_HOME=hybrid-base-directory/apigeectlexport CLUSTER_LOCATION=my-cluster-location
export ENV_NAME=my-environment-name
export HYBRID_FILES=hybrid-base-directory/hybrid-files
export NAMESPACE=apigee
export ORG_NAME=$PROJECT_ID
export PROJECT_ID=my-project-id
- 선택사항: 서비스 계정 키 파일을 삭제합니다.
GKE에서 Apigee Hybrid를 실행할 때 표준 방식은 각 서비스 계정의 비공개 키(
.json
파일)를 만들고 다운로드하는 것입니다. 워크로드 아이덴티티를 사용할 때는 서비스 계정 비공개 키를 다운로드하고 GKE 클러스터에 추가할 필요가 없습니다.다음 명령어를 사용하여 키 파일을 삭제할 수 있습니다.
rm $HYBRID_FILES/service-accounts/*.json
- 다음 명령어를 사용해서 Google Cloud 프로젝트 ID에 대한 현재
gcloud
구성을 확인합니다.gcloud config get project
apigee-cassandra-restore
Kubernetes 서비스 계정을 만듭니다.apigeectl apply
를 실행하여 구성을 적용한 경우 이 명령어는 워크로드 아이덴티티에 필요한 대부분의 Kubernetes 서비스 계정을 만들었습니다.apigee-cassandra-restore
Kubernetes 서비스 계정을 만들려면--restore
플래그과 함께apigeectl apply
를 실행합니다.$APIGEECTL_HOME/apigeectl apply -f $HYBRID_FILES/overrides/overrides.yaml --restore
- GKE 클러스터에 대한 워크로드 아이덴티티가 사용 설정되었는지 확인합니다. 1단계: 클러스터 만들기에서 클러스터를 만든 경우 6단계는 워크로드 아이덴티티를 사용 설정하는 것이었습니다. 다음 명령어를 실행하여 워크로드 아이덴티티가 사용 설정되었는지 확인할 수 있습니다.
리전 클러스터
gcloud container clusters describe $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
영역 클러스터
gcloud container clusters describe $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten 'workloadIdentityConfig'
클러스터에 대해 워크로드 아이덴티티가 사용 설정된 경우 출력은 다음과 같아야 합니다.
--- workloadPool: PROJECT_ID.svc.id.goog
결과에
null
가 대신 표시되면 다음 명령어를 실행하여 클러스터에 대해 워크로드 아이덴티티를 사용 설정합니다.리전 클러스터
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --project $PROJECT_ID \ --region $CLUSTER_LOCATION
영역 클러스터
gcloud container clusters update $CLUSTER_NAME \ --workload-pool=$PROJECT_ID.svc.id.goog \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID
- 다음 명령어를 사용해서 노드 풀에서 워크로드 아이덴티티가 사용 설정되었는지 확인합니다.
리전 클러스터
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
영역 클러스터
gcloud container node-pools describe apigee-data \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
gcloud container node-pools describe apigee-runtime \ --cluster $CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --flatten "config:"
다음과 비슷한 결과가 출력됩니다.
--- diskSizeGb: 100 diskType: pd-standard ... workloadMetadataConfig: mode: GKE_METADATA
출력에
workloadMetadataConfig:
행이 포함되어 있지 않으면 다음 명령어를 사용하여 각 노드 풀에 워크로드 아이덴티티를 사용 설정합니다. 이 작업은 최대 30분이 걸릴 수 있습니다.리전 클러스터
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --region $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
영역 클러스터
gcloud container node-pools update NODE_POOL_NAME \ --cluster=$CLUSTER_NAME \ --zone $CLUSTER_LOCATION \ --project $PROJECT_ID \ --workload-metadata=GKE_METADATA
여기서 NODE_POOL_NAME는 각 노드 풀의 이름입니다. 대부분의 Apigee Hybrid 설치에서 두 기본 노드 풀의 이름은
apigee-data
및apigee-runtime
입니다. - 다음 명령어를 사용하여 프로젝트의 Google 서비스 계정의 이름을 확인합니다.
gcloud iam service-accounts list --project $PROJECT_ID
다음과 비슷한 결과가 출력됩니다.
비프로덕션
비프로덕션 환경의 경우:
DISPLAY NAME EMAIL DISABLED apigee-non-prod apigee-non-prod@my_project_id.iam.gserviceaccount.com False
프로덕션
비프로덕션 환경의 경우:
DISPLAY NAME EMAIL DISABLED apigee-cassandra apigee-cassandra@my_project_id.iam.gserviceaccount.com False apigee-logger apigee-logger@my_project_id.iam.gserviceaccount.com False apigee-mart apigee-mart@my_project_id.iam.gserviceaccount.com False apigee-metrics apigee-metrics@my_project_id.iam.gserviceaccount.com False apigee-runtime apigee-runtime@my_project_id.iam.gserviceaccount.com False apigee-synchronizer apigee-synchronizer@my_project_id.iam.gserviceaccount.com False apigee-udca apigee-udca@my_project_id.iam.gserviceaccount.com False apigee-watcher apigee-watcher@my_project_id.iam.gserviceaccount.com False
- 다음 명령어를 사용하여 서비스 계정을 확인합니다.
kubectl get sa -n $NAMESPACE
출력이 다음과 같이 표시됩니다. 굵게 표시된 Kubernetes 서비스 계정은 Google 클라우드 서비스 계정으로 주석을 추가하는 데 필요한 계정입니다.
NAME SECRETS AGE apigee-cassandra-backup 1 11m apigee-cassandra-restore 1 11m apigee-cassandra-schema-setup-my-project-id-123abcd-sa 1 11m apigee-cassandra-schema-val-my-project-id-123abcd 1 11m apigee-cassandra-user-setup-my-project-id-123abcd-sa 1 11m apigee-connect-agent-my-project-id-123abcd-sa 1 11m apigee-datastore-default-sa 1 11m apigee-ingressgateway 1 11m apigee-ingressgateway-my-project-id-123abcd 1 11m apigee-ingressgateway-manager 1 11m apigee-init 1 11m apigee-mart-my-project-id-123abcd-sa 1 11m apigee-metrics-sa 1 11m apigee-mint-task-scheduler-my-project-id-123abcd-sa 1 11m apigee-redis-default-sa 1 11m apigee-redis-envoy-default-sa 1 11m apigee-runtime-my-project-id-env-name-234bcde-sa 1 11m apigee-synchronizer-my-project-id-env-name-234bcde-sa 1 11m apigee-udca-my-project-id-123abcd-sa 1 11m apigee-udca-my-project-id-env-name-234bcde-sa 1 11m apigee-watcher-my-project-id-123abcd-sa 1 11m default 1 11m
-
각 Apigee 구성요소에 대해서는 해당 Kubernetes 서비스 계정에 구성요소에 대한 Google 서비스 계정으로 주석을 추가합니다.
다음 단계에서는 두 개의 환경 변수를 사용합니다. 각 명령어 집합 전에 다음 변수의 값을 재설정합니다.
- GSA_NAME: Google 서비스 계정의 이름입니다. 이 이름은 4단계: 서비스 계정 만들기의
create-service-account
도구로 만든 서비스 계정입니다. - KSA_NAME: Kubernetes 서비스 계정의 이름입니다.
kubectl get sa -n $NAMESPACE
명령어를 사용하여 위에 나열한 계정(예:apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
)입니다.
- GSA_NAME: Google 서비스 계정의 이름입니다. 이 이름은 4단계: 서비스 계정 만들기의
- Cassandra
Cassandra 구성요소에는 6개의 연결된 Kubernetes 서비스 계정이 있습니다.
apigee-cassandra-backup
apigee-cassandra-restore
apigee-cassandra-schema-setup
apigee-cassandra-schema-val
(val
= 검증)apigee-cassandra-user-setup
apigee-datastore-default
비프로덕션
다음 단계에서는 두 개의 환경 변수를 사용합니다. 각 명령어 집합 전에 이러한 변수의 값을 재설정합니다.
- GSA_NAME: Google 서비스 계정의 이름입니다. 이 이름은 4단계: 서비스 계정 만들기의
create-service-account
도구로 만든 서비스 계정입니다. - KSA_NAME: Kubernetes 서비스 계정의 이름입니다.
kubectl get sa -n $NAMESPACE
명령어를 사용하여 위에 나열한 계정입니다.
apigee-cassandra-backup
Kubernetes 서비스 계정KSA_NAME
및GSA_NAME
환경 변수를 정의합니다.GSA_NAME="apigee-non-prod"
KSA_NAME="apigee-cassandra-backup"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
출력에 다음과 비슷하게 주석을 설명하는 줄이 있어야 합니다.
Annotations: iam.gke.io/gcp-service-account: apigee-non-prod@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restore
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다.KSA_NAME="apigee-cassandra-restore"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-setup
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-schema-val
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setup
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-sa
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다.KSA_NAME="apigee-datastore-default-sa"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
apigee-cassandra-backup
Kubernetes 서비스 계정KSA_NAME
및GSA_NAME
환경 변수를 정의합니다.GSA_NAME="apigee-cassandra"
KSA_NAME="apigee-cassandra-backup"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
출력에 다음과 비슷하게 주석을 설명하는 줄이 있어야 합니다.
Annotations: iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
apigee-cassandra-restore
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다.KSA_NAME="apigee-cassandra-restore"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
apigee-cassandra-schema-setup
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa
.- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
apigee-cassandra-schema-val
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-cassandra-schema-val-service-account-name"
apigee-cassandra-schema-val-hybrid-example-project-123abcd
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-cassandra-user-setup
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
apigee-datastore-default-sa
Kubernetes 서비스 계정KSA_NAME
환경 변수를 재정의합니다.KSA_NAME="apigee-datastore-default-sa"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee Connect
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-mart"
KSA_NAME="apigee-connect-agent-service-account-name-sa"
apigee-connect-agent-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- MART
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-mart"
KSA_NAME="apigee-mart-service-account-name-sa"
apigee-mart-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- Apigee 측정항목
비프로덕션
KSA_NAME
환경 변수를 정의합니다.KSA_NAME="apigee-metrics-sa"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다.GSA_NAME="apigee-metrics"
KSA_NAME="apigee-metrics-sa"
- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- UDCA(조직 수준)
UDCA는 조직 수준 범위 및 환경 수준 범위 모두에서 구현됩니다. 따라서 UDCA에는 범위당 하나씩 두 개의 개별 Kubernetes 서비스 계정이 있습니다. 계정 이름으로 이를 구분할 수 있습니다. env-scope 계정은 서비스 계정 이름에 환경 이름이 포함됩니다. 예를 들면 다음과 같습니다.
- 조직 수준:
apigee-udca-my-project-id-123abcd-sa
여기서my-project-id
는 이름 프로젝트 ID입니다. - 환경 수준:
apigee-udca-my-project-id-my-env-234bcde-sa
, 여기서my-env
는 환경 이름입니다.
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-service-account-name-sa"
apigee-udca-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- 조직 수준:
- Apigee Watcher
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-watcher"
KSA_NAME="apigee-watcher-service-account-name-sa"
apigee-watcher-hybrid-example-project-123abcd-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- 런타임
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-runtime"
KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
apigee-runtime-hybrid-example-project-example-env-234bcde-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- 동기화 담당자
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-synchronizer"
KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- UDCA(환경 수준)
비프로덕션
KSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
프로덕션
KSA_NAME
및GSA_NAME
환경 변수를 정의합니다. 예를 들면 다음과 같습니다.GSA_NAME="apigee-udca"
KSA_NAME="apigee-udca-env-level-service-account-name-sa"
apigee-udca-hybrid-example-project-example-env-234bcde-sa
.- IAM 역할을 바인딩합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$NAMESPACE/$KSA_NAME]" \ $GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com \ --project $PROJECT_ID
- 서비스 계정에 주석을 추가합니다.
kubectl annotate serviceaccount \ --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
- 주석을 확인합니다.
kubectl describe serviceaccount \ --namespace $NAMESPACE $KSA_NAME
- (선택사항) Google Cloud 콘솔의 Kubernetes: 워크로드 개요 페이지에서 Kubernetes 서비스 계정의 상태를 확인할 수 있습니다.
apigeectl check-ready
로 배포 상태를 다시 확인하려면 다음을 수행하세요.${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
필요한 경우 현재 gcloud
구성을 설정합니다.
gcloud config set project $PROJECT_ID