IAM์œผ๋กœ ์•ก์„ธ์Šค ์ œ์–ด

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Artifact Registry์—์„œ Identity and Access Management(IAM)๋ฅผ ์‚ฌ์šฉํ•œ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Artifact Registry์˜ ๊ธฐ๋ณธ ๊ถŒํ•œ์€ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์„ค์ • ์ž‘์—…์„ ์ตœ์†Œํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ Artifact Registry๋ฅผ ํƒ€์‚ฌ CI/CD ๋„๊ตฌ์™€ ํ†ตํ•ฉํ•˜๊ณ  ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ๊ณผ ์ธ์ฆ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Artifact Analysis๋ฅผ ์‚ฌ์šฉํ•ด ์ด๋ฏธ์ง€์—์„œ ๋ฐœ๊ฒฌ๋œ ์ทจ์•ฝ์  ๋“ฑ์˜ ์ปจํ…Œ์ด๋„ˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ Artifact Analysis ๋ฌธ์„œ์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ ๋˜๋Š” ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

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

  1. API ์‚ฌ์šฉ ์„ค์ • ๋ฐ Google Cloud CLI ์„ค์น˜๋ฅผ ํฌํ•จํ•˜์—ฌ Artifact Registry๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ €์žฅ์†Œ๋ณ„ ๊ถŒํ•œ์„ ์ ์šฉํ•˜๋ ค๋ฉด ํŒจํ‚ค์ง€์—์„œ Artifact Registry ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ฐœ์š”

IAM ๊ถŒํ•œ ๋ฐ ์—ญํ• ์— ๋”ฐ๋ผ Artifact Registry ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑ, ๋ณด๊ธฐ, ์ˆ˜์ • ๋˜๋Š” ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

์—ญํ• ์€ ๊ถŒํ•œ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์ง์ ‘ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์—†์ง€๋งŒ ๋Œ€์‹  ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋ฉด ํ•ด๋‹น ์—ญํ• ์— ํฌํ•จ๋œ ๋ชจ๋“  ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์ฃผ ๊ตฌ์„ฑ์›์— ์—ฌ๋Ÿฌ ์—ญํ• ์„ ๋ถ€์—ฌํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Cloud ๊ธฐ๋ณธ ๊ถŒํ•œ

๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ ๊ถŒํ•œ์ด Artifact Registry์™€ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์˜ Google Cloud CI/CD ์„œ๋น„์Šค์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  • Cloud Build ๊ถŒํ•œ์—๋Š” ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์—…๋กœ๋“œํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋™์ผํ•œ Google Cloud ํ”„๋กœ์ ํŠธ์— ์žˆ๊ณ  ๊ธฐ๋ณธ ๊ถŒํ•œ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋ฉด ๊ถŒํ•œ์„ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” Artifact Registry ๊ถŒํ•œ์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ Artifact Registry์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Artifact Registry๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ ์„œ๋น„์Šค์˜ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€ ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. Cloud Run์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ Cloud Run ์„œ๋น„์Šค ์—์ด์ „ํŠธ์— ํ•„์š”ํ•œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  • Artifact Registry์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ธฐ๋Šฅ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›๋˜์ง€ ์•Š๋Š” GKE ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์„ฑ ์•ˆ๋‚ด๋Š” GKE ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ • ๋Œ€์‹  ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์šฉ ์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Artifact Registry๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์‚ฌ ํ†ตํ•ฉ

ํƒ€์‚ฌ ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ์—๋Š” ๊ถŒํ•œ๊ณผ ์ธ์ฆ์„ ๋ชจ๋‘ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Google Cloud ์™ธ๋ถ€์—์„œ ์‹คํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Google Cloud ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋Š” ๊ฐ•๋ ฅํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด์ด๋ฉฐ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ณด์•ˆ์ƒ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Identity and Access Management๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ๊ณ„์ •์„ ๊ฐ€์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์ด ํฌํ•จ๋œ IAM ์—ญํ• ์„ ์™ธ๋ถ€ ID์— ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค์™€ ๊ด€๋ จ๋œ ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ๋ณด์•ˆ ๋ถ€๋‹ด์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

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

  1. ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด ํ’€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด ๊ณต๊ธ‰์—…์ฒด๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  3. ์ €์žฅ์†Œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ํ’€์— ์ ์ ˆํ•œ Artifact Registry ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์™ธ๋ถ€ ์›Œํฌ๋กœ๋“œ๊ฐ€ Google Cloud ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ—ˆ์šฉ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  4. Artifact Registry์— ๋” ์˜ค๋žซ๋™์•ˆ ์•ก์„ธ์Šคํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๊ตฌ์„ฑ์—์„œ OIDC ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ๋” ๊ธด ๊ธฐ๊ฐ„์œผ๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. Artifact Registry๋กœ ์ธ์ฆํ•˜๋„๋ก ํƒ€์‚ฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ:

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Œ€์‹  ์ž‘๋™ํ•˜๋„๋ก ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ CI/CD ์ž๋™ํ™”์— ์‚ฌ์šฉํ•  ๊ธฐ์กด ์„œ๋น„์Šค ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์ €์žฅ์†Œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋น„์Šค ๊ณ„์ •์— ์ ์ ˆํ•œ Artifact Registry ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
  3. Artifact Registry๋กœ ์ธ์ฆํ•˜๋„๋ก ํƒ€์‚ฌ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Google Cloud์˜ GitLab

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

