Kubernetes ConfigMap

2026. 6. 13. 16:09Kubernetes


Ⅰ. ConfigMap (컨피그맵)

ConfigMap

(컨피그맵)
구분 설명
개념 컨테이너의 환경 변수, 명령행 인수, 설정 파일 등

구성 데이터를 외부에서 관리하도록 하는 Kubernetes 오브젝트
목적 애플리케이션 코드를 수정하지 않고도 설정값만 분리 및 변경 가능하도록 하여 환경 독립성 확보
특징 Pod의 설정 정보를 코드와 분리하여 관리
Secret과 달리, 암호화되지 않은 일반 설정 데이터 저장
동일한 ConfigMap을 여러 Pod에 공유 가능
업데이트 시 Pod 재시작 필요할 수 있음
데이터 형태 'key : value' 형식으로 구성된 평문 데이터 (암호화 불필요한 설정값 저장)
저장 방식 etcd에 평문으로 저장되어 클러스터 내에서 공유 및 참조 가능
적용 방법 Pod 환경변수로 주입
컨테이너 내부 파일로 마운트
명령행 인수로 참조 가능
주요 사용 예시 환경 변수 전달
설정 파일 구성
명령행 인자 대체

 

 

 

cd kube/11/configmap/ 명령을 통해 홈 디렉터리에서 kube/11/configmap/ 디렉터리로 이동

 

ls 명령을 통해 해당 디렉터리 내 파일 목록 확인

 

echo 'localhost' > url.txt 명령을 통해 url.txt 파일에 ‘localhost’ 내용 입력 및 저장

 

echo 'debug' > DEBUG_INFO 명령을 통해 DEBUG_INFO에 ‘debug’ 내용 입력 및 저장

 

cat url.txt 명령을 통해 내용이 잘 입력되었는지 확인

 

cat DEBUG_INFO 명령을 통해 내용이 잘 입력되었는지 확인

 

 

# test-config 리소스 생성 (ConfigMap)

 

kubectl create configmap test-config \ --from-literal=DB_USER=webadmin \

 

--from-literal=DB_PASS=abcd1234 \ --from-file=DB_URL=url.txt \

 

--from-file=DEBUG_INFO 명령을 통해 ConfigMap 생성

 

kubectl get configmaps 명령을 통해 ConfigMap이 잘 생성되었는지 확인

 

kubectl describe configmaps test-config 명령을 통해 test-config의 세부 내용 확인

 

 

vi test-config.yml 명령을 통해 vi 편집기 사용하여 test-config.yml 파일 생성 및 내용 입력

 

 

# test-config 리소스 생성 (ConfigMap)

 

kubectl creat –f test-config.yml 명령을 통해 test-config.yml 파일 이용하여 test-config 리소스 생성

 

kubectl get configmaps 명령을 통해 리소스가 잘 생성되었는지 확인

 

kubecctl describe configmaps test-config 명령을 통해 test-config 리소스의 상세 정보 확인

 

 

# test-config ConfigMap 리소스와 그와 관련된 것 모두 삭제

 

kubectl delete configmaps test-config 명령을 통해 test-config 리소스와 그와 관련된 모든 것 삭제

 


Ⅰ - Ⅰ. ConfigMap 일부분 적용

ConfigMap

일부분 적용
구분 설명
특정 키만 참조 ConfigMap 전체가 아닌 일부 key만 선택하여 Pod 환경 변수로 주입 가능
부분 마운트 (파일로 적용) ConfigMap의 일부 키만 특정 파일로 마운트 가능
--from-literal / --from-file 혼용 여러 설정값을 한 ConfigMap에 구성하되, 필요한 값만 선택적으로 참조
Pod 내 참조 시 유의점 참조 대상 key가 존재하지 않으면 Pod 생성 실패
ConfigMap 변경 시 자동 반영되지 않음 (재시작 필요)
ConfigMap 볼륨 내 특정 key만 사용 필요 key만 별도 경로로 마운트해 파일 관리 가능

 

 

# testpod 리소스 생성 (Pod)

 

kubectl run testpod --image=smlinux/genid:env 명령을 통해 

 

smlinux/genid:env 이미지 사용하여 testpod 리소스 생성

 

(smlinux/genid:env 이미지 - 기본 리눅스 명령어 boxes, rig, fortune 등)가 포함된 리눅스 기반 환경 이미지)

 

kubectl get pod 명령을 통해 잘 생성되었는지 확인

 

 

# testpod 리소스 내부 컨테이너 내부 동작

 

kubectl exec -it testpod -- /bin/bash 명령을 통해 testpod 리소스 내부 컨테이너에 bash 쉘로 접속하도록 설정

 

rig 명령을 통해 무작위로 가짜 인물의 이름과 주소, 전화번호 생성

 

rig | boxes 명령을 통해 rig 명령으로 인해 생성된 가짜 인물의 이름과 주소, 전화번호를 박스 스타일로 감싸도록 설정

 

