내 잡다한 노트
쿠버네티스 ConfigMap 본문
쿠버네티스에서 환경변수를 정의하는 것은 definition file 에서 env를 통해 정의를 한다.
하지만 Pod definition file이 많아지면, 환경 변수를 각각의 파일에서 관리하기가 어려워진다.
그래서 ConfigMap 이 존재한다.
ConfigMap은 키-값 쌍(Key-Value Pair) 형태로 환경 설정 데이터를 관리할 수 있는 Kubernetes 리소스입니다.
ConfigMap을 생성한 뒤, Pod에 주입하여 애플리케이션에서 환경 변수나 파일 형태로 사용할 수 있습니다.
ConfigMap은 명령어나 manifest 파일을 작성하여 ConfigMap 리소스를 생성한다.
이때, 데이터를 파드에 주입하려면 환경 변수로 주입을 하거나, 파일 형태로 볼륨에 마운트하여 주입한다.
ConfigMap 데이터 확인 및 관리:
- kubectl get configmaps: ConfigMap 목록 확인.
- kubectl describe configmap [name]: ConfigMap 데이터 확인.
2. ConfigMap 생성 방법
(1) 명령형(Imperative) 방식
- kubectl create configmap 명령어를 사용하여 ConfigMap을 즉석에서 생성합니다.
예제 1: --from-literal 사용
kubectl create configmap app-config --from-literal=app.color=blue
kubectl create configmap app-config --from-literal=app.color=blue --from-literal=app.size=large
- ConfigMap 이름: app-config.
- 데이터: app.color=blue, app.size=large.
예제 2: --from-file 사용
kubectl create configmap app-config --from-file=./config.properties
- 파일 내용이 ConfigMap으로 저장됩니다.
- 파일의 각 줄은 key=value 형식이어야 합니다.
3. ConfigMap 데이터를 Pod에 주입하는 방법
(1) 환경 변수로 주입
Pod 정의 파일에서 envFrom 속성을 사용해 ConfigMap 데이터를 환경 변수로 설정합니다.
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app-container
image: nginx
envFrom:
- configMapRef:
name: app-config
- ConfigMap의 모든 키-값 쌍이 환경 변수로 주입됩니다.
- 예: app.color는 환경 변수 APP_COLOR로 사용 가능.
(2) 파일 형태로 주입 (Volume으로 마운트)
ConfigMap 데이터를 볼륨에 마운트하여 파일로 애플리케이션에 전달할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: app-pod
spec:
containers:
- name: app-container
image: nginx
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: app-config
- /etc/config 디렉토리 안에 ConfigMap의 각 키가 파일 이름으로 생성됩니다.
- 파일 내용은 ConfigMap의 값입니다.
ConfigMap의 주요 장점
- 환경 설정 분리:
- Pod 정의 파일과 환경 설정 데이터를 분리하여 관리 효율성을 높임.
- 중앙 집중 관리:
- 여러 Pod에 동일한 설정을 쉽게 공유.
- 유연한 주입 방식:
- 환경 변수 또는 파일 형태로 주입 가능.
- 확장성:
- 다양한 애플리케이션 설정을 별도 ConfigMap으로 관리 가능.
'DevOps > 쿠버네티스' 카테고리의 다른 글
쿠버네티스에서 ~From 이라는 키워드란? (2) | 2024.11.17 |
---|---|
쿠버네티스 Secrets (0) | 2024.11.17 |
쿠버네티스 업데이트 및 배포 전략 (0) | 2024.11.16 |
쿠버네티스에서 자주 쓰이는 명령어 정리 (0) | 2024.11.14 |
쿠버네티스[K8S] 오브젝트의 명세 설정 (0) | 2024.11.06 |