๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ด๋ฒคํŠธ๋ฅผ GKE๋กœ ๋ผ์šฐํŒ…

Eventarc ํŠธ๋ฆฌ๊ฑฐ๋Š” ํŠน์ • ์ด๋ฒคํŠธ ๋˜๋Š” ์ด๋ฒคํŠธ ์ง‘ํ•ฉ์— ๊ด€์‹ฌ์ด ์žˆ์Œ์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ์†Œ์Šค ๋ฐ GKE ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ๋Œ€์ƒ Google Kubernetes Engine(GKE) ์„œ๋น„์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ ํ•„ํ„ฐ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ด๋ฒคํŠธ ๋ผ์šฐํŒ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์ƒ์—๋Š” ๊ณต๊ฐœ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์žˆ๋Š” ๊ณต๊ฐœ ๋˜๋Š” ๋น„๊ณต๊ฐœ GKE ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค๋งŒ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„๊ณต๊ฐœ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์žˆ๋Š” GKE ํด๋Ÿฌ์Šคํ„ฐ์˜ ์„œ๋น„์Šค๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ๋ฅผ ๋‚ด๋ถ€ HTTP ์—”๋“œํฌ์ธํŠธ๋กœ ๋ผ์šฐํŒ…ํ•˜์„ธ์š”.

Eventarc๋Š” HTTP ์š”์ฒญ์„ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ CloudEvents ํ˜•์‹์œผ๋กœ ์ด๋ฒคํŠธ ์ˆ˜์‹ ์ž์—๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

์ด ์•ˆ๋‚ด์—์„œ๋Š” ์ง์ ‘Network Connectivity ์ด๋ฒคํŠธ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” GKE ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ด๋ฒคํŠธ ๋ผ์šฐํŒ…์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์›๋˜๋Š” ์ง์ ‘ ์ด๋ฒคํŠธ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

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

GKE ๋Œ€์ƒ์— ๋Œ€ํ•œ Eventarc ์ด๋ฒคํŠธ ์•„ํ‚คํ…์ฒ˜

GKE์šฉ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด

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

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

์ด๋ฒคํŠธ ์ „๋‹ฌ์ž

Eventarc์˜ ์ด๋ฒคํŠธ ์ „๋‹ฌ์ž๋Š” Eventarc์—์„œ ์ƒˆ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ€์ ธ์™€ GKE ๋Œ€์ƒ์œผ๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์„ฑ์š”์†Œ๋Š” Pub/Sub ์ „์†ก ๊ณ„์ธต๊ณผ GKE ์„œ๋น„์Šค ์‚ฌ์ด์—์„œ ์ค‘์žฌ์ž ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค์—์„œ ์ž‘๋™ํ•˜๊ณ  ์‹ ํ˜ธ ์„œ๋น„์Šค(์™„์ „ ๊ด€๋ฆฌํ˜• ํด๋Ÿฌ์Šคํ„ฐ์˜ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š์€ ์„œ๋น„์Šค ํฌํ•จ)๋ฅผ ์ง€์›ํ•˜๋ฉด์„œ ์„ค์น˜ ๋ฐ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํ‚น ์ˆ˜์ค€์—์„œ GKE ์„œ๋น„์Šค์˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๊ฐ€ ๋™์ผํ•œ GKE ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์— ์žˆ๋Š” ์›๋ณธ์—์„œ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์™ธ๋ถ€ ํŠธ๋ž˜ํ”ฝ์— ๋Œ€ํ•œ ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ์ „๋‹ฌ์ž ์ˆ˜๋ช… ์ฃผ๊ธฐ๋Š” Eventarc์—์„œ ๊ด€๋ฆฌ๋˜๋ฉฐ ์ด๋ฒคํŠธ ์ „๋‹ฌ์ž๋ฅผ ์‹ค์ˆ˜๋กœ ์‚ญ์ œํ•˜๋ฉด Eventarc์—์„œ ์ด ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ณต์›ํ•ฉ๋‹ˆ๋‹ค.

