์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ง ์๋ GKE: ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ๊ตฌ์ฑ
6๋จ๊ณ: ์ฌ์ ์ ๋ง๋ค๊ธฐ์์ GKE์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ์ ์ฌ์ ์ ํ์ผ์ ์ค์ ํ ๊ฒฝ์ฐ ๋ค์ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
GKE์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ 3๋ถ, 1๋จ๊ณ: Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด ๋ ธ์ถ์ ์งํํฉ๋๋ค.
Google Cloud ์๋น์ค ๊ณ์ ๋ฐ Kubernetes ์๋น์ค ๊ณ์
Google Cloud ์๋น์ค ๊ณ์ ์ ์๋น์ค ๊ณ์ ์์ฒด๋ก ์ธ์ฆํ์ฌ ์น์ธ๋ API ํธ์ถ์ ์ํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ํน๋ณํ ์ข ๋ฅ์ ๊ณ์ ์ ๋๋ค. Google Cloud ์๋น์ค ๊ณ์ ์๋ ๊ฐ๋ณ ์ฌ์ฉ์์ ๋น์ทํ ์ญํ ๋ฐ ๊ถํ์ ๋ถ์ฌํ ์ ์์ต๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋น์ค ๊ณ์ ์ผ๋ก ์ธ์ฆ๋๋ฉด ์๋น์ค ๊ณ์ ์ ์ก์ธ์ค ๊ถํ์ด ์๋ ๋ชจ๋ ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค. Google Cloud ์๋น์ค ๊ณ์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ์๋น์ค ๊ณ์ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
4๋จ๊ณ: ์๋น์ค ๊ณ์ ๋ง๋ค๊ธฐ์์ Apigee Hybrid ์ค์น์ ๋ํ Google Cloud ์๋น์ค ๊ณ์ ์ ๋ง๋ค์์ต๋๋ค. Apigee๋ ์ด๋ฌํ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํด์ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์๋ฅผ ์ธ์ฆํฉ๋๋ค.
Kubernetes ์๋น์ค ๊ณ์ ์ Google Cloud ์๋น์ค ๊ณ์ ๊ณผ ๋น์ทํฉ๋๋ค. Kubernetes ์๋น์ค ๊ณ์ ์ ํฌ๋์์ ์คํ๋๋ ํ๋ก์ธ์ค์ ๋ํ ID๋ฅผ ์ ๊ณตํ๋ฉฐ ์ฌ์ฉ์์ ๋น์ทํ๊ฒ API ์๋ฒ์ ์ธ์ฆ์ ์ํํ๋๋ก ํ์ฉํฉ๋๋ค. Kubernetes ์๋น์ค ๊ณ์ ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด ํฌ๋์ ๋ํ ์๋น์ค ๊ณ์ ๊ตฌ์ฑ์ ์ฐธ์กฐํ์ธ์.
์ฌ์ ์ ํ์ผ์์ gcp.workloadIdentity.enabled
๋ฅผ true
๋ก ์ค์ ํ ๊ฒฝ์ฐ ๊ฐ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์ Helm ์ฐจํธ๋ 11๋จ๊ณ: Helm ์ฐจํธ๋ฅผ ์ฌ์ฉํ์ฌ Apigee Hybrid ์ค์น์์ ์ํํ ๊ฒ์ฒ๋ผ ์ค์น ๋๋ ์
๊ทธ๋ ์ด๋ํ ๋ ๊ตฌ์ฑ์์์ Kubernetes ์๋น์ค ๊ณ์ ์ ๋ง๋ญ๋๋ค.
GKE์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ๊ตฌ์ฑํ๋ฉด Google Cloud ์๋น์ค ๊ณ์ ์ด Kubernetes ํด๋ฌ์คํฐ์ ์๋ Kubernetes ์๋น์ค ๊ณ์ ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด Kubernetes ์๋น์ค ๊ณ์ ์ด Google Cloud ์๋น์ค ๊ณ์ ์ ๊ฐ์ฅํ๊ณ ํ ๋น๋ ์ญํ ๋ฐ ๊ถํ์ ์ฌ์ฉํด์ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์ ์ธ์ฆ์ ์ํํ ์ ์์ต๋๋ค.
์๋ด์ ๋ฐ๋ผ ํ๋ก์ ํธ์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ๊ตฌ์ฑ ์ค๋น
- ์ฌ์ ์ ํ์ผ์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๊ฐ ์ฌ์ฉ ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค. ์ฌ์ ์ ํ์ผ์ ๋ค์ ์์ฑ์์ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค.
namespace
ํ๋๋ ํ์ ํญ๋ชฉ์ ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.instanceID: "hybrid-instance-1" namespace: "apigee"
- ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ๋ฌธ๋ฒ์ Helm๊ณผ
apigeectl
์์ ์๋ก ๋ค๋ฆ ๋๋ค. Helm์ ๊ฒฝ์ฐgcp.workloadIdentity.enabled
๊ฐgcp.workloadIdentityEnabled
๋ฅผ ๋์ฒดํฉ๋๋ค. - ๋ชจ๋ ๊ตฌ์ฑ์์์ ๋จ์ผ ์๋น์ค ๊ณ์ (๋นํ๋ก๋์
)์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
gcp.workloadIdentity.gsa
๋ก ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.gcp: workloadIdentity: enabled: true gsa: "apigee-non-prod@my-hybrid-project.iam.gserviceaccount.com"
- ๊ตฌ์ฑ์์๋ง๋ค ๋ณ๋์ ์๋น์ค ๊ณ์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ(ํ๋ก๋์
์ค์น) ๊ตฌ์ฑ์์์
gsa
์์ฑ์ผ๋ก ์๋น์ค ๊ณ์ ์ ์ง์ ํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.logger: gsa: "apigee-logger@my-hybrid-project.iam.gserviceaccount.com"
gcp.workloadIdentity.enabled
๋ฅผ ์ฐธ์กฐํ์ธ์. - ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ
gcloud
๊ตฌ์ฑ์ด Google Cloud ํ๋ก์ ํธ ID๋ก ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค.gcloud config get project
- 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
-
๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๊ฐ ๋ ธ๋ ํ์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค. ์ด ์์ ์ ๊ฐ ๋ ธ๋์ ๋ํด ์ต๋ 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
์ ๋๋ค. - ๋ค์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๋
ธ๋ ํ์์ ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๊ฐ ์ฌ์ฉ ์ค์ ๋์๋์ง ํ์ธํฉ๋๋ค.
๋ฆฌ์ ํด๋ฌ์คํฐ
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
ํ์ํ ๊ฒฝ์ฐ ํ์ฌ gcloud
๊ตฌ์ฑ์ ์ค์ ํฉ๋๋ค.
gcloud config set project $PROJECT_ID
์ํฌ๋ก๋ ์์ด๋ดํฐํฐ ๊ตฌ์ฑ
๋ค์ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑ์์์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ค์ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅด์ธ์.
apigee-datastore
apigee-telemetry
apigee-org
apigee-env
apigee-datastore
, apigee-env
, apigee-org
, apigee-telemetry
์ฐจํธ์ --dry-run
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ helm upgrade
๋ฅผ ์คํํ๋ฉด ์ฌ๋ฐ๋ฅธ GSA ๋ฐ KSA ์ด๋ฆ์ผ๋ก ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ํ์ํ ๋ช
๋ น์ด๊ฐ ์ถ๋ ฅ์ ํฌํจ๋ฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
NAME: datastore ... For C* backup GKE Workload Identity, please make sure to add the below membership to the IAM policy binding using the respective kubernetes SA (KSA). gcloud iam service-accounts add-iam-policy-binding \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:my-project.svc.id.goog[apigee/apigee-cassandra-backup-sa]" \ --project :my-project
apigee-datastore
์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ค์ ํ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ ฅ์์NOTES:
์๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.helm upgrade datastore apigee-datastore/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
apigee-telemetry
์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ค์ ํ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ ฅ์์NOTES:
์๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.helm upgrade telemetry apigee-telemetry/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
apigee-org
์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ค์ ํ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ ฅ์์NOTES:
์๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.helm upgrade $ORG_NAME apigee-org/ \ --namespace $NAMESPACE \ -f overrides.yaml \ --dry-run
apigee-env
์ ๋ํด ์ํฌ๋ก๋ ์์ด๋ดํฐํฐ๋ฅผ ์ค์ ํ๋ ๋ช ๋ น์ด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ๋ ฅ์์NOTES:
์๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.helm upgrade $ENV_NAME apigee-env/ \ --namespace $NAMESPACE \ --set env=ENV_NAME \ -f overrides.yaml \ --dry-run
์ค์น์ ๊ฐ ํ๊ฒฝ์์ ์ด ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค.
- (์ ํ์ฌํญ) Google Cloud console์ Kubernetes: ์ํฌ๋ก๋ ๊ฐ์ ํ์ด์ง์์ Kubernetes ์๋น์ค ๊ณ์ ์ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ค์ ๋จ๊ณ
๋ค์ ๋จ๊ณ์์๋ Apigee ์ธ๊ทธ๋ ์ค ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๊ณ ํ๋ก์๋ฅผ ๋ฐฐํฌํ์ฌ ์ค์น๋ฅผ ํ ์คํธํฉ๋๋ค.
(๋ค์) 1๋จ๊ณ: Apigee ์ธ๊ทธ๋ ์ค ๋ ธ์ถ 2