컨피그맵(ConfigMap)
Kubernetes에서 컨피그맵(ConfigMap)은 컨테이너와 분리해서 Key-Value 쌍으로 환경설정 값을 저장하는데 사용하는 API 오브젝트이다. 컨피그맵을 사용하면 동일한 컨테이너 이미지에 다른 설정 값을 이식해서 사용가능하다.
동일한 컨테이너 이미지에 다른 환경설정 값을 이식하는 경우는 왜 생길까?
같은 애플리케이션이라도 개발용, QA용, 프로덕션용 환경에서 각 환경에 따라 다른 설정이 필요한 경우가 생긴다. 개발용, QA용에서는 log level을 debug로 setting해야하지만 프로덕션용에서는 log level을 error로 setting해야하는 필요성이 생길 수 있다. 이런 경우 컨피그맵을 이용할 수 있다.
컨피그맵 만들기
Key-Value 쌍으로 구성된 컨피그맵 예시 파일이다.
apiVersion: v1
kind: ConfigMap
metadata:
name: alro-config
data:
port: "10500"
loglevel: debug
dbhost: alro
dbname: alrodb
dbport: "3306"
alro-config.yaml
로 저장 후 kubectl apply -f alro-config.yaml command
로 실행시킨다.
kubectl get cm
command로 실행 중인 컨피그맵을 확인할 수 있다.
kubectl desribe cm alro-config
command로 실행 중인 컨피그맵의 설정 값을 확인할 수 있다.
Deployment에 컨피그맵 적용하기
컨피그맵 적용을 확인하기 위해 간단한 Deployment 파일을 생성하고 실행한다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: alro-deploy
labels:
app: alro
spec:
replicas: 1
selector:
matchLabels:
app: alro
template:
metadata:
name: alro
labels:
app: alro
spec:
volumes:
- name: alro-config
configMap:
name: alro-config
containers:
- name: alro
image: nginx:1.14.2
volumeMounts:
- name: alro-config
mountPath: /etc/config
alro.yaml 로 저장 후 kubectl apply -f alro.yaml
command로 실행시킨다.
kubectl get deploy
command로 실행 중인 Deployment를 확인할 수 있다.
kubectl get pods
command로 실행 중인 Pods를 확인할 수 있다.
Pods 내부의 /etc/config
경로에서 alro-config
의 설정 값을 확인할 수 있다.
지금은 alro-config.yaml 로 생성한 하나의 컨피그맵만 실행 중이지만
alro-config-dev.yaml, alro-config-qa.yaml 과 같이 용도별로 컨피그맵을 생성하고 컨테이너에 적용하여 사용가능하다.
'IT' 카테고리의 다른 글
[네트워크] OSI 7Layer (0) | 2022.05.03 |
---|---|
[네트워크] IPv4와 네트워크 클래스 (0) | 2022.04.26 |
[Pattern] 사이드카 패턴(Sidecar pattern) (0) | 2021.04.12 |
[Windows] Windows Subsystem for Linux (WSL) + WSL2 설치, WSL 1 vs WSL 2 비교 (0) | 2021.03.31 |
[Terminal] Mac 터미널 환경 설정하기 (꾸미기) - iTerm2, oh my zsh, tmux (0) | 2021.03.15 |