쿠버네티스 ConfigMap

Chori·2025년 11월 16일
post-thumbnail

초보를 위한 쿠버네티스 안내서를 수강하며 정리한 내용입니다.

개념

  • 컨테이너에서 설정 파일을 관리하는 방법은 이미지를 빌드할 때 복사하거나 컨테이너를 실행할 때 외부 파일을 연결하는 방법이 있음
  • 쿠버네티스는 ConfigMap으로 설정을 관리

ConfigMap 만들기

파일을 ConfigMap으로 만들기

설정 파일

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: prometheus
    metrics_path: /prometheus/metrics
    static_configs:
      - targets:
        - localhost: 9090
  • --from-file 옵션을 사용하여 파일을 설정으로 만듦
# ConfigMap 생성 configmap -> cm
kubectl create cm my-config --from-file=config-file.yaml

# ConfigMap 조회
kubectl get cm

# ConfigMap 내용 상세 조회
kubectl describe cm/my-config
  • 생성한 ConfigMap을 /etc/config 디렉터리에 연결
apiVersion: v1
kind: Pod
metadata:
  name: alpine
spec:
  containers:
    - name: alpine
      image: alpine
      command: ["sleep"]
      args: ["10000"]
      volumeMounts:
        - name: config-vol
          mountPath: /etc/config
  volumes:
    - name: config-vol
      configMap:
        name: my-config

env 파일

  • env 형식을 사용해서 YAML 파일 생성
hello=world
haha=hoho
  • --from-env-file 옵션을 사용하여 파일을 설정으로 만듦
# env 형식으로 생성
kubectl create cm env-config --from-env-file=config-env.yaml

# env-config 조회
kubectl describe cm/env-config

YAML 선언하기

  • ConfigMap을 YAML 파일로 정의
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-config
data:
  hello: world
  kuber: netes
  multiline: |-
    first
    second
    thrid
# configmap 생성
kubectl apply -f config-map.yaml

ConfigMap을 환경변수로 사용

  • ConfigMap을 Volume이 아닌 환경변수로 설정
apiVersion: v1
kind: Pod
metadata:
  name: alpine-env
spec:
  containers:
    - name: alpine
      image: alpine
      command: ["sleep"]
      args: ["10000"]
      env:
        - name: hello
          valueFrom:
            configMapKeyRef:
              name: my-config
              key: hello
profile
전부인 것처럼, 전부가 아닌 것처럼

0개의 댓글