Skip to main content

ConfigMaps

ConfigMaps

ConfigMap은 컨테이너 이미지와 분리된 설정을 저장하는 Kubernetes 리소스입니다. ConfigMap은 환경 변수, 명령행 인수, 설정 파일 등을 저장할 수 있습니다.

APP_COLOR: blue
PROFILE: production

ConfigMap은 다음과 같은 방법으로 생성할 수 있습니다.

리터럴 값으로 생성

kubectl create configmap <config-name> --from-literal=<key>=<value>
kubectl create cm <config-name> --from-literal=<key>=<value>

kubectl create configmap app-config --from-literal=APP_COLOR=blue --from-literal=PROFILE=production

from-file로 생성

kubectl create configmap <config-name> --from-file=<path-to-file>
kubectl create cm <config-name> --from-file=<path-to-file>

kubectl create configmap app-config --from-file=app-config.properties
app-config-map.yaml
# kubectl create -f app-config-map.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: "blue"
PROFILE: "production"
app-mysql-config-map.yaml
# kubectl create -f app-mysql-config-map.yaml

apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
URL: "jdbc:mysql://mysql:3306"
USER: "root"
PASSWORD: "password"

ConfigMap 조회

kubectl get configmaps
kubectl get cm

kubectl describe configmaps

Pod에서 ConfigMap 사용

ConfigMap을 Pod에서 사용하려면 env 또는 volume을 사용할 수 있습니다.

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
# 환경 변수로 설정 1
env:
- name: APP_COLOR
valueFrom:
configMapKeyRef:
name: app-config
key: APP_COLOR
# 환경 변수로 설정 2
envFrom:
- configMapRef:
name: app-config
# 볼륨으로 설정
volumes:
- name: app-config-volume
configMap:
name: app-config