2021.07.08 - 환경 변수 설정에서는 포드 정의 파일에서 환경변수를 정의하는 방법을 알아보았다. 하지만 포드 정의 파일로 환경 변수를 정의하면 포드 정의 파일이 많아지면 환경변수를 관리하기가 어려워진다. 이런 어려움을 해결하기 위해 ConfigMap을 사용할 수 있다.
ConfigMap
키-값 형태로 구성되며, Pod 생성 시 ConfigMap을 주입하여 Pod 컨테이너 내부에 호스팅 되는 애플리케이션의 환경 변수로 사용할 수 있도록 데이터 전달에 사용한다.
생성 방법
- 명령형 방법으로 생성
kubectl create configmap <config-name> --from-literal=<key>=<value> --from-literal=<key>=<value>
# –from-literal : 키 값 쌍 지정에 사용
kubectl create configmap <config-name> --from-file=<path-to-file>
# -from-file : 필요한 데이터 경로 지정
- 정의 파일을 이용하여 생성
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: blue
APP_MODE: prod
kind에 ConfigMap를 지정하여 정의 파일을 작성한 뒤, 아래의 create 명령으로 생성한다.
kubectl create –f config-map.yaml
ConfigMap 확인
# 목록 조회
kubectl get configmaps
# 특정 configMap 상세 확인
kubectl describe configmaps
ConfigMap 주입
pod 정의 파일에 envFrom 속성을 추가하여 환경변수를 전달할 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: simple-webapp-color
labels:
name: simple-webapp-color
spec:
containers:
- name: simple-webapp-color
image: simple-webapp-color
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: app-config
envFrom 속성은 list이기 때문에 많은 환경변수를 전달할 수 있으며, list의 각 항목이 configMap에 해당한다.