쿠버네티스 입문 10장을 정리한 내용입니다.
컨피그맵은 컨테이너에 필요한 환경설정을 컨테이너와 분리해서 제공하는 기능이다. FE에서 환경변수들을 env 파일로 분리하는 것과 비슷한 맥락이라고 보면 될 것 같다.
# config-dev.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: config-dev
namespace: default
data:
DEBUG_INFO: debug
DB_URL: localhost
apiVersion: apps/v1
kind: Deployment
metadata:
name: configapp
labels:
app: configapp
spec:
replicas: 1
selector:
matchLabels:
app: configapp
template:
metadata:
labels:
app: configapp
spec:
containers:
- name: testapp
image: ${image URL}
ports:
- containerPort: 8080
env:
- name: DEBUG_LEVEL
valueFrom:
configMapKeyRef:
name: config-dev
key: DEBUG_INFO
config-dev 파일의 DEBUG_INFO 값을 가져와서, DEBUG_LEVEL의 값으로 설정하겠다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: configapp
labels:
app: configapp
spec:
replicas: 1
selector:
matchLabels:
app: configapp
template:
metadata:
labels:
app: configapp
spec:
containers:
- name: testapp
image: ${image URL}
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: config-dev
config-dev 파일 모든 key-value를 그대로 가져오겠다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: configapp
labels:
app: configapp
spec:
replicas: 1
selector:
matchLabels:
app: configapp
template:
metadata:
labels:
app: configapp
spec:
containers:
- name: testapp
image: ${image URL}
ports:
- containerPort: 8080
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: config-dev
config-volume이라는 볼륨을 만들어서 config-dev 파일의 data 하위 필드를 /etc/config 폴더에 파일 형태로 저장한다.
현재 파일 내용을 기준으로 /etc/config 폴더 내부에 파일 이름은 DEBUG_INFO 파일 안 내용은 debug, 파일 이름은 DB_URL 파일 안 내용은 localhost 인 2개의 파일이 생기게 된다.