Kubernetes ConfigMap 쉽게 이해하고 실습해보기

y001·2025년 3월 23일
0
post-thumbnail

1. ConfigMap이란?

쿠버네티스에서 애플리케이션을 실행할 때 필요한 환경변수나 설정 값을 코드에 직접 넣는 건 좋지 않다.
이럴 때 사용하는 것이 ConfigMap이다.
ConfigMap은 환경 변수, 설정 파일 경로, 디버그 모드 같은 민감하지 않은 설정 값을 분리해서 관리할 수 있도록 도와준다.

중요: 비밀번호나 인증 키 같은 민감한 정보는 ConfigMap이 아니라 Secret 리소스를 사용해야 한다.
ConfigMap은 암호화되지 않고 etcd에 평문으로 저장된다.


2. ConfigMap 생성 방법

2-1. YAML 파일로 생성

아래처럼 test-config.yaml 파일을 만든다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: test-config
data:
  DB_USER: webadm
  DB_PASS: abcd1234
  DB_URL: localhost
  DEBUG_INFO: debug

작성 후 EC2 마스터 노드에서 다음 명령어를 실행한다.

kubectl apply -f test-config.yaml

생성된 ConfigMap을 확인해보자.

kubectl get configmap test-config -o yaml

2-2. kubectl 명령어로 바로 생성

굳이 yaml 파일을 만들지 않고 한 줄로도 생성 가능하다.

kubectl create configmap test-config \
  --from-literal=DB_USER=webadm \
  --from-literal=DB_PASS=abcd1234 \
  --from-literal=DB_URL=localhost \
  --from-literal=DEBUG_INFO=debug

3. ConfigMap 사용하는 방법

3-1. 환경변수로 주입

Pod를 만들 때 아래처럼 ConfigMap을 주입할 수 있다.

apiVersion: v1
kind: Pod
metadata:
  name: configmap-pod
spec:
  containers:
  - name: test-container
    image: centos
    command: ["/bin/sh", "-c", "env; sleep 3600"]
    envFrom:
    - configMapRef:
        name: test-config

이 파일을 configmap-pod.yaml로 저장한 뒤 실행한다.

kubectl apply -f configmap-pod.yaml

컨테이너에 접속해서 환경 변수를 확인해보자.

kubectl exec -it configmap-pod -- /bin/sh
env | grep DB_

이렇게 하면 ConfigMap에 있던 값들이 잘 들어온 것을 확인할 수 있다.

3-2. 파일처럼 마운트

ConfigMap을 파일로 사용하고 싶으면 다음처럼 마운트할 수도 있다.

volumes:
  - name: config-volume
    configMap:
      name: test-config
containers:
  - name: test-container
    image: centos
    volumeMounts:
      - name: config-volume
        mountPath: /etc/config

컨테이너 안 /etc/config 경로에 파일 형태로 저장된다.

0개의 댓글