์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) Linux ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ


์ด ํŽ˜์ด์ง€์—์„œ๋Š” Google Kubernetes Engine(GKE)์„ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) Linux ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) Windows ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐœ์š”

์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํด๋Ÿฌ์Šคํ„ฐ ๋˜๋Š” ์˜๊ตฌ ์Šคํ† ๋ฆฌ์ง€์— ๋ฐ์ดํ„ฐ ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ๋Œ€์‹  ๋ฐ์ดํ„ฐ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ๊ฐ€ ํด๋ผ์ด์–ธํŠธ์— ์œ ์ง€๋˜๋ฏ€๋กœ, ์ƒํƒœ ๋น„์ถ”์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ™•์žฅ์„ฑ์ด ๋” ๋›ฐ์–ด๋‚ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋ŸฐํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ƒํƒœ ๋น„์ถ”์ ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ณต์ œ๋ณธ์„ ๋ฐฐํฌํ•˜์—ฌ ํ™•์žฅ์„ฑ์„ ๋†’์ด๊ณ , ์ˆ˜์š”๊ฐ€ ๋‚ฎ์„ ๋•Œ ๊ทœ๋ชจ๋ฅผ ์ถ•์†Œํ•˜๊ณ , ๋ณต์ œ๋ณธ์— ๊ณ ์œ  ID๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Kubernetes๋Š” ๋ฐฐํฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹จ์ผ์˜ ๋น„๊ณ ์œ  ํฌ๋“œ๋กœ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•  ํฌ๋“œ ์ˆ˜, ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ ๋ฒ„์ „, ๋ผ๋ฒจ์„ ์ง€์ •ํ•  ํฌ๋“œ ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐํฌ์˜ ํฌ๋“œ ์‚ฌ์–‘์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์›ํ•˜๋Š” ์ƒํƒœ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์Šคํ…Œ์ดํŠธ๋ฆฌ์Šค(Stateless) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์˜๊ตฌ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , StatefulSets๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ์— ๊ณ ์œ  ID๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์Šคํ…Œ์ดํŠธํ’€(Stateful) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ๋Œ€์กฐ๋ฉ๋‹ˆ๋‹ค.

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

์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๋‹ค์Œ ํƒœ์Šคํฌ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • Google Kubernetes Engine API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Google Kubernetes Engine API ์‚ฌ์šฉ ์„ค์ •
  • ์ด ํƒœ์Šคํฌ์— Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด gcloud CLI๋ฅผ ์„ค์น˜ํ•œ ํ›„ ์ดˆ๊ธฐํ™”ํ•˜์„ธ์š”. ์ด์ „์— gcloud CLI๋ฅผ ์„ค์น˜ํ•œ ๊ฒฝ์šฐ gcloud components update๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ตœ์‹  ๋ฒ„์ „์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด Artifact Registry์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  • GKE๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, GKE API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜๊ณ  ์ œํ’ˆ์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ๋น ๋ฅธ ์‹œ์ž‘์„ ์™„๋ฃŒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ์‹ฌ์ธต ๋ถ„์„

๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฐํฌ๋Š” Artifact Registry์— ์ €์žฅ๋œ hello-app ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๋Š” run=my-app์œผ๋กœ ๋ผ๋ฒจ์ด ์ง€์ •๋œ 3๊ฐœ์˜ ๋ณต์ œ๋œ ํฌ๋“œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      run: my-app
  template:
    metadata:
      labels:
        run: my-app
    spec:
      containers:
      - name: hello-app
        image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

์ด ์˜ˆ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋ฉ๋‹ˆ๋‹ค.

  • .spec.replicas: ๋ฐฐํฌ์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ๋ณต์ œ๋œ ํฌ๋“œ ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • .spec.template.metadata.labels: ๋ฐฐํฌ์—์„œ ํฌ๋“œ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฐ ํฌ๋“œ์— ์ง€์ •๋œ ๋ผ๋ฒจ์ž…๋‹ˆ๋‹ค.
  • .spec.template.spec: ๊ฐ ํฌ๋“œ์˜ ์‹คํ–‰ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ํฌ๋“œ ์‚ฌ์–‘์ž…๋‹ˆ๋‹ค. spec.containers์—๋Š” ๊ฐ ํฌ๋“œ์—์„œ ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ์˜ ์ด๋ฆ„๊ณผ ์‹คํ–‰ํ•  ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

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