Google Cloud์˜ GitLab์— ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด ๋ฐ ํ•„์š”ํ•œ IAM ์—ญํ• ์„ ์„ค์ •ํ•˜๋ ค๋ฉด GitLab ํŠœํ† ๋ฆฌ์–ผ Google Cloud ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด ๋ฐ IAM ์ •์ฑ…์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Artifact Registry ์ €์žฅ์†Œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด GitLab ํŠœํ† ๋ฆฌ์–ผ Google Artifact Registry๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์—ญํ•  ๋ฐ ๊ถŒํ•œ

๋ชจ๋“  Artifact Registry API ๋ฉ”์„œ๋“œ์—๋Š” ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ์ •์ฑ…์„ ์„ค์ •ํ•˜์—ฌ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ํ”„๋กœ์ ํŠธ ๋˜๋Š” Artifact Registry ์ €์žฅ์†Œ์— ์—ญํ• ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ •์˜๋œ Artifact Registry ์—ญํ• 

IAM์€ ํŠน์ • Google Cloud ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

pkg.dev ๋„๋ฉ”์ธ์˜ ์ €์žฅ์†Œ์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์—ญํ•  ์„ค๋ช…
Artifact Registry ๋ฆฌ๋”
(roles/artifactregistry.reader)
์•„ํ‹ฐํŒฉํŠธ ๋ณด๊ธฐ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ, ์ €์žฅ์†Œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
Artifact Registry ์ž‘์„ฑ์ž
(roles/artifactregistry.writer)
์•„ํ‹ฐํŒฉํŠธ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
Artifact Registry ์ €์žฅ์†Œ ๊ด€๋ฆฌ์ž
(roles/artifactregistry.repoAdmin)
์•„ํ‹ฐํŒฉํŠธ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
Artifact Registry ๊ด€๋ฆฌ์ž
(roles/artifactregistry.admin)
์ €์žฅ์†Œ ๋ฐ ์•„ํ‹ฐํŒฉํŠธ ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ ์ถ”๊ฐ€ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์—๋Š” Container Registry์—์„œ Artifact Registry๋กœ ์ด์ „ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์—ญํ•  ์„ค๋ช…
Container Registry -> Artifact Registry ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ์ž(roles/artifactregistry.containerRegistryMigrationAdmin) ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋„๊ตฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
Artifact Registry Create-on-Push ์ž‘์„ฑ์ž(roles/artifactregistry.createOnPushWriter) ์•„ํ‹ฐํŒฉํŠธ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. gcr.io URL๋กœ ํ‘ธ์‹œํ•  ๋•Œ gcr.io ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
Artifact Registry Create-on-push ์ €์žฅ์†Œ ๊ด€๋ฆฌ์ž(roles/artifactregistry.createOnPushRepoAdmin) ์•„ํ‹ฐํŒฉํŠธ ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์‚ญ์ œ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. gcr.io ์ €์žฅ์†Œ ๋งŒ๋“ค๊ธฐ
๊ฐ ์—ญํ• ์˜ ๊ฐœ๋ณ„ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ „์ฒด ๋ชฉ๋ก์€ Artifact Registry ์—ญํ• ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”. ๋˜ํ•œ gcloud iam roles describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์—ญํ• ์˜ ๊ถŒํ•œ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ IAM ์—ญํ• 

๊ธฐ๋ณธ ์—ญํ• ์€ IAM ๋„์ž… ์ „์—๋„ ์žˆ์—ˆ๋˜ ๋†’์€ ๊ถŒํ•œ์ด ์žˆ๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ๋Š” ๊ธฐ๋ณธ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜์ง€ ๋ง์•„์•ผ ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋˜๋Š” ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ๋Š” ๋ถ€์—ฌํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋ฐ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ํฌํ•จ๋˜๋„๋ก ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒฝ์šฐ์— ์ €์žฅ์†Œ ์•ก์„ธ์Šค์— ๋Œ€ํ•ด ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ธฐ๋ณธ ์—ญํ• ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ IAM ๊ธฐ๋ณธ ๋ฐ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

์—ญํ•  ๋ถ€์—ฌ

ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์ €์žฅ์†Œ์— ๋™์ผํ•œ ์—ญํ• ์ด ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๊ณ„์ •์— ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฉด ์ €์žฅ์†Œ ์ˆ˜์ค€์—์„œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

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

