Infrastructure & Systems/Kubernetes

[Kubernetes] Deployments YAML Sample

EndiYou 2025. 3. 24. 13:45

Deployments는 실행시켜야 할 Pod의 개수 유지, Application 배포 과정에 롤링 업데이트 적용, 롤백 등의 기능을 지원한다.


Sample YAML 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx-deployment # deployment label
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod    # spec.template.metadata.labels와 같은 값으로 유지
  template:
    metadata:
      labels:
        app: nginx-pod  # spec.selector.matchlables와 같은 값으로 유지 / pod label
    spec:
      containers:
      - name: nginx-container # pod 내부에 생성되는 container의 설정정보
        image: nginx
        ports:
        - containerPort: 80
  • spec.replicas : 몇 개의 파드를 실행 할 것인지 지정
  • spec.metadata.labels : Deployment Label 지정
  • spec.template.metadata.labels : Pod Label 지정
  • spec.selector.matchLabels : ReplicaSet 이 관리한 Pod Label 지정 (spec.template.metadata.labels과 동일해야 한다.)
  • spec.template.spec.containers : Pod 내부의 container에 대한 설정 

 

Deployment 생성 후 값 확인

  • deployment 배포
k apply -f deployment-sample.yaml 
k get deploy, pod
NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-demo         1/1     1            1           2d20h
deployment.apps/nginx-deployment   3/3     3            3           19m		# YAML로 생성한 deployment

NAME                                    READY   STATUS    RESTARTS        AGE
pod/debug                               1/1     Running   1 (2d19h ago)   2d19h
pod/nginx-demo-6cfb64b7c5-9gnms         1/1     Running   0               2d20h
pod/nginx-deployment-74489df56c-dc726   1/1     Running   0               19m		# YAML로 생성한 pod
pod/nginx-deployment-74489df56c-k4qsp   1/1     Running   0               19m		# YAML로 생성한 pod
pod/nginx-deployment-74489df56c-r7s9h   1/1     Running   0               19m		# YAML로 생성한 pod
  • label 이용 deployment, pod 정보 출력
k get deploy -l app=nginx-deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3/3     3            3           20m

k get po -l app=nginx-pod
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-74489df56c-dc726   1/1     Running   0          21m
nginx-deployment-74489df56c-k4qsp   1/1     Running   0          21m
nginx-deployment-74489df56c-r7s9h   1/1     Running   0          21m
  • pod 내부 container name 출력
k get po nginx-deployment-74489df56c-dc726 -o jsonpath='{.spec.containers[*].name}'
nginx-container