๋ฐฐํฌ ๋งŒ๋“ค๊ธฐ

๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • Google Cloud ์ฝ˜์†”์˜ ์›Œํฌ๋กœ๋“œ ๋ฉ”๋‰ด์—์„œ ๋ฐฐํฌ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด Artifact Registry์— ์ €์žฅํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋กœ ๊ฐ„๋‹จํ•œ ๋ฐฐํฌ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  kubectl apply๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl apply

kubectl apply๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ๋ฐฐํฌ๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๋งŒ๋“ค๊ณ  ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋˜ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์— ๋‹ค์‹œ ๋ณ‘ํ•ฉํ•˜์ง€ ์•Š๊ณ ๋„ ์‹ค์‹œ๊ฐ„ ๋ฆฌ์†Œ์Šค์— ์ ์šฉ๋œ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์—์„œ ๋ฐฐํฌ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl apply -f DEPLOYMENT_FILE

DEPLOYMENT_FILE์„ config.yaml๊ณผ ๊ฐ™์ด ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

kubectl apply -f DIRECTORY/๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์— ์ •์˜๋œ ๋ชจ๋“  ๊ฐ์ฒด(๊ธฐ์กด ํ•ญ๋ชฉ ์ œ์™ธ)๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

๋ฐฐํฌ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

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

    ์›Œํฌ๋กœ๋“œ๋กœ ์ด๋™

  2. ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ปจํ…Œ์ด๋„ˆ ์ง€์ •์—์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€ - Artifact Registry ๋˜๋Š” DockerHub์—์„œ ์ œ๊ณต๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ์— ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์™€ ๋ฒ„์ „์˜ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

    • Cloud Source Repositories ๋ฐ Cloud Build๋กœ ๋งŒ๋“  ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€

  4. ์›ํ•  ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ํ™˜๊ฒฝ ๋ณ€์ˆ˜ - ์ปจํ…Œ์ด๋„ˆ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๋Ÿฐํƒ€์ž„์— ์ปจํ…Œ์ด๋„ˆ์˜ ์ง„์ž…์ ์„ ๋งž์ถค ์„ค์ •ํ•  ์ดˆ๊ธฐ ๋ช…๋ น์–ด
  5. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ ๊ณ„์†์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  6. ๊ตฌ์„ฑ ์„น์…˜์—์„œ ๋ฐฐํฌ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๊ณ  ๋ฐฐํฌํ•  Kubernetes ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  7. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ผ๋ฒจ์—์„œ Kubernetes ๋ผ๋ฒจ์„ ๋ฐฐํฌ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  8. ์ด ๋ฐฐํฌ๋ฅผ ์ƒ์„ฑํ•œ YAML์„ ์ €์žฅํ•œ ํ›„ ๋‚˜์ค‘์— ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด YAML ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. YAML์„ ๋ณต์‚ฌํ•˜์—ฌ ํŒŒ์ผ์— ๋ถ™์—ฌ๋„ฃ์€ ํ›„ ์ €์žฅํ•˜๊ณ  YAML ์ถœ๋ ฅ ๋Œ€ํ™”์ƒ์ž์—์„œ ๋‹ซ๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  9. Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด์—์„œ ์›ํ•˜๋Š” ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  10. ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ์กฐ์‚ฌ

๋ฐฐํฌ๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ๋‹ค์Œ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl

๋ฐฐํฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl describe deployment DEPLOYMENT_NAME

DEPLOYMENT_NAME์„ ๋ฐฐํฌ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

๋ฐฐํฌ์—์„œ ์ƒ์„ฑ๋œ ํฌ๋“œ๋ฅผ ๋‚˜์—ดํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl get pods -l KEY=VALUE