gcloud ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ ์ฃผ ๊ตฌ์„ฑ์›์˜ ๋‹จ์ผ ์—ญํ•  ๋ฐ”์ธ๋”ฉ์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์†Œ์Šค์˜ ํ—ˆ์šฉ ์ •์ฑ…์„ ๊ฐ€์ ธ์™€ ์ˆ˜์ •ํ•˜๊ณ  ์ˆ˜์ •๋œ ํ—ˆ์šฉ ์ •์ฑ…์„ ์„ค์ •ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ์ •์ฑ… ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์—ญํ•  ๋ถ€์—ฌ ๋˜๋Š” ์ทจ์†Œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

ํ”„๋กœ์ ํŠธ ์ „์ฒด ์—ญํ•  ๋ถ€์—ฌ

ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์ €์žฅ์†Œ์— ๋™์ผํ•œ ๊ถŒํ•œ์ด ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•˜๊ณ  Artifact Registry ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ IAM ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    IAM ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ํ”„๋กœ์ ํŠธ ์„ ํƒ์„ ํด๋ฆญํ•˜๊ณ  Artifact Registry๋ฅผ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•˜๊ณ  ์—ด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ, ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” Google ๊ทธ๋ฃน์Šค๋ฅผ ์ฃผ ๊ตฌ์„ฑ์›์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ์ฃผ ๊ตฌ์„ฑ์›์˜ ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ ๊ถŒํ•œ์˜ ๋ณด์•ˆ ์›์น™์— ๋”ฐ๋ผ ํ•„์š”ํ•œ Artifact Registry ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Artifact Registry์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์ „ ์ •์˜๋œ Artifact Registry ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  6. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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. ๋‹จ์ผ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud projects add-iam-policy-binding PROJECT \
       --member=PRINCIPAL \
       --role=ROLE

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

    • PROJECT๋Š” Artifact Registry๊ฐ€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์˜ ID์ž…๋‹ˆ๋‹ค.
    • PRINCIPAL์€ binding์ด ์ถ”๊ฐ€๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ž…๋‹ˆ๋‹ค. user|group|serviceAccount:email ๋˜๋Š” domain:domain ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ๋˜๋Š” domain:example.domain.com

    • ROLE์€ ๋ถ€์—ฌํ•  ์—ญํ• ์ž…๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ์€ add-iam-policy-binding ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ์ •์ฑ… ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์—ญํ•  ๋ถ€์—ฌ ๋˜๋Š” ์ทจ์†Œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์ €์žฅ์†Œ๋ณ„ ์—ญํ•  ๋ถ€์—ฌ

ํ”„๋กœ์ ํŠธ์˜ ์ €์žฅ์†Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ˆ˜์ค€์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์‚ฌ์šฉ์ž๋‚˜ ์„œ๋น„์Šค ๊ณ„์ •์— ์žˆ์–ด์•ผ ํ•˜๋ฉด ์ €์žฅ์†Œ ์ˆ˜์ค€์˜ ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

