Apigee Hybrid๋ฅผ ๋ฒ„์ „ 1.6์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ

๋ฒ„์ „ 1.6.9๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ๊ฐœ์š”

Apigee Hybrid ์—…๊ทธ๋ ˆ์ด๋“œ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„น์…˜์œผ๋กœ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

  1. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„ค์น˜๋ฅผ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค.
  2. Kubernetes ๋ฒ„์ „์„ ํ™•์ธํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.
  3. Hybrid ๋Ÿฐํƒ€์ž„ ๋ฒ„์ „ 1.6.9๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  4. ASM์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.

์„ ํ–‰ ์กฐ๊ฑด

์ด ์—…๊ทธ๋ ˆ์ด๋“œ ์•ˆ๋‚ด์—์„œ๋Š” Apigee Hybrid 1.5๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  ๋ฒ„์ „ 1.6.9๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์—์„œ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ Apigee Hybrid๋ฅผ ๋ฒ„์ „ 1.5๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•œ ์•ˆ๋‚ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฒ„์ „ 1.6์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ

  1. ์ด ์•ˆ๋‚ด์—์„œ๋Š” apigeectl ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์„ค์น˜๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜ $APIGEECTL_HOME์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ apigeectl ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ cdํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    MacOS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  2. (๊ถŒ์žฅ์‚ฌํ•ญ) ๋ฒ„์ „ 1.5 $APIGEECTL_HOME/ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ฐฑ์—… ์‚ฌ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    tar -czvf $APIGEECTL_HOME/../apigeectl-v1.5-backup.tar.gz $APIGEECTL_HOME
  3. (๊ถŒ์žฅ์‚ฌํ•ญ) Cassandra ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ Cassandra ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฐฑ์—…ํ•ฉ๋‹ˆ๋‹ค.
  4. Kubernetes ํ”Œ๋žซํผ์„ Hybrid 1.6์—์„œ ์ง€์›๋˜๋Š” ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด ํ”Œ๋žซํผ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  5. cert-manager v1.5.4 ์ด์ „ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์œผ๋ฉด v1.5.4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ cert-manager ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

      kubectl -n cert-manager get deployment -o yaml | grep 'image:'
      

      ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

      image: quay.io/jetstack/cert-manager-controller:v1.5.4
      image: quay.io/jetstack/cert-manager-cainjector:v1.5.4
      image: quay.io/jetstack/cert-manager-webhook:v1.5.4
    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
      $ kubectl delete -n cert-manager deployment cert-manager cert-manager-cainjector cert-manager-webhook
      
    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ cert-manager๋ฅผ v1.5.4 ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.
      $ kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
      
  6. Google OAUTH ํ† ํฐ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ apigee-runtime ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. create-service-account ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    1. ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      ./tools/create-service-account --env prod --profile apigee-runtime
    2. ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์„ Apigee overrides.yaml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
      envs:
       - name: "environment-name"
         โ€ฆ โ€ฆ โ€ฆ
         serviceAccountPaths:
           runtime: "path-to-service-account-file"
         โ€ฆ โ€ฆ โ€ฆ
  7. envs ์•„๋ž˜ ํ•ญ๋ชฉ ์™ธ์—๋„ ์žฌ์ •์˜ ํŒŒ์ผ์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์—์„œ udca.serviceAccountPath ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. udca๋Š” connectAgent, logger, mart, metrics, watcher์™€ ํ•จ๊ป˜ ํ™˜๊ฒฝ ์ˆ˜์ค€์—์„œ ํ•œ ๋ฒˆ ๊ทธ๋ฆฌ๊ณ  ์กฐ์ง ์ˆ˜์ค€์—์„œ ํ•œ ๋ฒˆ์„ ํ•ฉํ•ด ์žฌ์ •์˜์— ๋‘ ๋ฒˆ ํ‘œ์‹œ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    โ€ฆ โ€ฆ โ€ฆ
    
    metrics:
      serviceAccountPath: "metrics-service-account-file"
    
    udca:
      serviceAccountPath: "udca-service-account-file"
    
    watcher:
      serviceAccountPath: "watcher-service-account-file"
    โ€ฆ โ€ฆ โ€ฆ
  8. ์„ ํƒ์‚ฌํ•ญ: Cloud Trace๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด apigee-runtime ์„œ๋น„์Šค ๊ณ„์ •์— Cloud Trace ์—์ด์ „ํŠธ(roles/cloudtrace.agent) Google ์—ญํ• ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Cloud ์ฝ˜์†” > IAM ๋ฐ ๊ด€๋ฆฌ์ž > ์„œ๋น„์Šค ๊ณ„์ • UI์—์„œ ๋˜๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ apigee-runtime ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
      gcloud iam service-accounts list --filter "apigee-runtime"

      apigee-runtime@$ORG_NAME.iam.gserviceaccount.com ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    2. ์„œ๋น„์Šค ๊ณ„์ •์— Cloud Trace ์—์ด์ „ํŠธ ์—ญํ• ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.
      gcloud projects add-iam-policy-binding $PROJECT_ID \
          --member="serviceAccount:apigee-runtime@$PROJECT_ID.iam.gserviceaccount.com" \
          --role="roles/cloudtrace.agent"

      ์—ฌ๊ธฐ์„œ $PROJECT_ID๋Š” Apigee Hybrid๊ฐ€ ์„ค์น˜๋œ Google Cloud ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

