Search

Configure ConfigMaps in Applications

Created
2023/10/02 01:57
Tags
k8s
CKA
Mumshad Mannambeth
Application Lifecycle Management

1) About

Pod 정의 파일이 많아지는 경우, 정의 파일 내부에 있는 환경 변수들을 관리하기 굉장히 어려움
따라서 환경 변수들을 별도로 관리하기 위한 용도의 정의 파일을 운용해야하는데, 이것을 가능하게 하는 것이 ConfigMap
Pod에서 ConfigMap을 읽어서 사용하도록 지정하면, 컨테이너 내부에는 ConfigMap에 지정되어 있는 키와 값을 환경 변수로 등록하여 사용할 수 있게 됨
ConfigMap이 설정되는 단계는 2개로 나뉘는데, 첫 째는 ConfigMap을 생성하고, 둘 째는 ConfigMap을 주입하는 것으로 처리됨

2) Commands

ConfigMap 역시 쿠버네티스의 객체이고, 이를 생성하기 위해 명령적인 방법과 선언적인 방법을 모두 사용할 수 있음
kubectl create configmap ${NAME} —from-litereal=${KEY}=${VALUE} —from-literal=${KEY}=${VALUE} …
리터럴을 명시하여 ConfigMap을 생성
kubectl create configmap ${NAME} —from-file=${FILE_NAME}
파일을 통해 ConfigMap을 생성
KEY: value
Plain Text
복사
kubectl create configmap ${NAME} —from-env-file=${FILE_NAME}
환경 변수 형식의 파일을 통해 ConfigMap을 생성
KEY=value
Plain Text
복사
kubectl create -f ${CONFIGMAP_NAME}.yml
ConfigMap 정의 파일로 생성
apiVersion: v1 kind: ConfigMap metadata: name: sample-configmap data: KEY: value
YAML
복사
kubectl get configmap
ConfigMap 객체 조회
kubectl exec ${POD_NAME} — env
Pod에 설정된 환경 변수를 확인

3) YAML

Pod를 생성할 때 ConfigMap을 이용하고 싶다면 아래와 같이 YAML을 작성하여 주입할 수 있음
apiVersion: v1 kind: Pod metadata: name: sample-pod labels: name: sample-pod spec: containers: - name: sample-pod image: sample-pod ports: - containerPort: 8080 envFrom: - configMapRef: name: sample-configmap
YAML
복사
** 위 예시는 sample-config이라는 ConfigMap 객체의 모든 키 값 쌍을 환경 변수로 주입
아래 예시는 ConfigMap 객체에서 key에 해당하는 값을 찾아 단일 키에 환경 변수로 주입
env: - name: KEY valueFrom: configMapKeyRef: name: sample-configmap key: KEY
YAML
복사
심지어 ConfigMap을 볼륨으로 마운트 하여 파일로 운용 가능 (키 이름이 파일 이름이고, 값이 파일의 내용)
volumes: - name: sample-volume configMap: name: sample-configmap
YAML
복사

4) Abbreviation

ConfigMap == cm