Kubernetes에서 Configuration Data 다루기
많은 파드 정의 파일을 관리할 때, 이 파일들 내의 환경 데이터를 관리하기 어려워질 수 있습니다. 이러한 정보를 파드 정의 파일에서 분리하여 Config Maps를 사용해 중앙에서 관리할 수 있습니다.
Config Maps란?
Config Maps는 key-value 쌍의 형태로 구성 데이터를 Kubernetes에 전달하는 데 사용됩니다. 파드 생성 시, Config Map을 파드에 주입하여 컨테이너 내의 애플리케이션에서 환경 변수로 key-value 쌍을 사용할 수 있습니다.
Config Maps 구성하기
Config Maps를 구성하는 데는 두 단계가 있습니다:
- Config Map 생성
- 파드에 주입하기
Config Map을 생성하는 방법은 크게 두 가지입니다:
- 명령형 방식: Config Map 정의 파일을 사용하지 않고, 필요한 인자들을 명시하여
kubectl create configmap
명령어를 사용합니다. - 선언형 방식: Config Map 정의 파일을 사용합니다.
명령형 방식 예시
kubectl create configmap <config-name> --from-literal=<key>=<value>
kubectl create configmap app-config --from-literal=APP_COLOR=blue --from-literal=APP_MOD=prod
kubectl create configmap <config-name> --from-file=<path-to-file>
kubectl create configmap <config-name> --from-file=app_config.properties
선언형 방식 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
APP_COLOR: "blue"
APP_MODE: "prod"
위 YAML 파일을 적용하기 위한 명령어:
kubectl apply -f configmap.yaml
파드에 Config Map 주입하기
파드 정의 파일에 envFrom
속성을 추가하여 환경 변수로 Config Map을 주입할 수 있습니다.
apiVersion: v1
kind: Pod
metadata:
name: webapp
spec:
containers:
- name: webapp-container
image: nginx
envFrom:
- configMapRef:
name: app-config
Config Maps 확인하기
생성된 Config Maps를 확인하기 위한 명령어:
kubectl get configmaps
kubectl describe configmap app-config
kubectl get cm
kubectl describe cm app-config
정리
K8s Reference Docs
https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-container-environment-variables-using-configmap-datahttps://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#create-configmaps-from-files