[Kubernetes] ConfigMap

이멀젼씨

·

2021. 9. 27. 09:12

목적

ConfigMap에 대해 알고자함

목차

  1. ConfigMap이란?
  2. ConfigMap의 종류 및 양식

1. ConfigMap이란?

컨피그맵은 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트

단어 그대로 설정(Config)을 키-값(Map)형태로 저장하는데 사용된다.

ConfigMap에 데이터를 저장해두고, 데이터가 필요한 컨테이너에서 ConfigMap에 접근하여 데이터를 획득할 수 있다.

2. ConfigMap의 종류 및 양식

Literal

ConfigMap을 yml파일에 정의하거나 커맨드라인 입력을 통해 생성하는 방법이다.

yml

apiVersion: v1
kind: ConfigMap
metadata:
  name: literal-cm
data:
  today: monday
  month: october

오브젝트의 종류를 설정하는 kind에 ConfigMap을 적어주고, data란 이하에 키-벨류 쌍으로 저장하길 원하는 값을 적어준다.

CLI

kubectl create configmap cli-cm --from-literal=today=monday --from-literal=month=october

kubectl create configmap "ConfigMap이름" --from-literal="Key1"="Value1" --from-literal="Key2"="Value2"*

kubectl 명령어를 통해서도 ConfigMap을 생성할 수 있다.

Pod에서 Literal형태의 ConfigMap을 사용하려면 envFrom항목을 추가하고 confgMapRef에 사용하고자 하는 configMap 이름을 설정해주면 된다.

apiVersion: v1
kind: Pod
metadata:
  name: cm-pod
spec:
  containers:
  - name: container
    image: example/test
    envFrom:
    - configMapRef:
        name: literal-cm

File

파일을 통째로 ConfigMap으로 설정하는 방법이다.

kubectl create configmap file-cm --from-file=./config.txt  

--from-file 뒤에 ConfigMap으로 설정할 파일을 넣어준다.

파일 이름이 Key가 되고, 파일의 내용이 통째로 Value가 된다.

Pod에서 File형태의 ConfigMap을 사용하려면 env항목을 추가하고 name을 지정한 뒤, 사용하고자 하는 configMap의 이름과 key를 설정하면 된다.

apiVersion: v1
kind: Pod
metadata:
  name: pod1
spec:
  containers:
  - name: container
    image: example/test
    env:
    - name: config-env
      valueFrom:
        configMapKeyRef:
          name: file-cm
          key: config.txt

pod1이 참조하고 있는 file-c.txt의 내용이 바뀌어도 Pod의 환경변수는 변하지 않는다.

Pod가 재성성 되어야만 바뀐 ConfigMap이 적용된다.

Volume Mount

Pod생성 시 mount경로를 정의하고, 해당 경로 안에 ConfigMap파일을 연결시켜 주는 방식이다.

apiVersion: v1
kind: Pod
metadata:
  name: pod2
spec:
  containers:
  - name: container
    image: example/test
    volumeMounts:
    - name: volume1
      mountPath: /mount
  volumes:
  - name: volume1
    configMap:
      name: file-cm

File을 ConfigMap으로 설정하는 것과 마찬가지로 ConfigMap을 정의해둔다.

생성하고자 하는 Pod의 volumes에 volume의 이름과 사용하고자 하는 configMap의 이름을 적어준다.

containers 부분에 마운트할 볼륨과 마운트 경로를 적어주면 된다.

위의 File을 ConfigMap으로 설정하는 것과 달리 파일을 내용이 변하게 되면 Pod의 재생성 없이도 변경된 데이터를 즉시 반영할 수 있다.

'Kubernetes > 이론' 카테고리의 다른 글

[Kubernetes] Secret  (0) 2021.10.04
[Kubernetes] Service  (0) 2021.09.24
[Kubernetes] Pod  (0) 2021.09.15
[Kubernetes] Kubernetes의 정의와 사용목적  (0) 2021.09.14