Search

Deployments

Created
2023/09/29 08:57
Tags
k8s
CKA
Mumshad Mannambeth
Core Concept

1) About

다음과 같은 상황이 있다고 가정
1.
어플리케이션을 구성하는 다중 인스턴스 (다중 Pod)를 배포 해야하는 상황
2.
새로운 버전의 어플리케이션 이미지가 DockerHub에 릴리즈 되어 인스턴스들을 하나씩 업그레이드 해야하는 상황 (한 번에 업그레이드 하는 경우 사용자의 어플리케이션 이용에 지장이 생길 수 있으므로)
3.
인스턴스의 업그레이드를 진행하다가 오류가 생겨 업그레이들 취소하고 이전 버전으로 되돌려야 하는 상황
4.
쿠버네티스 객체의 자원 배분을 조정하거나, 스케일링 설정을 변경해야 하는 상황
이와 같은 작업들은 모두 Deployment를 이용하여 각각의 상황을 만족시킬 수 있음
** 특히 4번의 경우 Replication에서 수행했던 것과 동일한데, Deployment는 계층상에서 봤을 때 Replica Set보다 상위 개념이라서 Replica Set의 기능을 지원함
** 즉, kubectl get replicaset을 조회했을 때 Deployment로 생성한 Replication을 확인할 수 있음
** Deployment의 장점은 서비스 배포와 관련된 설정을 하는데서 나타나기 때문에, 서비스라는 개념을 습득하기 전까지는 그 역할이 Replica Set과 크게 다르지 않음

2) YAML

전반적으로 Replica Set에서의 정의와 굉장히 유사함
apiVersion: apps/v1, kind: Deployment
apiVersion: apps/v1 kind: Deployment metadata: name: deploy-sample labels: app: deploy-sample type: deploy-sample-type spec: template: metadata: name: nginx labels: app: nginx type: ws spec: containers: - name: nginx image: nginx replicas: 3 selector: matchExpressions: - key: type operator: In values: - ws - key: app operator: In values: - nginx - key: env operator: NotIn values: - prod
YAML
복사

3) Commands

kubectl get deployment
Deployment들의 정보를 모두 읽음
kubectl get all
Deployment, Replica Set, Pod 정보들을 모두 볼 수 있음

4) Abbreviation

Deployment == deploy