GKE ๋Œ€์ƒ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ ํŠธ๋ฆฌ๊ฑฐ์— ๋Œ€ํ•ด ์ด๋ฒคํŠธ ์ „๋‹ฌ์ž(ํŠน๋ณ„ํžˆ ๊ตฌ์„ฑ๋œ gke-forwarder ํฌ๋“œ)๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Pub/Sub API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ ์ „์†ก์ž(Pub/Sub ์ฃผ์ œ ๋ฐ ๊ตฌ๋…)์— ๋Œ€ํ•œ StreamingPull ์—ฐ๊ฒฐ์„ ์—ด๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง€๋ฉด ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด๋ฒคํŠธ๋ฅผ ์˜ฌ๋ฐ”๋ฅธ CloudEvents ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๋Œ€์ƒ GKE ์„œ๋น„์Šค์— HTTP POST ์š”์ฒญ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

gke-forwarder ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์ •๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด Eventarc ์„œ๋น„์Šค ์—์ด์ „ํŠธ์— ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ถŒํ•œ์€ ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ ๋ถ€์—ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ์—์„œ GKE ๋Œ€์ƒ ์‚ฌ์šฉ ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ ์ค€๋น„

Eventarc๋Š” GKE ์„œ๋น„์Šค๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ํŠธ๋ฆฌ๊ฑฐ๋ณ„๋กœ ์ด๋ฒคํŠธ ์ „๋‹ฌ์ž ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Eventarc์—์„œ GKE ํด๋Ÿฌ์Šคํ„ฐ์— ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์„ค์น˜ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ํ•ด๋‹น ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. GKE ๋Œ€์ƒ์— ๋Œ€ํ•œ Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๋‹ค์Œ ์ž‘์—…์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์˜ ํ”„๋กœ์ ํŠธ ์„ ํƒ๊ธฐ ํŽ˜์ด์ง€์—์„œ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ํ”„๋กœ์ ํŠธ ์„ ํƒ๊ธฐ๋กœ ์ด๋™

  2. Eventarc, Eventarc Publishing, Google Kubernetes Engine, Resource Manager API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    API ์‚ฌ์šฉ ์„ค์ •

  3. ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Network Connectivity ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐNetwork Connectivity API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

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

    1. Google Cloud ์ฝ˜์†”์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

      ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋กœ ์ด๋™

    2. ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    3. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„ ํ•„๋“œ์— ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์€ ์ด ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„œ๋น„์Šค ๊ณ„์ • ID ํ•„๋“œ๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.

      ์„œ๋น„์Šค ๊ณ„์ • ์„ค๋ช… ํ•„๋“œ์— ์„ค๋ช…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด Service account for event trigger์ž…๋‹ˆ๋‹ค.

    4. ๋งŒ๋“ค๊ณ  ๊ณ„์†ํ•˜๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    5. ์ ์ ˆํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์—ญํ•  ์„ ํƒ ๋ชฉ๋ก์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์— ๋ถ€์—ฌํ•  ํ•„์š”ํ•œ Identity and Access Management(IAM) ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GKE ๋Œ€์ƒ์˜ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

      ์—ญํ• ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ์—ญํ•  ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๊ฐ ์—ญํ• ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    6. ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    7. ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ๋งˆ์น˜๋ ค๋ฉด ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Eventarc, Eventarc Publishing, Google Kubernetes Engine, Resource Manager API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        container.googleapis.com \
        cloudresourcemanager.googleapis.com

  3. ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ์ง์ ‘ ์ด๋ฒคํŠธ์™€ ๊ด€๋ จ๋œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Network Connectivity ์ด๋ฒคํŠธ์˜ ๊ฒฝ์šฐ networkconnectivity.googleapis.com๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

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

    1. ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME์„ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. 6~30์ž(์˜๋ฌธ ๊ธฐ์ค€) ์‚ฌ์ด์—ฌ์•ผ ํ•˜๋ฉฐ ์†Œ๋ฌธ์ž ์˜์ˆซ์ž ๋ฌธ์ž์™€ ๋Œ€์‹œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“  ํ›„์—๋Š” ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    2. ํ•„์š”ํ•œ Identity and Access Management(IAM) ์—ญํ•  ๋˜๋Š” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GKE ๋Œ€์ƒ์˜ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

