Development3 min read

ConfigMap에서 두 키만 파일로 마운트하기: items로 선택하고 파일명 지정하기

2026년 11월 13일3 min read작성자 Flature

Pod의 configMap 볼륨에 items를 선언하면 필요한 키만 파일로 만들 수 있습니다. 세 키 중 두 개를 선택하는 YAML 예제로 key·path·mountPath의 역할과 생성될 파일을 설명합니다.

ConfigMap에서 두 키만 파일로 마운트하기: items로 선택하고 파일명 지정하기

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로 정하고 애플리케이션이 읽을 최종 경로와 대조하면 됩니다.

참고한 공식 문서