Fleet ํŒ€ ์„ค์ •

์ด ํŽ˜์ด์ง€๋Š” ํŒ€์„ ์œ„ํ•ด Fleet ์‚ฌ์šฉ์„ ์„ค์ •ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ ค๋Š” ํ”Œ๋žซํผ ๊ด€๋ฆฌ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. FleetํŒ€ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ GKE Enterprise๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•œ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๋ฅผ ์ฝ์œผ๋ ค๋ฉด ๋จผ์ € Fleet ํŒ€ ๊ด€๋ฆฌ๋ฅผ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ์„ค์ • ๊ฐœ์š”

Google Cloud CLI, Google Cloud ์ฝ˜์†” ๋˜๋Š” Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ ํŒ€ ์„ค์ • ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ํŒ€ ์•ก์„ธ์Šค๋ฅผ ์„ค์ •ํ•  Fleet์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๋งŒ๋“ค๊ณ  ์„ค์ •์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ๊ถŒํ•œ๊ณผ API๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. (์„ ํƒ์‚ฌํ•ญ์ด์ง€๋งŒ ๊ถŒ์žฅ๋จ) Fleet ํด๋Ÿฌ์Šคํ„ฐ์—์„œ Google ๊ทธ๋ฃน์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. ํŒ€์„ ๊ตฌ์„ฑํ•  ์‚ฌ์šฉ์ž๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ํŒ€์—๋Š” Google ๊ทธ๋ฃน์Šค(๊ถŒ์žฅ) ๋˜๋Š” ๊ฐœ๋ณ„ ๊ณ„์ •์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๊ฐ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ Fleet ๋ฐ ํŒ€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์›ํ•˜๋Š” ์ˆ˜์ค€์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  5. ํŒ€์˜ ํŒ€ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  6. Fleet ๊ตฌ์„ฑ์› ํด๋Ÿฌ์Šคํ„ฐ ํ•˜๋‚˜ ์ด์ƒ(๋˜๋Š” ๋ชจ๋‘)์„ ํŒ€ ๋ฒ”์œ„์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  7. Fleet ์ˆ˜์ค€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ํŒ€ ๋ฒ”์œ„์™€ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
  8. (์„ ํƒ์‚ฌํ•ญ) ๊ตฌ์„ฑ ๋™๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes ๋ฆฌ์†Œ์Šค๋ฅผ ํŒ€ ๋ฒ”์œ„ ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ํŒ€์—์„œ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€ Connect Gateway๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Cloud CLI ์„ค์ •

Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•ด์„œ ํŒ€ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค๋”๋ผ๋„ ํ•„์š”ํ•œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋Š” ๋“ฑ Fleet์„ ์„ค์ •ํ•˜๋Š” ๋™์•ˆ ์ผ๋ถ€ ๊ธฐ๋ณธ ์š”๊ฑด์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด gcloud CLI๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud CLI ์•ŒํŒŒ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ํฌํ•จํ•˜์—ฌ ์ตœ์‹  ๋ฒ„์ „์˜ Google Cloud CLI๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. FleetํŒ€ ๊ด€๋ฆฌ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ฒ„์ „ 419.0.0 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Google Cloud์— ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

    gcloud auth login
    
  3. ์„ ํƒํ•œ Fleet์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•  gcloud CLI๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud config set project PROJECT_ID
    

    ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด์— --project ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค๋ฅธ Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Fleet ์„ค์ •

์ƒˆ ํŒ€์„ ์„ค์ •ํ•  Fleet์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Fleet์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๊ฐ€์ด๋“œ๋ผ์ธ ๋ฐ ์˜ˆ์‹œ๋Š” Fleet ์˜ˆ์‹œ ๋ฐ Fleet ๊ณ„ํš์˜ ๊ธฐํƒ€ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์•„์ง Fleet์ด ์—†๋Š” ํ”„๋กœ์ ํŠธ์— ๋ช…๋ช…๋œ Fleet์„ ์ƒˆ๋กœ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋จผ์ € Google Cloud CLI๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  gcloud container fleet create \
    --display-name=NAME \
    --project=FLEET_HOST_PROJECT_ID

display-name์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๋ณธ ํ‘œ์‹œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ Fleet์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ IAM ์—ญํ• 

Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— roles/owner๊ฐ€ ์—†์œผ๋ฉด ํŒ€ ๋ฒ”์œ„์™€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด roles/gkehub.admin์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์†Œ์œ ์ž๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์—ญํ• ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member user:USER_EMAIL_ADDRESS \
    --role='roles/gkehub.admin'

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

Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— GKE Enterprise API๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ํ•„์ˆ˜ API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

gcloud services enable --project=PROJECT_ID \
   gkehub.googleapis.com \
   container.googleapis.com \
   connectgateway.googleapis.com \
   cloudresourcemanager.googleapis.com \
   iam.googleapis.com \
   anthos.googleapis.com

Fleet ํŒ€ ๊ด€๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ GKE Enterprise API๋ฅผ ์ค‘์ง€ํ•˜๋ฉด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๊ณ„์† ์ž‘๋™ํ•˜์ง€๋งŒ ํŒ€ ๋ฒ”์œ„ ๋˜๋Š” Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Google ๊ทธ๋ฃน์Šค๋กœ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์œ„ํ•ด ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ

