[kubernetes] configMap 활용

1. configMap 이란?

- 쿠버네티스의 기본 오브젝트로 구성 데이터를 저장하는 key/value 쌍의 집합

- pod 에 파일을 생성하거나 pod의 환경 변수에 추가하는 방식으로 데이터를 제공할 수 있다.

 

2. configMap 생성

예시) config.yaml 파일을 configMap으로 생성 해보자.

1) 필요한 설정인 config.yaml 내용이 아래와 같다고 하자.

autoSaveInterval: 60

batchSize: 128

protocols:

  - http

  - https

 

2) 직접 yaml 파일을 생성하여 실행하는 방법

$ vi create_config.yaml

apiVersion: v1

data: 

  config.yaml: |

    autoSaveInterval: 60

    batchSize: 128

    protocols:

      - http

      - https

kind: ConfigMap

metadata:

  name: demo-config

  namespace :demo

 

3) config.yaml 파일을 가지고 kubectl 명령을 활용하여 생성

$ kubectl create configmap demo-config --namespace=demo --from-file=config.yaml

 

4) 생성된 configMap을 매니페스트 파일로 export

$ kubectl get configmap/demo-config --namespace=demo --export -o yaml. > demo-config.yaml

 

3. confinMap을 활용하여 환경변수 설정

1) 사용할 configMap 생성

$ vi demo_config.yaml

apiVersion: v1

kind: ConfigMap

metadata:

  name: demo-config

data:

  greeting: Hola

 

$ kubectl create -f demo_config.yaml

 

2) deployment spec에 추가 수정

$ vi demo.yaml
spec:
  containers:
    - name: demo
       image: cloudnatived/demo:hello-config-env
       ports:
         - containerPort: 8888
       env:
         - name: GREETING
            valueFrom:
              configMapKeyRef:
                name: demo-config
                key: greeting

 

3) 해당 deployment 와 port-forward 한 후 확인

$ kubectl apply -f demo.yaml

$ kubectl port-forward deply/demo 9999:8888

 

http://localhost:9999로 접속하여 확인한다.

 

4. configMap에서 전체 환경 변수 가져오기