Hybrid 1.6.9 ๋Ÿฐํƒ€์ž„ ์„ค์น˜

  1. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ(apigeectl ์‹คํ–‰ ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ)์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd $APIGEECTL_HOME/..
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜์ฒด์ œ์šฉ ์ถœ์‹œ ๋ฒ„์ „ ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ…Œ์ด๋ธ”์—์„œ ํ”Œ๋žซํผ์„ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    Linux

    Linux 64๋น„ํŠธ:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_linux_64.tar.gz

    MacOS

    Mac 64๋น„ํŠธ:

    curl -LO \
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_mac_64.tar.gz

    Windows

    Windows 64 ๋น„ํŠธ:

    curl -LO ^
      https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.6.9/apigeectl_windows_64.zip
  3. ํ˜„์žฌ apigeectl/ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์ด๋ฆ„์„ ๋ฐฑ์—… ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    Linux

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.5/

    MacOS

    mv $APIGEECTL_HOME/ $APIGEECTL_HOME-v1.5/ 

    Windows

    rename %APIGEECTL_HOME% %APIGEECTL_HOME%-v1.5 
  4. ๋‹ค์šด๋กœ๋“œํ•œ gzip ํŒŒ์ผ ์ฝ˜ํ…์ธ ๋ฅผ Hybrid ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ apigeectl-v1.5 ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

    Linux

    tar xvzf filename.tar.gz -C ./

    MacOS

    tar xvzf filename.tar.gz -C ./

    Windows

    tar xvzf filename.zip -C ./
  5. tar ์ฝ˜ํ…์ธ ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฆ„์— ํ•ด๋‹น ๋ฒ„์ „๊ณผ ํ”Œ๋žซํผ์ด ํฌํ•จ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ./apigeectl_1.6.9-d591b23_linux_64์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋ฆ„์„ apigeectl๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

    Linux

    mv directory-name-linux apigeectl

    MacOS

    mv directory-name-mac apigeectl

    Windows

    rename directory-name-windows apigeectl
  6. apigeectl ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.
    cd ./apigeectl

    apigeectl ์‹คํ–‰ ํŒŒ์ผ์€ ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.

  7. ์ด ์•ˆ๋‚ด์—์„œ๋Š” apigeectl ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์„ค์น˜๋œ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜ $APIGEECTL_HOME์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ apigeectl ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ cdํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

    Linux

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    MacOS

    export APIGEECTL_HOME=$PWD
    echo $APIGEECTL_HOME

    Windows

    set APIGEECTL_HOME=%CD%
    echo %APIGEECTL_HOME%
  8. version ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ apigeectl์˜ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    ./apigeectl version
    Version: 1.6.9
  9. hybrid-base-directory/hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์—๋Š” ์žฌ์ •์˜ ํŒŒ์ผ, ์ธ์ฆ์„œ, ์„œ๋น„์Šค ๊ณ„์ •๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    cd $APIGEECTL_HOME/../hybrid-files
  10. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ kubectl์ด ์˜ฌ๋ฐ”๋ฅธ ์ปจํ…์ŠคํŠธ๋กœ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ์ปจํ…์ŠคํŠธ๋ฅผ Apigee Hybrid๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    kubectl config get-contexts | grep \*
  11. hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    1. ๋‹ค์Œ ๊ธฐํ˜ธํ™”๋œ ๋งํฌ๋ฅผ $APIGEECTL_HOME์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋งํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์—์„œ ์ƒˆ๋กœ ์„ค์น˜๋œ apigeectl ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      ln -nfs $APIGEECTL_HOME/tools tools
      ln -nfs $APIGEECTL_HOME/config config
      ln -nfs $APIGEECTL_HOME/templates templates
      ln -nfs $APIGEECTL_HOME/plugins plugins
    2. ์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๋งํฌ ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      ls -l | grep ^l
    3. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ดˆ๊ธฐํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml --dry-run=client

      ์—ฌ๊ธฐ์„œ OVERRIDES๋Š” ์žฌ์ •์˜ ํŒŒ์ผ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    4. ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด Hybrid 1.6.9๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/OVERRIDES.yaml
    5. ์ดˆ๊ธฐํ™” ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
    6. apply ๋ช…๋ น์–ด ํ…Œ์ŠคํŠธ ์‹คํ–‰์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --dry-run=client
    7. ์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์น˜์— ๋”ฐ๋ผ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ๋˜๋Š” ๋ฐ๋ชจ/์‹คํ—˜์šฉ ํ™˜๊ฒฝ์˜ ์•ˆ๋‚ด๋ฅผ ์„ ํƒํ•˜์—ฌ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

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

      ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์˜ ๊ฒฝ์šฐ ๊ฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ๋‹ค์Œ ๊ตฌ์„ฑ์š”์†Œ๋กœ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ์—…๊ทธ๋ ˆ์ด๋“œ๋œ ๊ตฌ์„ฑ์š”์†Œ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      1. ํ˜„์žฌ ์œ„์น˜๊ฐ€ hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      2. ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•˜์—ฌ Cassandra๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --datastore
      3. ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

        ํฌ๋“œ๊ฐ€ ์ค€๋น„๋œ ๊ฒฝ์šฐ์—๋งŒ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

      4. ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์›๊ฒฉ ๋ถ„์„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --telemetry
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      5. Redis ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --redis
      6. ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์กฐ์ง ์ˆ˜์ค€ ๊ตฌ์„ฑ์š”์†Œ(MART, Watcher, Apigee Connect)๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
        ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --org
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml
      7. ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
        • ํ™˜๊ฒฝ๋ณ„ ํ™˜๊ฒฝ: ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ํ™˜๊ฒฝ์— ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•˜๊ณ  ์™„๋ฃŒ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ๋งˆ๋‹ค ์ด ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
          ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --env ENV_NAME
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

          ์—ฌ๊ธฐ์„œ ENV_NAME์€ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ํ™˜๊ฒฝ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

        • ํ•œ ๋ฒˆ์— ๋ชจ๋“  ํ™˜๊ฒฝ: ํ•œ ๋ฒˆ์— ๋ชจ๋“  ํ™˜๊ฒฝ์— ์žฌ์ •์˜๋ฅผ ์ ์šฉํ•˜๊ณ  ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
          ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml --all-envs
          ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

      ๋ฐ๋ชจ/์‹คํ—˜์šฉ

      ๋Œ€๋ถ€๋ถ„์˜ ๋ฐ๋ชจ ๋˜๋Š” ์‹คํ—˜์šฉ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ชจ๋“  ๊ตฌ์„ฑ์š”์†Œ์— ์žฌ์ •์˜๋ฅผ ํ•œ ๋ฒˆ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ๋ชจ/์‹คํ—˜์šฉ ํ™˜๊ฒฝ์˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๊ณ  ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์„ ๋น„์Šทํ•˜๊ฒŒ ๋ชจ๋ฐฉํ•˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ ์—…๊ทธ๋ ˆ์ด๋“œ ์•ˆ๋‚ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

      1. ํ˜„์žฌ ์œ„์น˜๊ฐ€ hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      2. ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/OVERRIDES.yaml
      3. ์ƒํƒœ๋ฅผ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค.
        ${APIGEECTL_HOME}/apigeectl check-ready -f ./overrides/OVERRIDES.yaml