GKE ๋Œ€์ƒ ์‚ฌ์šฉ ์„ค์ •

Eventarc๊ฐ€ GKE ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋ ค๋ฉด GKE ๋Œ€์ƒ์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  Eventarc ์„œ๋น„์Šค ์—์ด์ „ํŠธ๋ฅผ ํ•„์š”ํ•œ ์—ญํ• ๊ณผ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

  1. Eventarc์— GKE ๋Œ€์ƒ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud eventarc gke-destinations init
  2. ํ•„์š”ํ•œ ์—ญํ• ์„ ๊ฒฐํ•ฉํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด y๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ์—ญํ• ์ด ๊ฒฐํ•ฉ๋ฉ๋‹ˆ๋‹ค.

    • roles/compute.viewer
    • roles/container.developer
    • roles/iam.serviceAccountAdmin

ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ

Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Google Cloud ์ฝ˜์†”์„ ํ†ตํ•ด Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Eventarc ํŠธ๋ฆฌ๊ฑฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ด๋™

  2. ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ์˜ ID์ด๋ฉฐ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ 63์ž(์˜๋ฌธ ๊ธฐ์ค€)์˜ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ํ•˜์ดํ”ˆ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ํŠธ๋ฆฌ๊ฑฐ ์œ ํ˜•์œผ๋กœ Google ์†Œ์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด๋ฒคํŠธ ์ œ๊ณต์ž ๋ชฉ๋ก์—์„œ Network Connectivity๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์—ฐ๊ฒฐ๋œ Google Cloud ๋ฌธ์„œ์— ์‚ฌ์šฉ๋œ ์ด๋ฒคํŠธ ์ œ๊ณต์ž ์ด๋ฆ„์— Cloud ๋˜๋Š” Google Cloud ํ”„๋ฆฌํ”ฝ์Šค๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ฝ˜์†”์—์„œ๋Š” Redis์šฉ Memorystore๋ฅผ Redis์šฉGoogle Cloud Memorystore๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

  6. ์ด๋ฒคํŠธ ์œ ํ˜• ๋ชฉ๋ก์˜ ์ง์ ‘ ์ด๋ฒคํŠธ์—์„œ ์ด๋ฒคํŠธ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  7. ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์˜ ์ธ์ฝ”๋”ฉ์„ ์ง€์ •ํ•˜๋ ค๋ฉด ์ด๋ฒคํŠธ ๋ฐ์ดํ„ฐ ์ฝ˜ํ…์ธ  ์œ ํ˜• ๋ชฉ๋ก์—์„œ application/json ๋˜๋Š” application/protobuf๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    JSON์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋Š” Protobuf๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ ์ด๋ฒคํŠธ ํฌ๊ธฐ ํ•œ๋„์— ๋”ฐ๋ผ ์•ˆ์ •์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  8. ๋ฆฌ์ „ ๋ชฉ๋ก์—์„œ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š”Google Cloud ์„œ๋น„์Šค์™€ ๋™์ผํ•œ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ Eventarc ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  9. ์ด๋ฒคํŠธ ์ œ๊ณต์ž์— ํ•ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ ํ•„ํ„ฐ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    1. ์†์„ฑ 1 ํ•„๋“œ์—์„œ ์„ ํƒํ•œ ์ง์ ‘ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ์ด๋ฒคํŠธ ํ•„ํ„ฐ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค ID๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    2. ์—ฐ์‚ฐ์ž๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    3. ์†์„ฑ ๊ฐ’ 1 ํ•„๋“œ์—์„œ ์„ ํƒํ•œ ์—ฐ์‚ฐ์ž์— ๋”ฐ๋ผ ์ •ํ™•ํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๊ฒฝ๋กœ ํŒจํ„ด์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    4. ๋” ๋งŽ์€ ์†์„ฑ ํ•„ํ„ฐ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ํ•„ํ„ฐ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜๊ณ  ์ ํ•ฉํ•œ ๊ฐ’์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  10. ์„œ๋น„์Šค ๋˜๋Š” ์›Œํฌํ”Œ๋กœ๋ฅผ ํ˜ธ์ถœํ•  ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋˜๋Š” ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ  ์ด์ „์— Eventarc์— ํ•„์š”ํ•œ ํŠน์ • ์—ญํ• ์„ ๋ถ€์—ฌํ•œ Identity and Access Management (IAM) ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  11. ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ชฉ๋ก์—์„œ Kubernetes Engine์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  12. ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์„œ๋น„์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ์ค€ URL ๊ฒฝ๋กœ(/)๋กœ ์ „์†ก๋˜๋Š” HTTP POST ์š”์ฒญ์œผ๋กœ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

  13. ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ๋ณด๋‚ผ ์„œ๋น„์Šค URL ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ด๋Š” ํŠธ๋ฆฌ๊ฑฐ์˜ ์ด๋ฒคํŠธ๊ฐ€ ์ „์†ก๋˜์–ด์•ผ ํ•˜๋Š” ๋Œ€์ƒ ์„œ๋น„์Šค์˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /, /route, route, route/subroute์ž…๋‹ˆ๋‹ค.

  14. ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋ผ๋ฒจ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋ผ๋ฒจ์€Google Cloud ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ‚ค-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ผ๋ฒจ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  15. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  16. ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„์—๋Š” ์ด๋ฒคํŠธ ์†Œ์Šค ํ•„ํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒˆ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด์ „ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŠธ๋ฆฌ๊ฑฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