ํŠน์ • ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ €์žฅ์†Œ ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    ์ €์žฅ์†Œ ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ์ ์ ˆํ•œ ์ €์žฅ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ •๋ณด ํŒจ๋„์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋‰ด ๋ฐ”์—์„œ ์ •๋ณด ํŒจ๋„ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ถŒํ•œ ํƒญ์—์„œ ์ฃผ ๊ตฌ์„ฑ์› ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ, ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” Google ๊ทธ๋ฃน์Šค๋ฅผ ์ฃผ ๊ตฌ์„ฑ์›์œผ๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  6. ์ฃผ ๊ตฌ์„ฑ์›์˜ ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ตœ์†Œ ๊ถŒํ•œ์˜ ๋ณด์•ˆ ์›์น™์— ๋”ฐ๋ผ ํ•„์š”ํ•œ Artifact Registry ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. Artifact Registry์˜ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ•  ๋ฐ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์ „ ์ •์˜๋œ Artifact Registry ์—ญํ• ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  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. ๊ฐœ๋ณ„ ์ •์ฑ… binding์˜ IAM ์„ธํŠธ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์ •์ฑ… ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋‹จ์ผ ์ฃผ ๊ตฌ์„ฑ์›์—๊ฒŒ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
       --location=LOCATION \
       --member=PRINCIPAL \
       --role=ROLE

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

    • REPOSITORY๋Š” ์ €์žฅ์†Œ ID์ž…๋‹ˆ๋‹ค.
    • PRINCIPAL์€ binding์ด ์ถ”๊ฐ€๋˜๋Š” ์ฃผ ๊ตฌ์„ฑ์›์ž…๋‹ˆ๋‹ค. user|group|serviceAccount:email ๋˜๋Š” domain:domain ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ๋˜๋Š” domain:example.domain.com

    • ROLE์€ ๋ถ€์—ฌํ•  ์—ญํ• ์ž…๋‹ˆ๋‹ค.

    • LOCATION์€ ์ €์žฅ์†Œ์˜ ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด --us-west1 ์œ„์น˜์—์„œ my-repo ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž write@gmail.com์˜ roles/artifactregistry.writer ์—ญํ• ์— ๋Œ€ํ•œ IAM ์ •์ฑ… binding์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories add-iam-policy-binding my-repo \
    --location=us-west1 --member=user:write@gmail.com --role=roles/artifactregistry.writer

    ์ •์ฑ… ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด gcloud artifacts repositories get-iam-policy ๋ฐ gcloud artifacts repositories set-iam-policy ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ๋ฐฉ์‹์œผ๋กœ ์—ฌ๋Ÿฌ ์—ญํ•  ๋ถ€์—ฌ ๋˜๋Š” ์ทจ์†Œ์— ์„ค๋ช…๋œ ์ ˆ์ฐจ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  3. Terraform

    google_artifact_registry_repository_iam ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ IAM ์ •์ฑ…์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด repo-account์ธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์ •์˜ํ•˜๊ณ  ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์ด my-repo์ธ ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    Google Cloud์—์„œ Terraform์„ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ HashiCorp ์›น์‚ฌ์ดํŠธ์˜ ์‹œ์ž‘ํ•˜๊ธฐ - Google Cloud ํŽ˜์ด์ง€๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

    provider "google" {
        project = "PROJECT-ID"
    }
    
    resource "google_artifact_registry_repository" "my-repo"     {
      provider = google-beta
    
      location = "LOCATION"
      repository_id = "REPOSITORY"
      description = "DESCRIPTION"
      format = "FORMAT"
    }
    
    resource "google_service_account" "repo-account" {
      provider = google-beta
    
      account_id   = "ACCOUNT-ID"
      display_name = "Repository Service Account"
    }
    
    resource "google_artifact_registry_repository_iam_member" "repo-iam" {
      provider = google-beta
    
      location = google_artifact_registry_repository.my-repo.location
      repository = google_artifact_registry_repository.my-repo.name
      role   = "roles/artifactregistry.reader"
      member = "serviceAccount:${google_service_account.repo-account.email}"
    }
    

    ACCOUNT-ID๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ID์œผ๋กœ, @ ๊ธฐํ˜ธ ์•ž์— ์žˆ๋Š” ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ํ•„๋“œ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

    ์ถ”๊ฐ€ ์˜ˆ์‹œ๋Š” google_artifact_registry_repository_iam ๋ฆฌ์†Œ์Šค์˜ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๊ตฌ์„ฑ

์ธ์ฆ ์—†์ด ์ธํ„ฐ๋„ท์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์•„ํ‹ฐํŒฉํŠธ๊ฐ€ ์žˆ์œผ๋ฉด ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ณต๊ฐœ ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค์— ํ•„์š”ํ•œ ์ €์žฅ์†Œ๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ฃผ ๊ตฌ์„ฑ์› allUsers์— Artifact Registry ๋ฆฌ๋” ์—ญํ• ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋‹จ์ผ ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ์ ํŠธ์˜ ์ „์ฒด ํ• ๋‹น๋Ÿ‰์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋„๋ก ์‚ฌ์šฉ์ž ์š”์ฒญ ํ• ๋‹น๋Ÿ‰ ์ƒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ €์žฅ์†Œ ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    ์ €์žฅ์†Œ ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ์ ์ ˆํ•œ ์ €์žฅ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ •๋ณด ํŒจ๋„์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋‰ด ๋ฐ”์—์„œ ์ •๋ณด ํŒจ๋„ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ถŒํ•œ ํƒญ์—์„œ ์ฃผ ๊ตฌ์„ฑ์› ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ƒˆ ์ฃผ ๊ตฌ์„ฑ์› ํ•„๋“œ์— allUsers๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  6. Artifact Registry ๋ฆฌ๋” ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  7. Artifact Registry API ์š”์ฒญ์— ์‚ฌ์šฉ์ž๋ณ„ ํ•œ๋„๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์˜ ์˜ค์šฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ๋Ÿ‰ ์ƒํ•œ ์„ค์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

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. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories add-iam-policy-binding REPOSITORY \
    --location=LOCATION --member=allUsers --role=ROLE

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

    • REPOSITORY๋Š” ์ €์žฅ์†Œ ID์ž…๋‹ˆ๋‹ค.

    • ROLE์€ ๋ถ€์—ฌํ•  ์—ญํ• ์ž…๋‹ˆ๋‹ค.

    • LOCATION์€ ์ €์žฅ์†Œ์˜ ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด --us-west1 ์œ„์น˜์— ์žˆ๋Š” my-repo ์ €์žฅ์†Œ๋ฅผ ๊ณต๊ฐœ๋กœ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories add-iam-policy-binding my-repo \
     --location=us-west1 --member=allUsers --role=roles/artifactregistry.reader

  3. Artifact Registry API ์š”์ฒญ์— ์‚ฌ์šฉ์ž๋ณ„ ํ•œ๋„๋ฅผ ์„ค์ •ํ•˜์—ฌ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์‚ฌ์šฉ์ž์˜ ์˜ค์šฉ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์‚ฌ์šฉ๋Ÿ‰ ์ƒํ•œ ์„ค์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

