https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

디플로이먼트는 파드와 레플리카셋을 ‘선언적’으로 관리한다.

image.png

무슨 말인가? 디플로이먼트에는 의도된 상태(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)를 선택했다.