https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
디플로이먼트는 파드와 레플리카셋을 ‘선언적’으로 관리한다.
무슨 말인가? 디플로이먼트에는 의도된 상태(Desired Status)가 명시되어있고, 디플로이먼트 컨트롤러는 현재 상태(Observed Status)를 의도된 상태로 변경하려고 한다. 그 과정에서 파드와 레플리카셋을 생성하고 삭제하는 등 자동으로 관리함.
다음은 디플로이먼트의 예시임.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
spec.replicas
필드에 따라 디플로이먼트는 3개의 레플리카 파드를 생성하는 레플리카 셋을 생성한다.
spec.selector
필드는 생성된 레플리카 셋이 관리할 파드를 인식하는 방법을 정의한다. 위에서는 파드 템플릿에 정의된 레이블 (nginx)를 선택했다.