์ถ”๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ ์—†์ด RBAC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์‚ฌ์šฉ์ž๋ณ„๋กœ Fleet ๊ตฌ์„ฑ์› ํด๋Ÿฌ์Šคํ„ฐ์— ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ํŒ€ Google ๊ทธ๋ฃน์˜ ๋ฉค๋ฒ„์‹ญ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ์„ ๊ธฐ์ค€์œผ๋กœ ์Šน์ธํ•˜๋ฉด ๊ณ„์ •๋งˆ๋‹ค ๋ณ„๋„์˜ ์Šน์ธ์„ ์„ค์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ์ •์ฑ…์„ ๋ณด๋‹ค ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ณ  ๊ฐ์‚ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŒ€์— ๊ฐ€์ž…ํ•˜๊ฑฐ๋‚˜ ํƒˆํ‡ดํ•  ๋•Œ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์ง์ ‘ ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ฐ€์ด๋“œ์— ๋”ฐ๋ผ ํŒ€ ๋ฒ”์œ„์— ํ• ๋‹นํ•˜๋ ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์œ„ํ•ด Google ๊ทธ๋ฃน์Šค ๋ฐ Connect Gateway๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ ํŒ€ ์„ค์ •

๋‹ค์Œ ์•ˆ๋‚ด์—์„œ๋Š” ํŒ€์˜ ์ƒˆ ํŒ€ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํŒ€ ์•ก์„ธ์Šค ๊ถŒํ•œ ์„ ํƒ

๋จผ์ € ํŒ€์„ ๊ตฌ์„ฑํ•  ์‚ฌ์šฉ์ž๋ฅผ ๊ฒฐ์ •ํ•˜๊ฑฐ๋‚˜ ์ฐพ์Šต๋‹ˆ๋‹ค. ํŒ€ ์„ค์ •์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์€ Google Cloud ์ฝ˜์†”์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณด๊ณ  ํŒ€ ๋ฒ”์œ„ ์ „์ฒด์—์„œ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ Fleet์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒ€ ๊ตฌ์„ฑ์›์˜ ์—ญํ• ์— ๋”ฐ๋ผ ํŒ€ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ถŒํ•œ(gkehub.ScopeAdmin ๋˜๋Š” gkehub.ScopeEditor์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)์„ ์œ„์ž„ํ•˜๊ฑฐ๋‚˜ RBAC ์—ญํ•  ๋ฐ”์ธ๋”ฉ์„ ์—…๋ฐ์ดํŠธํ•˜๋„๋ก ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(gkehub.ScopeAdmin๋งŒ ํ•ด๋‹น). ์ด ์„ค์ •์„ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด FleetํŒ€ ๊ด€๋ฆฌ๋Š” ํŒ€ ๋ฒ”์œ„ ๊ด€๋ฆฌ์ž, ํŽธ์ง‘์ž ๋˜๋Š” ๋ทฐ์–ด๊ฐ€ ํ•ด๋‹น ๋ฒ”์œ„์—์„œ ์ž‘์—…ํ•  ๋•Œ ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ์ „์ฒด IAM ๋ฐ Kubernetes RBAC ๊ถŒํ•œ ์ง‘ํ•ฉ์„ ํฌํ•จํ•˜์—ฌ ์„ธ ๊ฐ€์ง€ ์ปค์Šคํ…€ ๊ถŒํ•œ ์บ๋ฆญํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ํ›„ ๋‹ค์Œ ์„น์…˜์˜ ์„ค๋ช…๋Œ€๋กœ ํŒ€์„ ์„ค์ •ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์บ๋ฆญํ„ฐ๋ฅผ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ๊ฐ ์บ๋ฆญํ„ฐ์— ๋ถ€์—ฌ๋˜๋Š” ๊ฐ ์œ ํ˜•์˜ ๊ถŒํ•œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์„ค๋ช… ์œ ํ˜• ๋ฒ”์œ„ ๊ด€๋ฆฌ์ž ์บ๋ฆญํ„ฐ ๋ฒ”์œ„ ํŽธ์ง‘์ž ์บ๋ฆญํ„ฐ ๋ฒ”์œ„ ๋ทฐ์–ด ์บ๋ฆญํ„ฐ

ํŒ€ ๋ฒ”์œ„ ๋ฐ ํ•ด๋‹น ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์˜ IAM ๋ฐ”์ธ๋”ฉ roles/gkehub.ScopeAdmin roles/gkehub.ScopeEditor roles/gkehub.ScopeViewer

์ธก์ •ํ•ญ๋ชฉ, ์žฅ๊ธฐ ์‹คํ–‰ ์ž‘์—…, Connect ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํฌํ•จํ•œ Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ IAM ๋ฐ”์ธ๋”ฉ roles/gkehub.ScopeEditorProjectLevel roles/gkehub.ScopeEditorProjectLevel roles/gkehub.ScopeViewerProjectLevel

ํŒ€ ๋ฒ”์œ„์˜ ๋กœ๊ทธ ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ IAM ๋ฐ”์ธ๋”ฉ(์•ก์„ธ์Šค๋˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ๋ฒ„ํ‚ท ์ด๋ฆ„์ธ ์กฐ๊ฑด ํฌํ•จ)์ž…๋‹ˆ๋‹ค. roles/logging.viewAccessor roles/logging.viewAccessor roles/logging.viewAccessor

๋ฒ”์œ„์˜ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด Kubernetes ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ž…๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ ์šฉ๋˜๋Š” ๋ฒ”์œ„์˜ RBAC ๋ฐ”์ธ๋”ฉ์ž…๋‹ˆ๋‹ค. Kubernetes ๊ธฐ๋ณธ ์—ญํ• : ๊ด€๋ฆฌ์ž Kubernetes ๊ธฐ๋ณธ ์—ญํ• : ์ˆ˜์ • Kubernetes ๊ธฐ๋ณธ ์—ญํ• : ๋ทฐ

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