ASM์„ ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ

ํ”Œ๋žซํผ์— ์ ํ•ฉํ•œ ASM ๋ฌธ์„œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ASM ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ ์•ˆ๋‚ด๋Š” ํ”Œ๋žซํผ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ๋‹ค์Œ ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค.

  • GKE: Google Cloud์—์„œ ์‹คํ–‰๋˜๋Š” Google Kubernetes Engine ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค.
  • Google Cloud ์™ธ๋ถ€: ๋‹ค์Œ ์œ„์น˜์—์„œ ์‹คํ–‰๋˜๋Š” Anthos ํด๋Ÿฌ์Šคํ„ฐ:
    • VMware์šฉ Anthos ํด๋Ÿฌ์Šคํ„ฐ(GKE On-Prem)
    • ๋ฒ ์–ด๋ฉ”ํƒˆ์šฉ Anthos
    • AWS์šฉ Anthos ํด๋Ÿฌ์Šคํ„ฐ
    • Amazon EKS
  • ๊ธฐํƒ€ Kubernetes ํ”Œ๋žซํผ: ๋‹ค์Œ ์ œํ’ˆ์—์„œ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰๋˜๋Š” ๊ทœ์ • ์ค€์ˆ˜ ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค.
    • AKS
    • EKS
    • OpenShift