์—ญํ•  ์ทจ์†Œ ์ค‘

์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด ์Šน์ธ๋œ ์ฃผ ๊ตฌ์„ฑ์› ๋ชฉ๋ก์—์„œ ์ฃผ ๊ตฌ์„ฑ์›์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

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

์ฝ˜์†”

๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Google Cloud ์ฝ˜์†”์—์„œ ์ €์žฅ์†Œ ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

    ์ €์žฅ์†Œ ํŽ˜์ด์ง€ ์—ด๊ธฐ

  2. ์ ์ ˆํ•œ ์ €์žฅ์†Œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์ •๋ณด ํŒจ๋„์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋‰ด ๋ฐ”์—์„œ ์ •๋ณด ํŒจ๋„ ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ถŒํ•œ ํƒญ์—์„œ ์ ์ ˆํ•œ ์ฃผ ๊ตฌ์„ฑ์›์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐœ ์ €์žฅ์†Œ๋ฅผ ๋น„๊ณต๊ฐœ๋กœ ์„ค์ •ํ•˜๋ ค๋ฉด allUsers ์ฃผ ๊ตฌ์„ฑ์›์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

  5. ์ฃผ ๊ตฌ์„ฑ์› ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

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. ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์—ญํ• ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud projects remove-iam-policy-binding PROJECT \
       --member=PRINCIPAL \
       --role=ROLE
    • PROJECT๋Š” ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค.
    • PRINCIPAL๋Š” ๋ฐ”์ธ๋”ฉ์„ ์‚ญ์ œํ•  ์ฃผ ๊ตฌ์„ฑ์›์ž…๋‹ˆ๋‹ค. user|group|serviceAccount:email ๋˜๋Š” domain:domain ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ๋˜๋Š” domain:example.domain.com

    • ROLE์€ ์ทจ์†Œํ•  ์—ญํ• ์ž…๋‹ˆ๋‹ค.

    ์ €์žฅ์†Œ์˜ ์—ญํ• ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories remove-iam-policy-binding REPOSITORY
       --location=LOCATION \
       --member=PRINCIPAL \
       --role=ROLE

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

    • REPOSITORY๋Š” ์ €์žฅ์†Œ ID์ž…๋‹ˆ๋‹ค.
    • PRINCIPAL๋Š” ๋ฐ”์ธ๋”ฉ์„ ์‚ญ์ œํ•  ์ฃผ ๊ตฌ์„ฑ์›์ž…๋‹ˆ๋‹ค. user|group|serviceAccount:email ๋˜๋Š” domain:domain ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      ์˜ˆ์‹œ: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com ๋˜๋Š” domain:example.domain.com

      ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ ค๋ฉด allUsers ์ฃผ ๊ตฌ์„ฑ์›์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ROLE์€ ์ทจ์†Œํ•  ์—ญํ• ์ž…๋‹ˆ๋‹ค.

    ์˜ˆ๋ฅผ ๋“ค์–ด --us-west1 ์œ„์น˜์—์„œ my-repo ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž write@gmail.com์˜ roles/artifactregistry.writer ์—ญํ• ์— ๋Œ€ํ•œ ์ •์ฑ… binding์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories remove-iam-policy-binding my-repo \
       --location=us-west1 \
       --member=user:write@gmail.com \
       --role=roles/artifactregistry.writer

    --us-west1 ์œ„์น˜์—์„œ my-repo์— ๋Œ€ํ•œ ๊ณต๊ฐœ ์•ก์„ธ์Šค๋ฅผ ์ทจ์†Œํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud artifacts repositories remove-iam-policy-binding my-repo \
       --location=us-west1 \
       --member=allUsers \
       --role=roles/artifactregistry.reader

ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ ์กฐ๊ฑด๋ถ€ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž๋Š” Google Cloud์ „๋ฐ˜์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํƒœ๊ทธ๋ฅผ ๋งŒ๋“ค๊ณ  Resource Manager์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Artifact Registry ์ €์žฅ์†Œ์— ํƒœ๊ทธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ๊ด€๋ฆฌ์ž๋Š” IAM ์กฐ๊ฑด์ด ์žˆ๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ์— ์กฐ๊ฑด๋ถ€ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ ์•„ํ‹ฐํŒฉํŠธ์— ํƒœ๊ทธ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Cloud ์„œ๋น„์Šค์™€ ํ†ตํ•ฉ

๋Œ€๋ถ€๋ถ„์˜ Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์˜ ๊ฒฝ์šฐ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์•ก์„ธ์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ ์ ˆํ•œ IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์„œ๋น„์Šค์˜ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •

