쿠버네티스 - ConfigMap

목차

ConfigMap

쿠버네티스(ConfigMap)은 애플리케이션의 설정 데이터를 저장하고 관리하기 위한 리소스

설정 데이터는 키-값 쌍으로 구성되며, 애플리케이션에서 필요한 설정 값을 포함할 수 있습니다. ConfigMap은 클러스터 수준 또는 네임스페이스 수준에서 생성될 수 있으며, 클러스터 수준의 ConfigMap은 모든 네임스페이스에서 사용할 수 있습니다.

ConfigMap은 주로 환경 변수, 설정 파일, 명령행 인수 등과 같은 애플리케이션 구성에 사용됩니다. 이러한 구성 데이터는 컨테이너 이미지와 분리되어 애플리케이션을 다양한 환경에서 재사용하거나 구성을 변경할 수 있도록 합니다. 또한 ConfigMap은 애플리케이션을 업데이트하거나 배포하는 동안 구성을 쉽게 관리할 수 있도록 도와줍니다.

ConfigMap은 YAML 또는 JSON 형식으로 정의되며, 쿠버네티스 클러스터에 생성 및 적용됩니다. ConfigMap을 생성한 후에는 해당 ConfigMap을 사용하려는 Pod의 컨테이너에 마운트하거나 환경 변수로 설정할 수 있습니다. 이렇게 하면 애플리케이션은 ConfigMap에서 정의된 설정 값을 사용할 수 있습니다.

예를 들어, ConfigMap에서 “db_host”라는 키에 대한 값으로 “database.example.com”을 설정하면, 애플리케이션은 이 값을 읽어와 데이터베이스 호스트로 사용할 수 있습니다. ConfigMap은 클러스터나 네임스페이스 수준에서 변경 및 관리할 수 있으므로, 변경된 설정 값은 애플리케이션을 다시 시작하지 않고도 즉시 적용될 수 있습니다.

파일을 통째로 ConfigMap 으로 만들기

global:
scrape_interval: 15s

scrape_configs:
- job_name: prometheus
metrics_path: /prometheus/metrics
static_configs:
- targets:
- localhost:9090
kubectl create cm my-config --from-file=config-file.yaml
kubectl get cm

NAME DATA AGE
my-config 1 54s
kubectl describe cm/my-config
Name:         my-config
Namespace: default
Labels: <none>
Annotations: <none>

Data
====
config-file.yaml:
----
global:
scrape_interval: 15s

scrape_configs:
- job_name: prometheus
metrics_path: /prometheus/metrics
static_configs:
- targets:
- localhost:9090

BinaryData
====

Events: <none>
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
# 접속 후 설정 확인
kubectl exec -it alpine -- ls /etc/config
kubectl exec -it alpine -- cat /etc/config/config-file.yml

env 파일로 만들기

hello=world
haha=hoho
kubectl create cm env-config --from-env-file=config-env.yaml
configmap/env-config created
kubectl describe cm/env-config
Name:         env-config
Namespace: default
Labels: <none>
Annotations: <none>

Data
====
haha:
----
hoho
hello:
----
world

BinaryData
====

Events: <none>

YAML 파일로 만들기

apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
hello: world
kuber: netes
multiline: |-
first
second
third
kubectl apply -f config-map.yaml
kubectl exec -it alpine -- cat /etc/config/multiline
first
second
third
Share