
Pod의 spec.volumes[].configMap.items에 필요한 두 키만 나열하면 됩니다. 각 항목의 key는 ConfigMap에서 읽을 키이고, path는 볼륨 안에 만들 파일의 상대 경로입니다. 컨테이너에서는 mountPath 아래에 지정한 두 파일이 나타납니다.
items가 필요한 경우와 경로의 역할
하나의 ConfigMap에 여러 설정을 보관하더라도 특정 컨테이너에는 그중 일부만 파일로 제공할 수 있습니다. items를 생략하면 모든 키가 각각 같은 이름의 파일로 만들어지므로, 두 키만 제공하려면 선택 목록을 명시해야 합니다.
configMap.name: 데이터를 가져올 ConfigMap 이름입니다.items[].key: 파일 내용으로 사용할 값의 원본 키입니다.items[].path: 볼륨 안에서 사용할 파일의 상대 경로입니다. 원본 키와 다른 파일명을 지정할 수 있습니다.volumeMounts[].mountPath: 컨테이너에서 해당 볼륨을 읽을 디렉터리입니다.
세 키 중 두 개만 마운트하는 Pod 예제
다음 예제는 Kubernetes 클러스터에 연결된 kubectl과 ConfigMap·Pod 생성 권한이 필요합니다. 예제 이미지를 가져올 수 있어야 하며, ConfigMap과 Pod는 같은 네임스페이스에 생성해야 합니다. 실제 애플리케이션에 적용할 때는 사용하지 않는 디렉터리를 마운트 위치로 선택하고, 프로그램이 그 안의 파일을 읽도록 설정합니다.
아래 내용을 selected-config.yaml로 저장합니다. ConfigMap에는 세 키가 있지만 Pod의 items에는 두 키만 선언합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: service-settings
data:
app-settings: |
mode=demo
log-settings: |
level=info
display-name: "sample-service"
---
apiVersion: v1
kind: Pod
metadata:
name: selected-config-demo
spec:
containers:
- name: demo
image: alpine
command: ["sleep", "3600"]
volumeMounts:
- name: selected-settings
mountPath: /config
readOnly: true
volumes:
- name: selected-settings
configMap:
name: service-settings
items:
- key: app-settings
path: app.properties
- key: log-settings
path: logging.properties
volumes와 volumeMounts의 name을 동일하게 지정해 볼륨을 연결합니다. 이 예제의 컨테이너는 설정 파일을 확인할 시간을 확보하도록 대기합니다.
kubectl apply -f selected-config.yaml
kubectl get pod selected-config-demo
첫 명령은 두 리소스를 적용합니다. 두 번째 명령으로 Pod 상태를 확인하고, 컨테이너가 실행된 뒤 아래 확인 명령을 사용합니다.
생성되는 두 파일과 내용 확인하기
| ConfigMap 키 | 컨테이너 안의 파일 | 내용 |
|---|---|---|
| app-settings | /config/app.properties | mode=demo |
| log-settings | /config/logging.properties | level=info |
| display-name | 이 볼륨에 파일로 제공되지 않음 | 선택 목록에서 제외됨 |
kubectl exec selected-config-demo -c demo -- cat /config/app.properties /config/logging.properties
위 명령은 컨테이너에 있는 두 파일을 순서대로 읽습니다. 예제 설정이 적용되었다면 다음 내용이 출력되어야 합니다.
mode=demo
level=info
display-name 값은 ConfigMap에 그대로 남지만 이 볼륨에서는 파일로 제공되지 않습니다. 또한 원본 키 이름인 app-settings 대신 path에 지정한 app.properties가 파일명이 됩니다.
적용 전 확인할 조건과 제한
items에 적은 키가 참조하는 ConfigMap에 존재하는지 확인합니다.key에 원하는 파일명을 적고 원본 키를 놓치는 실수를 피해야 합니다.path에는 볼륨 내부의 상대 경로를 지정합니다. 예제에서는app.properties이며, 컨테이너의 최종 경로는/config/app.properties입니다.items를 통째로 제거하면 예제의 세 키가 모두 원본 키 이름의 파일로 제공됩니다.- 여러 컨테이너가 같은 볼륨을 읽어야 한다면 각 컨테이너에
volumeMounts를 추가해야 합니다. - ConfigMap 볼륨은 읽기 전용 설정 제공에 사용합니다. 또한 키를 일부만 마운트해도 ConfigMap 자체에 비밀 유지나 암호화 기능이 생기는 것은 아닙니다.
적용할 때는 먼저 필요한 두 원본 키를 고른 뒤, 각 키의 파일명을 path로 정하고 애플리케이션이 읽을 최종 경로와 대조하면 됩니다.