Cloud Build ๋˜๋Š” Google Kubernetes Engine๊ณผ ๊ฐ™์€Google Cloud ์„œ๋น„์Šค๋Š” ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ • ๋˜๋Š” ์„œ๋น„์Šค ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ง์ ‘ ๊ถŒํ•œ์„ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์„œ๋น„์Šค๊ฐ€ Google Cloud Artifact Registry์™€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ถŒํ•œ์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ • ๋Œ€์‹  Artifact Registry์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ์กฐ์ง ์ •์ฑ… ๊ตฌ์„ฑ์œผ๋กœ ์ธํ•ด ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ๋Œ€ํ•œ ์ž๋™ ์—ญํ•  ๋ถ€์—ฌ๊ฐ€ ๋ฐฉ์ง€๋ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์„œ๋น„์Šค ๊ณ„์ •์€ ์ผ๋ฐ˜์ ์œผ๋กœ Artifact Registry์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์—๋Š” ์„œ๋น„์Šค๊ฐ€ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์˜ Google Cloud ํ”„๋กœ์ ํŠธ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์„œ๋น„์Šค ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ
App Engine ๊ฐ€๋ณ€ํ˜• ํ™˜๊ฒฝ App Engine ์„œ๋น„์Šค ๊ณ„์ • PROJECT-ID@appspot.gserviceaccount.com
Compute Engine Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ • PROJECT-NUMBER-compute@developer.gserviceaccount.com
Cloud Build Compute Engine ์„œ๋น„์Šค ๊ณ„์ •
๋˜๋Š”
๊ธฐ์กด Cloud Build ์„œ๋น„์Šค ๊ณ„์ •
์กฐ์ง ์„ค์ •์— ๋”ฐ๋ผ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • Compute Engine: PROJECT-NUMBER-compute@developer.gserviceaccount.com
  • Cloud Build: PROJECT-NUMBER@cloudbuild.gserviceaccount.com
Cloud Run Cloud Run ์„œ๋น„์Šค ์—์ด์ „ํŠธ
run.googleapis.com์˜ ์„œ๋น„์Šค ์—์ด์ „ํŠธ์ž…๋‹ˆ๋‹ค.
service-PROJECT-NUMBER@serverless-robot-prod.iam.gserviceaccount.com
GKE Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •
๋…ธ๋“œ์˜ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์ž…๋‹ˆ๋‹ค.
PROJECT-NUMBER-compute@developer.gserviceaccount.com

์กฐ์ง ์ •์ฑ… ๊ตฌ์„ฑ์— ๋”ฐ๋ผ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํŽธ์ง‘์ž ์—ญํ• ์ด ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. iam.automaticIamGrantsForDefaultServiceAccounts ์กฐ์ง ์ •์ฑ… ์ œ์•ฝ์กฐ๊ฑด์„ ์ ์šฉํ•˜์—ฌ ์ž๋™ ์—ญํ•  ๋ถ€์—ฌ๋ฅผ ์ค‘์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. 2024๋…„ 5์›” 3์ผ ์ดํ›„์— ์กฐ์ง์„ ๋งŒ๋“  ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์ œ์•ฝ์กฐ๊ฑด์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ž๋™ ์—ญํ•  ๋ถ€์—ฌ๋ฅผ ์ค‘์ง€ํ•œ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ๋ถ€์—ฌํ•  ์—ญํ• ์„ ๊ฒฐ์ •ํ•œ ํ›„ ์ง์ ‘ ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ์ด๋ฏธ ํŽธ์ง‘์ž ์—ญํ• ์ด ์žˆ์œผ๋ฉด ํŽธ์ง‘์ž ์—ญํ• ์„ ๊ถŒํ•œ์ด ๋” ๋‚ฎ์€ ์—ญํ• ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.์„œ๋น„์Šค ๊ณ„์ • ์—ญํ• ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์ •์ฑ… ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์˜ ์˜ํ–ฅ์„ ํ™•์ธํ•œ ํ›„ ์ ์ ˆํ•œ ์—ญํ• ์„ ๋ถ€์—ฌํ•˜๊ณ  ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

