티스토리 뷰
◼ Rolling Updates and Rollbacks
- application update 하는 deployment strategies로 두 가지 방법이 있다.
Recreate
- 기존에 배포된 모든 application을 삭제하고 updated된 application을 한 번에 배포하는 전략
- 삭제되고 생성되는 과정에서 application이 작동이 안되는 downtime이 존재한다.
Rolling update
Rolling Update
rolling update: application이 downtime 없이 점진적으로 updated 되는 것
rollout: application을 update하는 것
- 따로 설정하지 않으면 rolling update가 default이다.
- deployment가 rollout을 trigger한다.
- pod template이 변경되면 updated 된다.
- replica가 변하는 것 등은 해당되지 않는다.
- rollout 될 때마다 해당 버전이 관리되는데 revision이라고 한다.
- rollout 상태 확인: kubectl rollout status deployment/myapp-deployment
- rollout 히스토리 확인: kubectl rollout history deployment/myapp-deployment
특정 버전 정보를 보려면 --revison 사용(kubectl rollout history deployment/myapp-deployment --revision=2)
Rollback
적용한 rollout을 되돌 릴 수 있다.
- kubectl rollout undo deployment/myapp-deplyment
- 특정 버전으로 되돌리려면 to-revisioin 사용(kubectl rollout undo deployment/myapp-deployment --to-revisiion=2)
◼ Configure Application
Command & Arguments
- docker에서 쓰이는 entrypoint와 cmd를 k8s에서는 command와 args라는 이름으로 바꿔서 쓰이고 있다.
- 경우의 수는 아래와 같다.
Configuring environment variables in applications
TL;DR 크게 3가지 방법(plain, configMap, Secretes)으로 설정이 가능하다.
ConfigMap
- 크게 세 가지 방법으로 주입 가능(file 형태, configmap 중 개별로 주입, volume으로 사용)
Secretes
- base64로 인코딩 된 값을 사용
- 누구나 decoding이 가능하기 때문에 안전하게 secret을 다루려면 다른 solution이 필요하다.(i.e. vault)
- 크게 세 가지 방법으로 주입이 가능하다.
volume으로 주입할 경우 각각의 key가 하나의 file로 저장이 된다.
◼ Init Container
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox:1.28
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
- Pod를 구성하는데 한 번만 실행되고 필요 없는 container를 만들 때 사용
- git clone 등 소스나 바이너리를 받아 application에서 사용하기 위해
- application이 시작되기 전에 외부 api와 연동이 먼저 되어야 할 때
- Pod가 만들어지면 init.Continaer먼저 생성
- init container가 여러 개라면 순차적으로 실행
- init container가 문제가 있다면 성공할 때까지 pod 재 실행
Reference
반응형
'DevOps' 카테고리의 다른 글
[CKA] Cluster Maintenance (0) | 2022.03.08 |
---|---|
[CKA] logging & monitoring (0) | 2022.03.05 |
[CKA] Scheduling (0) | 2022.03.04 |
[CKA] Core Concepts (0) | 2022.03.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- user-agent
- Network
- no-op
- buildkit
- docker-compose
- QUIC
- direnv
- 덕타이핑
- web_server
- Git
- GitHub
- pytest
- HTTP/2
- http
- database
- gitignore
- Python
- inflearn
- cka
- Complier
- k8s
- 위코드
- Isolate level
- MSA
- 원티드
- go
- 창업
- thetextbook
- 프리온보딩
- HTTP/3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함