[k8s] ConfigMap

장동균·2023년 4월 22일

쿠버네티스 입문 10장을 정리한 내용입니다.


컨피그맵은 컨테이너에 필요한 환경설정을 컨테이너와 분리해서 제공하는 기능이다. FE에서 환경변수들을 env 파일로 분리하는 것과 비슷한 맥락이라고 보면 될 것 같다.


# config-dev.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-dev
  namespace: default
data:
  DEBUG_INFO: debug
  DB_URL: localhost

configMap 설정 중 일부만을 선택해서 가져오기

apiVersion: apps/v1
kind: Deployment
metadata:
  name: configapp
  labels:
    app: configapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: configapp
  template:
    metadata:
      labels:
        app: configapp
    spec:
      containers:
      - name: testapp
        image: ${image URL}
        ports:
        - containerPort: 8080
        env:
        - name: DEBUG_LEVEL
          valueFrom:
            configMapKeyRef:
              name: config-dev
              key: DEBUG_INFO

config-dev 파일의 DEBUG_INFO 값을 가져와서, DEBUG_LEVEL의 값으로 설정하겠다.


configMap 설정 전부를 가져오기

apiVersion: apps/v1
kind: Deployment
metadata:
  name: configapp
  labels:
    app: configapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: configapp
  template:
    metadata:
      labels:
        app: configapp
    spec:
      containers:
      - name: testapp
        image: ${image URL}
        ports:
        - containerPort: 8080
        envFrom:
        - configMapRef:
            name: config-dev

config-dev 파일 모든 key-value를 그대로 가져오겠다.


configMap을 볼륨에 불러와서 사용하기

apiVersion: apps/v1
kind: Deployment
metadata:
  name: configapp
  labels:
    app: configapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: configapp
  template:
    metadata:
      labels:
        app: configapp
    spec:
      containers:
      - name: testapp
        image: ${image URL}
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: config-volume
          mountPath: /etc/config
      volumes:
      - name: config-volume
        configMap:
          name: config-dev

config-volume이라는 볼륨을 만들어서 config-dev 파일의 data 하위 필드를 /etc/config 폴더에 파일 형태로 저장한다.
현재 파일 내용을 기준으로 /etc/config 폴더 내부에 파일 이름은 DEBUG_INFO 파일 안 내용은 debug, 파일 이름은 DB_URL 파일 안 내용은 localhost 인 2개의 파일이 생기게 된다.

profile
프론트 개발자가 되고 싶어요

0개의 댓글