์ด๋Ÿฌํ•œ ์บ๋ฆญํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ์™„์ „ํžˆ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ IAM(gcloud container fleet scopes add-iam-policy-binding ์‚ฌ์šฉ) ๋ฐ RBAC(gcloud container fleet scopes rbacrolebindings create ์‚ฌ์šฉ) ์—ญํ• ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ”์ธ๋”ฉ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๋ช…๋ น์–ด๋Š” Google Cloud CLI ์ฐธ๊ณ  ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

ํŒ€ ๋ฒ”์œ„ ์„ค์ •

gcloud

ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ

Fleet์—์„œ ์ƒˆ ํŒ€ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ SCOPE_NAME์€ ์ƒˆ ๋ฒ”์œ„์— ๋Œ€ํ•ด ์„ ํƒํ•œ ๊ณ ์œ  ์‹๋ณ„ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

gcloud container fleet scopes create SCOPE_NAME

ํŒ€ ๋ฒ”์œ„์— ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๊ฐ€

๊ธฐ์กด Fleet ๊ตฌ์„ฑ์›๋งŒ ํŒ€ ๋ฒ”์œ„์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์•ˆ๋‚ด์—์„œ๋Š” ๋ฒ”์œ„์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ด๋ฏธ Fleet ๋ฉค๋ฒ„๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. Fleet์— ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Fleet ๋งŒ๋“ค๊ธฐ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ์œ ํ˜•์— ํ•ด๋‹นํ•˜๋Š” ์•ˆ๋‚ด์— ๋”ฐ๋ผ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์•ž์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์ƒˆ๋กœ ๋“ฑ๋ก๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•ก์„ธ์Šค ์ œ์–ด์šฉ Google ๊ทธ๋ฃน์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Fleet ๊ตฌ์„ฑ์› ํด๋Ÿฌ์Šคํ„ฐ๋Š” Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์—ฌ๋Ÿฌ ํŒ€ ๋ฒ”์œ„์— ์ œํ•œ ์—†์ด ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํŒ€ ๋ฒ”์œ„์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet memberships bindings create BINDING_NAME \
  --membership MEMBERSHIP_NAME \
  --scope  SCOPE_NAME \
  --location MEMBERSHIP_LOCATION

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

  • BINDING_NAME: ํด๋Ÿฌ์Šคํ„ฐ์™€ ํŒ€ ๋ฒ”์œ„ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. MEMBERSHIP_NAME-SCOPE_NAME์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • MEMBERSHIP_NAME: Fleet ๋‚ด์˜ ํด๋Ÿฌ์Šคํ„ฐ ๊ณ ์œ  ์‹๋ณ„์ž(์ผ๋ฐ˜์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„)์ž…๋‹ˆ๋‹ค.
  • (์„ ํƒ์‚ฌํ•ญ) MEMBERSHIP_LOCATION: ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฉค๋ฒ„์‹ญ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์ƒ๋žตํ•  ๊ฒฝ์šฐ ๊ฐ’์€ ํด๋Ÿฌ์Šคํ„ฐ ๋“ฑ๋ก ์‹œ ๊ธฐ๋ณธ๊ฐ’์ธ global์ž…๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ

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

gcloud container fleet scopes namespaces create NAMESPACE_NAME --scope=SCOPE_NAME

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

  • NAMESPACE_NAME: Fleet ๋‚ด์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์„ ํƒํ•œ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. NAMESPACE_NAME์ด Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ง€์ • ์ œํ•œ์‚ฌํ•ญ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • SCOPE_NAME: ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ํŒ€ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.

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

ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

๊ทธ๋Ÿฐ ํ›„ ๊ด€๋ จ Google ๊ทธ๋ฃน์Šค์— ์ƒˆ ๋ฒ”์œ„์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์ ์ ˆํ•œ IAM ๋ฐ RBAC ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

gcloud alpha container fleet scopes add-app-operator-binding SCOPE_ID
        --role=ROLE --group=TEAM_EMAIL --project PROJECT_ID
  • PROJECT_ID๋Š” Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์ž…๋‹ˆ๋‹ค.
  • TEAM_EMAIL์€ ํŒ€์˜ Google ๊ทธ๋ฃน ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
  • SCOPE_ID๋Š” ์ƒ์„ฑ๋œ ๋ฒ”์œ„์˜ ID์ž…๋‹ˆ๋‹ค.
  • ROLE์€ ๊ทธ๋ฃน์ด ํŒ€ ๋ฒ”์œ„์— ์†ํ•˜๋Š” ๊ถŒํ•œ ์บ๋ฆญํ„ฐ์ž…๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐ’์€ admin(๋ฒ”์œ„ ๊ด€๋ฆฌ์ž), edit(๋ฒ”์œ„ ํŽธ์ง‘์ž) ๋˜๋Š” view(๋ฒ”์œ„ ๋ทฐ์–ด)์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ”์œ„์— ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ๋Œ€์‹  ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ USER_EMAIL์€ ์‚ฌ์šฉ์ž์˜ Google ID ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

gcloud alpha container fleet scopes add-app-operator-binding SCOPE_ID
        --role=ROLE --user=USER_EMAIL --project PROJECT_ID

