•
복제된 (replicated) 애플리케이션(Pod)를 관리하는 오브젝트
•
롤링 업데이트나 롤백 등을 구현하는 리소스
Deployment 배포 전략
•
recreate : 모든 파드 삭제 후 다시 파드 생성 (다운 타임 발생)
•
rollingupdate : 하나씩 업데이트
◦
maxUnavailable : 업데이트 진행 중 사용 불가능한 최대 Pod 수
◦
maxSurge : 업데이트 진행 중 원래 replicas 수를 초과할 수 있는 최대 Pod 수
•
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: <Deployment Name>
namespace: <Namespace>
labels:
app: worker
spec:
replicas: 2
selector:
matchLabels:
app: worker
template:
metadata:
labels:
app: worker
spec:
containers:
- name: <Container Name>
image: <Image>
ports:
- containerPort: 80
YAML
복사
•
Health Check
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev-dpm
namespace: dev-ns
labels:
app: dev
spec:
replicas: 3
selector:
matchLabels:
app: dev
strategy:
type: Recreate
template:
metadata:
labels:
app: dev
spec:
containers:
- name: dev-cnt
image: <image>
ports:
- containerPort: <Port>
startupProbe:
httpGet:
path: /healthcheck
port: 8080
initialDelaySeconds: 0
periodSeconds: 5
timeoutSeconds: 10
failureThreshold: 12
successThreshold: 1
readinessProbe:
httpGet:
path: /healthcheck
port: 8080
initialDelaySeconds: 0
periodSeconds: 5
timeoutSeconds: 10
failureThreshold: 3
successThreshold: 1
livenessProbe:
httpGet:
path: /healthcheck
port: 8080
initialDelaySeconds: 0
periodSeconds: 5
timeoutSeconds: 10
failureThreshold: 6
successThreshold: 1
lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","sleep 30"]
terminationGracePeriodSeconds: 10
YAML
복사
•
ReCreate
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev-dpm
namespace: dev-ns
labels:
app: dev
spec:
replicas: 3
selector:
matchLabels:
app: dev
strategy:
type: Recreate
template:
metadata:
labels:
app: dev
spec:
containers:
- name: dev-cnt
image: <image>
ports:
- containerPort: <Port>
YAML
복사
•
Rolling Update
apiVersion: apps/v1
kind: Deployment
metadata:
name: dev-dpm
namespace: dev-ns
spec:
replicas: 2
selector:
matchLabels:
app: dev
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 50%
maxUnavailable: 50%
template:
metadata:
labels:
app: dev
spec:
containers:
- name: dev-cnt
image: <image>
ports:
- containerPort: <Port>
YAML
복사