티스토리 뷰
728x90
🍯 ConfigMap 유용한 응용 팁
1. 서버 설정 파일 관리
Spring Boot, Nginx, Node.js 같은 앱의 설정파일 (application.yml, nginx.conf, .env)을
이미지에 집어넣지 않고, ConfigMap으로 외부 주입하면 좋아요.
장점:
- 코드/이미지와 설정 분리
- 설정만 바꿔서 롤링 업데이트 가능
- 여러 환경(dev, staging, prod) 별로 ConfigMap 분리 가능
예시
apiVersion: v1
kind: ConfigMap
metadata:
name: spring-config
data:
application.yml: |
server:
port: 8080
spring:
profiles:
active: dev
/config/application.yml로 마운트 → Spring Boot에서 spring.config.location 설정하면 바로 사용 가능.
2. 다중 ConfigMap 조합하기
하나의 Pod에서 여러 ConfigMap을 합쳐서 사용할 수 있어요.
예시
volumes:
- name: app-config
configMap:
name: spring-config
- name: log-config
configMap:
name: logback-config
volumeMounts에서 각각 마운트할 경로를 다르게 설정하면 됩니다.
→ 앱 설정 + 로그 설정 + 외부 API 설정 이런 식으로 모듈화 가능!
3. 환경별 ConfigMap 분리 + 자동 선택
Dev, Staging, Production마다 ConfigMap을 따로 만들고,
Pod 배포 시 환경변수로 구분해서 연결해요.
env:
- name: ENV
value: "dev"
volumes:
- name: config-volume
configMap:
name: config-${ENV}
주의: 이렇게 변수를 직접 쓰면 안 되고, Helm, Kustomize, ArgoCD 같은 툴로 템플릿 처리해야 해요.
(쿠버네티스 순정 YAML은 변수 치환 안 돼요.)
4. 파일 별 권한, 경로 지정
ConfigMap을 마운트할 때 특정 파일만 골라서, 이름이나 경로를 바꿀 수 있어요.
volumes:
- name: config-volume
configMap:
name: my-config
items:
- key: important.conf
path: settings/important.conf
- key: secrets.txt
path: secrets/secrets.txt
- items 배열을 쓰면 부분 선택, 경로 변경 가능!
- 중요한 설정은 다른 서브폴더로 묶을 수 있어요.
5. 프로그램 재시작 없이 설정 동적 반영
앞서 말했던 Projected Volume 사용 + 앱에서 파일 변화 감지(Hot Reload) 기능 활성화.
예시
- Spring Boot spring-cloud-kubernetes-config 사용
- nginx inotify로 config reload
- custom 앱이면 fswatch, inotify-tools 같은 걸로 파일 변경 감지
volumes:
- name: config-volume
projected:
sources:
- configMap:
name: my-config
이렇게 해두면, ConfigMap 수정 → 파일만 교체 → 앱이 자동 reload
→ 완전 무중단 설정 변경도 가능해져요.
6. Script, SQL 파일 배포용으로 사용
어플리케이션이 부팅할 때 초기화할 스크립트나 SQL 파일도
ConfigMap으로 넣을 수 있어요.
예시
kubectl create configmap init-sql --from-file=init.sql
Pod 시작할 때:
containers:
- name: init-db
image: mysql
command: [ "mysql", "-h", "db", "-u", "root", "-p$MYSQL_ROOT_PASSWORD", "-e", "source /etc/init.sql" ]
volumeMounts:
- name: init-volume
mountPath: /etc/init.sql
subPath: init.sql
✨ 요약
응용 아이디어 | 설명 |
서버 설정 파일 관리 | 코드-설정 분리, 환경별 설정 가능 |
여러 ConfigMap 조합 | 앱 설정, 로깅 설정 등 모듈화 |
환경별 자동 매칭 | Helm, Kustomize로 자동화 |
파일 세부 설정 | 파일별 경로/권한 분리 가능 |
Hot Reload 적용 | 앱을 재시작하지 않고 설정만 동적 반영 |
스크립트, SQL 파일 배포 | 초기 데이터 세팅, 마이그레이션에 활용 |
728x90
'쿠버네티스' 카테고리의 다른 글
MetalLB와 물리 장비 연동을 통한 Kubernetes LoadBalancer 구성 정리 (0) | 2025.04.06 |
---|---|
쿠버네티스 클라우드 네이티브 오토스케일링 방법 (0) | 2025.04.06 |
Kubernetes ConfigMap을 이용해서 데이터를 마운트 (0) | 2025.04.06 |
쿠버네티스 시크릿(Secret) 자동 변경 (0) | 2025.04.06 |
Kubernetes 빠른 테스트용 이미지 & 명령어 정리 (0) | 2025.04.04 |