Search

ConfigMap

워크로드에 필요한 설정 정보를 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은 쿠버네티스에서 각종 설정을 관리하는 가장 좋은 방법