9๋‹จ๊ณ„: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์„ค์น˜

ํด๋Ÿฌ์Šคํ„ฐ์— ๊ตฌ์„ฑ ์ ์šฉ

๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ผ ํด๋Ÿฌ์Šคํ„ฐ์— Apigee Hybrid๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

  1. ํ˜„์žฌ ์œ„์น˜๊ฐ€ hybrid-base-directory/hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd $HYBRID_FILES
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 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
  3. ๋ฒ ์–ด๋ฉ”ํƒˆ์šฉ Anthos, AWS on GKE, EKS, GKE On-Prem ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด KUBECONFIG ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    echo ${KUBECONFIG}
  4. ํ…Œ์ŠคํŠธ ์‹คํ–‰๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด --dry-run ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml --dry-run=client
  5. ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด init ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    ${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml

    init ๋ช…๋ น์–ด๋Š” Apigee ๋ฐฐํฌ ์„œ๋น„์Šค Apigee ๋ฐฐํฌ ์ปจํŠธ๋กค๋Ÿฌ์™€ Apigee ํ—ˆ์šฉ ์›นํ›…์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

  6. ๋ฐฐํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
    kubectl get pods -n apigee-system
    kubectl get pods -n apigee

    ํฌ๋“œ๊ฐ€ ์ค€๋น„๋˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  7. ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. --dry-run ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ apply ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --dry-run=client
  8. ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— Apigee๋ณ„ ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    ${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml
  9. ๋ฐฐํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.
    ${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml

    ํฌ๋“œ๊ฐ€ ๋ชจ๋‘ ์ค€๋น„๋  ๋•Œ๊นŒ์ง€ ์ด ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋˜๋Š” ๋ฐ ๋ช‡ ๋ถ„ ์ •๋„ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๊ฐ€ ์žˆ๋Š” GKE

GKE ๊ธฐ๋ฐ˜์˜ Apigee Hybrid ์„ค์น˜์—์„œ๋Š” Google Cloud๊ฐ€ Hybrid ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ผ๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์„œ๋น„์Šค ๊ณ„์ • ๋ฐ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •

Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์€ ์„œ๋น„์Šค ๊ณ„์ • ์ž์ฒด๋กœ ์ธ์ฆํ•˜์—ฌ ์Šน์ธ๋œ API ํ˜ธ์ถœ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน๋ณ„ํ•œ ์œ ํ˜•์˜ ๊ณ„์ •์ž…๋‹ˆ๋‹ค. Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž์™€ ๋น„์Šทํ•œ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ธ์ฆ๋˜๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์— ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์„œ๋น„์Šค ๊ณ„์ • ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

4๋‹จ๊ณ„: ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ์—์„œ Apigee Hybrid ์„ค์น˜์— ๋Œ€ํ•œ Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. Apigee๋Š” ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•ด์„œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์€ Google Cloud ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์€ ํฌ๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ID๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์™€ ๋น„์Šทํ•˜๊ฒŒ API ์„œ๋ฒ„์— ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ํฌ๋“œ์— ๋Œ€ํ•œ ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

apigeectl ๋„๊ตฌ๋Š” ์ด์ „ ์ ˆ์ฐจ์—์„œ apigeectl apply๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Apigee Hybrid์— ํ•„์š”ํ•œ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์„ ๋Œ€๋ถ€๋ถ„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

GKE์—์„œ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์ด Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” Kubernetes ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์ด Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•˜๊ณ  ํ• ๋‹น๋œ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ์‚ฌ์šฉํ•ด์„œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์„ฑ์š”์†Œ์— ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋‚ด์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ๊ตฌ์„ฑ ์ค€๋น„

์ด ์ ˆ์ฐจ์—์„œ๋Š” ๋‹ค์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ •์˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

echo $APIGEECTL_HOME
echo $CLUSTER_LOCATION
echo $ENV_NAME
echo $HYBRID_FILES
echo $NAMESPACE
echo $PROJECT_ID
echo $ORG_NAME
  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ gcloud ๊ตฌ์„ฑ์ด Google Cloud ํ”„๋กœ์ ํŠธ ID๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    gcloud config get project
  2. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ˜„์žฌ gcloud ๊ตฌ์„ฑ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud config set project $PROJECT_ID
  3. 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
  4. GKE ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 1๋‹จ๊ณ„: ํด๋Ÿฌ์Šคํ„ฐ ๋งŒ๋“ค๊ธฐ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ 11๋‹จ๊ณ„๋Š” ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋ฆฌ์ „ ํด๋Ÿฌ์Šคํ„ฐ

    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
  5. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ๋…ธ๋“œ ํ’€์— ๋Œ€ํ•ด ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•ด ์ตœ๋Œ€ 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์ž…๋‹ˆ๋‹ค.

  6. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋…ธ๋“œ ํ’€์—์„œ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋ฆฌ์ „ ํด๋Ÿฌ์Šคํ„ฐ

    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
        
  7. ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋„๋ก Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์„ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ์ด ์ด๋ฆ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋น„ํ”„๋กœ๋•์…˜ ์„ค์น˜์˜ ๊ฒฝ์šฐ Google ์„œ๋น„์Šค ๊ณ„์ •์ด ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ์„ค์น˜์˜ ๊ฒฝ์šฐ 8๊ฐœ๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฆ„ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    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
    
  8. Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„ ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์ด ์ ˆ์ฐจ์˜ ๋’ท๋ถ€๋ถ„์—์„œ Google Cloud ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ด๋ฆ„ ๋ชฉ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
    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
        

์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ๊ตฌ์„ฑ

๋‹ค์Œ ์ ˆ์ฐจ์— ๋”ฐ๋ผ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„ค์น˜์— ๋Œ€ํ•ด ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

  1. ๊ฐ 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)์ž…๋‹ˆ๋‹ค.
    • Cassandra

      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

      ๋น„ํ”„๋กœ๋•์…˜

      apigee-cassandra-backup Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ๋ฐ GSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
        GSA_NAME="apigee-non-prod"
        KSA_NAME="apigee-cassandra-backup"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        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 ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-restore"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-setup Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-val Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-user-setup Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-datastore-default-sa Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-datastore-default-sa"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      apigee-cassandra-backup Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ๋ฐ GSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
        GSA_NAME="apigee-cassandra"
        KSA_NAME="apigee-cassandra-backup"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
      5. ์ถœ๋ ฅ์— ๋‹ค์Œ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ฃผ์„์„ ์„ค๋ช…ํ•˜๋Š” ์ค„์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

        Annotations:         iam.gke.io/gcp-service-account: apigee-cassandra@my-project-id.iam.gserviceaccount.com
      6. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-restore Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-restore"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        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 ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-schema-setup-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-cassandra-schema-setup-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-schema-val Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-schema-val-service-account-name"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-cassandra-schema-val-hybrid-example-project-123abcd.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-cassandra-user-setup Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-cassandra-user-setup-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-cassandra-user-setup-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      apigee-datastore-default-sa Kubernetes ์„œ๋น„์Šค ๊ณ„์ • ๊ตฌ์„ฑ

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-datastore-default-sa"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Connect

      Apigee Connect ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-connect-agent-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-connect-agent-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. 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.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • MART

      MART ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-mart-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-mart-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. KSA_NAME ๋ฐ GSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        GSA_NAME="apigee-mart"
        KSA_NAME="apigee-mart-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-mart-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee ์ธก์ •ํ•ญ๋ชฉ

      Apigee ์ธก์ •ํ•ญ๋ชฉ ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-metrics-sa"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. KSA_NAME ๋ฐ GSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        GSA_NAME="apigee-metrics"
        KSA_NAME="apigee-metrics-sa"
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
        --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA(์กฐ์ง ์ˆ˜์ค€)

      ์กฐ์ง ์ˆ˜์ค€ 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๋Š” ํ™˜๊ฒฝ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-udca-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-udca-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
          kubectl annotate serviceaccount \
            --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. KSA_NAME ๋ฐ GSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        GSA_NAME="apigee-udca"
        KSA_NAME="apigee-udca-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-udca-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • Apigee Watcher

      Apigee Watcher ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-watcher-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-watcher-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. KSA_NAME ๋ฐ GSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        GSA_NAME="apigee-watcher"
        KSA_NAME="apigee-watcher-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-watcher-hybrid-example-project-123abcd-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • ๋Ÿฐํƒ€์ž„

      Apigee ๋Ÿฐํƒ€์ž„ ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-runtime-env-level-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-runtime-hybrid-example-project-example-env-234bcde-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. 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.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • ๋™๊ธฐํ™” ๋‹ด๋‹น์ž

      ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-synchronizer-env-level-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-synchronizer-hybrid-example-project-example-env-234bcde-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. 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.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
    • UDCA(ํ™˜๊ฒฝ ์ˆ˜์ค€)

      ํ™˜๊ฒฝ ์ˆ˜์ค€ UDCA ๊ตฌ์„ฑ์š”์†Œ์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      ๋น„ํ”„๋กœ๋•์…˜

      1. KSA_NAME ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

        KSA_NAME="apigee-udca-env-level-service-account-name-sa"
        ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. apigee-udca-hybrid-example-project-example-env-234bcde-sa.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME

      ํ”„๋กœ๋•์…˜

      1. 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.
      2. 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
      3. ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
        kubectl annotate serviceaccount \
          --namespace $NAMESPACE $KSA_NAME iam.gke.io/gcp-service-account=$GSA_NAME@$PROJECT_ID.iam.gserviceaccount.com
      4. ์ฃผ์„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        kubectl describe serviceaccount \
          --namespace $NAMESPACE $KSA_NAME
  2. ์„ ํƒ์‚ฌํ•ญ: ๋‹ค์šด๋กœ๋“œํ•œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์„ ๋ชจ๋‘ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    create-service-account ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Google ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“  ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๊ฐ€ ์ƒ์„ฑ๋˜๊ณ  .json ํ‚ค ํŒŒ์ผ์ด ๋‹ค์šด๋กœ๋“œ๋˜์—ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GKE์—์„œ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ด๋Ÿฌํ•œ ํ‚ค ํŒŒ์ผ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‚ค ํŒŒ์ผ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    rm $HYBRID_FILES/service-accounts/*.json

์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ™•์ธ

  1. (์„ ํƒ์‚ฌํ•ญ) Google Cloud console์˜ Kubernetes: ์›Œํฌ๋กœ๋“œ ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์›Œํฌ๋กœ๋“œ๋กœ ์ด๋™

  2. apigeectl check-ready๋กœ ๋ฐฐํฌ ์ƒํƒœ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.
    ${APIGEECTL_HOME}/apigeectl check-ready -f ${HYBRID_FILES}/overrides/overrides.yaml
1 2 3 4 5 6 7 8 9 (๋‹ค์Œ) 10๋‹จ๊ณ„: Apigee ์ธ๊ทธ๋ ˆ์Šค ๋…ธ์ถœ 11