728x90
[K8s][CKS] 컨테이너의 불변성 보장
컨테이너는 기본적으로 변경이 불가능하지만, 내부 업데이트를 수행할 수 있다.
파일을 pod에 직접 복사하거나, 셀에 접속해서 변경하는 등 다양한 방법으로 작업을 수행할 수 있다.
이를 방지하기 위해선, pod가 시작된 후에는 파일시스템에 쓸 수 없도록 해야한다.
이 때 사용할 수 있는게 security contexts다.
Security Contexts
불변성 보장하기 위해 readOnlyRootFilesystem=true를 사용한다.
다음과 같은 manifest file을 임의로 생성해보자.
k run nginx --image=nginx --dry-run=client -o yaml > nginx.yaml
해당 yaml 파일의 container단에 securityContexts를 추가 해준다.
권한이 없어서 cache 폴더가 생성이 안되기 때문에, cache 경로 또한 마운트를 해준다.
apiVersion: v1
kind: Pod
metadata:
labels:
run: nginx
name: nginx
spec:
containers:
- image: nginx
name: nginx
securityContext:
readOnlyRootFilesystem: true
volumeMounts:
- name: cache-volume
mountPath: /var/cache/nginx
- name: runtime-volume
mountPath: /var/run
volumes:
- name: cache-volume
emptyDir: {}
- name: runtime-volume
emptyDir: {}
리소스 생성 후 불변성 테스트를 해본다.
k create -f nginx.yaml
k exec -it nginx -- apt update
참고
반응형
'🐳 Container > K8S' 카테고리의 다른 글
[K8s] SecurityContext (1) | 2024.06.04 |
---|---|
[K8s][CKS] 감사(auditing) (0) | 2024.06.03 |
[K8s][CKS] TLS (Cipher-Suites) (0) | 2024.05.23 |
[K8s][CKS] Kube-bench (0) | 2024.05.21 |
[K8s][CKS] 런타임 클래스 (runtime class) (0) | 2024.05.13 |