์ฝ˜์†”

ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ

  1. Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ Google Cloud ์ฝ˜์†”์˜ ํŒ€ ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ํŒ€์œผ๋กœ ์ด๋™

  2. ํŽ˜์ด์ง€ ์ƒ๋‹จ์—์„œ ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ํŒ€ ๊ธฐ๋ณธ์‚ฌํ•ญ ํŽ˜์ด์ง€์—์„œ ์ด๋ฆ„์— ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ณ ์œ  ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ํŒ€ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ์ด ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  4. ๋ฒ”์œ„์— ํŒ€ ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํŒ€ ๋ฉค๋ฒ„ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    • ์œ ํ˜•์œผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ์„ ํƒํ•ด์„œ ๊ฐœ๋ณ„ ํŒ€ ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ฃน์„ ์„ ํƒํ•ด์„œ Google ๊ทธ๋ฃน์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค(๊ถŒ์žฅ๋จ).
    • ์‚ฌ์šฉ์ž ๋˜๋Š” ๊ทธ๋ฃน์— ๋Œ€ํ•ด ํŒ€ ๋ฉค๋ฒ„ ๋˜๋Š” ๊ทธ๋ฃน์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์—ญํ• ์—์„œ ๋ฒ”์œ„ ๊ด€๋ฆฌ์ž, ๋ฒ”์œ„ ํŽธ์ง‘์ž, ๋ฒ”์œ„ ๋ทฐ์–ด๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํŒ€ ์•ก์„ธ์Šค ๊ถŒํ•œ ์„ ํƒ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ๋ฒ”์œ„์™€ Fleet์—์„œ ์—ฌ๋Ÿฌ IAM ๋ฐ RBAC ๋ฐ”์ธ๋”ฉ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. ์ด ๋‹จ๊ณ„์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ๋ฐ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ํŒ€ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ ์„น์…˜์„ ๊ณ„์†ํ•ด์„œ ๋ฒ”์œ„์— ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์— ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๊ฐ€

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

Fleet ๊ตฌ์„ฑ์› ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์—ฌ๋Ÿฌ ํŒ€ ๋ฒ”์œ„์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์—ฌ๋Ÿฌ ํŒ€์ด ๊ฐ™์€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์›Œํฌ๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒ€ ๊ธฐ๋ณธ์‚ฌํ•ญ ํŽ˜์ด์ง€์—์„œ ๋ฒ”์œ„์— ํŒ€ ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•œ ํ›„ ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋Ÿฌ์Šคํ„ฐ ํŽ˜์ด์ง€์—์„œ ์ด ํŒ€ ๋ฒ”์œ„์™€ ์—ฐ๊ฒฐํ•  Fleet ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ๋“œ๋กญ๋‹ค์šด์—์„œ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ™•์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ

ํŒ€ ๋ฉค๋ฒ„๊ฐ€ ๋‹ค๋ฅธ Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ๊ฐ™์€ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์•„์ง Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํŒ€ ๋ฒ”์œ„์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

Terraform

์ด ์„น์…˜์—์„œ๋Š” Terraform์„ ์‚ฌ์šฉํ•ด์„œ ์ƒˆ ํŒ€์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ๊ธฐํƒ€ ์˜ˆ์‹œ๋Š” ๋‹ค์Œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ

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

  resource "google_gke_hub_scope" "TF_SCOPE_RESOURCE_NAME" {
    scope_id = "SCOPE_NAME"
  }

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

  • TF_SCOPE_RESOURCE_NAME: ์ด ๋ธ”๋ก์—์„œ ์ƒ์„ฑ๋œ Terraform google_gke_hub_scope ๋ฆฌ์†Œ์Šค๋ฅผ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์„ ํƒํ•˜๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • SCOPE_NAME: ํŒ€ ๋ฒ”์œ„์˜ ๊ณ ์œ ํ•œ ์‹๋ณ„ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๋ฒ”์œ„์— ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๊ฐ€

๊ธฐ์กด Fleet ๊ตฌ์„ฑ์›๋งŒ ํŒ€ ๋ฒ”์œ„์— ์ถ”๊ฐ€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Fleet์— ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Fleet ๋งŒ๋“ค๊ธฐ์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ์œ ํ˜•์— ํ•ด๋‹นํ•˜๋Š” ์•ˆ๋‚ด์— ๋”ฐ๋ผ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์•ž์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ์ƒˆ๋กœ ๋“ฑ๋ก๋œ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•ก์„ธ์Šค ์ œ์–ด์šฉ Google ๊ทธ๋ฃน์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

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

  resource "google_gke_hub_membership_binding" "TF_MEMBERSHIP_BINDING_RESOURCE_NAME" {
    membership_binding_id = "BINDING_NAME"
    scope = SCOPE_NAME
    membership_id = MEMBERSHIP_NAME
    location = "MEMBERSHIP_LOCATION"
  }

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

  • TF_MEMBERSHIP_BINDING_RESOURCE_NAME: ์ด ๋ธ”๋ก์œผ๋กœ ์ƒ์„ฑ๋œ google_gke_hub_membership_binding ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • BINDING_NAME: ํด๋Ÿฌ์Šคํ„ฐ์™€ ๋ฒ”์œ„ ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. MEMBERSHIP_NAME-SCOPE_NAME์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • SCOPE_NAME: ํŒ€ ๋ฒ”์œ„์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • MEMBERSHIP_NAME: Fleet ๋‚ด์˜ ํด๋Ÿฌ์Šคํ„ฐ ๊ณ ์œ  ์‹๋ณ„์ž(์ผ๋ฐ˜์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„)์ž…๋‹ˆ๋‹ค.
  • MEMBERSHIP_LOCATION: ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ฉค๋ฒ„์‹ญ ์œ„์น˜์ž…๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ

