Cloud Engineering/Kubernetes ⚙️

[Kubernetes] ConfigMap 오브젝트 생성하기

minjiwoo 2023. 2. 21. 17:31
728x90

ConfigMap은 변수, 설정 파일 등의 내용을 key:value 형태로 저장한다. ConfigMap은 특수한 볼륨의 한 종류에 해당하며, 실제로 Pod를 생성할 때 ConfigMap 볼륨에 연결할 수 있다. 

Secret 오브젝트와 비교했을 때는 비교적 민감하지 않은 정보들이 저장된다. 

1. 명령어로 ConfigMap 생성하기 

$ kubectl create configmap CONFIGMAP_NAME --from-file=FILE_NAME 
$ kubectl create configmap CONFIGMAP_NAME--from-literal=KEY_NAME=VALUE

# key 를 새로 지정하고 value를 파일에 있는 값으로 넣어주기 
$ kubectl create configmap my-config3 --from-file=KEY_NAME=FILE_NAME.conf

 

2. YAML (Manifest File)로 ConfigMap 생성하기 

apiVersion: v1
kind: ConfigMap
metadata:
  name: CONFIG_NAME
data:
  KEY: VALUE

 

생성한 ConfigMap 확인하기 

$ kubectl get configmaps CONFIGMAP_NAME # 컨피그맵 목록 확인
$ kubectl describe configmaps CONFIGMAP_NAME # 상세 정보 확인

 

실제로 확인해보면 다음과 같이 키와 값의 정보를 확인할 수 있다. 

$ kubectl describe configmaps my-config
Name:         my-config
Namespace:    default
Labels:       <none>
Annotations:  <none>

Data
====
appversion:
----
1234

BinaryData
====

Events:  <none>

 

 

Pod의 환경변수에 ConfigMap 참조하기 

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  containers:
  - name: myapp
    image: DOCKER_IMAGE_REPO
    env: # 환경 변수 지정해서 configMap 참조해서 사용 
    - name: MESSAGE
      valueFrom:
        configMapKeyRef:
          name: myapp-message # configmap 의 이름
          key: message # configmap 의 데이터 일부를 참조하는 경우 
    args: # env에서 정의한 MESSAGE 환경변수를 출력
    - $(MESSAGE)
    ports:
    - containerPort: 8080
      protocol: TCP

 

Pod의 볼륨에 ConfigMap 연결하기 

apiVersion: v1
kind: Pod
metadata:
  name: POD_NAME
spec:
  containers:
  - image: DOCKER_IMAGE
    name: CONTAINER_NAME
    volumeMounts:
    - name: example-config
      mountPath: /etc/nginx/conf.d
    ports:
    - containerPort: 80
      protocol: TCP
  volumes:
  - name: example-config # 컨피그맵을 볼륨처럼 활용가능. 컨피그맵 오브젝트와 이름이 달라도 상관없음
    configMap:
      name: example-configmap # 컨피그맵 오브젝트 이름
728x90