<한줄 요약>
- 설정값을 따로 모아두고, 필요할 때 꺼내서 사용할 수 있는 메커니즘 (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 |