K8S Configmap... 알면 좋은 것들

Seung·2022년 3월 10일
0

K8S

목록 보기
9/14

컨테이너 실행 파일과 인자 지정

  • docker
    • ENTRYPOINT: 컨테이너 내부에서 실행되는 파일
    • CMD: 실행파일에 전달되는 인자
  • K8S
    • command: 실행파일에 전달되는 인자
    • args: 컨테이너 내부에서 실행되는 파일

디렉터리 마운트시 해당 디렉터리의 기존 파일들 숨겨짐

파일 시스템을 비어 있지 않은 디렉터리에 마운트할때 발생하며
새롭게 마운트된 파일 시스템의 파일만 포함되고, 해당 디렉토리의 원래 파일은 엑세스 할 수 없다.

그래서 이때는 volumeMounts의 subPath를 이용하면 해결할 수 있다.

volumeMounts:
- name: mysql-configmap-volume
  mountPath: /etc/mysql/conf.d/binlog_format.cnf
  subPath: binlog_format.cnf

Configmap volume의 파일권한

default로 configmap 볼륨의 파일 권한은 644로 설정된다.
변경을 원한다면 volumes.configMap.defaultMode에서 설정할 수 있다.


애플리케이션 재시작 없이 애플리케이션 설정 업데이트

환경 변수로 설정하는 경우, 컨테이너 실행 중 환경변수의 변경이 불가하다.
컨테이너 재시작 없이 설정의 변경이 필요한 경우, configmap 볼륨을 사용하자.
단, 볼륨을 참조하는 컨테이너 내부 프로세스는 볼륨의 변경을 감지하고 재로드할 수 있어야 한다.


파일을 원자적으로 업데이트할 수 있는 원리

configmap 볼륨의 내용을 변경하면, 파드에 마운트된 내용들 또한 변경된다.
이는 이러한 파일들이 symbolic link로 연결되어 있기 때문이다.


secret이 base64로 저장되는 이유

secret으로 저장되는 단순 문자열의 경우 바로 저장이 가능하지만,
SSL 인증서와 같은 바이너리 파일의 경우 문자열로 저장이 불가능하다.
바이너리와 같은 데이터를 저장하기 위해 이를 base64를 한번 인코딩한 후, secret으로 저장하는 것이다.


Reference

https://dev.to/joshduffney/kubernetes-using-configmap-subpaths-to-mount-files-3a1i
https://bcho.tistory.com/1268

profile
인프라 마스터가 되고 싶어요

0개의 댓글