3๋‹จ๊ณ„: ํ™˜๊ฒฝ ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ

์ด ๋‹จ๊ณ„์—์„œ๋Š” ํ™˜๊ฒฝ ๋ฐ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Apigee์—์„œ API ํ”„๋ก์‹œ๋Š” ํ”„๋ก์‹œ์— ๋Œ€ํ•ด ๊ฒฉ๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์€ ๊ทธ๋ฃน ๋‚ด ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๋Š” ๋ชจ๋“  ํ”„๋ก์‹œ์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ œ๊ณตํ•˜๋Š” ํ™˜๊ฒฝ ๊ทธ๋ฃน์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. 1๊ฐœ ์ด์ƒ์˜ ํ™˜๊ฒฝ๊ณผ 1๊ฐœ ์ด์ƒ์˜ ํ™˜๊ฒฝ ๊ทธ๋ฃน์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ™˜๊ฒฝ ๋ฐ ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ธฐ ์ „์— ๋จผ์ € ํ™˜๊ฒฝ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Apigee UI๋‚˜ API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์— ์ต์ˆ™ํ•ด์ง€๊ธฐ ์œ„ํ•ด์„œ๋Š” UI๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

Cloud ์ฝ˜์†”์˜ Apigee

Cloud ์ฝ˜์†”์˜ Apigee์—์„œ ์ƒˆ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ Cloud ์ฝ˜์†”์˜ Apigee UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ์™ผ์ชฝ ํƒ์ƒ‰์ฐฝ์—์„œ ๊ด€๋ฆฌ > ํ™˜๊ฒฝ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ํ™˜๊ฒฝ ์ฐฝ์—์„œ + ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ ์ฐฝ์—์„œ ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฆ„: ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ํ™˜๊ฒฝ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ๋งŒ๋“  ํ›„์—๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

      ์ด๋ฆ„์€ 2~32์ž(์˜๋ฌธ ๊ธฐ์ค€) ์‚ฌ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ํ•˜์ดํ”ˆ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ํ•˜์ดํ”ˆ์œผ๋กœ ๋๋‚˜์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์กฐ์ง์˜ ๋‹ค๋ฅธ ํ™˜๊ฒฝ ์ด๋ฆ„๊ณผ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ํ‘œ์‹œ ์ด๋ฆ„: UI์— ํ‘œ์‹œ๋˜๋Š” ํ™˜๊ฒฝ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • ์„ค๋ช…: ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.
    • ์ธ์Šคํ„ด์Šค: ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ๋น„์›Œ ๋‘ก๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋Š” Apigee Hybrid ์„ค์น˜์— ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ํ™˜๊ฒฝ ๊ทธ๋ฃน: ์ง€๊ธˆ์€ ํ™˜๊ฒฝ ๊ทธ๋ฃน ํ•„๋“œ๋ฅผ ๋น„์›Œ ๋‘ก๋‹ˆ๋‹ค. ๋‹ค์Œ ์ ˆ์ฐจ์—์„œ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    • ๋ฐฐํฌ ์œ ํ˜•: ๋Œ€๋ถ€๋ถ„์˜ Apigee Hybrid ์„ค์น˜์˜ ๊ฒฝ์šฐ ๊ฐœ๋ณ„ API ํ”„๋ก์‹œ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. API ํ”„๋ก์‹œ ๊ตฌ์„ฑ ํ™˜๊ฒฝ ๋ณด๊ด€ ํŒŒ์ผ์„ ์„ ํƒ์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์›๋˜๋Š” ๋ฐฐํฌ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  5. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ๋˜๋ฉด ์ƒˆ ํ™˜๊ฒฝ์ด ํ™˜๊ฒฝ ์ฐฝ์˜ ํ…Œ์ด๋ธ”์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Apigee UI

