๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ตฌ์„ฑ

์ด ์„น์…˜์—์„œ๋Š” ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ฐœ์š”

Apigee Hybrid์—์„œ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž์˜ ๊ธฐ๋ณธ ์ž‘์—…์€ ๊ด€๋ฆฌ ์˜์—ญ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ๊ณ„์•ฝ์„ ํด๋งํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ณ„์•ฝ์œผ๋กœ ์ „๋‹ฌ๋˜๋Š” ์ •๋ณด์—๋Š” API ํ”„๋ก์‹œ, API ์ œํ’ˆ, ์บ์‹œ, ๊ฐ€์ƒ ํ˜ธ์ŠคํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ Cassandra ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„ ์˜์—ญ์—์„œ ์‹คํ–‰๋˜๋Š” ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ์ธ์Šคํ„ด์Šค๋Š” ์ •๊ธฐ์ ์œผ๋กœ ๊ด€๋ฆฌ ์˜์—ญ์„ ํด๋งํ•˜๊ณ , ๊ณ„์•ฝ์„ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ , ๋กœ์ปฌ ๋Ÿฐํƒ€์ž„ ์ธ์Šคํ„ด์Šค์— ๋™์ผํ•˜๊ฒŒ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋‚˜์˜ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๊ฐ€ ๋™์ผํ•œ pod์— ๋ฐฐํฌ๋œ ์—ฌ๋Ÿฌ ๋ฉ”์‹œ์ง€ ํ”„๋กœ์„ธ์„œ๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™๊ธฐํ™” ๋‹ด๋‹น์ž ์•ก์„ธ์Šค ์‚ฌ์šฉ ์„ค์ •

ํ”„๋ก์‹œ ๋ฒˆ๋“ค ๋ฐ ๊ด€๋ฆฌ ์˜์—ญ์˜ ๋ฆฌ์†Œ์Šค์™€ ๊ฐ™์€ Apigee ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํ’€๋‹ค์šดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Apigee API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž๊ฐ€ ๊ด€๋ฆฌ ์˜์—ญ์—์„œ ๋Ÿฐํƒ€์ž„ ์˜์—ญ์œผ๋กœ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ์Šน์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์„ค์ • ๋‹จ๊ณ„์˜ ์„ค๋ช…๋Œ€๋กœ Apigee API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ 3๋‹จ๊ณ„: API ์‚ฌ์šฉ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  2. ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ์˜ ์ผ๋ถ€๋กœ ๋‹ค์šด๋กœ๋“œํ•œ ์“ฐ๊ธฐ ์‚ฌ์šฉ ์„ค์ •๋œ Google Cloud ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค(JSON ํŒŒ์ผ)๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” Apigee ์กฐ์ง ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ์œผ๋ฉฐ ์ด๋ฆ„์€ 'apigee-org-admin'์ž…๋‹ˆ๋‹ค. ์ด์ „์— ์ด ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ณ„์†ํ•˜๊ธฐ ์ „์— ๊ณ„์ •์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. GOOGLE_APPLICATION_CREDENTIALS ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๊ฐ€ ์žˆ๋Š” ๊ฒฝ๋กœ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    export GOOGLE_APPLICATION_CREDENTIALS=your_sa_credentials_file.json
  4. setSyncAuthorization API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋™๊ธฐํ™” ๋‹ด๋‹น์ž์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:synchronizer-manager-service-account-name"]}'
    

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • your_org_name: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์กฐ์ง์˜ ์ด๋ฆ„
    • synchronizer-manager-service-account-name: Apigee ๋™๊ธฐํ™” ๋‹ด๋‹น์ž ๊ด€๋ฆฌ์ž ์—ญํ• ์ด ์žˆ๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„ ์ด๋ฆ„์€ ์ด๋ฉ”์ผ ์ฃผ์†Œ ํ˜•์‹๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com์ž…๋‹ˆ๋‹ค.

    ์˜ˆ:

    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/my_org:setSyncAuthorization" \
       -d '{"identities":["serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"]}'
    

    ์ด API์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ SyncAuthorization API๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  5. ์„œ๋น„์Šค ๊ณ„์ •์ด ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ • ๋ชฉ๋ก์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
    curl -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
      -H "Content-Type:application/json" \
      "https://apigee.googleapis.com/v1/organizations/your_org_name:getSyncAuthorization" \
       -d ''

    ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    {
       "identities":[
          "serviceAccount:my-synchronizer-manager-service_account@my_project_id.iam.gserviceaccount.com"
       ],
       "etag":"BwWJgyS8I4w="
    }