ํŒ€ ๋ฉค๋ฒ„๊ฐ€ ๋‹ค๋ฅธ Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ๊ฐ™์€ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๊ธฐ์กด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜จ๋ณด๋”ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์•„์ง Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ํŒ€ ๋ฒ”์œ„์— ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๊ตฌ์„ฑ์—์„œ ๋‹ค์Œ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  resource "google_gke_hub_namespace" "TF_NAMESPACE_RESOURCE_NAME" {
    scope_namespace_id = "NAMESPACE_NAME"
    scope_id = SCOPE_NAME
    scope = SCOPE_NAME
  }

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

  • TF_NAMESPACE_RESOURCE_NAME: ์ด ๋ธ”๋ก์œผ๋กœ ์ƒ์„ฑ๋œ google_gke_hub_namespace ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • NAMESPACE_NAME: Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์„ ํƒํ•œ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์ด Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ง€์ • ์ œํ•œ์‚ฌํ•ญ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • SCOPE_NAME: Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ํŒ€ ๋ฒ”์œ„์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

๋ฒ”์œ„ ์•ก์„ธ์Šค ๊ถŒํ•œ ๋ถ€์—ฌ

์ด์ „ ์„น์…˜์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ IAM ๋ฐ RBAC ๊ถŒํ•œ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๋Š” ๊ถŒํ•œ ์บ๋ฆญํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฐœ๋ณ„ ์‚ฌ์šฉ์ž์—๊ฒŒ ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  module "TF_SCOPE_RESOURCE_NAME_USER_EMAIL" {
    source           = "terraform-google-modules/kubernetes-engine/google//modules/fleet-app-operator-binding"

    scope_id = "SCOPE_NAME"
    user = "USER_EMAIL"
    role = "ROLE"
  }

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

  • TF_SCOPE_RESOURCE_NAME: ๋ฒ”์œ„์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • BINDING_NAME: ์ด ๋ฐ”์ธ๋”ฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • SCOPE_NAME: ํŒ€ ๋ฒ”์œ„์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • USER_EMAIL: ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.
  • ROLE: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌํ•  ์บ๋ฆญํ„ฐ์ž…๋‹ˆ๋‹ค. ADMIN, EDIT, VIEW ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google ๊ทธ๋ฃน์— ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ ค๋ฉด ์•ž์˜ ๊ตฌ์„ฑ์—์„œ user ๋Œ€์‹  group์„ ์‚ฌ์šฉํ•˜๊ณ  ํŒ€์˜ Google ๊ทธ๋ฃน์— ๋Œ€ํ•œ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•ก์„ธ์Šค

์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด ํŒ€ ๊ตฌ์„ฑ์›์ด ๊ด€๋ จ ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ฒ”์œ„ ๋‚ด์˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Connect Gateway๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Fleet ๊ตฌ์„ฑ์› ํด๋Ÿฌ์Šคํ„ฐ์˜ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ MEMBERSHIP_NAME์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ Fleet ๋ฉค๋ฒ„์‹ญ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

   gcloud container fleet memberships get-credentials  MEMBERSHIP_NAME

์ž์„ธํ•œ ๋‚ด์šฉ์€ Connect ๊ฒŒ์ดํŠธ์›จ์ด ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŒ€ ๋ฒ”์œ„ ๊ด€๋ฆฌ

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€ ๋ฒ”์œ„๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

gcloud

ํŒ€ ๋ฒ”์œ„ ๋‚˜์—ด

Fleet์˜ ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes list

ํด๋Ÿฌ์Šคํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet memberships bindings list --membership MEMBERSHIP_NAME

ํŒ€ ๋ฒ”์œ„์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ์‚ญ์ œ

๋ฒ”์œ„์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet memberships bindings delete BINDING_NAME --membership MEMBERSHIP_NAME

ํŒ€ ๋ฒ”์œ„ ์‚ญ์ œ

Fleet์—์„œ ๋ฒ”์œ„๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes delete SCOPE_NAME

Console

ํŒ€ ๋ฒ”์œ„ ๋‚˜์—ด

Fleet์˜ ๋ชจ๋“  ๋ฒ”์œ„๋ฅผ ๋ณด๋ ค๋ฉด Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ๋กœ Google Cloud ์ฝ˜์†”์—์„œ ํŒ€ ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€์œผ๋กœ ์ด๋™

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

๋น„์šฉ ์ตœ์ ํ™”๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋ณด๋‹ค ์ž์„ธํ•œ ๋น„์šฉ ๊ด€๋ จ ์‚ฌ์šฉ๋ฅ  ์ธก์ •ํ•ญ๋ชฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„ ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ

