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