ConfigMap

ConfigMap은 키-값 쌍의 형태로 구성 데이터를 저장하는 쿠버네티스 리소스입니다. 애플리케이션 코드와 구성을 분리하여 컨테이너화된 애플리케이션의 이식성을 높이는 데 사용됩니다.

특징

ConfigMap 데이터 사용 방법

클라우드 네트워크 개념과 비교

실습 예시

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  # 개별 속성
  database_host: "mysql.example.com"
  database_port: "3306"
  
  # 구성 파일
  app.properties: |
    color=blue
    mode=prod
    log-level=INFO
    
  # JSON 형식 설정
  app-config.json: |
    {
      "db": {
        "host": "mysql.example.com",
        "port": 3306
      },
      "cache": {
        "enabled": true,
        "ttl": 300
      }
    }

환경 변수로 ConfigMap 사용 예시

apiVersion: v1
kind: Pod
metadata:
  name: app-pod
spec:
  containers:
  - name: app
    image: myapp:1.0
    env:
    # 개별 환경 변수로 가져오기
    - name: DB_HOST
      valueFrom:
        configMapKeyRef:
          name: app-config
          key: database_host
    
    # ConfigMap의 모든 키를 환경 변수로 가져오기
    envFrom:
    - configMapRef:
        name: app-config

볼륨 마운트로 ConfigMap 사용 예시

apiVersion: v1
kind: Pod
metadata:
  name: app-pod-volume
spec:
  containers:
  - name: app
    image: myapp:1.0
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: app-config

ConfigMap 생성 방법 (명령적 방식)

# 파일에서 생성
kubectl create configmap app-config --from-file=app.properties

# 리터럴 값으로 생성
kubectl create configmap env-config --from-literal=ENV=production --from-literal=DEBUG=false

# 여러 파일이 있는 디렉토리에서 생성
kubectl create configmap config-dir --from-file=config-dir/

ConfigMap 업데이트와 애플리케이션 반영

ConfigMap을 업데이트했을 때: