[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