๋ชฉ์ฐจ
ย 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
๋ณต์ฌ