Compute Engine ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•˜๋Š” VM ์ธ์Šคํ„ด์Šค์—๋Š” Artifact Registry ๊ถŒํ•œ๊ณผ ์Šคํ† ๋ฆฌ์ง€ ์•ก์„ธ์Šค ๋ฒ”์œ„๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ •์˜ ์•ก์„ธ์Šค ์ˆ˜์ค€์€ ์„œ๋น„์Šค ๊ณ„์ •์— ๋ถ€์—ฌ๋œ IAM ์—ญํ• ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋Š” ๋ฐ˜๋ฉด, VM ์ธ์Šคํ„ด์Šค์˜ ์•ก์„ธ์Šค ๋ฒ”์œ„๋Š” ์ธ์Šคํ„ด์Šค์˜ gcloud CLI ๋ฐ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง„ ์š”์ฒญ์˜ ๊ธฐ๋ณธ OAuth ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ก์„ธ์Šค ๋ฒ”์œ„๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋กœ ์ธ์ฆํ•  ๋•Œ API ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ถ”๊ฐ€๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Compute Engine์€ ๋‹ค์Œ ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์€ VM ์ธ์Šคํ„ด์Šค์˜ ID์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ์—๋Š” @developer.gserviceaccount.com ์„œํ”ฝ์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • ์ด ๋™์ž‘์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— IAM ๊ธฐ๋ณธ ํŽธ์ง‘์ž ์—ญํ• ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ๋งŒ๋“œ๋Š” ์ธ์Šคํ„ด์Šค์—๋Š” ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•œ ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ Compute Engine ๊ธฐ๋ณธ ์•ก์„ธ์Šค ๋ฒ”์œ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํŽธ์ง‘์ž ์—ญํ• ์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ๋ถ€์—ฌํ•˜์ง€๋งŒ read-only ์Šคํ† ๋ฆฌ์ง€ ์•ก์„ธ์Šค ๋ฒ”์œ„๋Š” ์ธ์Šคํ„ด์Šค ์„œ๋น„์Šค ๊ณ„์ •์„ ๋™์ผ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ์ €์žฅ์†Œ์—์„œ๋งŒ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋„๋ก ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์„œ๋น„์Šค ๊ณ„์ •์˜ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • VM ์„œ๋น„์Šค ๊ณ„์ •์ด ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์˜ ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • VM ์„œ๋น„์Šค ๊ณ„์ •์ด ์ €์žฅ์†Œ์—์„œ ์•„ํ‹ฐํŒฉํŠธ ์ฝ๊ธฐ ์ด์™ธ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ํ‘ธ์‹œํ•˜๊ฑฐ๋‚˜ Artifact Registry gcloud ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋Š” VM์— ํƒ€์‚ฌ ๋„๊ตฌ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ญํ• ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. VM ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ์—๋Š” @developer.gserviceaccount.com ์„œํ”ฝ์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  2. ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์ด ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  3. --scopes ์˜ต์…˜์œผ๋กœ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    1. VM ์ธ์Šคํ„ด์Šค๋ฅผ ์ค‘์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ์ค‘์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

      gcloud compute instances set-service-account INSTANCE --scopes=SCOPE
      

      SCOPE๋ฅผ ์ ์ ˆํ•œ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

      • Docker์˜ ๊ฒฝ์šฐ ๋‹ค์Œ ์˜ต์…˜์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

        • storage-ro - ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ฝ๊ธฐ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
        • storage-rw - ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
        • cloud-platform -Google Cloud ์„œ๋น„์Šค์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
      • ๋‹ค๋ฅธ ํ˜•์‹์˜ ๊ฒฝ์šฐ cloud-platform ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    3. VM ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ง€๋œ ์ธ์Šคํ„ด์Šค ์‹œ์ž‘์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Kubernetes Engine ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

GKE ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ๋…ธ๋“œ ํ’€์€ ๋‹ค์Œ ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ชจ๋‘ ์ถฉ์กฑ๋˜๋Š” ๊ฒฝ์šฐ ์ถ”๊ฐ€ ๊ตฌ์„ฑ ์—†์ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GKE ํ™˜๊ฒฝ์—์„œ ์ด๋Ÿฌํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜์ง€ ์•Š์œผ๋ฉด ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ์•ˆ๋‚ด๋Š” Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •์„ ๋…ธ๋“œ์˜ ID๋กœ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •

๋‹ค์Œ ๊ตฌ์„ฑ ์š”๊ตฌ์‚ฌํ•ญ์€ Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

  1. GKE๊ฐ€ Artifact Registry ์™ธ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žˆ์œผ๋ฉด ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ณด๋‚ด๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ์ด์™ธ์˜ ํ˜•์‹์— ๋Œ€ํ•œ ์ €์žฅ์†Œ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ฑฐ๋‚˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ gcloud ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด, ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๋…ธ๋“œ ํ’€์„ ๋งŒ๋“ค ๋•Œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. GKE์˜ ์ง€์› ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด imagePullSecrets๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •

์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •์„ ํด๋Ÿฌ์Šคํ„ฐ์˜ ID๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Artifact Registry๋ฅผ ์‹คํ–‰ ์ค‘์ธGoogle Cloud ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์— ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  2. ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๋…ธ๋“œ ํ’€์„ ๋งŒ๋“ค๋ฉด cloud-platform ์•ก์„ธ์Šค ๋ฒ”์œ„๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค.

    --scopes ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ gcloud container clusters create ๋˜๋Š” gcloud container node-pools create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ Artifact Registry์— ์‚ฌ์šฉํ•˜๋„๋ก ์ ์ ˆํ•œ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ก์„ธ์Šค ๋ฒ”์œ„ ์„ค์ •