GKE

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„ค์น˜์—์„œ ASM ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
  2. ASM์˜ ์ƒˆ ๋ฒ„์ „์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ˜„์žฌ ์„ค์น˜์—์„œ ์ด์ „ ASM ๋ฒ„์ „์˜ ๋ฐฐํฌ, ์„œ๋น„์Šค, ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์ƒˆ ์›นํ›…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

GKE์— ํ•˜์ด๋ธŒ๋ฆฌ๋“œ์šฉ ASM ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Anthos Service Mesh ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜์ง€๋งŒ ์•„์ง ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์„ธ์š”.
  2. ์ƒˆ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ธฐ ์ „ ํ˜„์žฌ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ASM ๋ฒ„์ „์˜ ๋ฐฐํฌ, ์„œ๋น„์Šค, ์›นํ›…์„ ํ˜„์žฌ ์„ค์น˜์—์„œ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ด ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ istiod ๋ฒ„์ „์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo ${DELETE_REV}
  3. ์ƒˆ overlay.yaml ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด overlay.yaml์— ๋‹ค์Œ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: 
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. ASM ๋ฌธ์„œ์˜ ๋‹ค์Œ ์„น์…˜์— ์žˆ๋Š” ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
    1. asmcli๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    2. ํด๋Ÿฌ์Šคํ„ฐ์— ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    3. ํ”„๋กœ์ ํŠธ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
    4. ์„ ํƒ์  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. '๊ฒŒ์ดํŠธ์›จ์ด ์—…๊ทธ๋ ˆ์ด๋“œ ์„น์…˜'์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ค‘์ง€ํ•˜์„ธ์š”.
  5. ๋ณ€ํ˜• ์›นํ›… ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    1. asmcli๋ฅผ ์„ค์น˜ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ cd๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    2. ์›นํ›… ์‚ญ์ œ๋ฅผ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ํ˜„์žฌ ์ƒˆ ๋ฒ„์ „์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      UPGRADE_REV=""
    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ฒŒ์ดํŠธ์›จ์ด ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ƒˆ ์›นํ›…์„ ๋งŒ๋“ค๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ์ƒˆ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์™ธ๋ถ€

์ด ์•ˆ๋‚ด์—์„œ๋Š” ASM ์—…๊ทธ๋ ˆ์ด๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • VMware์šฉ Anthos ํด๋Ÿฌ์Šคํ„ฐ(GKE On-Prem)
  • ๋ฒ ์–ด๋ฉ”ํƒˆ์šฉ Anthos
  • AWS์šฉ Anthos ํด๋Ÿฌ์Šคํ„ฐ
  • Amazon EKS

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์„ค์น˜์—์„œ ASM ๋ฒ„์ „์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ค€๋น„ํ•ฉ๋‹ˆ๋‹ค.
  2. ASM์˜ ์ƒˆ ๋ฒ„์ „์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ˜„์žฌ ์„ค์น˜์—์„œ ๋ณ€ํ˜• ์›นํ›… ๋ฐ ๊ฒ€์ฆ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์ƒˆ ์›นํ›…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  1. Anthos Service Mesh ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฒ€ํ† ํ•˜์ง€๋งŒ ์•„์ง ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์„ธ์š”.
  2. ์ƒˆ ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ธฐ ์ „ ํ˜„์žฌ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ASM ์„ค์น˜์—์„œ ๊ฒ€์ฆ ์›นํ›… ๋ฐ ๋ณ€๊ฒฝ ์›นํ›…์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ์ด ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ istiod ๋ฒ„์ „์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    export DELETE_REV=$(kubectl get deploy -n istio-system -l app=istiod -o jsonpath={.items[].metadata.labels.'istio\.io\/rev'}'{"\n"}')
    echo ${DELETE_REV}
  3. ์ƒˆ overlay.yaml ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด overlay.yaml์— ๋‹ค์Œ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      revision: 
      components:
        ingressGateways:
          - name: istio-ingressgateway
            enabled: true
            k8s:
              nodeSelector:
                # default node selector, if different or not using node selectors, change accordingly.
                cloud.google.com/gke-nodepool: apigee-runtime
              resources:
                requests:
                  cpu: 1000m
              service:
                type: LoadBalancer
                loadBalancerIP: STATIC_IP # If you do not have a reserved static IP, leave this out.
                ports:
                  - name: http-status-port
                    port: 15021
                  - name: http2
                    port: 80
                    targetPort: 8080
                  - name: https
                    port: 443
                    targetPort: 8443
      values:
        gateways:
          istio-ingressgateway:
            runAsRoot: true
    
      meshConfig:
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
  4. ASM ๋ฌธ์„œ์˜ ๋‹ค์Œ ์„น์…˜์— ์žˆ๋Š” ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
    1. asmcli๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    2. ํด๋Ÿฌ์Šคํ„ฐ์— ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    3. ํ”„๋กœ์ ํŠธ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.
    4. ์„ ํƒ์  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—…๊ทธ๋ ˆ์ด๋“œํ•ฉ๋‹ˆ๋‹ค. '๊ฒŒ์ดํŠธ์›จ์ด ์—…๊ทธ๋ ˆ์ด๋“œ ์„น์…˜'์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ค‘์ง€ํ•˜์„ธ์š”.
  5. ๋ณ€ํ˜• ์›นํ›… ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    1. asmcli๋ฅผ ์„ค์น˜ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ cd๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    2. ์›นํ›… ์‚ญ์ œ๋ฅผ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ํ˜„์žฌ ์ƒˆ ๋ฒ„์ „์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      UPGRADE_REV=""
    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      #!/bin/bash
      
      set -ex
      
      PROJECT_ID="YOUR_PROJECT_ID"
      CLUSTER_NAME="YOUR_CLUSTER_NAME"
      CLUSTER_LOCATION="YOUR_CLUSTER_LOCATION"
      
      
      gcloud config configurations activate ${PROJECT_ID}
      gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION} --project ${PROJECT_ID}
      
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAY/istio-ingressgateway-connectors
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ฒŒ์ดํŠธ์›จ์ด ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์ƒˆ ์›นํ›…์„ ๋งŒ๋“ค๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ์ƒˆ ๊ฒŒ์ดํŠธ์›จ์ด๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

