본문 바로가기
개발/개발공부

Kubernetes ConfigMap / 쿠버네티스, 패턴, pattern, 환경변수, 설정, 컨피그맵, CM

by 치킨개발자 2023. 1. 25.
728x90

Kubernetes ConfigMap


설정 정보를 key-value 값으로 저장

key-value외에도 conf파일 자체를 저장할 수 있음

최대 1MB의 사이즈 저장 가능

 

kubectl을 통해 파일 참조하여 생성, 직접 값 전달하여 생성할 수 있음

추가로 manifest로도 생성 가능

#파일 참조
$ kubectl create configmap sample-configmap --from-file=./nginx.conf

#직접 전달
$ kubectl create configmap sample-configmap --from-literal=NODE_ENV=production

#manifest 생성
apiVersion: v1
kind: ConfigMap
metadata:
  name: ~~
data:
  NODE_ENV: "production"
  nginx.conf: |
    user nginx;
    error_log /var/log/nginx/error.log;
    ...
        
#확인
$ kubectl get configmap
$ kubectl describe configmap {{cm-name}}

 

ConfigMap 사용


환경 변수로 전달하는 방법과 볼륨 마운트하여 사용하는 방식이 있음

#환경변수 하나씩 지정하여 사용
apiVersion: v1
kind: Pod
metadata:
  name: ~~
spec:
  containers:
  - name: ~~
    image:~~
    env:
    - name: NODE_ENV
     valueFrom:
       configMapKeyRef:
        name: sample-configmap
        key: NODE_ENV

#configmap전체의 키를 전달
apiVersion: v1
kind: Pod
metadata:
  name: ~~
spec:
  conainers:
  - name: ~~
    image: ~~
    envFrom:
    - configMapRef:
        name: sample-configmap

환경변수 명을 하나씩 key값으로 지정하여 사용 가능하고 또는 Configmap전체를 한번에 전달하여 사용할 수 있음

 

#한개의 키를 volume mount
apiVersion: v1
kind: Pod
metadata:
  name: ~~
spec:
  containers:
  - name: ~~
    image: ~~
    volumeMounts:
    - name: config-volume
      mountPath: /config
  volumes:
  - name: config-volume
    configMap:
      name: sample-configmap
      items:
      - key: nginx.conf
        path: nginx-sample.conf

#configmap전체를 volume mount
apiVersion: v1
kind: Pod
metadata:
  name: ~~
spec:
  containers:
  - name: ~~
    image: ~~
    volumeMounts:
    - name: config-volume
      mountPath: /config
  volumes:
  - name: config-volume
    configMap:
      name: sample-configmap

환경변수를 전달할때와 같이 volume mount도 일부 키만 사용하거나 전체 configmap을 적용할 수 있음

 

앞선 두 케이스에서 전체 configmap을 적용하게 될때는 어떤 값이 정의되었는지 확인하기 어렵기 때문에 유의할 필요가 있음

반응형

댓글