2026. 6. 13. 16:09ㆍKubernetes
Ⅰ. 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 |