[k8s] deployment

deployment๋Š” ํŒŒ๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ทธ๋ฃน ๊ฐœ๋…์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
์ •ํ™•ํžˆ๋Š” ํŒŒ๋“œ์— ๋Œ€ํ•œ ์ปจํŠธ๋กค๋Ÿฌ(controller)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๋Š” deployment ๋ง๊ณ ๋„ ๋ช‡๊ฐ€์ง€๊ฐ€ ๋” ์žˆ์ง€๋งŒ, ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ ์“ฐ์ด๋Š” ๋†ˆ์ด ์ด๋†ˆ์ด๋‹ค.

์‹ค์ œ๋กœ ๋งŽ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋‹จ์ผ ํŒŒ๋“œ๋กœ๋งŒ์€ ๊ฐ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•œ๋ฐ, ๋ญ ๋„์šฐ๊ณ  ๋ฐฐํฌํ• ๋•Œ๋งˆ๋‹ค ํŒŒ๋“œ๋ฅผ ์ง์ ‘ ๋‹ค ๊ด€๋ฆฌํ•˜๋Š”๊ฑด ์ƒ๋‹นํžˆ ๋ฒˆ๊ฑฐ๋กœ์šด ์ผ์ด๋‹ค.

๊ทธ๋ž˜์„œ ๋ณดํ†ต ์„œ๋ฒ„๊ฐ™์€๊ฑธ ๋„์šด๋‹ค๊ณ  ํ•˜๋ฉด deployment ๋‹จ์œ„๋ฅผ ๊ตฌ์„ฑํ•ด์„œ ์˜ฌ๋ฆฌ๊ณค ํ•œ๋‹ค.
deployment๋Š” replica ๋“ฑ์˜ ์ข€๋” ๋ฐœ์ „๋œ ์ƒ์œ„ ์ œ์–ด ๊ฐœ๋…์ด ์ œ๊ณต๋œ๋‹ค.




deployment ๋งŒ๋“ค์–ด๋ณด๊ธฐ

deployment๋Š” create deployment ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
ํ•œ๋ฒˆ ์ด๋ฏธ์ง€ ํ•˜๋‚˜ ๊ฐ–๋‹ค๊ฐ€ ๋งŒ๋“ค์–ด๋ณด์ž.

kubectl create deployment test-server --image=myyrakle/node-server-for-test

๋„์ปคํ—ˆ๋ธŒ์— ์žˆ๋Š” myyrakle/node-server-for-test์ด๋ฏธ์ง€๋กœ test-server๋ผ๋Š” ์ด๋ฆ„์˜ deployment๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค.
myyrakle/node-server-for-test ์ด๋ฏธ์ง€๋Š” ๋‚ด๊ฐ€ ๊ธ‰์กฐํ•ด์„œ ์˜ฌ๋ฆฐ ๊ฒƒ์ธ๋ฐ, 80ํฌํŠธ๋กœ ์‹ฌํ”Œํ•œ HTTP ์„œ๋ฒ„๋ฅผ ์˜ฌ๋ ค์ฃผ๋Š” ๊ฒƒ๋งŒ ๋”ฑ ๋“ค์–ด์žˆ๋‹ค.
์ฝ”๋“œ๋‚˜ ๊ตฌ์„ฑ์„ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„๋ž˜ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ฐธ์กฐํ•ด๋ณด๋ฉด ๋˜๊ฒ ๋‹ค.
https://github.com/myyrakle/infrastructures/tree/master/k8s/examples/conrollers/deployments/node-server-for-test


์•„๋ฌดํŠผ ๋Œ์•„์™€์„œ ์ € ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋ฉด

ํŒŒ๋“œ๊ฐ€ ๋œจ๊ณ ,

deployment ๋‹จ์œ„๋„ ์ƒ์„ฑ์ด ๋œ๋‹ค.





deployment ์Šค์ผ€์ผ๋งํ•˜๊ธฐ (replica set)

deployment์˜ ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š”, ์–ธ๊ธ‰ํ–ˆ๋˜๋Œ€๋กœ ํŒŒ๋“œ๋ฅผ ๋ ˆํ”Œ๋ฆฌ์นด ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
ํ•œ๋ฒˆ test-server์˜ ๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ 3๊ฐœ๋กœ ๋Š˜๋ ค๋ณด๊ฒ ๋‹ค.
์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค.