์•ก์„ธ์Šค ๋ฒ”์œ„๋Š” Compute Engine VM์— ์Šน์ธ์„ ์ง€์ •ํ•˜๋Š” ๊ธฐ์กด ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. Artifact Registry ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด GKE ๋…ธ๋“œ์— ์Šคํ† ๋ฆฌ์ง€ ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค ๋ฒ”์œ„ ๋˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์ฝ๊ธฐ ์•ก์„ธ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋‹ค๋ฅธ ์Šคํ† ๋ฆฌ์ง€ ์•ก์„ธ์Šค ๋ฒ”์œ„๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๋…ธ๋“œ ํ’€์„ ๋งŒ๋“ค ๋•Œ๋งŒ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด ๋…ธ๋“œ์—์„œ๋Š” ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  • Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ GKE๊ฐ€ ์Šคํ† ๋ฆฌ์ง€์— ๋Œ€ํ•ด ์ฝ๊ธฐ ์ „์šฉ ์•ก์„ธ์Šค๋ฅผ ํฌํ•จํ•˜๋Š” Compute Engine ๊ธฐ๋ณธ ์•ก์„ธ์Šค ๋ฒ”์œ„๋กœ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ œ๊ณต ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ GKE๋Š” ๋Œ€๋ถ€๋ถ„์˜Google Cloud ์„œ๋น„์Šค์— ํ•„์š”ํ•œ ๋ฒ”์œ„์ธ cloud-platform ๋ฒ”์œ„๋กœ ๋…ธ๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container clusters create NAME --scopes=SCOPES

๋…ธ๋“œ ํ’€์„ ๋งŒ๋“ค ๋•Œ ์•ก์„ธ์Šค ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container node-pools create NAME --scopes=SCOPES

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

  • NAME์€ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ๋…ธ๋“œ ํ’€์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • SCOPES๋Š” ๋ถ€์—ฌํ•  ์•ก์„ธ์Šค ๋ฒ”์œ„์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

    • Docker ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ฒ”์œ„ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • storage-ro - ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•œ ์ฝ๊ธฐ ์ „์šฉ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    • storage-rw - ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ณด๋‚ด๊ฑฐ๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

    • cloud-platform -Google Cloud ์„œ๋น„์Šค์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

    • ๋‹ค๋ฅธ ์ €์žฅ์†Œ์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด cloud-platform ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ „์ฒด ๋ฒ”์œ„ ๋ชฉ๋ก์€ gcloud container clusters create ๋˜๋Š” gcloud container node-pools create ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒˆ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud container clusters create ๋ช…๋ น์–ด์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

imagePullSecret ๊ตฌ์„ฑ

imagePullSecret์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. GKE๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ Compute Engine ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ์—๋Š” @developer.gserviceaccount.com ์„œํ”ฝ์Šค๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  2. ์„œ๋น„์Šค ๊ณ„์ •์˜ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

  3. ์ €์žฅ์†Œ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ €์žฅ์†Œ์— ๊ถŒํ•œ์„ ๋ถ€์—ฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  4. ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค๋กœ artifact-registry๋ผ๋Š” imagePullSecret ๋ณด์•ˆ ๋น„๋ฐ€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    kubectl create secret docker-registry artifact-registry \
    --docker-server=https://LOCATION-docker.pkg.dev \
    --docker-email=SERVICE-ACCOUNT-EMAIL \
    --docker-username=_json_key \
    --docker-password="$(cat KEY-FILE)"
    

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

    • LOCATION์€ ์ €์žฅ์†Œ์˜ ๋ฆฌ์ „ ๋˜๋Š” ๋ฉ€ํ‹ฐ ๋ฆฌ์ „ ์œ„์น˜์ž…๋‹ˆ๋‹ค.
    • SERVICE-ACCOUNT-EMAIL์€ Compute Engine ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
    • KEY-FILE์€ ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ํŒŒ์ผ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด `key.json`์ž…๋‹ˆ๋‹ค.
  5. ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์—ฝ๋‹ˆ๋‹ค.

    kubectl edit serviceaccount default --namespace default

    Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋Š” default๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์€ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

  6. ์ƒˆ๋กœ ์ƒ์„ฑ๋œ imagePullSecret ๋ณด์•ˆ ๋น„๋ฐ€์„ ๊ธฐ๋ณธ ์„œ๋น„์Šค ๊ณ„์ •์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    imagePullSecrets:
    - name: artifact-registry
    

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

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret you created:
    imagePullSecrets:
    - name: artifact-registry
    

์ด์ œ ํ˜„์žฌ default ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ƒ์„ฑ๋˜๋Š” ๋ชจ๋“  ์ƒˆ ํฌ๋“œ์— imagePullSecret ๋ณด์•ˆ ๋น„๋ฐ€์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

Artifact Registry ์„œ๋น„์Šค ๊ณ„์ •

Artifact Registry ์„œ๋น„์Šค ์—์ด์ „ํŠธ๋Š” Google Cloud์„œ๋น„์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ Artifact Registry๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋™์ž‘ํ•˜๋Š” Google ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ๊ณ„์ • ๋ฐ ๊ถŒํ•œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Artifact Registry ์„œ๋น„์Šค ๊ณ„์ •์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

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

๊ถŒํ•œ์„ ์„ค์ •ํ•œ ํ›„ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

๋˜ํ•œ ๋‹ค์šด๋กœ๋“œ ๊ทœ์น™์œผ๋กœ ์•„ํ‹ฐํŒฉํŠธ ๋‹ค์šด๋กœ๋“œ๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.