내 잡다한 노트

쿠버네티스 ConfigMap 본문

DevOps/쿠버네티스

쿠버네티스 ConfigMap

peanutwalnut 2024. 11. 16. 17:04

 

쿠버네티스에서 환경변수를 정의하는 것은 definition file 에서 env를 통해 정의를 한다.

하지만 Pod definition file이 많아지면, 환경 변수를 각각의 파일에서 관리하기가 어려워진다.

 

그래서 ConfigMap 이 존재한다.

ConfigMap은 키-값 쌍(Key-Value Pair) 형태로 환경 설정 데이터를 관리할 수 있는 Kubernetes 리소스입니다.

ConfigMap을 생성한 뒤, Pod에 주입하여 애플리케이션에서 환경 변수나 파일 형태로 사용할 수 있습니다.

 

ConfigMap은 명령어나 manifest 파일을 작성하여 ConfigMap 리소스를 생성한다.

이때, 데이터를 파드에 주입하려면 환경 변수로 주입을 하거나, 파일 형태로 볼륨에 마운트하여 주입한다.

 

ConfigMap 데이터 확인 및 관리:

  • kubectl get configmaps: ConfigMap 목록 확인.
  • kubectl describe configmap [name]: ConfigMap 데이터 확인.

 

2. ConfigMap 생성 방법

(1) 명령형(Imperative) 방식

  • kubectl create configmap 명령어를 사용하여 ConfigMap을 즉석에서 생성합니다.

예제 1: --from-literal 사용

 
kubectl create configmap app-config --from-literal=app.color=blue
kubectl create configmap app-config --from-literal=app.color=blue --from-literal=app.size=large
  • ConfigMap 이름: app-config.
  • 데이터: app.color=blue, app.size=large.

예제 2: --from-file 사용

 
kubectl create configmap app-config --from-file=./config.properties
  • 파일 내용이 ConfigMap으로 저장됩니다.
  • 파일의 각 줄은 key=value 형식이어야 합니다.

 

3. ConfigMap 데이터를 Pod에 주입하는 방법

(1) 환경 변수로 주입

Pod 정의 파일에서 envFrom 속성을 사용해 ConfigMap 데이터를 환경 변수로 설정합니다.

 
apiVersion: v1
kind: Pod
metadata:
    name: app-pod
spec:
    containers:
        - name: app-container
           image: nginx
           envFrom:
              - configMapRef:
                    name: app-config
  • ConfigMap의 모든 키-값 쌍이 환경 변수로 주입됩니다.
  • 예: app.color는 환경 변수 APP_COLOR로 사용 가능.

(2) 파일 형태로 주입 (Volume으로 마운트)

ConfigMap 데이터를 볼륨에 마운트하여 파일로 애플리케이션에 전달할 수 있습니다.

 
apiVersion: v1
   kind: Pod
   metadata:
       name: app-pod
   spec:
       containers:
        - name: app-container
           image: nginx
           volumeMounts:
             - name: config-volume
                mountPath: /etc/config
        volumes:
        - name: config-volume
          configMap:
              name: app-config
  • /etc/config 디렉토리 안에 ConfigMap의 각 키가 파일 이름으로 생성됩니다.
  • 파일 내용은 ConfigMap의 값입니다.

ConfigMap의 주요 장점

  1. 환경 설정 분리:
    • Pod 정의 파일과 환경 설정 데이터를 분리하여 관리 효율성을 높임.
  2. 중앙 집중 관리:
    • 여러 Pod에 동일한 설정을 쉽게 공유.
  3. 유연한 주입 방식:
    • 환경 변수 또는 파일 형태로 주입 가능.
  4. 확장성:
    • 다양한 애플리케이션 설정을 별도 ConfigMap으로 관리 가능.