UI์— ์•ก์„ธ์Šคํ•˜๊ณ  ํ™˜๊ฒฝ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Apigee UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋กœ๊ทธ์ธํ•˜๋Š” ๊ฒฝ์šฐ Hybrid์— ๋™์˜ ๋Œ€ํ™”์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. 2๊ฐœ ์ด์ƒ์˜ ๊ณ„์ •์—์„œ ์„ ํƒํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด Apigee Hybrid๋ฅผ ์„ค์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์†Œ์œ ํ•œ ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ํ—ˆ์šฉ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €๋Š” UI ๊ธฐ๋ณธ ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์™ผ์ชฝ ํƒ์ƒ‰์ฐฝ๊ณผ ๋งํฌ๊ฐ€ ์žˆ๋Š” ๋Œ€ํ˜• ์ด๋ฏธ์ง€๋กœ ๊ตฌ์„ฑ๋œ Apigee UI์˜ ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€์ž…๋‹ˆ๋‹ค.

  3. ์กฐ์ง ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ์กฐ์ง์ด ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒ๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ง€์› ์กฐ์ง ๋ชฉ๋ก

  4. ๊ด€๋ฆฌ > ํ™˜๊ฒฝ > ๊ฐœ์š”๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๊ด€๋ฆฌ, ํ™˜๊ฒฝ, ๊ฐœ์š”๋ฅผ ํŽผ์นœ Apigee UI ๋ฉ”๋‰ด

    ํ™˜๊ฒฝ ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค(์•„์ง ํ™˜๊ฒฝ ์—†์Œ).

  5. +ํ™˜๊ฒฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ƒˆ ํ™˜๊ฒฝ ๋Œ€ํ™”์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ์ƒˆ ํ™˜๊ฒฝ ๋Œ€ํ™”์ƒ์ž

  6. ์ƒˆ ํ™˜๊ฒฝ ๋Œ€ํ™”์ƒ์ž์— ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    1. ํ‘œ์‹œ ์ด๋ฆ„(ํ•„์ˆ˜): UI์— ์‚ฌ์šฉ๋˜๋Š” ํ™˜๊ฒฝ์˜ ๋ณ„์นญ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด 'My First Environment' ๋˜๋Š” 'test'์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ์ด๋ฆ„๊ณผ ๋‹ฌ๋ฆฌ ํ‘œ์‹œ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž์™€ ๊ธฐํƒ€ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    2. ํ™˜๊ฒฝ ์ด๋ฆ„(ํ•„์ˆ˜): ํ™˜๊ฒฝ์˜ ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ์ด๋ฆ„์ด๋ฉฐ ํ™˜๊ฒฝ ID๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ๋ฅผ ๋“ค๋ฉด 'my-environment' ๋˜๋Š” 'test'์ž…๋‹ˆ๋‹ค.

      ํ‘œ์‹œ ์ด๋ฆ„๊ณผ ํ™˜๊ฒฝ ์ด๋ฆ„์€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    3. ์„ค๋ช…(์„ ํƒ์‚ฌํ•ญ): ํ™˜๊ฒฝ์˜ ๋ชฉ์ ์— ๋Œ€ํ•œ ์•Œ๋ฆผ์œผ๋กœ ์ถ”๊ฐ€ํ•  ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด '์ดˆ๊ธฐ ์„ค์น˜ ์ค‘์— ์ƒ์„ฑ๋จ'์ž…๋‹ˆ๋‹ค.
  7. ๋‹ค๋ฅธ ๊ธฐ๋ณธ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    Apigee๋Š” ์ƒˆ ํ™˜๊ฒฝ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ์ด์ œ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ  ์ƒˆ ํ™˜๊ฒฝ์„ ๊ทธ๋ฃน์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Apigee API

ํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ API๋กœ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Apigee๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๊ธฐ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋ช…๋ น์ค„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ gcloud ์ธ์ฆ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    Linux/MacOS

    export TOKEN=$(gcloud auth print-access-token)

    ํ† ํฐ์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด echo๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    echo $TOKEN

    ๊ทธ๋Ÿฌ๋ฉด ํ† ํฐ์ด ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a

    ํ† ํฐ์ด ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด echo๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    echo %TOKEN%

    ๊ทธ๋Ÿฌ๋ฉด ํ† ํฐ์ด ์ธ์ฝ”๋”ฉ๋œ ๋ฌธ์ž์—ด๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  3. ๋‹ค์Œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    Linux/macOS

    export ENV_NAME="YOUR_ENV_NAME"

    Windows

    set ENV_NAME="YOUR_ENV_NAME"

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

    • ENV_NAME (ํ•„์ˆ˜) ํ™˜๊ฒฝ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž, ๋Œ€์‹œ, ์ˆซ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ํ™˜๊ฒฝ์„ ๋งŒ๋“  ํ›„์—๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  4. ๋‹ค์Œ Apigee API๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ์—†์Œ

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json"   -d '{
        "name": "'"$ENV_NAME"'"
      }'   "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json"   -d '{
        "name": "'"$ENV_NAME"'"
      }'   "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"

    ์„ฑ๊ณต์ ์ธ ์ƒ์„ฑ ์š”์ฒญ์—๋Š” Environments API๊ฐ€ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    {
      "name": "organizations/hybrid-example/operations/c2aee040-7e79-4fd4-b0cf-79ca1b7098a8",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.apigee.v1.OperationMetadata",
        "operationType": "INSERT",
        "targetResourceName": "organizations/hybrid-example/environments/example-env",
        "state": "IN_PROGRESS"
      }
    }

    ์‘๋‹ต์˜ state ์†์„ฑ์ด ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ Apigee๋Š” ์ƒˆ ํ™˜๊ฒฝ์„ ๋งŒ๋“ค๊ธฐ ์‹œ์ž‘ํ•˜์˜€์œผ๋ฏ€๋กœ ์ƒํƒœ๋Š” IN_PROGRESS์ž…๋‹ˆ๋‹ค.

  5. ํ™˜๊ฒฝ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ์—†์Œ

    curl -H "Authorization: Bearer $TOKEN" \
              "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ

    curl -H "Authorization: Bearer $TOKEN" \
              "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/environments"

    ์ƒ์„ฑ ์š”์ฒญ์— ์„ฑ๊ณตํ•˜๋ฉด Environments API๊ฐ€ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

    [
      "your-environment-name"
    ]

ํ™˜๊ฒฝ ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ

์ด์ œ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ  ๋ฐ”๋กœ ์ „์— ๋งŒ๋“  ํ™˜๊ฒฝ์„ ์—ฌ๊ธฐ์— ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

Cloud ์ฝ˜์†”์˜ Apigee

Cloud ์ฝ˜์†”์˜ Apigee์—์„œ ์ƒˆ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ธŒ๋ผ์šฐ์ €์—์„œ Cloud ์ฝ˜์†”์˜ Apigee UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ์™ผ์ชฝ ํƒ์ƒ‰์ฐฝ์—์„œ ๊ด€๋ฆฌ > ํ™˜๊ฒฝ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ํ™˜๊ฒฝ ์ฐฝ์—์„œ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. + ํ™˜๊ฒฝ ๊ทธ๋ฃน ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ๋‹ค์Œ์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ด๋ฆ„: ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์˜์ˆซ์ž ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ 63์ž(์˜๋ฌธ ๊ธฐ์ค€)์˜ ์˜์ˆซ์ž ๋ฌธ์ž์™€ ํ•˜์ดํ”ˆ์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์กฐ์ง์˜ ๊ธฐ์กด ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ด๋ฆ„๊ณผ ๋‹ฌ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ํ˜ธ์ŠคํŠธ ์ด๋ฆ„: ํ”„๋ก์‹œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ๊ฐ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ ๋ณ„๋„์˜ ์ค„์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      ์ด ๋„๋ฉ”์ธ์œผ๋กœ Google ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Cloud ์ฝ˜์†”์—์„œ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์— ๋Œ€ํ•œ ๋ถ€ํ•˜ ๋ถ„์‚ฐ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ฆฝ๋‹ˆ๋‹ค.

    • ํ™˜๊ฒฝ: ํ™˜๊ฒฝ ๊ทธ๋ฃน์— ํฌํ•จํ•  ํ™˜๊ฒฝ์˜ ์„ ํƒ์  ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.
  6. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ Apigee UI