AKS/EKS

์ด ์•ˆ๋‚ด์—์„œ Anthos๊ฐ€ ์—ฐ๊ฒฐ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Anthos Service Mesh(ASM) ๋ฒ„์ „ ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ƒˆ๋กœ ์„ค์น˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

Anthos Service Mesh ์„ค์น˜ ์ค€๋น„

  1. ๋ณ€ํ˜• ์›นํ›… ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    1. asmcli๋ฅผ ์„ค์น˜ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ cd๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    2. ์›นํ›… ์‚ญ์ œ๋ฅผ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ํ˜„์žฌ ์ƒˆ ๋ฒ„์ „์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      UPGRADE_REV=""
    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      #!/bin/bash
      
      set -ex
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl apply -f ASMCLI_OUTPUT_DIR/asm/istio/istiod-service.yaml ASMCLI_OUTPUT_DIR/istioctl tag set default --revision ${UPGRADE_REV}
      
      
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  2. Linux

  3. Anthos Service Mesh ์„ค์น˜ ํŒŒ์ผ์„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz
  4. ์„œ๋ช… ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature -linux-amd64.tar.gz.1.sig .tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  5. ์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์น˜์— ํŒŒ์ผ ์ฝ˜ํ…์ธ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    tar xzf -linux-amd64.tar.gz

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ผ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ samples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” istioctl ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” bin ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh ๊ตฌ์„ฑ ํ”„๋กœํ•„์€ manifests/profiles ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  6. Anthos Service Mesh ์„ค์น˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd 
  7. ํŽธ์˜๋ฅผ ์œ„ํ•ด /bin ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    export PATH=$PWD/bin:$PATH
  8. MacOS

  9. Anthos Service Mesh ์„ค์น˜ ํŒŒ์ผ์„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz
  10. ์„œ๋ช… ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature -osx.tar.gz.1.sig .tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  11. ์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์น˜์— ํŒŒ์ผ ์ฝ˜ํ…์ธ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    tar xzf -osx.tar.gz

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ผ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ samples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” istioctl ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” bin ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh ๊ตฌ์„ฑ ํ”„๋กœํ•„์€ manifests/profiles ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  12. Anthos Service Mesh ์„ค์น˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd 
  13. ํŽธ์˜๋ฅผ ์œ„ํ•ด /bin ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    export PATH=$PWD/bin:$PATH
  14. Windows

  15. Anthos Service Mesh ์„ค์น˜ ํŒŒ์ผ์„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip
  16. ์„œ๋ช… ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip.1.sig
    openssl dgst -verify - -signature -win.zip.1.sig .win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  17. ์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์น˜์— ํŒŒ์ผ ์ฝ˜ํ…์ธ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    tar xzf -win.zip

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ผ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ samples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” istioctl ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” bin ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh ๊ตฌ์„ฑ ํ”„๋กœํ•„์€ manifests\profiles ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  18. Anthos Service Mesh ์„ค์น˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd 
  19. ํŽธ์˜๋ฅผ ์œ„ํ•ด \bin ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    set PATH=%CD%\bin:%PATH%
  20. ์ด์ œ ASM Istio๊ฐ€ ์„ค์น˜๋˜์—ˆ์œผ๋ฏ€๋กœ istioctl์˜ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    istioctl version
  21. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•ด istio-system์ด๋ผ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    kubectl create namespace istio-system