์ด ๋ช…๋ น์–ด์—์„œ -l ํ”Œ๋ž˜๊ทธ๋Š” kubectl์ด ํ‚ค-๊ฐ’ ๋ผ๋ฒจ์ด ์ง€์ •๋œ ๋ชจ๋“  ํฌ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐํฌ์˜ ๋ผ๋ฒจ์„ run: my-app์œผ๋กœ ์ง€์ •ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ๋ผ๋ฒจ์ด ์ง€์ •๋œ ํฌ๋“œ๋ฅผ ๋ณด๋ ค๋ฉด kubectl get pods -l run=my-app์„ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŠน์ • Pod์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl describe pod POD_NAME

๋ฐฐํฌ์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl get deployments DEPLOYMENT_NAME -o yaml

์ด ๋ช…๋ น์–ด๋Š” ๋ฐฐํฌ์˜ ์‹ค์‹œ๊ฐ„ ๊ตฌ์„ฑ์„ YAML ํ˜•์‹์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

๋ฐฐํฌ๋ฅผ ์กฐ์‚ฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

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

    ์›Œํฌ๋กœ๋“œ๋กœ ์ด๋™

  2. ์›Œํฌ๋กœ๋“œ ๋ชฉ๋ก์—์„œ ๊ฒ€์‚ฌํ•˜๋ ค๋Š” ๋ฐฐํฌ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ฐฐํฌ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€์—์„œ ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ์—…๋ฐ์ดํŠธ ๊ธฐ๋ก ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐฐํฌ์˜ ์—…๋ฐ์ดํŠธ ๊ธฐ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ์ด๋ฒคํŠธ ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐฐํฌ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ๋กœ๊ทธ ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐฐํฌ์˜ ์ปจํ…Œ์ด๋„ˆ ํ™œ๋™ ๋กœ๊ทธ๋ฅผ ๋ด…๋‹ˆ๋‹ค.
    • YAML ํƒญ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐฐํฌ์˜ YAML ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ํ™•์ธ, ๋ณต์‚ฌ, ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

๋ฐฐํฌ ์—…๋ฐ์ดํŠธ

์ด๋ฏธ์ง€, ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ/์š”์ฒญ ๋˜๋Š” ๊ตฌ์„ฑ๊ณผ ๊ฐ™์ด, ๋ฐฐํฌ์˜ ํฌ๋“œ ์‚ฌ์–‘์— ์—…๋ฐ์ดํŠธ๋ฅผ ๋กค์•„์›ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Google Cloud ์ฝ˜์†” ์›Œํฌ๋กœ๋“œ ๋ฉ”๋‰ด์˜ ์ˆœ์ฐจ์  ์—…๋ฐ์ดํŠธ ๋ฉ”๋‰ด์™€ YAML ํŽธ์ง‘๊ธฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๊ณ  kubectl apply๋กœ ์ด๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • kubectl set๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋“œ ์‚ฌ์–‘์˜ image, resources ๋˜๋Š” selector ํ•„๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์…ธ์—์„œ ์ง์ ‘ ๋˜๋Š” kubectl edit๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํŽธ์ง‘๊ธฐ์—์„œ ๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl apply

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

๋ฐฐํฌ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl apply -f DEPLOYMENT_FILE

DEPLOYMENT_FILE์„ ์—…๋ฐ์ดํŠธ๋œ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

kubectl apply ๋ช…๋ น์–ด๋Š” ๋งค๋‹ˆํŽ˜์ŠคํŠธ ํŒŒ์ผ์„ ๋ฆฌ์†Œ์Šค์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์—†์œผ๋ฉด ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค,

kubectl set

kubectl set ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ ์ด๋ฏธ์ง€, ๋ฆฌ์†Œ์Šค(์š”์ฒญ ๋˜๋Š” ์ œํ•œ) ๋˜๋Š” ์„ ํƒ๊ธฐ ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl set image deployment DEPLOYMENT_NAME IMAGE IMAGE:TAG

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐํฌ๋ฅผ nginx ๋ฒ„์ „ 1.7.9์—์„œ 1.9.1๋กœ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

kubectl set image deployment nginx nginx=nginx:1.9.1

์ฝ˜์†”