Apigee UI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Apigee UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  2. ๋ธŒ๋ผ์šฐ์ €๋Š” Apigee UI ๊ธฐ๋ณธ ๋ฐฉ๋ฌธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  3. ์กฐ์ง ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ์กฐ์ง์ด ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•˜์ง€ ์•Š์•˜์œผ๋ฉด ๋“œ๋กญ๋‹ค์šด ๋ชฉ๋ก์—์„œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ด€๋ฆฌ > ํ™˜๊ฒฝ > ๊ทธ๋ฃน์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํ™˜๊ฒฝ ๊ทธ๋ฃน ๊ฐœ์š” ๋ทฐ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ํ™˜๊ฒฝ ๊ทธ๋ฃน ๋ทฐ

  5. +ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ๋นˆ ์ด๋ฆ„ ํ•„๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž

  6. ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ์ƒˆ๋กœ ๋งŒ๋“  ํ™˜๊ฒฝ ๊ทธ๋ฃน ์œ„์— ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ๋ฅผ ์˜ฌ๋ ค๋†“๊ณ  ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๊ทธ๋ฃน ๋‚ด ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๋Š” ๋ชจ๋“  ํ”„๋ก์‹œ์— ์‚ฌ์šฉ๋  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ๊ด€๋ฆฌ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋Š” ๋„๋ฉ”์ธ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์€ example.com๊ณผ ๊ฐ™์ด ๋„๋ฉ”์ธ ์ž์ฒด์ด๊ฑฐ๋‚˜ my-proxies.example.com๊ณผ ๊ฐ™์ด ํ•˜์œ„ ๋„๋ฉ”์ธ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋„๋ฉ”์ธ์„ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Google Domains์™€ ๊ฐ™์€ ๋„๋ฉ”์ธ ๋“ฑ๋ก๊ธฐ๊ด€์„ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์„ ํƒ์ ์œผ๋กœ ๋„๋ฉ”์ธ์˜ ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Load Balancing ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ํ• ๋‹น๋œ ํ™˜๊ฒฝ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ฐฝ ์ˆ˜์ •

  8. ํ™˜๊ฒฝ ์ƒ์ž์—์„œ ์ถ”๊ฐ€(+)๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  9. ํ™˜๊ฒฝ ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ™˜๊ฒฝ์„ ๋‚˜์—ดํ•˜๋Š” ํ™˜๊ฒฝ ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž

  10. ๋ชฉ๋ก์—์„œ ํ™˜๊ฒฝ์„ ์„ ํƒํ•œ ๋‹ค์Œ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  11. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Apigee API

