문서 목차
QKS · 설정
ConfigMaps
ConfigMap 은 민감하지 않은 설정 데이터를 키 값 쌍으로 저장하는 Kubernetes 오브젝트입니다. 컨테이너 이미지에 설정값을 직접 포함하지 않고, ConfigMap을 통해 외부에서 주입함으로써 이미지를 다시 빌드하지 않고 설정을 변경할 수 있습니다.
QUANTUM C&S
개요
ConfigMap은 민감하지 않은 설정 데이터를 키-값 쌍으로 저장하는 Kubernetes 오브젝트입니다. 컨테이너 이미지에 설정값을 직접 포함하지 않고, ConfigMap을 통해 외부에서 주입함으로써 이미지를 다시 빌드하지 않고 설정을 변경할 수 있습니다.
사용 예시:
- 환경별(개발/스테이징/프로덕션) 설정 분리
- 애플리케이션 설정 파일
- 환경 변수 값
QKS 콘솔에서 ConfigMap 확인
- 왼쪽 메뉴에서 설정 > ConfigMaps를 선택합니다.
- 네임스페이스를 선택하면 ConfigMap 목록이 표시됩니다.
- ConfigMap 이름을 클릭하면 저장된 키-값 데이터를 확인합니다.
ConfigMap 사용 방법
1. 환경 변수로 주입 (단일 키)
containers:
- name: my-app
image: my-app:latest
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: my-config
key: environment
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: my-config
key: log_level
2. 환경 변수로 전체 주입 (모든 키)
containers:
- name: my-app
envFrom:
- configMapRef:
name: my-config
ConfigMap의 모든 키가 컨테이너 환경 변수로 자동 주입됩니다.
3. 볼륨으로 마운트 (파일 형태)
ConfigMap 데이터를 파일 시스템에 마운트합니다. 각 키가 파일 이름, 값이 파일 내용이 됩니다.
volumes:
- name: config-vol
configMap:
name: my-config
containers:
- name: my-app
volumeMounts:
- name: config-vol
mountPath: /etc/config
마운트 결과: /etc/config/environment, /etc/config/log_level 파일이 생성됩니다.
kubectl로 관리
# ConfigMap 목록
kubectl get configmaps -n <namespace>
# ConfigMap 상세 내용 확인
kubectl describe configmap <name> -n <namespace>
kubectl get configmap <name> -n <namespace> -o yaml
# ConfigMap 생성 (literal 값)
kubectl create configmap my-config \
--from-literal=environment=production \
--from-literal=log_level=info \
-n <namespace>
# ConfigMap 생성 (파일에서)
kubectl create configmap my-config \
--from-file=app.properties \
-n <namespace>
# ConfigMap 생성 (디렉토리 전체)
kubectl create configmap my-config \
--from-file=./config-dir/ \
-n <namespace>
# ConfigMap 수정
kubectl edit configmap <name> -n <namespace>
# ConfigMap 삭제
kubectl delete configmap <name> -n <namespace>
ConfigMap YAML 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app-config
namespace: production
data:
environment: "production"
log_level: "info"
max_connections: "100"
app.properties: |
server.port=8080
spring.datasource.url=jdbc:postgresql://db:5432/mydb
spring.cache.type=redis
주의사항
- ConfigMap은 민감한 정보(비밀번호, 토큰 등)를 저장하면 안 됩니다. 민감한 정보는 Secret을 사용하세요.
- 볼륨으로 마운트된 ConfigMap은 변경 사항이 자동으로 파드에 반영됩니다 (약간의 지연 있음). 환경 변수로 주입한 경우는 파드 재시작 필요합니다.