[클라우드/쿠버네티스] ConfigMap

2024. 6. 29. 01:15
728x90
반응형

 

출처

1) Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스

 

 

ConfigMap

1) 애플리케이션 컨테이너에서 사용할 수 있는 설정 데이터를 저장하고 관리하기 위한 Kubernetes 객체

2) ConfigMap을 사용하면 애플리케이션의 설정을 코드에서 분리하고, 환경에 따라 다르게 설정 가능

3) 분리된 세부정보를 외부로 노출시키지 않고 Storage에 저장해서 사용하는 방법

4) ConfigMap을 변경하더라도  Running상태의 Pod에 곧바로 적용되지 않음 > 재기동 필요

 

 

ConfigMap 장점

1) 설정 분리: 애플리케이션 코드와 설정을 분리함으로써 코드 변경 없이 설정을 수정
2) 유연성: ConfigMap을 사용하면 여러 환경(개발, 테스트, 운영 등)에서 동일한 애플리케이션을 실행할 수 있으며, 환경별로 다른 설정을 적용 가능
3) 형상 관리: ConfigMap은 YAML 또는 JSON 파일로 정의될 수 있으며, 소스 코드와 함께 버전 관리 시스템에 저장 가능

 

 

ConfigMap 스펙

1) 명령어를 사용해 생성된 ConfigMap의 스펙을 확인

$ kubectl get configmap

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
  namespace: default
data:
  DB_URL: localhost
  DB_USER: root

 

 

ConfigMap 생성방법

1) CMD

$ kubectl create configmap <configmap-name> --from-literal=<key>=<value>

예시>
$ kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2

 

2) 파일을 통해 생성

$ kubectl create configmap <configmap-name> --from-file=<filename>

예시>
kubectl create configmap my-config --from-file=config-file.conf

 

3) yaml 을 사용해 생성

yaml 설정

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  key1: value1
  key2: value2


yaml 설정으로 생성>
$ kubectl apply -f configmap.yaml

 

 

ConfigMap 사용 방법

1) 환경변수

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    envFrom: // 환경변수의 값을 동적으로 설정
    - configMapRef:
        name: my-config

 

2) Volumn

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes: // Volumn으로 마운트
  - name: config-volume
    configMap:
      name: my-config

 

3) configmap의 key를 참조하여 그 key-value를 적용

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    env:
    - name: KEY1
      valueFrom: // configmap의 key를 참조하여 그 key-value를 적용
        configMapKeyRef:
          name: my-config
          key: key1 // name으로는 configmap의 이름이 오게 되고, 그 아래 참조하고 싶은 configmap의 key 작성
728x90
반응형

BELATED ARTICLES

more