Kubernetes

ConfigMap

라온클 2023. 1. 29. 07:09

<한줄 요약>

  • 설정값을 따로 모아두고, 필요할 때 꺼내서 사용할 수 있는 메커니즘 (a.k.a 설정값 통)



<세줄 요약>

  • 설정값을 저장하는 리소스
  • pod의 spec에 일일히 직접 설정값을 명시하는게 아니라, ConfigMap에 모든 설정값들을 저장해놓고 Pod에서 필요한 정보들을 불러올 수 있다
  • 볼륨 연결, 환경변수 설정같은 방법으로 활용할 수 있다.




<특징>

활용 방법

1 : 볼륨 연결하기

# game-volume.yaml
apiVersion: v1
kind: Pod
metadata:
  name: game-volume
spec:
  restartPolicy: OnFailure
  containers:
  - name: game-volume
    image: k8s.gcr.io/busybox
    command: [ "/bin/sh", "-c", "cat /etc/config/game.properties" ]
    volumeMounts:
    - name: game-volume
      mountPath: /etc/config
  volumes:
  - name: game-volume
    configMap:
      name: game-config

 

2 : 환경변수 - envFrom

# special-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: special-env
spec:
  restartPolicy: OnFailure
  containers:
  - name: special-env
    image: k8s.gcr.io/busybox
    command: [ "printenv" ]
    args: [ "special_env" ]
    env:
    - name: special_env
      valueFrom:
        configMapKeyRef:
          name: special-config
          key: special.power

 

 

3 : 환경 변수 - envFrom

# monster-env.yaml
apiVersion: v1
kind: Pod
metadata:
  name: monster-env
spec:
  restartPolicy: OnFailure
  containers:
  - name: monster-env
    image: k8s.gcr.io/busybox
    command: [ "printenv" ]
    # env 대신에 envFrom 사용
    envFrom:
    - configMapRef:
        name: monster-config

 

 

<장단점(한계)>

  • 장점 : pod에 설정값을 일일히 명시 안 하고, 한 데 모은 설정값을 통에 담아 그때그때 불러와 한번에 적용할 수 있다
  • 단점 : 컨피드맵에 데이터를 평문으로 저장하다보니 ConfigMap 자체에 대한 보안은 취약하다

 

 

<존재 이유 or 흐름 속 의미>

  • ConfigMap을 사용하면 설정값을 한 데 모아서 관리 및 일괄 적용할 수 있다(수고를 줄일 수 있다)



<만드는 법>

방법 1 : 설정파일로 생성하기

# 1단계 : 설정 파일을 작성한다
vi game.properties
-----
weapon=gun
health=3
potion=5
-----

# 2단계 : 명령어로 가져온다
kubectl create configmap game-config --from-file=game.properties

 

방법2 : 명령어로 생성하기

# 1단계 : 명령어로 생성하기
kubectl create configmap special-config \
               --from-literal=special.power=10 \
               --from-literal=special.strength=20

# 2단계 : 명령어로 생성한 configmap 확인하기
kubectl get cm special-config -o yaml
----------
apiVersion: v1
kind: ConfigMap
metadata:
 name: special-config
 namespace: default
data:
 special.power: 10
 special.strength: 20
----------

 

방법3: YAML정의서를 작성하여 생성하기

# 1단계 : YAML정의서로 생성하기
vi monster-config.yaml
---------
apiVersion: v1
kind: ConfigMap
metadata:
  name: monster-config
  namespace: default
data:
  monsterType: fire
  monsterNum: "5"
  monsterLife: "3"
---------

# 2단계 : YAML정의서를 apply하여 생성하기
kubectl apply -f monster-config.yaml
configmap/monster-config created

 

 

'Kubernetes' 카테고리의 다른 글

Rolling Update  (0) 2023.02.04
ServiceAccount  (0) 2023.01.29
Resource requirements(Request & Limit)  (0) 2023.01.22
job  (0) 2023.01.22
쿠버네티스 apiVersion이란?  (0) 2023.01.15