🐳 Container/K8S

[K8s] 컨피그 맵(Config map)

heywantodo 2023. 8. 18. 15:34
728x90
반응형

[K8s] 컨피그 맵(Config map)

컨피그맵은 컨테이너에 필요한 환경 설정을 컨테이너와 분리해서 제공하는 기능이다.

Cloud Native Architecture에서 컨테이너는 변하지 않는 자원이여야 한다. 

 

그러나 개발용과 상용 서비스는 서로 다른 설정이 필요할 때가 많은데

이렇게 다른 설정으로 컨테이너를 실행해야 할 때 사용하는 것이 컨피그맵이다. 

 

컨피그맵 사용

config-dev.yaml

.data 하위 필드로 환경 설정 값을 넣는다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-dev
  namespace: default
data:
  DB_URL: localhost
  DB_USER: myuser
  DB_PASS: mypass
  DEBUG_INFO: debug

아래 명령어로 컨피그맵을 클러스터안에 적용한 후 설정 내용이 제대로 들어갔는지 확인한다. 

kubectl apply -f config-dev.yaml
kubectl describe configmap

이러한 컨피그맵을 컨테이너에서 불러와서 사용하는 방법을 알아보자 

 

컨피그맵 설정 중 일부만 불러와서 사용

deployment-config01.yaml

config-dev라는 이름의 컨피그맵에서 DEBUG_INFO 필드만 불러와서 사용한다.

apiVersion: apps/v1
kind: Deployment
metadata:
    name: configapp
    labels:
    app: configapp
spec:
    replicas: 1
    selector:
    	matchLabels:
            app: configapp
	template:
    	matadata:
        labels:
            app: configapp
       	spec:
            containers:
            - name: testapp
              image: nginx:latest
              ports:
              - containerPort: 8080
              env:
              - name: DEBUG_LEVEL
              	valueFrom:
                    configMapKeyRef:
                        name: config-dev
                        key: DEBUG_INFO

 

컨피그맵 설정 전체를 불러와서 사용

deployment-config02.yaml

컨피그맵 설정 전체를 한꺼번에 컨테이너의 환경 변수로 설정한다.

apiVersion: apps/v1
kind: Deployment
metadata:
    name: configapp
    labels:
    app: configapp
spec:
    replicas: 1
    selector:
    	matchLabels:
            app: configapp
	template:
    	matadata:
        labels:
            app: configapp
       	spec:
            containers:
            - name: testapp
              image: nginx:latest
              ports:
              - containerPort: 8080
              envFrom:
              - configMapRef:
                   name: config-dev

 

컨피그맵을 볼륨에 불러와서 사용

deployment-config03.yaml

컨테이너의 볼륨형식으로 컨피그맵을 설정해서 파일로 컨테이너에 제공한다.

apiVersion: apps/v1
kind: Deployment
metadata:
    name: configapp
    labels:
    app: configapp
spec:
    replicas: 1
    selector:
    	matchLabels:
            app: configapp
	template:
    	matadata:
        labels:
            app: configapp
       	spec:
            containers:
            - name: testapp
              image: nginx:latest
              ports:
              - containerPort: 8080
              volumeMounts:
              - name: config-volume
                mountPath: /etc/config
              volumes:
              - name: config-volume
                configMap:
                  name: config-dev
728x90
반응형