Search
โš™๏ธ

[CKA] 29. ConfigMaps

Date
2024/12/17
Category
Devops
Tag
Kubernetes
CKA
Management
๋ชฉ์ฐจ

ย Environment Variables in Kubernetes

Pod์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋Š” ENV ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์ •ํ•œ๋‹ค. ENV๋Š” ๋ฐฐ์—ด(Array)๋กœ, ๊ทธ ํ•ญ๋ชฉ๋“ค์„ ๋Œ€์‹œ โ€-"๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค.
ENV Value Type์œผ๋กœ๋Š” Plain key value, ConfigMap, Secrets๊ฐ€ ์žˆ๋‹ค. Plain Key Value๋Š” ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘์ ์œผ๋กœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์ด์ง€๋งŒ ConfigMap๊ณผ Secrets๋Š” ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๋Œ€์‹  value from ์ด๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

ย Plain Key Value

key-value ๋ฅผ ์ง์ ‘์ ์œผ๋กœ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
# pod-definition.yaml apiVersion: v1 kind: Pod metadata: name: simple-webapp-color spec: containers: - name: simple-webapp-color image: simple-webapp-color ports: - containerPort: 8080 env: - name: APP_COLOR value: blue
YAML
๋ณต์‚ฌ

ย ConfigMaps

Pod ์ •์˜ ํŒŒ์ผ์ด ๋งŽ์•„์งˆ์ˆ˜๋ก ,์ด๋“ค ํŒŒ์ผ์— ์ €์žฅ๋œ ํ™˜๊ฒฝ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง„๋‹ค. ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ Pod ์ •์˜ ํŒŒ์ผ์—์„œ ๋ถ„๋ฆฌํ•˜์—ฌ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ConfigMap์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ConfigMap์€ key-value ์Œ์˜ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. Pod๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด Pod์— configmap์ด ์ฃผ์ž…(inject)๋˜์–ด key-value ์Œ์ด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

Create ConfigMap

โ€ข
Imperative: kubectl create configmap
1.
--from-literal
โ€ข
--from-literal ์˜ต์…˜์€ ๋ช…๋ น ์ž์ฒด์—์„œ key-value๋ฅผ ์ง€์ •ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค
โ€ข
์ถ”๊ฐ€์ ์ธ key-value ์Œ์„ ์›ํ•  ๊ฒฝ์šฐ --from-literal ์„ ์—ฌ๋Ÿฌ๋ฒˆ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค
kubectl create configmap <config-name> --from-literal=<key>=<value> # kubectl create configmap app-config --from-literal=APP_COLOR=blue
Bash
๋ณต์‚ฌ
2.
--from-file
kubectl create configmap <config-name> --from-file=<path-to-file>
Bash
๋ณต์‚ฌ
โ€ข
Declarative: kubectl create -f
# config-map.yaml apiVersion: v1 kind: ConfigMap metadata: name: app-config data: APP_COLOR: blue APP_MODE: prod
YAML
๋ณต์‚ฌ
โ—ฆ
spec์ด ์•„๋‹Œ data ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค

Inject Into Pod

envFrom ๋ผ๋Š” ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ConfigMap์— ์ •์˜ํ•œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค. envFrom์€ list์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ๋งŒํผ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
โ€ข
Inject ConfigMap
# pod-definition.yaml apiVersion: v1 kind: Pod metadata: name: simple-webapp-color spec: containers: - name: simple-webapp-color image: simple-webapp-color ports: - containerPort: 8080 envFrom: - configMapRef: name: app-config # configmap ๋ช…์„ ๊ธฐ์ž…
YAML
๋ณต์‚ฌ
โ€ข
Inject single env variable
โ—ฆ
configmap์˜ ํŠน์ • key-value๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
env: - name: APP_COLOR valueFrom: configMapKeyRef: name: app-config key: APP_COLOR
YAML
๋ณต์‚ฌ
โ€ข
Inject data as files in a volume
volumes: - name: app-config-volume configMap: name: app-config
YAML
๋ณต์‚ฌ