๋ฐฐํฌ์˜ ์ˆœ์ฐจ์  ์—…๋ฐ์ดํŠธ ๋ฉ”๋‰ด์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

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

    ์›Œํฌ๋กœ๋“œ๋กœ ์ด๋™

  2. ์›Œํฌ๋กœ๋“œ ๋ชฉ๋ก์—์„œ ์ˆ˜์ •ํ•˜๋ ค๋Š” ๋ฐฐํฌ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ž‘์—… > ์ˆœ์ฐจ์  ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์—…๋ฐ์ดํŠธ ์ „๋žต์— ๋‹ค์Œ ์„ ํƒ์  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ์ตœ์†Œ ์ค€๋น„ ๊ธฐ๊ฐ„(์ดˆ): ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ํฌ๋“œ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๋กœ ๊ฐ„์ฃผ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š” ์ตœ์†Œ ์‹œ๊ฐ„(์ดˆ)์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
    • ์ตœ๋Œ€ ์ดˆ๊ณผ ๊ฐœ์ˆ˜: ์›ํ•˜๋Š” ํฌ๋“œ ์ˆ˜๋ฅผ ๋„˜์–ด์„œ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ์ ˆ๋Œ€ ์ˆซ์ž์ด๊ฑฐ๋‚˜ ๋ฐฑ๋ถ„์œจ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ตœ๋Œ€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ๊ฐœ์ˆ˜: ์—…๋ฐ์ดํŠธ ํ”„๋กœ์„ธ์Šค ๋™์•ˆ ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์ƒํƒœ๋กœ ๋  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ๋“œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ’์€ ์ ˆ๋Œ€ ์ˆซ์ž์ด๊ฑฐ๋‚˜ ๋ฐฑ๋ถ„์œจ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์—์„œ ์—…๋ฐ์ดํŠธ๋œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ์™€ ๋ฒ„์ „์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

  6. ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ ๋กค๋ฐฑ

kubectl rollout undo๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋ฅผ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง„ํ–‰ ์ค‘์ธ ๋˜๋Š” ์™„๋ฃŒ๋œ ์—…๋ฐ์ดํŠธ๋ฅผ ์ด์ „ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl rollout undo deployment my-deployment

๋˜ํ•œ ํŠน์ • ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl rollout undo deployment my-deployment --to-revision=3

๋ฐฐํฌ ํ™•์žฅ

Google Cloud ์ฝ˜์†” ๋˜๋Š” kubectl scale์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ ์ž๋™ ํ™•์žฅ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

kubectl

kubectl scale์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ์ œ๋“ ์ง€ ๋ฐฐํฌ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ™•์žฅํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl scale deployment DEPLOYMENT_NAME --replicas NUMBER_OF_REPLICAS

NUMBER_OF_REPLICAS๋ฅผ ์›ํ•˜๋Š” ๋ณต์ œ๋œ ํฌ๋“œ ์ˆ˜๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

์ฝ˜์†”

๋ฐฐํฌ๋ฅผ ํ™•์žฅํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

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

    ์›Œํฌ๋กœ๋“œ๋กœ ์ด๋™

  2. ์›Œํฌ๋กœ๋“œ ๋ชฉ๋ก์—์„œ ์ˆ˜์ •ํ•˜๋ ค๋Š” ๋ฐฐํฌ์˜ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ž‘์—… > ํ™•์žฅ > ๋ณต์ œ๋ณธ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๋ฐฐํฌ์˜ ์ƒˆ ๋ณต์ œ๋ณธ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

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

๋ฐฐํฌ ์‚ญ์ œ

Google Cloud ์ฝ˜์†” ๋˜๋Š” kubectl delete๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubectl

๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์„ธ์š”.

kubectl delete deployment DEPLOYMENT_NAME

์ฝ˜์†”

๋ฐฐํฌ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”.

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

    ์›Œํฌ๋กœ๋“œ๋กœ ์ด๋™

  2. ์›Œํฌ๋กœ๋“œ ๋ชฉ๋ก์—์„œ ์‚ญ์ œํ•  ๋ฐฐํฌ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ํ™•์ธ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉด ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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