boxes -d stone 명령을 통해 rig 명령의 출력이 돌벽 같은 ASCII 아트 스타일로 감싸지도록 설정

 

rig | boxes -d boy 명령을 통해 rig 명령의 출력이 소년 모양 캐릭터 안에 표시되도록 설정

 

 

ls –l /bin/genid.sh 명령을 통해 bin 디렉터리 내의 genid.sh 파일의 상세 정보 확인

 

ps –ef 명령을 통해 현재 실행 중인 프로세스 목록 출력

 

cat /bin/genid.sh 명령을 통해  bin 디렉터리 내의 genid.sh 파일의 내용 확인

 

exit 명령을 통해 testpod 리소스 컨테이너 내부 bash 쉘에서 나옴

 

 

ls 명령을 통해 디렉터리 구조 확인

 

ls config.dir/ 명령을 통해 config.dir 디렉터리 구조 확인

 

vi config.dir/nginx.conf 명령을 통해 vi 편집기 사용하여 config.dir/nginx.conf 파일 생성 및 내용 입력

 

 

# test-config 리소스 생성 (ConfigMap)

 

kubectl create configmap test-config \ --from-literal=INTERVAL=2 \ --from-literal=OPTION=dog \

 

--from-file=config.dir/nginx.conf 명령을 통해 test-config 리소스 생성

 

kubectl get configmaps 명령을 통해 잘 생성되었는지 확인

 

kubectl describe configmaps test-config 명령을 통해 test-config 리소스 상세 정보 확인

 

 

vi genid-stone.yml 명령을 통해 vi 편집기 사용하여 genid-stone.yml 파일 생성 및 내용 입력

 

 

# genid-stone 리소스 생성

 

kubectl create –f genid-stone.yml 명령을 통해 genid-stone.yml 파일 사용하여 genid-stone 리소스 생성

 

kubectl get pod 명령을 통해 리소스가 잘 생성되었는지 확인

 

 

# genid-stone 리소스 내부 컨테이너 내부 동작

 

kubectl exec genid-stone -c genid 명령을 통해 genid-stone 리소스 내부 genid 컨테이너로 접속하도록 지정

 

--env 옵션을 통해 genid-stone 리소스 컨테이너 내부 환경 변수 목록 출력

 

kubectl get pod –o wide 명령을 통해 리소스의 상세 정보 확인

 

 

# genid-stone 리소스와 그와 관련된 것 모두 삭제

 

kubectl delete pod genid-stone —force 명령을 통해 genid-stone 리소스와 그와 관련된 것 모두 삭제

 


Ⅰ - Ⅱ. ConfigMap 전체 적용

ConfigMap

전체 적용
구분 설명
전체 환경변수로 적용 ConfigMap의 모든 key-value 쌍을 컨테이너 환경 변수로 한 번에 주입
전체 파일로 마운트 ConfigMap의 전체 데이터를 /etc/config 등

특정 디렉터리로 파일 형태로 마운트
--from-file 옵션으로 생성된 ConfigMap ConfigMap 생성 시 여러 설정 파일을 한 번에 등록

-> Pod에서 전체 참조 가능
특징 및 주의사항 ConfigMap 변경 시 자동 반영되지 않음 (Pod 재시작 필요)
모든 key-value가 환경 변수로 노출되므로

보안 정보 포함 시 Secret 사용 필요
활용 예시 애플리케이션 설정 파일 (app.conf, config.yaml) 전체 마운트
동일 설정을 여러 Pod에서 공통으로 사용

 

 

vi genid-dog.yml 명령을 통해 vi 편집기 사용하여 genid-dog.yml 파일 생성 및 내용 입력

 

 

# genid-dog 리소스 생성

 

kubectl create –f genid-dog.yml 명령을 통해 genid-dog.yml 파일 이용하여 genid-dog 리소스 생성

 

kubectl get pod –o wide 명령을 통해 잘 생성되었는지 확인

 

 

# genid-dog 리소스 내부 컨테이너 동작

 

kubectl exec genid-dog –c genid genid-dog 리소스 내부 genid 컨테이너로 진입하도록 설정

 

--env 옵션을 통해 genid-dog 리소스 컨테이너 내부 환경 변수 출력

 

 

# testpod, genid-dog 리소스와 그들과 관련된 것 모두 삭제

 

kubectl delete pod testpod genid-dog —force 명령을 통해

 

testpod, genid-dog 리소스와 그와 관련된 것 모두 삭제

 

 

# test-config 리소스와 그와 관련된 것 모두 삭제

 

kubectl delete configmaps test-config 명령을 통해 test-config 리소스와 그와 관련된 것 모두 삭제

'Kubernetes' 카테고리의 다른 글

Kubernetes Storage  (0) 2026.06.13
Kubernetes Secret  (0) 2026.06.13
Kubernetes Label과 Annotation  (0) 2026.06.13
Kubernetes Ingress  (0) 2026.06.13
Kubernetes Service  (0) 2026.06.13