kubectl scale deployment test-server --replicas=3

๊ทธ๋Ÿผ ์ด์ œ ์ด๋ ‡๊ฒŒ ํŒŒ๋“œ๋ฅผ 3๊ฐœ๋‚˜ ๋„์›Œ์ฃผ๊ฒŒ ๋œ๋‹ค.

๋˜ 0์œผ๋กœ ํ•˜๋ฉด ์ค„์—ฌ์„œ ํ™œ์„ฑ ํŒŒ๋“œ๋ฅผ ์—†์•จ ์ˆ˜๋„ ์žˆ๋‹ค.




deployment ์‚ญ์ œํ•˜๊ธฐ

์ด๋ฒˆ์—๋Š” ๋งŒ๋“ค์–ด๋’€๋˜ deployment๋ฅผ ์‚ญ์ œํ•ด๋ณด๊ฒ ๋‹ค.
delete deployment ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

kubectl delete deployment test-server




yaml๋กœ ๋ง์•„๋ณด๊ธฐ

์œ„์—์„œ๋Š” create deployments ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์„œ deployment๋ฅผ ๋ฐ”๋กœ ๋งŒ๋“ค์–ด๋ดค์ง€๋งŒ, ์‹ค์ œ๋กœ ์‘์šฉํ•  ๋•Œ๋Š” ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ์•Š๊ณ  yaml๋กœ ๊ตฌ์„ฑ์„ ๋ง์•„๋†“๊ณ  ์‚ฌ์šฉํ•œ๋‹ค.

์œ„์—์„œ ํ–ˆ๋˜๊ฑธ yaml๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ๋œ๋‹ค.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deploy
spec:
  replicas: 3
  selector: 
    matchLabels: 
      app: test-server
  template: 
    metadata: 
      labels: 
        app: test-server
    spec: 
      containers: 
        - name: test-server
          image: myyrakle/node-server-for-test

replicas๋ฅผ 3๊ฐœ๋กœ ํ•˜๊ณ , ์ด๋ฏธ์ง€๋Š” ๋™์ผํ•˜๊ฒŒ ๊ฐ€์ ธ์™”๋‹ค.
์ €๋ ‡๊ฒŒ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋†“๊ณ 

kubectl create ๋ช…๋ น์œผ๋กœ ํŒŒ์ผ๋งŒ ๋„˜๊ฒจ์ฃผ๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์ž˜ ๋งŒ๋“ค์–ด์งˆ ๊ฒƒ์ด๋‹ค.




apply๋กœ ์ˆ˜์ •ํ•˜๊ธฐ

๊ทผ๋ฐ ๋งŒ์•ฝ ๋ญ”๊ฐ€ ๊ตฌ์„ฑ์—์„œ ๋ฐ”๊ฟ”์•ผ ํ• ๊ฒŒ ์ƒ๊ธด๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?
๊ทธ๋Ÿด๋•Œ๋Š” yaml์—์„œ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•œ ๋‹ค์Œ, apply ๋ช…๋ น์œผ๋กœ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.

๋ ˆํ”Œ๋ฆฌ์นด๋ฅผ 4๋กœ ์ˆ˜์ •ํ•œ๋‹ค์Œ์—

๋ฐ˜์˜ํ•ด๋ณด๋„๋ก ํ–ˆ๋‹ค.

๊ทธ๋Ÿผ ์ด๋ ‡๊ฒŒ ์ž˜ ๋  ๊ฒƒ์ด๋‹ค.




vs ReplicaSet

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

๊ทธ๋ž˜์„œ deployment๋Š” ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋ช‡๊ฐ€์ง€ ์˜ต์…˜์„ ์ œ๊ณตํ•œ๋‹ค. ์ด๊ฑด ๋ณ„๋„ ํฌ์ŠคํŠธ๋กœ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.



์ฐธ์กฐ
https://velog.io/@squarebird/Kubernetes-Replica-Set%EA%B3%BC-Deployment