Apigee API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

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

    Linux/MacOS

    TOKEN=$(gcloud auth print-access-token)

    Windows

    for /f "tokens=*" %a in ('gcloud auth print-access-token') do set TOKEN=%a
  2. ๋‹ค์Œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    Linux/macOS

    export DOMAIN="YOUR_DOMAIN"
    export ENV_GROUP="YOUR_ENVIRONMENT_GROUP"

    Windows

     data-terminal-prefix=">">set ENV_GROUP="YOUR_ENVIRONMENT_GROUP"
     data-terminal-prefix=">">set DOMAIN="YOUR_DOMAIN"

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

    • DOMAIN(ํ•„์ˆ˜) ์ด ๊ทธ๋ฃน ๋‚ด ํ™˜๊ฒฝ์— ๋ฐฐํฌ๋˜๋Š” ๋ชจ๋“  ํ”„๋ก์‹œ์—์„œ ์‚ฌ์šฉํ•  ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ•˜๋Š” ๋„๋ฉ”์ธ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์†Œ๋Š” example.com๊ณผ ๊ฐ™์€ ๋„๋ฉ”์ธ ์ž์ฒด์ด๊ฑฐ๋‚˜ my-proxies.example.com๊ณผ ๊ฐ™์€ ํ•˜์œ„ ๋„๋ฉ”์ธ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌํ˜• ๋„๋ฉ”์ธ์ด ์—†์œผ๋ฉด ์ง€๊ธˆ์€ ์ž๋ฆฌํ‘œ์‹œ์ž๋ฅผ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ENV_GROUP (ํ•„์ˆ˜) ํ™˜๊ฒฝ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž, ๋Œ€์‹œ, ์ˆซ์ž๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์€ ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์ƒ์„ฑ ํ›„์—๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  3. ํ™˜๊ฒฝ ๊ทธ๋ฃน์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ์—†์Œ

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
       -d '{
         "name": "'"$ENV_GROUP"'",
         "hostnames":["'"$DOMAIN"'"]
       }' \
       "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups"
        

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
       -d '{
         "name": "'"$ENV_GROUP"'",
         "hostnames":["'"$DOMAIN"'"]
       }' \
       "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups"
        
  4. ์ƒˆ ๊ทธ๋ฃน์— ํ™˜๊ฒฝ์„ ํ• ๋‹นํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ์—†์Œ

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
       -d '{
         "environment": "'"$ENV_NAME"'",
       }' \
       "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/$ENV_GROUP/attachments"
        

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ

    curl -H "Authorization: Bearer $TOKEN" -X POST -H "content-type:application/json" \
       -d '{
         "environment": "'"$ENV_NAME"'",
       }' \
       "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/$ENV_GROUP/attachments"
        
  5. ๋‹ค์Œ CURL ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ ๊ทธ๋ฃน์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ์—†์Œ

    curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups"

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ

    curl -H "Authorization: Bearer $TOKEN" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups"

    ์ƒ์„ฑ ์š”์ฒญ์— ์„ฑ๊ณตํ•˜๋ฉด Environments Group API๊ฐ€ ๋‹ค์Œ๊ณผ ์œ ์‚ฌํ•œ ๋ฉ”์‹œ์ง€๋กœ ์‘๋‹ตํ•ฉ๋‹ˆ๋‹ค.

          {
            "environmentGroups": [
              {
                "name": "your_envgroup_hybrid",
                "hostnames": [
                  "apigee.hybrid.com"
                ],
                "createdAt": "1677826235324",
                "lastModifiedAt": "1677826235324",
                "state": "ACTIVE"
              }
            ]
          }
        
  6. ๋‹ค์Œ CURL ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ ๋งŒ๋“  ํ™˜๊ฒฝ ๊ทธ๋ฃน์˜ ์ตœ์‹  ์—ฐ๊ฒฐ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ์—†์Œ

    curl -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/$ENV_GROUP/attachments"

    ๋ฐ์ดํ„ฐ ์ƒ์ฃผ

    curl -H "Authorization: Bearer $TOKEN" \
      "https://$CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/$ORG_NAME/envgroups/$ENV_GROUP/attachments"

    ์•„๋ž˜ ์ƒ˜ํ”Œ ์‘๋‹ต ์ถœ๋ ฅ์— ํ‘œ์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๊ฒฐ๊ณผ์— ๊ณ ์œ ํ•œ ํ•ด์‹œ ๊ฐ’์ด ํ‘œ์‹œ๋˜๋ฉด ํ™˜๊ฒฝ ๊ทธ๋ฃน ์ƒ์„ฑ ๋ฐ ์—ฐ๊ฒฐ์ด ์„ฑ๊ณตํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

            {
              "environmentGroupAttachments": [
                {
                  "name": "c27046d1-b83e-4cba-xxxx-caaa660b2bd6",
                  "environment": "your_envtest_hybrid",
                  "createdAt": "1677826263567",
                  "environmentGroupId": "your_envgroup_hybrid"
                }
              ]
            }
            

๋‹ค์Œ ๋‹จ๊ณ„

2๋ถ€: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋Ÿฐํƒ€์ž„ ์„ค์ •์œผ๋กœ ์ด๋™ํ•˜์—ฌ ์„ค์น˜ ๊ณ„์†ํ•˜๊ธฐ