DevOps/Kubernetes

[Kubernetes] Kubernetes Configmap 설명과 실습

kimc 2024. 9. 19. 01:37

[Kubernetes] Kubernetes Configmap 설명과 실습


```

[k8s] 쿠버네티스 컨피그맵 설명과 실습

```

이번 글을 통해 배워갈 내용

  1. configmap 설명
  2. env 파일로 ConfigMap 생성
  3. 생성 시 값을 직접 입력하여 ConfigMap 생성
  4. VolumeMount로 사용
  5. 컨테이너의 환경 변수로 사용

1. configmap 설명

ConfigMap 은 Secret에 비해서 보안상 중요하지 않은 key value 값들을 저장하는 데 사용됩니다.


2. env 파일로 ConfigMap 생성

먼저 cm이 참조할 myenv.env 파일을 생성합니다

cat <<EOF > /myenv.env
planet="EARTH"
city="SEOUL"
EOF

 

cm을 생성합니다

k create configmap my-config --from-file=/myenv.env

 

아래와 같이 생성됩니다

apiVersion: v1
data:
  myenv.env: |
    planet="EARTH"
    city="SEOUL"
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: my-config

 


3. 생성 시 값을 직접 입력하여 ConfigMap 생성

아래와 같은 방법으로도 생성 가능합니다

kubectl create cm my-config02 --from-literal=type=animal --from-literal=age=31

 

아래와 같이 생성됩니다

apiVersion: v1
data:
  age: "31"
  type: animal
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: my-config02

4.VolumeMount로 사용

2번 예제에서 생성한 cm my-config를 사용하겠습니다.

apiVersion: v1
data:
  myenv.env: |
    planet="EARTH"
    city="SEOUL"
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: my-config

 

pod 생성시에 my-config를 사용합니다

k run mypod01 --image=nginx --dry-run=client -o yaml

 

수정 전

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: mypod01
  name: mypod01
spec:
  containers:
  - image: nginx
    name: mypod01
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

수정 후

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: mypod01
  name: mypod01
spec:
  containers:
  - image: nginx
    name: mypod01
    volumeMounts:
    - name: config
      mountPath: "/config"
      readOnly: true
  volumes:
  - name: config
    configMap:
      name: my-config
      items:
      - key: "myenv.env"
        path: "myenv.env"
  restartPolicy: Always
status: {}

 

 

 


5. 컨테이너의 환경 변수로 사용

2번 예제에서 사용된 my-config02를 사용하겠습니다.

apiVersion: v1
data:
  age: "31"
  type: animal
kind: ConfigMap
metadata:
  creationTimestamp: null
  name: my-config02

 

동일하게 pod yaml를 생성합니다

k run mypod02 --image=nginx --dry-run=client -o yaml

 

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: mypod02
  name: mypod02
spec:
  containers:
  - image: nginx
    name: mypod02
    resources: {}
    env:
    - name: MY_ENV_VAL_AGE
      valueFrom:
        configMapKeyRef:
          name: my-config02
          key: age
    - name: MY_ENV_VAL_TYPE
      valueFrom:
        configMapKeyRef:
          name: my-config02
          key: type
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

확인해 봅니다

kubectl exec mypod02 -- sh -c 'echo $MY_ENV_VAL_AGE'
kubectl exec mypod02 -- sh -c 'echo $MY_ENV_VAL_TYPE'

 

 


 

참조

https://kubernetes.io/docs/concepts/configuration/configmap/

 

ConfigMaps

A ConfigMap is an API object used to store non-confidential data in key-value pairs. Pods can consume ConfigMaps as environment variables, command-line arguments, or as configuration files in a volume. A ConfigMap allows you to decouple environment-specifi

kubernetes.io

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 

참조 및 인용

728x90