•
워크로드에 필요한 설정 정보를 key-value형태로 저장할 수 있는 데이터 오브젝트
•
간단한 환경변수 부터 nginx.conf와 같은 설정 파일도 저장 가능
•
기밀이 아닌 데이터를 작성할때 쓰는 리소스
•
configmap을 사용하면 podspec에 직접 적는 것 보다 쫌더 유연하게 설정을 하거나
같은 어플리케이션을 로컬과 프러덕션에서 같은 환경으로 테스팅 하기 쉬워진다.
ConfigMap은 설정 데이터를 키-값 쌍으로 저장하는 데 사용됩니다. 이를 통해 애플리케이션의 설정을 코드와 분리하여 관리할 수 있다.
ConfigMap 만들기
•
config-file.yaml
global:
scrape_interval: 15s
scrape_configs:
- job_name: prometheus
metrics_path: /prometheus/metrics
static_configs:
- targets:
- localhost:9090
YAML
복사
1.
global:
•
scrape_interval: Prometheus가 메트릭을 수집하는 주기를 정의합니다. 여기서는 15초마다 메트릭을 수집하도록 설정.
2.
scrape_configs:
•
job_name: 수집 작업의 이름을 정의합니다. 여기서는 prometheus라는 이름으로 설정.
•
metrics_path: 메트릭을 수집할 경로를 정의합니다. 기본값은 /metrics이지만, 여기서는 /prometheus/metrics로 설정.
•
static_configs: 정적 구성으로, 수집할 대상(targets)을 정의.
◦
targets: 메트릭을 수집할 대상의 주소를 정의합니다. 여기서는 localhost:9090에서 메트릭을 수집하도록 설정
# ConfitMap 생성 configmap -> cm
kubectl create cm my-config --from-file=config-file.yaml
# ConfitMap 조회
kubectl get cm
# ConfigMap 내용 상세 조회
kubectl describe cm/my-config
Shell
복사
•
alpine.yaml
apiVersion: v1
kind: Pod
metadata:
name: alpine
spec:
containers:
- name: alpine
image: alpine
command: ["sleep"]
args: ["100000"]
volumeMounts:
- name: config-vol
mountPath: /etc/config
volumes:
- name: config-vol
configMap:
name: my-config
YAML
복사
kubectl apply -f alpine.yaml
# 접속 후 설정 확인
kubectl exec -it alpine -- ls /etc/config
kubectl exec -it alpine -- cat /etc/config/config-file.yaml
Shell
복사
env 파일로 만들기
•
config-env.yaml
hello=world
haha=hoho
YAML
복사
# env 포멧으로 생성
kubectl create cm env-config --from-env-file=config-env.yml
# env-config 조회
kubectl describe cm/env-config
Shell
복사
•
config-map.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
hello: world
kuber: netes
multiline: |-
first
second
third
# |- 을 통해 여러 줄의 텍스트를 가지게 설정.
YAML
복사
# 기존 configmap 삭제
kubectl delete cm/my-config
# configmap 생성
kubectl apply -f config-map.yml
# alpine 적용
kubectl apply -f alpine.yml
# 적용내용 확인
kubectl exec -it alpine -- cat /etc/config/multiline
Shell
복사
ConfigMap을 환경변수로 사용하기
•
ConfigMap을 volume이 아닌 환경변수로 설정합니다.
apiVersion: v1
kind: Pod
metadata:
name: alpine-env
spec:
containers:
- name: alpine
image: alpine
command: ["sleep"]
args: ["100000"]
env:
- name: hello
valueFrom:
configMapKeyRef:
name: my-config
key: hello
YAML
복사
kubectl apply -f alpine-env.yml
# env 확인
kubectl exec -it alpine-env -- env
Shell
복사
•
ConfigMap은 쿠버네티스에서 각종 설정을 관리하는 가장 좋은 방법