ENTRYPOINT
: 컨테이너 내부에서 실행되는 파일CMD
: 실행파일에 전달되는 인자command
: 실행파일에 전달되는 인자args
: 컨테이너 내부에서 실행되는 파일파일 시스템을 비어 있지 않은 디렉터리에 마운트할때 발생하며
새롭게 마운트된 파일 시스템의 파일만 포함되고, 해당 디렉토리의 원래 파일은 엑세스 할 수 없다.
그래서 이때는 volumeMounts의 subPath
를 이용하면 해결할 수 있다.
volumeMounts:
- name: mysql-configmap-volume
mountPath: /etc/mysql/conf.d/binlog_format.cnf
subPath: binlog_format.cnf
default로 configmap 볼륨의 파일 권한은 644
로 설정된다.
변경을 원한다면 volumes.configMap.defaultMode
에서 설정할 수 있다.
환경 변수로 설정하는 경우, 컨테이너 실행 중 환경변수의 변경이 불가하다.
컨테이너 재시작 없이 설정의 변경이 필요한 경우, configmap 볼륨
을 사용하자.
단, 볼륨을 참조하는 컨테이너 내부 프로세스는 볼륨의 변경을 감지하고 재로드할 수 있어야 한다.
configmap 볼륨의 내용을 변경하면, 파드에 마운트된 내용들 또한 변경된다.
이는 이러한 파일들이 symbolic link
로 연결되어 있기 때문이다.
secret으로 저장되는 단순 문자열의 경우 바로 저장이 가능하지만,
SSL 인증서와 같은 바이너리 파일의 경우 문자열로 저장이 불가능하다.
바이너리와 같은 데이터를 저장하기 위해 이를 base64를 한번 인코딩한 후, secret으로 저장하는 것이다.
https://dev.to/joshduffney/kubernetes-using-configmap-subpaths-to-mount-files-3a1i
https://bcho.tistory.com/1268