kubernetes_deployment

๋””ํ”Œ๋กœ์ด๋จผํŠธ: ์„ ์–ธ์  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Replication Controller(RC)๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐฐํฌํ•˜์ง€ ์•Š๊ณ  Deployment๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋œ(replicated) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” API ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

  • ReplicatSet(+Pod)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋กค๋ฆด ์—…๋ฐ์ดํŠธ ๋“ฑ์„ ํ•  ๋•Œ RC๋ฅผ ๋‘ ๊ฐœ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ณ  ํ•˜๋‚˜์”ฉ Pod์˜ ์ˆ˜๋ฅผ ์ˆ˜๋™์œผ๋กœ ์กฐ์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์ž๋™ํ™” ํ•ด์„œ ์ถ”์ƒํ™”ํ•œ ๊ฐœ๋…์ด Deployment์ž…๋‹ˆ๋‹ค.

  • ๊ธฐ๋ณธ์ ์œผ๋กœ Replication Controleer (RC)๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์—ญํ• ์ž…๋‹ˆ๋‹ค.

  • ํŠน์ง•

    • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค.

    • ๋””ํ”Œ๋กœ์ด๋จผํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋งˆ์Šคํ„ฐ๊ฐ€ ํ•ด๋‹น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐœ๋ณ„ ๋…ธ๋“œ์— ์Šค์ผ€์ค„ํ•ฉ๋‹ˆ๋‹ค.

    • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋Š” ์ง€์†์ ์œผ๋กœ ์ด๋“ค ์ธ์Šคํ„ด์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.

    • ๋จธ์‹ ์˜ ์žฅ์• ๋‚˜ ์ •๋น„์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋™ ๋ณต๊ตฌ(self-healing) ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    • ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ์—ญํ• ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

  • Kubectl์ด๋ผ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค CLI๋ฅผ ํ†ตํ•ด ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋ฉฐ Kubectl์€ ํด๋Ÿฌ์Šคํ„ฐ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์™€ ๊ตฌ๋™์‹œํ‚ค๊ณ ์ž ํ•˜๋Š” ๋ณต์ œ ์ˆ˜๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒ์— ๋ฐฐํฌ๋˜๋ ค๋ฉด ์ง€์›๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ ํ˜•์‹ ์ค‘ ํ•˜๋‚˜๋กœ ํŒจํ‚ค์ง€ ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

  • ํŒŒ๋“œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—…๋ฐ์ดํŠธ

    • ๋ชจ๋“  ํŒŒ๋“œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋ฐฉ๋ฒ•

      • ๊ธฐ์กด ํŒŒ๋“œ๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ ๋‹ค์Œ ์ƒˆ ํŒŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. (์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)

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

        • image

    • ์ƒˆ ํŒŒ๋“œ ๊ธฐ๋™๊ณผ ์ด์ „ ํŒŒ๋“œ ์‚ญ์ œ

      • ํ•œ ๋ฒˆ์— ์ด์ „ ๋ฒ„์ „์—์„œ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜

        • image

        • ํŒŒ๋“œ์˜ ์•ž์ชฝ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๋ฐฐ์น˜ํ•˜๋ฉฐ ์ƒˆ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ํŒŒ๋“œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋™์•ˆ ์„œ๋น„์Šค๋Š” ํŒŒ๋“œ์˜ ์ด์ „ ๋ฒ„์ „์— ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

        • ๋ธ”๋ฃจ ๊ทธ๋ฆฐ ๋””ํ”Œ๋กœ์ด๋จผํŠธ : ์ƒˆ ํŒŒ๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋˜๋ฉด ์„œ๋น„์Šค์˜ ๋ ˆ์ด๋ธ” ์…€๋ ‰ํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์„œ๋น„์Šค๋ฅผ ์ƒˆ ํŒŒ๋“œ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „ํ™˜ํ•œ ํ›„ ์ƒˆ ๋ฒ„์ „์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๋ฉด ์ด์ „ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ญ์ œํ•ด ์ด์ „ ํŒŒ๋“œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • ๋กค๋ง ์—…๋ฐ์ดํŠธ

        • image

        • ์ƒˆ ํŒŒ๋“œ๊ฐ€ ๋ชจ๋‘ ์‹คํ–‰๋œ ํ›„ ์ด์ „ ํŒŒ๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ• ๋Œ€์‹  ํŒŒ๋“œ๋ฅผ ๋‹จ๊ณ„๋ณ„๋กœ ๊ต์ฒดํ•˜๋Š” ๋กค๋ง ์—…๋ฐ์ดํŠธ. ์ด์ „ ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ฒœ์ฒœํžˆ ์Šค์ผ€์ผ ๋‹ค์šดํ•˜๊ณ  ์ƒˆ ํŒŒ๋“œ๋ฅผ ์Šค์ผ€์ผ ์—…ํ•ด ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ ์–ธ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

  • ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” ๋‚ฎ์€ ์ˆ˜์ค€(lower-level)์˜ ๊ฐœ๋…์œผ๋กœ ๊ฐ„์ฃผ๋˜๋Š” ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ ๋˜๋Š” ๋ ˆํ”Œ๋ฆฌ์นด์…‹์„ ํ†ตํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋Œ€์‹  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•˜๊ณ  ์„ ์–ธ์ (declarative) ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋†’์€ ์ˆ˜์ค€(high-level)์˜ ๋ฆฌ์†Œ์Šค์ž…๋‹ˆ๋‹ค.

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

  • ํŒŒ๋“œ๋ฅผ ๊ฐ์‹œํ•˜๋Š” ๋ ˆํ”Œ๋ฆฌ์นด์…‹์ด ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

    • image

  • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ƒ์„ฑ

    • apiVersion: apps/v1beta1
      kind: Deployment
      metadata:
        name: kubia
      spec:
        replicas: 3
        template:
          metadata:
            name: kubia
            labels:
              app: kubia
          spec:
            containers:
            - image: luksa/kubia:v1
              name: nodejs
    • ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” ๋ ˆ์ด๋ธ” ์…€๋ ‰ํ„ฐ, ์›ํ•˜๋Š” ๋ ˆํ”Œ๋ฆฌ์นด ์ˆ˜, ํŒŒ๋“œ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ˆ˜์ •๋  ๋•Œ ์—…๋ฐ์ดํŠธ ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ „๋žต์„ ์ง€์ •ํ•˜๋Š” ํ•„๋“œ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋กค์•„์›ƒ ์ƒํƒœ ์ถœ๋ ฅ

    • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๋งŒ๋“ค์–ด์ง„ ๋‹ค๋ฅธ ๋ช…๋ น์–ด

    • $ kubectl rollout status deployment kubia
      Waiting for rollout to finish: 1 out of 3 new replicas have been updated...
      Waiting for rollout to finish: 2 out of 3 new replicas have been updated...
      Waiting for rollout to finish: 1 old replicas are pending termination...
      deployment "kubia" successfully rolled out
  • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์—…๋ฐ์ดํŠธ

    • ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ „๋žต

      • Recreate ์ „๋žต

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

        • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™„์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์งง์€ ์„œ๋น„์Šค ๋‹ค์šดํƒ€์ž„์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

      • RollingUpdate ์ „๋žต

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

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

  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๊ธฐ์กด ๋ฆฌ์†Œ์Šค ์ˆ˜์ •ํ•˜๊ธฐ

    • kubectl edit : ๊ธฐ๋ณธ ํŽธ์ง‘๊ธฐ๋กœ ์˜ค๋ธŒ์ ํŠธ์˜ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์˜คํ”ˆํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ํ›„ ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ  ํŽธ์ง‘๊ธฐ๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋จ. kubectl edit deployment kubia

    • kubectl patch : ์˜ค๋ธŒ์ ํŠธ์˜ ๊ฐœ๋ณ„ ์†์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. kubectl patch deployment kubia -p '{"spec": {"template": {"spec": {"containers": [{"name": "nodejs", "image": "luksa/kubia:v2" }]}}}}'

    • kubectl apply : ์ „์ฒด YAML/JSON ํŒŒ์ผ์˜ ์†์„ฑ ๊ฐ’์„ ์ ์šฉํ•ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. YAML/JSON์— ์ง€์ •๋œ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์•„์ง ์—†์œผ๋ฉด ์ƒ์„ฑ๋˜๋ฉฐ ํŒŒ์ผ์—๋Š” ๋ฆฌ์†Œ์Šค์˜ ์ „์ฒด ์ •์˜๊ฐ€ ํฌํ•จ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค. kubectl apply -f kubia-deployment-v2.yaml

    • kubectl replace : YAML/JSON ํŒŒ์ผ๋กœ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒˆ ๊ฒƒ์œผ๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. apply ๋ช…๋ น์–ด์™€ ๋‹ฌ๋ฆฌ ์ด ๋ช…๋ น์€ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. kubectl replace -f kubia-deployment-v2.yaml

    • kubectl set image : ํŒŒ๋“œ, ๋ ˆํ”Œ๋ฆฌ์ผ€์ด์…˜์ปจํŠธ๋กค๋Ÿฌ ํ…œํ”Œ๋ฆฟ, ๋””ํ”Œ๋กœ์ด๋จผํŠธ, ๋ฐ๋ชฌ์…‹, ์žก ๋˜๋Š” ๋ ˆํ”Œ๋ฆฌ์นด์…‹์— ์ •์˜๋œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. kubectl set image deployment kubia nodejs=luksa/kubia:v2

    • ์ด ๋ช…๋ น๋“ค์ด ํ•˜๋Š” ์—ญํ• ์€ ๋””ํ”Œ๋กœ์ด๋จผํŠธ ์ŠคํŽ™์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ด ๋ณ€๊ฒฝ์œผ๋กœ ๋กค์•„์›ƒ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

  • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋กค๋ฐฑ

    • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๋กค์•„์›ƒ ์ด๋ ฅ ํ‘œ์‹œ

      • ๋””ํ”Œ๋กœ์ด๋จผํŠธ๋Š” ๊ฐœ์ • ์ด๋ ฅ(revision history)์„ ์œ ์ง€ํ•˜๋ฏ€๋กœ ๋กค์•„์›ƒ์˜ ๋กค๋ฐฑ์ด ๊ฐ€๋Šฅํ•จ. ๋กค์•„์›ƒ์ด ์™„๋ฃŒ๋˜๋ฉด ์ด์ „ ๋ ˆํ”Œ๋ฆฌ์นด์…‹์€ ์‚ญ์ œ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด์ „ ๋ฒ„์ „๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Œ. kubectl rollout history ๋ช…๋ น์–ด๋กœ ๊ฐœ์ • ์ด๋ ฅ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • $ kubectl rollout history deployment kubia
        deployments "kubia":
        REVISION    CHANGE-CAUSE
        2           kubectl set image deployment kubia nodejs=luksa/kubia:v2
        3           kubectl set image deployment kubia nodejs=luksa/kubia:v3
    • ํŠน์ • ๋””ํ”Œ๋กœ์ด๋จผํŠธ ๊ฐœ์ •์œผ๋กœ ๋กค๋ฐฑ

      • undo ๋ช…๋ น์–ด์—์„œ ๊ฐœ์ •(revison) ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •ํ•ด ํŠน์ • ๊ฐœ์ •์œผ๋กœ ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      • # ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์œผ๋กœ ๋กค๋ฐฑ
        $ kubectl rollout undo deployment kubia --to-revision=1 
    • ๋กค์•„์›ƒ ์ผ์‹œ ์ •์ง€

      • ์นด๋‚˜๋ฆฌ ๋ฆด๋ฆฌ์Šค๋Š” ์ž˜๋ชป๋œ ๋ฒ„์ „์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กค์•„์›ƒ๋ผ ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ์ฃผ๋Š” ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ธฐ์ˆ ๋กœ ์ƒˆ ๋ฒ„์ „์„ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ๋กค์•„์›ƒํ•˜๋Š” ๋Œ€์‹  ํ•˜๋‚˜ ๋˜๋Š” ์ ์€ ์ˆ˜์˜ ์ด์ „ ํŒŒ๋“œ๋งŒ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์†Œ์ˆ˜์˜ ์‚ฌ์šฉ์ž๋งŒ ์ดˆ๊ธฐ์— ์ƒˆ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Reference

  • https://www.oreilly.com/library/view/kubernetes-in-action/9781617293726/

  • https://www.oreilly.com/library/view/cloud-native-devops/9781492040750/

Last updated