k8s에서 하나의 configmap을 이용하여 여러 개의 파일을 마운트하는 법을 알아보자.
아래와 같이 하나의 configmap에서 여러 개의 파일을 만들 수 있다.
이해를 위해 파일이라고 했지만, 사실은 key-value로 저장된다고 하는 것이 정확하다.
kind: ConfigMap
apiVersion: v1
metadata:
name: example-config
data:
fileOne.conf: |-
blahblahblah
blahblahblah
fileTwo.conf: |-
{
"sample": {
"config" : "example"
}
}
이렇게 fileOne.conf 라는 key 하나와 fileTwo.conf 라는 key 하나, 총 두개의 key를 만들었다.
이제 이 key값을 파일이름으로하여 pod에 마운트 하면된다.
apiVersion: v1
kind: Pod
metadata:
name: test-pod
spec:
containers:
- image: togomi/sample-image
name: sample-container
volumeMounts:
- name: fileOne
mountPath: /path/to/where/fileOne.conf
subPath: fileOne.conf
- name: fileTwo
mountPath: /path/to/where/fileTwo.conf
subPath: fileTwo.conf
volumes:
- name: fileOne
configMap:
name: example-config
items:
- key: fileOne.conf
path: fileOne.conf
- name: fileTwo
configMap:
name: example-config
items:
- key: fileTwo.conf
path: fileTwo.conf
subPath는 무엇인지 의문이 들 수 있다.
volumeMount는 기본적으로 그 폴더를 덮어씌워버린다.
즉, 빈 폴더에 mount를 한다면 문제가 없지만,
기존에 파일이 있는 폴더라면 기존의 파일들이 사라진다는 뜻이다.
이 때, subPath를 지정하면 기존 파일은 보존하면서 그 파일만 추가할 수 있다.
주의할 점은 mountPath에 subPath의 파일이름까지 전부 써줘야한다.
'공부 > Kubernetes' 카테고리의 다른 글
Kubernetes Audit (감사로그) (3) | 2021.08.09 |
---|---|
nginx-ingress의 SSL/TLS/HTTPS 설정 (0) | 2021.07.12 |
operator-sdk로 k8s 기본 리소스 컨트롤러 추가하기 (0) | 2021.06.08 |
calico 완전 삭제 후 재설치 (0) | 2021.05.22 |
Kubernetes Secret은 정말 Secret일까? (2) | 2021.03.25 |