Anthos Service Mesh ์„ค์น˜

  1. overlay.yaml ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
      - enabled: true
        name: istio-ingressgateway
        k8s:
          service:
            type: LoadBalancer
            ports:
            - name: status-port
              port: 15021
              targetPort: 15021
            - name: http2
              port: 80
              targetPort: 8080
            - name: https
              port: 443
              targetPort: 8443
    
  2. asm-multicloud ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜์—ฌ istioctl๋กœ Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="" \
        --filename overlayfile.yaml

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod--798ffb964-2ls88       1/1     Running   0          3m21s
    istiod--798ffb964-fnj8c       1/1     Running   1          3m21s

    --set revision ์ธ์ˆ˜๋Š” istio.io/rev= ํ˜•์‹์˜ ๋ฒ„์ „ ๋ผ๋ฒจ์„ istiod์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ผ๋ฒจ์€ ์ž๋™ ์‚ฌ์ด๋“œ์นด ์ธ์ ํ„ฐ ์›นํ›…์—์„œ ์‚ฝ์ž…๋œ ์‚ฌ์ด๋“œ์นด๋ฅผ ํŠน์ • istiod ๋ฒ„์ „๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์‚ฌ์ด๋“œ์นด ์ž๋™ ์‚ฝ์ž…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด istiod์˜ ๋ผ๋ฒจ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ผ๋ฒจ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    kubectl get svc -n istio-system

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

OpenShift

์ด ์•ˆ๋‚ด์—์„œ Anthos๊ฐ€ ์—ฐ๊ฒฐ๋œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Anthos Service Mesh(ASM) ๋ฒ„์ „ ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋Š” ์ƒˆ๋กœ ์„ค์น˜ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