๊ฐ ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•ด ํ•ด๋‹น ๋ฒ”์œ„, ํŒ€ ๋ฉค๋ฒ„, ํŒ€ ๋ฒ”์œ„ ๋กœ๊ทธ์™€ ๊ด€๋ จ๋œ ๋ผ๋ฒจ์„ ํฌํ•จํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒ€ ํŽ˜์ด์ง€์—์„œ ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋Š” ํŒ€ ๋ฒ”์œ„๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒ€ ํƒญ์—์„œ ๋ฒ”์œ„ ๋ผ๋ฒจ์„ ๋ณด๊ณ  ํŒ€ ๋ฉค๋ฒ„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. ๋ชจ๋‹ˆํ„ฐ๋ง ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ํŒ€์˜ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋ฅ  ์ธก์ •ํ•ญ๋ชฉ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  4. ํด๋Ÿฌ์Šคํ„ฐ ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ํŒ€ ๋ฒ”์œ„์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  5. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ์ด ํŒ€ ๋ฒ”์œ„์˜ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  6. ๋กœ๊ทธ ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ํŒ€ ๋ฒ”์œ„ ๋กœ๊ทธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์—์„œ ํด๋Ÿฌ์Šคํ„ฐ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ

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

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

    ํŒ€์œผ๋กœ ์ด๋™

  2. ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋Š” ํŒ€ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ ํƒญ์— ํ˜„์žฌ ํ•ด๋‹น ๋ฒ”์œ„์— ๋ฐ”์ธ๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๋ชฉ๋ก์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

  1. ํŽ˜์ด์ง€ ์œ„์—์„œ ์ œํ’ˆ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ํด๋Ÿฌ์Šคํ„ฐ ๋“œ๋กญ๋‹ค์šด์—์„œ ๋ฒ”์œ„์— ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ํ™•์ธ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ํŒ€ ๋ฒ”์œ„ ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์—์„œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ๋ฒ”์œ„์— ํ˜„์žฌ ๋ฐ”์ธ๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ญ์ œํ•˜๋ ค๋Š” ํด๋Ÿฌ์Šคํ„ฐ ์˜†์˜ ํœด์ง€ํ†ต ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ณ  ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์‚ญ์ œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„ ์‚ญ์ œ

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

    ํŒ€์œผ๋กœ ์ด๋™

  2. ์‚ญ์ œํ•  ํŒ€ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ฒ”์œ„๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€ ์ƒ๋‹จ์—์„œ ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฒ”์œ„ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์—ฌ ์‚ญ์ œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์‚ญ์ œ๋ฅผ ๋‹ค์‹œ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ด€๋ฆฌ

gcloud

๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํŒ€ ๋ฒ”์œ„ ๋‚ด์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚˜์—ด

๋ฒ”์œ„์—์„œ fleet scopes namespaces create๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“  ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋ชจ๋‘ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes namespaces list --scope=SCOPE_NAME

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes namespaces delete NAMESPACE_NAME --scope=SCOPE_NAME

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ์ƒˆ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ: ์ด ๋ช…๋ น์–ด๊ฐ€ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•ด๋‹น ์›Œํฌ๋กœ๋“œ์™€ ํ•จ๊ป˜ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ์˜ ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑ๋œ ๋ชจ๋“  Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜จ๋ณด๋”ฉํ•œ ๊ฒฝ์šฐ: ์ด ๋ช…๋ น์–ด์—์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์˜จ๋ณด๋”ฉํ•œ ์›๋ž˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Console

ํŒ€ ๋ฒ”์œ„์—์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

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

    ํŒ€์œผ๋กœ ์ด๋™

  2. Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ํŒ€ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚˜์—ด

ํŒ€ ๋ฒ”์œ„์—์„œ ์ด ๋ฒ”์œ„์— ์ƒ์„ฑ๋œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์„ธ๋ถ€์ •๋ณด ๋ณด๊ธฐ

๊ฐ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ํ•ด๋‹น ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ์—ฐ๊ฒฐ๋œ ๋ผ๋ฒจ, ์›Œํฌ๋กœ๋“œ, ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ํ•„ํ„ฐ๋ง๋œ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํŒ€ ๋ฒ”์œ„์—์„œ ์ƒ์„ฑ๋œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์„ธ๋ถ€์ •๋ณด๋ฅผ ๋ณด๋ ค๋Š” Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ธ๋ถ€์ •๋ณด ํƒญ์—์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ๋ฒ”์œ„ ๋ผ๋ฒจ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์›Œํฌ๋กœ๋“œ๋ฅผ ๋ณด๋ ค๋ฉด ์›Œํฌ๋กœ๋“œ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    • ์›Œํฌ๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ์ด๋ฏธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋กœ ํ•„ํ„ฐ๋ง๋œ ์›Œํฌ๋กœ๋“œ์™€ ํ•ด๋‹น ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ํŒ€ ๋ฒ”์œ„์™€ ์—ฐ๊ฒฐ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋กœ๊ทธ ํƒญ์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„ Fleet ๋ฒ”์œ„ ๋กœ๊ทธ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์— Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถ”๊ฐ€

  1. ์ƒˆ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํŽ˜์ด์ง€ ์ƒ๋‹จ์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ์ƒˆ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๊ณ  ์ด๋ฆ„์ด Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ง€์ • ์ œํ•œ์‚ฌํ•ญ๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ํŒ€ ๋ฒ”์œ„ ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ

  1. ํŒ€ ๋ฒ”์œ„์—์„œ ์ƒ์„ฑ๋œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ชฉ๋ก์„ ํ‘œ์‹œํ•˜๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํƒญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ญ์ œํ•˜๋ ค๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์˜†์— ์žˆ๋Š” ํœด์ง€ํ†ต ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์—ฌ ์‚ญ์ œ๋ฅผ ํ™•์ธํ•˜๊ณ  ์‚ญ์ œ๋ฅผ ๋‹ค์‹œ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฐ๊ณผ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•œ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

  • ์ƒˆ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ: Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ์›Œํฌ๋กœ๋“œ์™€ ํ•จ๊ป˜ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ์˜ ๊ฒฐ๊ณผ๋กœ ์ƒ์„ฑ๋œ ๋ชจ๋“  Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋„ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜จ๋ณด๋”ฉํ•œ ๊ฒฝ์šฐ: Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์˜จ๋ณด๋”ฉํ•œ ์›๋ž˜ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์—…๋ฐ์ดํŠธ

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ์ด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํŒ€ ๋ฒ”์œ„์—์„œ ์ƒˆ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒ€ ์•ก์„ธ์Šค ๊ด€๋ฆฌ

