지니데비 기록 자세히보기

데브옵스/Orchestration

[Kubernetes] 27. ConfigMap

지니데비 2024. 11. 21. 18:25
728x90


ConfigMap
Secret은 환경설정 데이터를 관리하기 위한 리소스이다. 애플리케이션에서 환경변수나 설정파일처럼 사용할 수 있는 키-값 쌍을 저장한다. 컨테이너 이미지와 설정 데이터가 분리되어 있어 배포 시 유연성을 높여준다.

ConfigMap 생성
# 리터럴 데이터로 생성
kubectl create configmap [config name] --from-literal=[key]=[value]
kubectl create configmap app-config --from-literal=APP_COLOR=blue --from-literal=APP_MODE=prod


# 파일로 생성
kubectl create configmap [config name] --from-file=[file path]
kubectl create configmap app-config --from-file=config-map.yaml


# yaml 파일로 생성
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_COLOR: blue
  APP_MODE: prod

kubectl create -f config-map.yaml
활용 예시 - 환경변수로 ConfigMap 참조
apiVersion: v1
kind: Pod
metadata:
  name: dapi-test-pod
spec:
  containers:
    - name: test-container
      image: registry.k8s.io/busybox
      command: [ "/bin/sh", "-c", "env" ]
      env:
      - name: APP_COLOR
        valueFrom:
          configMapKeyRef:
            name: app-config
            key: APP_COLOR       # ConfigMap의 특정 키 참조
      envFrom:
      - configMapRef:
          name: special-config   # ConfigMap의 데이터 전부 참조
활용 예시 - ConfigMap 데이터를 컨테이너 파일시스템의 특정 경로에 파일로 저장
apiVersion: v1
kind: Pod
metadata:
  name: simple-webapp-color
spec:
  containers:
  - name: simple-webapp-color
    image: simple-webapp-color
    volumeMounts:
      - name: config-volume
        mountPath: /etc/config    # 컨테이너 내 /etc/config 경로에 ConfigMap 데이터가 파일 형태로 저장됨
  volumes:
  - name: config-volume
    configMap:
      name: app-config            # 참조할 ConfigMap 이름

 

  • 환경변수 (env or envFrom): ConfigMap 데이터를 직접 컨테이너 환경변수로 설정.
  • 환경변수는 단순한 설정값을 전달할 때 사용.
  • 마운트 (volume + volumeMount): ConfigMap 데이터를 컨테이너 파일 시스템의 특정 경로에 파일로 저장.
  • 마운트는 복잡한 설정 파일이나, 파일 형태로 읽어야 하는 설정 데이터를 전달할 때 사용.
728x90
반응형