- 롤링 업데이트 / 롤백
deployment를 적용(신규/수정)하면 revision(일종의 버전)으로 실행되고 이를 rollout으로 관찰 가능
kubectl rollout status/history
업데이트란? 앱 버전이 올라갈 수 있고, 쿠버네티스 설정이 변경될 수 있음 (다양)
-- deployment 전략
--- recreate: 기존 pod을 전부 삭제하고 새 버전을 배포
사이에 downtime이 발생함
--- rolling update: pod를 한 개씩 삭제하고 새 버전을 배포 (디폴트)
-- 실행 흐름
--- 업데이트
deployment가 적용되면 이에 해당하는 새로운 replicaset이 생성되고,
기본값인 rolling update의 경우 새 replicaset에서 pod이 하나 생성되고 기존 replicaset에서 pod이 하나 삭제되는 방식
replicaset에서 pod이 전부 삭제되었어도 0/0 상태로 남아있다!
--- 롤아웃
kubectl rollout undo 명령어를 통해 수행하며, 기존 replicaset을 복원함
- 도커와 쿠버네티스의 command 차이
-- 도커
--- ENTRYPOINT: 실행 명령어 prefix
--- CMD: 실행 명령어. 아규먼트를 따로 명시하는 경우 무시
-- 쿠버네티스
--- pod.spec.containers.command: ENTRYPOINT, CMD 덮어씀
--- pod.spec.containers.args: CMD 덮어씀
--- pod.spec.containers.env.[name,value/valueFrom]: env 설정. valueFrom의 경우 별도 리소스에서 단일 env 획득
--- pod.spec.containers.envFrom: ConfigMap 등 별도 리소스에서 전체 env 획득
- ConfigMap: key-value 쌍을 별도로 저장
- Secrets: ConfigMap과 유사하지만 인코딩 적용
CLI로 써넣으면 자동으로 base64 인코딩해서 적용되고,
yaml 파일의 경우 평문으로 적으면 apply가 안돼서 직접 base64 인코딩 후 써넣어야한다
또 쿠버네티스 자원에 접근할 수 있으면 열람할 수 있으므로 RBAC를 잘 적용하라고 한다
'잘' 적용하면 좋지만, Helm Secrets, HashiCorp Valut같은 외부 툴을 권장하는 듯 하다
-- etcd에 저장된 secret 데이터의 보안
etcd에는 secret 데이터가 평문으로 저장된다
https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/
위 공식문서를 참고해서 etcd에 데이터를 암호화해서 저장할 수 있다
EncryptionConfiguration 리소스를 생성해서 어떤 리소스를 어떻게 암호화할지 설정하고,
kubeapiserver에 encryption-provider-config를 위 리소스 기반으로 활성화시킨다 (apiserver는 manifest니까 파일 수정)
- n개의 컨테이너로 구성된 pod가 볼륨을 공유하도록 하기
- initContainers: pod 안에서 부팅 시 한 번만 커맨드를 실행하고 종료될 컨테이너
https://kubernetes.io/ko/docs/concepts/workloads/pods/init-containers/
initContainers가 순차적으로 생성되고 실행 후 종료되고나서 컨테이너가 실행된다
'Infra > [강의] CKA with Practice Tests' 카테고리의 다른 글
8. Storage (0) | 2023.01.16 |
---|---|
6. Cluster Maintenance (0) | 2023.01.13 |
4. Logging & Monitoring (0) | 2023.01.12 |
3: Scheduling (0) | 2022.12.27 |
2: Core Concepts (0) | 2022.12.20 |