ํ•„์ˆ˜ ๋ฐ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ gcloud eventarc triggers create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  gcloud eventarc triggers create TRIGGER \
      --location=LOCATION \
      --destination-gke-cluster=DESTINATION_GKE_CLUSTER \
      --destination-gke-location=DESTINATION_GKE_LOCATION \
      --destination-gke-namespace=DESTINATION_GKE_NAMESPACE \
      --destination-gke-service=DESTINATION_GKE_SERVICE \
      --destination-gke-path=DESTINATION_GKE_PATH \
      --event-filters="type=EVENT_FILTER_TYPE" \
      --event-filters="COLLECTION_ID=RESOURCE_ID" \
      --event-filters-path-pattern="COLLECTION_ID=PATH_PATTERN" \
      --event-data-content-type="EVENT_DATA_CONTENT_TYPE" \
      --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"

๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • TRIGGER: ํŠธ๋ฆฌ๊ฑฐ์˜ ID ๋˜๋Š” ์ •๊ทœํ™”๋œ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
  • LOCATION: Eventarc ํŠธ๋ฆฌ๊ฑฐ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ๋˜๋Š” eventarc/location ์†์„ฑ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: gcloud config set eventarc/location us-central1).

    ์„ฑ๋Šฅ ๋ฐ ๋ฐ์ดํ„ฐ ์ƒ์ฃผ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ด ์œ„์น˜๊ฐ€ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” Google Cloud ์„œ๋น„์Šค์˜ ์œ„์น˜์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Eventarc ์œ„์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • DESTINATION_GKE_CLUSTER: ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋Œ€์ƒ GKE ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ GKE ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • DESTINATION_GKE_LOCATION: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ GKE ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ GKE ํด๋Ÿฌ์Šคํ„ฐ์˜ Compute Engine ๋ฆฌ์ „์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋ฆฌ์ „ ํด๋Ÿฌ์Šคํ„ฐ์ด๋ฉฐ ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ๋ฆฌ์ „์— ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • DESTINATION_GKE_NAMESPACE: (์„ ํƒ์‚ฌํ•ญ) ๋Œ€์ƒ GKE ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด default ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • DESTINATION_GKE_SERVICE: ํŠธ๋ฆฌ๊ฑฐ์˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” GKE ์„œ๋น„์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋Š” GKE์—์„œ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ์œ„์น˜์— ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ์œ„์น˜์— ์žˆ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋น„์Šค๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ์ค€ URL ๊ฒฝ๋กœ(/)๋กœ ์ „์†ก๋˜๋Š” HTTP POST ์š”์ฒญ์œผ๋กœ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.
  • DESTINATION_GKE_PATH: (์„ ํƒ์‚ฌํ•ญ) ํŠธ๋ฆฌ๊ฑฐ ์ด๋ฒคํŠธ๊ฐ€ ์ „์†ก๋  ๋Œ€์ƒ GKE ์„œ๋น„์Šค์—์„œ ์ง€์ •ํ•œ ์ƒ๋Œ€ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /, /route, route, route/subroute์ž…๋‹ˆ๋‹ค.
  • EVENT_FILTER_TYPE: ์ด๋ฒคํŠธ์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ์˜ API ํ˜ธ์ถœ์ด ์„ฑ๊ณตํ•˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…์˜ ๊ฒฝ์šฐ ์ž‘์—…์ด ๋๋‚  ๋•Œ์™€ ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋งŒ ์ด๋ฒคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜๋Š” ์ด๋ฒคํŠธ ์œ ํ˜• ๋ชฉ๋ก์€ Eventarc์—์„œ ์ง€์›๋˜๋Š” Google ์ด๋ฒคํŠธ ์œ ํ˜•์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • COLLECTION_ID (์„ ํƒ์‚ฌํ•ญ): ์ด๋ฒคํŠธ ํ•„ํ„ฐ ์—ญํ• ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค ๊ตฌ์„ฑ์š”์†Œ์ด๋ฉฐ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
    • hub
    • serviceclass
    • serviceconnectionmap
    • serviceconnectionpolicy
    • serviceconnectiontoken
    • spoke
  • RESOURCE_ID: ์—ฐ๊ฒฐ๋œ ์ปฌ๋ ‰์…˜์˜ ํ•„ํ„ฐ๋ง ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฆฌ์†Œ์Šค ID๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • PATH_PATTERN: ๋ฆฌ์†Œ์Šค๋ฅผ ํ•„ํ„ฐ๋งํ•  ๋•Œ ์ ์šฉํ•  ๊ฒฝ๋กœ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.
  • EVENT_DATA_CONTENT_TYPE: (์„ ํƒ์‚ฌํ•ญ) ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ์˜ ์ธ์ฝ”๋”ฉ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ application/json ๋˜๋Š” application/protobuf์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ธ์ฝ”๋”ฉ์€ application/json์ž…๋‹ˆ๋‹ค.

    JSON์œผ๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋Š” Protobuf๋กœ ํ˜•์‹์ด ์ง€์ •๋œ ์ด๋ฒคํŠธ ํŽ˜์ด๋กœ๋“œ๋ณด๋‹ค ํฝ๋‹ˆ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์ด๋ฒคํŠธ ๋Œ€์ƒ ๋ฐ ์ด๋ฒคํŠธ ํฌ๊ธฐ ํ•œ๋„์— ๋”ฐ๋ผ ์•ˆ์ •์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • SERVICE_ACCOUNT_NAME: ์‚ฌ์šฉ์ž ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ :

  • --event-filters="type=EVENT_FILTER_TYPE" ํ”Œ๋ž˜๊ทธ๋Š” ํ•„์ˆ˜ ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฒคํŠธ ํ•„ํ„ฐ๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์˜ ์ด๋ฒคํŠธ๊ฐ€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์ƒ์„ฑ ํ›„์—๋Š” EVENT_FILTER_TYPE์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. EVENT_FILTER_TYPE์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ƒˆ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด์ „ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ ํŠธ๋ฆฌ๊ฑฐ์— ์—ฌ๋Ÿฌ ์ด๋ฒคํŠธ ํ•„ํ„ฐ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜(--event-filters=[ATTRIBUTE=VALUE,...] ํ”Œ๋ž˜๊ทธ ํ•˜๋‚˜์— ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ž…๋ ฅ) ํ”Œ๋ž˜๊ทธ๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ•„ํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ์ด๋ฒคํŠธ๋งŒ ๋Œ€์ƒ์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์™€์ผ๋“œ ์นด๋“œ์™€ ์ •๊ทœ ํ‘œํ˜„์‹์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ --event-filters-path-pattern ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์†Œ์Šค ๊ฒฝ๋กœ ํŒจํ„ด์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • --service-account ํ”Œ๋ž˜๊ทธ๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ์—ฐ๊ฒฐ๋œ Identity and Access Management(IAM) ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ์„ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

  gcloud eventarc triggers create helloworld-trigger \
      --location=us-central1 \
      --destination-gke-cluster=gke-events-cluster \
      --destination-gke-location=us-central1-a \
      --destination-gke-namespace=default \
      --destination-gke-service=helloworld-events \
      --destination-gke-path=/ \
      --event-filters="type=google.cloud.networkconnectivity.serviceConnectionMap.v1.updated" \
      --event-filters-path-pattern="serviceconnectionmap=my-serviceconnectionmap-*" \
      --service-account=${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com

์ด ๋ช…๋ น์–ด๋Š” google.cloud.networkconnectivity.serviceConnectionMap.v1.updated๋กœ ์‹๋ณ„๋œ ์ด๋ฒคํŠธ์˜ ํŠธ๋ฆฌ๊ฑฐ(helloworld-trigger)๋ฅผ ๋งŒ๋“ค๊ณ  my-serviceconnectionmap-๋กœ ์‹œ์ž‘ํ•˜๋Š” serviceconnectionmap ID์˜ ์ด๋ฒคํŠธ์™€ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค.

Terraform

Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ GKE ๋Œ€์ƒ์— ๋Œ€ํ•œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠธ๋ฆฌ๊ฑฐ ๋‚˜์—ด

Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Google Cloud ์ฝ˜์†”์„ ํ†ตํ•ด Eventarc ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ ์ƒ์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ Eventarc ํŠธ๋ฆฌ๊ฑฐ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ํŠธ๋ฆฌ๊ฑฐ๋กœ ์ด๋™

    ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๋ชจ๋“  ์œ„์น˜์˜ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ์ด๋ฆ„, ๋ฆฌ์ „, ์ด๋ฒคํŠธ ์ œ๊ณต์ž, ๋Œ€์ƒ ๋“ฑ๊ณผ ๊ฐ™์€ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

  2. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

    1. ํ•„ํ„ฐ ๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ํ•„ํ„ฐ๋ง ํ•„๋“œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ์†์„ฑ ๋ชฉ๋ก์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ์˜ต์…˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์†์„ฑ์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ OR ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์ •๋ ฌํ•˜๋ ค๋ฉด ์ง€์›๋˜๋Š” ์—ด ์ œ๋ชฉ ์˜†์— ์žˆ๋Š” ์ •๋ ฌ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.

gcloud eventarc triggers list --location=-

์ด ๋ช…๋ น์–ด๋Š” ๋ชจ๋“  ์œ„์น˜์˜ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ์ด๋ฆ„, ์œ ํ˜•, ๋Œ€์ƒ, ์ƒํƒœ์™€ ๊ฐ™์€ ์„ธ๋ถ€์ •๋ณด๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

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