gcloud

ํŒ€ ๊ตฌ์„ฑ์› ๋‚˜์—ด

add-app-operator-binding ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ๋ชจ๋“  ํŒ€ ๊ตฌ์„ฑ์›์„ ๊ถŒํ•œ ์บ๋ฆญํ„ฐ์™€ ํ•จ๊ป˜ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud alpha container hub scopes list-app-operator-bindings SCOPE_NAME

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

  • SCOPE_NAME: ํŒ€ ๋ฒ”์œ„์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.

ํŒ€ ๊ตฌ์„ฑ์› ์‚ญ์ œ

add-app-operator-binding์œผ๋กœ ๋ถ€์—ฌ๋˜๋Š” ํŒ€ ๊ตฌ์„ฑ์›์˜ ๋ฒ”์œ„ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud alpha container hub scopes remove-app-operator-binding SCOPE_NAME \
   --group=TEAM_EMAIL

๋˜๋Š”

gcloud alpha container hub scopes remove-app-operator-binding SCOPE_NAME \
   --user=USER_EMAIL

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

  • SCOPE_NAME: ํŒ€ ๋ฒ”์œ„์˜ ๊ณ ์œ  ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
  • TEAM_EMAIL ๋˜๋Š” USER_EMAIL: ํŒ€์—์„œ ์‚ญ์ œํ•  ๊ทธ๋ฃน ๋˜๋Š” ์‚ฌ์šฉ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

rbacrolebindings create ๋ช…๋ น์–ด๋กœ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ๋ถ€์—ฌ๋œ ๊ฒฝ์šฐ ๋Œ€์‹  rbacrolebindings delete ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒ€ ๊ตฌ์„ฑ์›์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„ ์•ก์„ธ์Šค ์—…๋ฐ์ดํŠธ

ํŒ€ ๋ฒ”์œ„ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธ(์˜ˆ: ํŒ€ ๊ตฌ์„ฑ์›์— ๋‹ค๋ฅธ ์—ญํ•  ๋ถ€์—ฌ ๋˜๋Š” ๊ทธ๋ฃน ์ด๋ฉ”์ผ ์ฃผ์†Œ ์—…๋ฐ์ดํŠธ)ํ•˜๋ ค๋ฉด ์ด์ „ ์„น์…˜์—์„œ ์„ค๋ช…ํ•œ ๋Œ€๋กœ ๋ฒ”์œ„์—์„œ ํŒ€ ๊ตฌ์„ฑ์›์„ ์‚ญ์ œํ•œ ๋‹ค์Œ ์ƒˆ๋กœ์šด ์„ธ๋ถ€์ •๋ณด๋กœ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋‹ค์‹œ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

rbacrolebindings create ๋ช…๋ น์–ด๋กœ ํŒ€ ๊ตฌ์„ฑ์›์—๊ฒŒ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ๊ฒฝ์šฐ ๋Œ€์‹  rbacrolebindings update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์„ฑ์›์˜ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

ํŒ€ ๊ตฌ์„ฑ์› ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ

ํŒ€ ๋ฒ”์œ„์—์„œ ํŒ€ ๊ตฌ์„ฑ์›์„ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

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

    ํŒ€์œผ๋กœ ์ด๋™

  2. ๋ฉค๋ฒ„๋ฅผ ๊ด€๋ฆฌํ•˜๋ ค๋Š” ํŒ€ ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„์— ์ƒˆ ํŒ€ ๋ฉค๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํŽ˜์ด์ง€ ์ƒ๋‹จ์—์„œ ํŒ€ ๋ฉค๋ฒ„ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ ์„น์…˜์— ์„ค๋ช…๋œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  2. ํŒ€ ๋ฒ”์œ„ ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ฒ”์œ„์—์„œ ํŒ€ ๋ฉค๋ฒ„๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ํŒ€ ํƒญ์—์„œ ํŒ€ ๋ฒ”์œ„๋กœ๋ถ€ํ„ฐ ์‚ญ์ œํ•  ํŒ€ ๋ฉค๋ฒ„ ์˜†์˜ ํœด์ง€ํ†ต ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์‚ญ์ œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†”์—์„œ๋Š” ํŒ€ ๋ฉค๋ฒ„์˜ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ ๋ฒ”์œ„ ์•ก์„ธ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด(์˜ˆ: ํŒ€ ๋ฉค๋ฒ„์— ๋‹ค๋ฅธ ์—ญํ•  ๋ถ€์—ฌ ๋˜๋Š” ๊ทธ๋ฃน ์ด๋ฉ”์ผ ์ฃผ์†Œ ์—…๋ฐ์ดํŠธ) ๋ฒ”์œ„์—์„œ ํŒ€ ๋ฉค๋ฒ„๋ฅผ ์‚ญ์ œํ•˜๊ณ  ์ƒˆ๋กœ์šด ์„ธ๋ถ€์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„ ์ง€์ • ์ œํ•œ์‚ฌํ•ญ

๋‹ค์Œ ์ด๋ฆ„์€ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์œผ๋ฉฐ ํŒ€ ๋ฒ”์œ„์—์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ์ด ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค.

  • default
  • kube-system
  • gke-connect
  • kube-node-lease
  • kube-public
  • istio-system
  • gatekeeper-system
  • asm-system
  • config-management-system