Anthos Service Mesh ์„ค์น˜ ์ค€๋น„

  1. ๋ณ€ํ˜• ์›นํ›… ๋ฐ ์œ ํšจ์„ฑ ๊ฒ€์ฆ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    1. asmcli๋ฅผ ์„ค์น˜ํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ cd๋ฅผ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
    2. ์›นํ›… ์‚ญ์ œ๋ฅผ ์œ„ํ•ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•  ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ํ˜„์žฌ ์ƒˆ ๋ฒ„์ „์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
      UPGRADE_REV=""
    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
      #!/bin/bash
      
      set -ex
      
      kubectl label namespace istio-system istio.io/rev=${UPGRADE_REV} istio-injection- --overwrite
      kubectl rollout restart deployment -n istio-system
      kubectl apply -n istio-system -f PATH_TO_INGRESSGATEWAYistio-ingressgateway
      
      if [[ "${DELETE_REV}" != "${UPGRADE_REV}" ]]; then
        kubectl apply -f out/asm/istio/istiod-service.yaml
        kubectl delete deploy -l app=istio-ingressgateway,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete deploy -l app=istio-ingressgateway-connectors,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete ValidatingWebhookConfiguration -l app=istiod,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete MutatingWebhookConfiguration -l app=sidecar-injector,istio.io/rev=${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete Service,Deployment,HorizontalPodAutoscaler,PodDisruptionBudget istiod-${DELETE_REV} -n istio-system --ignore-not-found=true
        kubectl delete IstioOperator installed-state-${DELETE_REV} -n istio-system --ignore-not-found=true
      fi
      
    4. ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์›นํ›…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  2. Linux

  3. ๋‹ค์Œ OpenShift CLI(oc) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ istio-system์— anyuid SCC(๋ณด์•ˆ ์ปจํ…์ŠคํŠธ ์ œ์•ฝ์กฐ๊ฑด)์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  4. Anthos Service Mesh ์„ค์น˜ ํŒŒ์ผ์„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz
  5. ์„œ๋ช… ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature -linux-amd64.tar.gz.1.sig .tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  6. ์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์น˜์— ํŒŒ์ผ ์ฝ˜ํ…์ธ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    tar xzf -linux-amd64.tar.gz

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ผ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ samples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” istioctl ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” bin ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh ๊ตฌ์„ฑ ํ”„๋กœํ•„์€ manifests/profiles ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  7. Anthos Service Mesh ์„ค์น˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd 
  8. ํŽธ์˜๋ฅผ ์œ„ํ•ด /bin ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    export PATH=$PWD/bin:$PATH
  9. MacOS

  10. ๋‹ค์Œ OpenShift CLI(oc) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ istio-system์— anyuid SCC(๋ณด์•ˆ ์ปจํ…์ŠคํŠธ ์ œ์•ฝ์กฐ๊ฑด)์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  11. Anthos Service Mesh ์„ค์น˜ ํŒŒ์ผ์„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz
  12. ์„œ๋ช… ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature -osx.tar.gz.1.sig .tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  13. ์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์น˜์— ํŒŒ์ผ ์ฝ˜ํ…์ธ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    tar xzf -osx.tar.gz

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ผ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ samples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” istioctl ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” bin ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh ๊ตฌ์„ฑ ํ”„๋กœํ•„์€ manifests/profiles ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  14. Anthos Service Mesh ์„ค์น˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd 
  15. ํŽธ์˜๋ฅผ ์œ„ํ•ด /bin ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    export PATH=$PWD/bin:$PATH
  16. Windows

  17. ๋‹ค์Œ OpenShift CLI(oc) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ istio-system์— anyuid SCC(๋ณด์•ˆ ์ปจํ…์ŠคํŠธ ์ œ์•ฝ์กฐ๊ฑด)์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    oc adm policy add-scc-to-group anyuid system:serviceaccounts:istio-system
  18. Anthos Service Mesh ์„ค์น˜ ํŒŒ์ผ์„ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip
  19. ์„œ๋ช… ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  openssl์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ช…์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -LO https://storage.googleapis.com/gke-release/asm/-win.zip.1.sig
    openssl dgst -verify - -signature -win.zip.1.sig .win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF
  20. ์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ ์œ„์น˜์— ํŒŒ์ผ ์ฝ˜ํ…์ธ  ์••์ถ•์„ ํ’‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜ํ…์ธ ๋ฅผ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ถ”์ถœํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.
    tar xzf -win.zip

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ด๋ผ๋Š” ์„ค์น˜ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ samples ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” istioctl ๋ช…๋ น์ค„ ๋„๊ตฌ๋Š” bin ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
    • Anthos Service Mesh ๊ตฌ์„ฑ ํ”„๋กœํ•„์€ manifests\profiles ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  21. Anthos Service Mesh ์„ค์น˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    cd 
  22. ํŽธ์˜๋ฅผ ์œ„ํ•ด \bin ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋„๊ตฌ๋ฅผ PATH์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    set PATH=%CD%\bin:%PATH%
  23. ์ด์ œ ASM Istio๊ฐ€ ์„ค์น˜๋˜์—ˆ์œผ๋ฏ€๋กœ istioctl์˜ ๋ฒ„์ „์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    istioctl version
  24. ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌ์„ฑ์š”์†Œ์— ๋Œ€ํ•ด istio-system์ด๋ผ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    kubectl create namespace istio-system

Anthos Service Mesh ์„ค์น˜

  1. overlay.yaml ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ์ฝ˜ํ…์ธ ๊ฐ€ ํฌํ•จ๋œ ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
        accessLogFormat:
          '{"start_time":"%START_TIME%","remote_address":"%DOWNSTREAM_DIRECT_REMOTE_ADDRESS%","user_agent":"%REQ(USER-AGENT)%","host":"%REQ(:AUTHORITY)%","request":"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%","request_time":"%DURATION%","status":"%RESPONSE_CODE%","status_details":"%RESPONSE_CODE_DETAILS%","bytes_received":"%BYTES_RECEIVED%","bytes_sent":"%BYTES_SENT%","upstream_address":"%UPSTREAM_HOST%","upstream_response_flags":"%RESPONSE_FLAGS%","upstream_response_time":"%RESPONSE_DURATION%","upstream_service_time":"%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%","upstream_cluster":"%UPSTREAM_CLUSTER%","x_forwarded_for":"%REQ(X-FORWARDED-FOR)%","request_method":"%REQ(:METHOD)%","request_path":"%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%","request_protocol":"%PROTOCOL%","tls_protocol":"%DOWNSTREAM_TLS_VERSION%","request_id":"%REQ(X-REQUEST-ID)%","sni_host":"%REQUESTED_SERVER_NAME%","apigee_dynamic_data":"%DYNAMIC_METADATA(envoy.lua)%"}'
      components:
      - enabled: true
        name: istio-ingressgateway
        k8s:
          service:
            type: LoadBalancer
            ports:
            - name: status-port
              port: 15021
              targetPort: 15021
            - name: http2
              port: 80
              targetPort: 8080
            - name: https
              port: 443
              targetPort: 8443
    
  2. asm-multicloud ํ”„๋กœํ•„์„ ์‚ฌ์šฉํ•˜์—ฌ istioctl๋กœ Anthos Service Mesh๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
    istioctl install \
        --set profile=asm-multicloud \
        --set revision="" \
        --filename overlayfile.yaml

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    kubectl get pods -n istio-system
    NAME                                   READY   STATUS    RESTARTS   AGE
    istio-ingressgateway-88b6fd976-flgp2   1/1     Running   0          3m13s
    istio-ingressgateway-88b6fd976-p5dl9   1/1     Running   0          2m57s
    istiod--798ffb964-2ls88       1/1     Running   0          3m21s
    istiod--798ffb964-fnj8c       1/1     Running   1          3m21s

    --set revision ์ธ์ˆ˜๋Š” istio.io/rev=1.6.11-asm.1 ํ˜•์‹์˜ ๋ฒ„์ „ ๋ผ๋ฒจ์„ istiod์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ฒ„์ „ ๋ผ๋ฒจ์€ ์ž๋™ ์‚ฌ์ด๋“œ์นด ์ธ์ ํ„ฐ ์›นํ›…์—์„œ ์‚ฝ์ž…๋œ ์‚ฌ์ด๋“œ์นด๋ฅผ ํŠน์ • istiod ๋ฒ„์ „๊ณผ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์‚ฌ์ด๋“œ์นด ์ž๋™ ์‚ฝ์ž…์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด istiod์˜ ๋ผ๋ฒจ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „์œผ๋กœ ๋ผ๋ฒจ์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. ์„ค์น˜๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    kubectl get svc -n istio-system

    ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

    NAME                   TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                                                                      AGE
    istio-ingressgateway   LoadBalancer   172.200.48.52    34.74.177.168   15021:30479/TCP,80:30030/TCP,443:32200/TCP,15012:32297/TCP,15443:30244/TCP   3m35s
    istiod                 ClusterIP      172.200.18.133   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m46s
    istiod-       ClusterIP      172.200.63.220   <none>          15010/TCP,15012/TCP,443/TCP,15014/TCP                                        3m43s

์—…๊ทธ๋ ˆ์ด๋“œ ๋กค๋ฐฑ

์ด์ „ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ๋กค๋ฐฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ NAMESPACE๋Š” ์žฌ์ •์˜ ํŒŒ์ผ์— ์ง€์ •๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ)์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” apigee์ž…๋‹ˆ๋‹ค.
    kubectl delete job -n NAMESPACE \
      $(kubectl get job -n NAMESPACE \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. apigee-system ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์™„๋ฃŒ๋œ ์ž‘์—…์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system \
      -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. apigeectl์˜ ์ด์ „ ๋ฒ„์ „์ด ํฌํ•จ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก APIGEECTL_HOME ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    export APIGEECTL_HOME=PATH_TO_PREVIOUS_APIGEECTL_DIRECTORY
  4. ๋กค๋ฐฑํ•  ์„ค์น˜์˜ ๋ฃจํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ${APIGEECTL_HOME}/apigeectl apply๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํฌ๋“œ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ ํ›„ ${APIGEECTL_HOME}/apigeectl init๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋กค๋ฐฑํ•˜๋ ค๋Š” ๋ฒ„์ „์— ์›๋ž˜ ์žฌ์ •์˜ ํŒŒ์ผ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    1. hybrid-files ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ${APIGEECTL_HOME}/apigeectl apply๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
      ${APIGEECTL_HOME}/apigeectl apply -f ./overrides/ORIGINAL_OVERRIDES.yaml
    2. ํฌํŠธ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      kubectl -n NAMESPACE get pods

      ์—ฌ๊ธฐ์„œ NAMESPACE๋Š” Apigee Hybrid ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

    3. apigeeds์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
      kubectl describe apigeeds -n apigee

      ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋ฉ๋‹ˆ๋‹ค.

      Status:
        Cassandra Data Replication:
        Cassandra Pod Ips:
          10.8.2.204
        Cassandra Ready Replicas:  1
        Components:
          Cassandra:
            Last Successfully Released Version:
              Revision:  v1-f8aa9a82b9f69613
              Version:   v1
            Replicas:
              Available:  1
              Ready:      1
              Total:      1
              Updated:    1
            State:        running
        Scaling:
          In Progress:         false
          Operation:
          Requested Replicas:  0
        State:                 running

      apigeeds รŸpod๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ์—๋งŒ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    4. apigeectl init์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
      ${APIGEECTL_HOME}/apigeectl init -f ./overrides/ORIGINAL_OVERRIDES.yaml