DATABASE_HOST를 로컬에선 localhost, 클라우드에선 K8s Service 이름으로spec이 없고 — data와 binaryData 두 필드가 핵심| 필드 | 용도 |
|---|---|
data |
UTF-8 문자열 key-value |
binaryData |
바이너리 데이터 — base64-encoded string |
immutable |
true로 설정 시 변경 불가 (v1.19+) |
- _ . 만 허용. data와 binaryData의 key는 서로 겹치면 안 됨apiVersion: v1
kind: ConfigMap
metadata:
name: game-demo
data:
# property 스타일 — 단일 값
player_initial_lives: "3"
ui_properties_file_name: "user-interface.properties"
# file 스타일 — 멀티라인 내용
game.properties: |
enemy.types=aliens,monsters
player.maximum-lives=5
spec에서 ConfigMap을 참조해 컨테이너 설정에 주입spec은 ConfigMap을 비롯한 어떤 API 객체도 참조 불가| # | 방식 | 처리 주체 |
|---|---|---|
| 1 | 컨테이너의 command / args 안에서 사용 |
kubelet (컨테이너 시작 시) |
| 2 | 컨테이너의 환경 변수로 주입 | kubelet |
| 3 | read-only volume으로 파일 마운트 | kubelet |
| 4 | 앱 코드가 Kubernetes API로 직접 조회 | 앱 자체 |
spec.volumes[]에 configMap.name으로 참조 + 컨테이너 volumeMounts[]로 마운트mountPath 아래 파일 이름으로, 값이 파일 내용으로 들어감volumeMounts[].readOnly = true 권장 (ConfigMap volume은 본래 read-only)items 배열을 지정하면 — 일부 key만 골라 마운트 가능. 생략하면 ConfigMap의 모든 key가 파일로 노출됨spec:
containers:
- name: mypod
image: redis
volumeMounts:
- name: foo
mountPath: "/etc/foo" # 여기에 ConfigMap key들이 파일로 생성됨
readOnly: true
volumes:
- name: foo
configMap:
name: myconfigmap
.spec.volumes에 한 번만 선언하면 됨volumeMounts 블록을 따로 작성configMapAndSecretChangeDetectionStrategy로 조절| 캐시 타입 | propagation delay |
|---|---|
| watch (default) | watch propagation delay |
| ttl-based | TTL 만큼 |
| direct (매번 API server 조회) | 0 |
subPath로 마운트한 컨테이너는 ConfigMap 업데이트를 받지 못함| 방식 | 필드 | 동작 |
|---|---|---|
| 개별 key | env[].valueFrom.configMapKeyRef |
특정 key 1개를 골라 환경 변수에 매핑. 환경 변수 이름을 key와 다르게 줄 수 있음 |
| 전체 key | envFrom[].configMapRef |
ConfigMap의 모든 key-value를 한 번에 환경 변수로 주입 |
# 개별 key 매핑 — CONFIGMAP_USERNAME 환경 변수에 username key 값 주입
env:
- name: CONFIGMAP_USERNAME
valueFrom:
configMapKeyRef:
name: myconfigmap
key: username
# 전체 key 일괄 주입
envFrom:
- configMapRef:
name: myconfigmap
immutable: true를 설정하면 — data·binaryData 수정 불가, immutable 설정 자체도 되돌릴 수 없음apiVersion: v1
kind: ConfigMap
metadata:
name: myconfigmap
data:
key: value
immutable: true