๋ผ๋ฒจ ๊ด€๋ฆฌ

๋ฒ”์œ„๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋„๋ก Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•ด์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ฐ ํŒ€ ๋ฒ”์œ„์— ๋Œ€ํ•ด ๋ผ๋ฒจ์„ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ€ ๋ฒ”์œ„์— ์ถ”๊ฐ€๋œ ๋ผ๋ฒจ์€ ํ•ด๋‹น ๋ฒ”์œ„์˜ ๋ชจ๋“  Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ƒ์†๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ•ด๋‹น ๋ฒ”์œ„์˜ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋ชจ๋“  Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์ง์ ‘ ์ถ”๊ฐ€๋œ ๋ผ๋ฒจ์€ ํ•ด๋‹น Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—๋งŒ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ํŒ€ ๋ฒ”์œ„ ๋ผ๋ฒจ๊ณผ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ผ๋ฒจ์˜ ํ‚ค๊ฐ€ ๋™์ผํ•˜๋ฉด ํŒ€ ๋ฒ”์œ„ ๋ผ๋ฒจ์ด ์šฐ์„  ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ‚ค-๊ฐ’ ์Œ ๋ชฉ๋ก์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—ฌ๋Ÿฌ ํ‚ค-๊ฐ’ ์Œ์„ ํ•œ ๋ฒˆ์— ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ผ๋ฒจ ๊ด€๋ฆฌ

๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•ด์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋งŒ๋“ค๊ธฐ

๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•ด์„œ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes namespaces create NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --namespace-labels KEY=VALUE

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

  • NAMESPACE_NAME: Fleet ๋‚ด์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋Œ€ํ•ด ์„ ํƒํ•œ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • SCOPE_NAME: ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ํŒ€ ๋ฒ”์œ„์ž…๋‹ˆ๋‹ค.
  • KEY: ๋ผ๋ฒจ์˜ ํ‚ค-๊ฐ’ ์Œ์— ๋Œ€ํ•œ ํ‚ค์ž…๋‹ˆ๋‹ค.
  • VALUE: ๋ผ๋ฒจ์˜ ํ‚ค-๊ฐ’ ์Œ์— ๋Œ€ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ผ๋ฒจ ์ถ”๊ฐ€ ๋˜๋Š” ์—…๋ฐ์ดํŠธ

๊ธฐ์กด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes namespaces update NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --update-namespace-labels KEY=VALUE

Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ผ๋ฒจ ์‚ญ์ œ

ํŠน์ • Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ผ๋ฒจ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes namespaces update NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --remove-namespace-labels KEY

KEY๋ฅผ ์‚ญ์ œํ•  ๋ผ๋ฒจ์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ‚ค ๋ชฉ๋ก์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋ชจ๋“  Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋ผ๋ฒจ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes namespaces update NAMESPACE_NAME \
    --scope SCOPE_NAME \
    --clear-namespace-labels

ํŒ€ ๋ฒ”์œ„ ๋ผ๋ฒจ ๊ด€๋ฆฌ

๋ผ๋ฒจ๋กœ ํŒ€ ๋ฒ”์œ„ ๋งŒ๋“ค๊ธฐ

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

gcloud container fleet scopes create SCOPE_NAME \
    --namespace-labels KEY=VALUE

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

  • SCOPE_NAME: ์ƒˆ ํŒ€ ๋ฒ”์œ„์— ์„ ํƒํ•œ ๊ณ ์œ ํ•œ ์‹๋ณ„ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • KEY: ๋ผ๋ฒจ์˜ ํ‚ค-๊ฐ’ ์Œ์— ๋Œ€ํ•œ ํ‚ค์ž…๋‹ˆ๋‹ค.
  • VALUE: ๋ผ๋ฒจ์˜ ํ‚ค-๊ฐ’ ์Œ์— ๋Œ€ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด ํŒ€ ๋ฒ”์œ„์˜ ๋ผ๋ฒจ ์ถ”๊ฐ€ ๋˜๋Š” ์—…๋ฐ์ดํŠธ

๊ธฐ์กด ๋ฒ”์œ„์˜ ๋ผ๋ฒจ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes update SCOPE_NAME \
    --update-namespace-labels KEY=VALUE

ํŒ€ ๋ฒ”์œ„ ๋ผ๋ฒจ ์‚ญ์ œ

ํŠน์ • ๋ผ๋ฒจ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes update SCOPE_NAME \
     --remove-namespace-labels KEY

KEY๋ฅผ ์‚ญ์ œํ•  ๋ผ๋ฒจ์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ‚ค ๋ชฉ๋ก์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋ชจ๋“  ๋ผ๋ฒจ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud container fleet scopes update SCOPE_NAME \
    --clear-namespace-labels

๋ฌธ์ œ ํ•ด๊ฒฐ

FleetํŒ€ ๊ด€๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋งŒ๋“ค ์ˆ˜ ์—†์œผ๋ฉด GKE Enterprise API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. FleetํŒ€ ๊ด€๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•œ ํ›„ Fleet ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ GKE Enterprise API๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ฉด ๋‹ค์Œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • ์ƒ์„ฑ๋œ ๋ชจ๋“  ํŒ€ ๋ฒ”์œ„์™€ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” ์ •์ƒ์ ์œผ๋กœ ๊ณ„์† ์ž‘๋™ํ•˜์ง€๋งŒ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ์กด ํŒ€ ๋ฒ”์œ„์™€ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ƒˆ ํŒ€ ๋ฒ”์œ„์™€ Fleet ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

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