CKAD

[CKAD] Application Deployment

테런 2023. 5. 27. 22:12
  • CKAD 시험 비중 (20%)
  • Pod를 배포(업데이트)하는 방법
1. Blue-Green Update
2. Canary Deployment
3. Rolling Update

 

  • Blue/Green Update
1. 구 버전과 신 버전이 모두 동작한 상태에서 트래픽만 신 버전으로 전환
2. Rollback이 쉽고, 업데이트 과정에서 소요되는 시간 절약
3. 하드웨어 리소스 소비: 구, 신 버전의 애플리케이션이 동시 동작해야함

 

  • 실습1
다음과 같은 deployment, service를 동작하세요. blue라는 이름으로 smlinux/nginx:blue 이미지를 가진 Pod 2개 배포하세요.

1. Label은 version=blue을 사용하며 port는 8080 포트를 사용한다.
* app-svc 서비스를 version=blue 레이블로 묶어 NodePort 타입의 서비스 port 80으로 운영하세요.
* green이라는 이름으로 smlinux/nginx:green 이미지를 가진 Pod 2개를 배포하세요.

2. Label은 version=green을 사용하며 port는 8080 포트를 사용한다.
* app-svc의 레이블을 version=green으로 변경하세요.

 

  • Canary Deployment
업데이트 기존 버전을 유지한 채로 일부 버전만 신규 버전으로 올려서 버전에 버그나 이상은 없는지 확인

 

  • 실습1
다음과 같은 deployment, service를 동작하세요. stable라는 이름으로 smlinux/app:stable 이미지를 가진 Pod 2개 배포하세요.

1. Label은 name=app, version=stable을 사용하며 port는 8080 포트를 사용한다.
* canary-svc 서비스를 name=app 레이블로 묶어 NodePort 타입의 서비스 port 80으로 운영하세요.
* new이라는 이름으로 smlinux/app:new-release 이미지를 가진 Pod 1개를 배포하세요.

2. Label은 name=app, version=new 사용하며 port는 8080 포트를 사용한다.
* canary-svc의 레이블을 version=green으로 변경하세요.

 

  • Rolling Update (가장 많이 나오는 유형)
1. Deployment
* 애플리케이션 Pod를 배포. ReplicaSet 배포 및 Pod 개수 제어
* New 버전으로의 Update 및 Rolling update 지원
* History를 이용한 이전 버전으로 Roleback 지원

2. Deployment Rolling Update
* maxUnavailable: 최대 불가
 1. 사용할 수 없는 최대 Pod 수 (내림 수)
 2. 30% 설정 시 사용 가능한 Pod 수는 70% 이상이 되도록 운영

* maxSurge: 최대 서지
 1. 운영 가능한 최대 Pod 수 (올림 수)

* progressDeadlineSeconds: 진행 대기 시간
 1. 업데이트 진행되는 것을 대기하는 시간. 이 시간 내 업데이트 못하면 Rollback
 2. 운영 가능한 최대 Pod 수 (올림 수)

* revisionHistoryLimit: 히스토리 개수

* minReadySeconds: 최소 대기 시간
 1. Pod가 이 시간만큼 대기한 후 Running

 

  • 실습1
* Deployment 생성: name: app-deploy, image: smlinux/app:v1, port: 8080, replicas: 3
* 앞서 생선한 app-deploy의 service 생성: name: app-service, type: NodePort, service port: 80
* app-deploy를 rolling update 및 rollback
1. image: smlinux/app:v2, maxUnavailable: 25%, maxSurge: 50%, progressDealineSeconds: 300
2. app:v1 버전으로 rollback
$ kubectl rollout deployment app-deploy undo​

 

  • Helm을 이용한 패키지 배포
Helm을 이용해 nginx 웹서버를 배포하세요.
* helm repository: https://charts.bitnami.com/bitnami 
* repo name: bitnami
* install chart: bitnami/nginx
* chart name: ckad-webserver
* 서비스 동작 중인지 확인을 위해 k8s-worker1 노드로 서비스 연결