ConfigMap
๊ธฐ๋ฐ์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ํค-๊ฐ์ ์์ผ๋ก ์ ์ฅํ๋๋ฐ ์ฐ๋ ์ค๋ธ์ ํธ. ConfigMap์ ์ ์ฅ๋ ๊ฐ์ Pod์ด ์ฌ์ฉํ๋ค.
Pod์ (1) ํ๊ฒฝ ๋ณ์๋ก ๋ฐ๊ฑฐ๋ (2) ๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ํตํด ConfigMap ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ConfigMap ์์ฑ
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
db_host: "xxxxx.amazon.com"
db_username: "xxxx"
db_password: "xxxx"
data
๊ฐ์ CLI ์ธ์๋ก ๋ฐ๋ ๋ฐฉ๋ฒ๋ค๋ ์์ง๋ง, ๋ณธ์ธ์ ์ง์ yaml ํ์ผ์ ๋ช
์ํ๋ ๊ฑธ ์ ํธํ๋ค.
Pod์ ConfigMap ์ฌ์ฉ
ํ๊ฒฝ ๋ณ์๋ก ๋ฐ๊ธฐ
Pod์ spec.containers[*].env[*]
ํญ๋ชฉ์์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ๋๋ฐ, ์ด๋, valueFrom.configMapKeyRef
์ ConfigMap์ ์ด๋ฆ์ ์ ์ด์ฃผ๋ฉด ๋๋ค.
...
spec:
containers:
- name: ...
image: ...
env:
- name: DB_HOST
valueFrom:
configMapKeyRef:
name: my-config # ConfigMap name
key: db_host
์ ์ฒด ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ก ๋ฐ๊ธฐ
spec.containers[*].envFrom[*]
ํญ๋ชฉ์ configMapRef
๋ฅผ ์ค์ ํด ConfigMap์ ๊ฐ ์ ์ฒด๋ฅผ ๋ฐ์์ฌ ์ ์๋ค. ํ๋์ฉ ๋์ดํ๊ธฐ ๊ท์ฐฎ๊ฑฐ๋, ํ๋์ฉ ๋์ดํ๋ค๊ฐ ์ค์ ํ ๊ฒ ๊ฐ์ผ๋ฉด(ํด๋จผ ์๋ฌ) envFrom[*].configMapRef
๋ฅผ ์ฐ์.
...
spec:
containers:
- name: ...
image: ...
envFrom:
- configMapRef: # load all config values
name: my-config
๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ํตํด ๋ฐ๊ธฐ
ConfigMap์ ๋ง์ดํธํ ํ์ผ์ ๋ด์ฉ์ ์ ๋๋ค.
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
data:
db_host: "xxxxx.amazon.com"
db_username: "xxxx"
db_password: "xxxx"
nginx.conf: | # indentation ์ฃผ์!
user nginx;
worker_processes 2;
err_log /var/log/nginx/err.log warn;
pid /var/run/nginx.pid;
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
include /etc/nginx/conf.d/*.conf;
}
๋จ, ํ์ผ ๊ฐ์ data
๋ก ๋๊ฒจ์ค ๋, indentation์ด ์ ๋ง์ผ๋ฉด ํ์ฑํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ์ฃผ์ํด์ผ ํ๋ค!!
...
spec:
containers:
- name: ...
image: python-alpine
volumeMounts: # declare volume for config file
- name: config-volume
mountPath: /etc/config
readOnly: true # (optional)
volumes:
- name: config-volume
configMap:
name: my-config # ConfigMap name
items:
- key: "nginx.conf"
path: "nginx.conf"
๋ณผ๋ฅจ ๋ง์ดํธ๋ฅผ ํตํด ์ ์ฒด ๋ฐ๊ธฐ
...
spec:
containers:
- name: ...
image: python-alpine
volumeMounts: # declare volume for config file
- name: config-volume
mountPath: /etc/config
readOnly: true # (optional)
volumes:
- name: config-volume
configMap:
name: my-config # ConfigMap name
ConfigMap์ ์ ์๋ ํค๊ฐ ํ์ผ ์ด๋ฆ์ด ๋์ด ๋ชจ๋ ํค-๊ฐ์ด ํ์ผ๋ก ์์ฑ๋๋ค.
๋ง์ดํธ๋ ConfigMap์ ์ ๋ฐ์ดํธ
Pod์์ ConfigMap์ ๋ณผ๋ฅจ ๋ง์ดํธ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ, ConfigMap์ ๊ฐ์ด ์ ๋ฐ์ดํธ ๋๋ฉด ํ๋ก์ ์ ๋ ํค๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋ฐ์ดํธ ๋๋ค. ๋จ, ๊ฐ์ด ์ ํ๋๋ ๋ฐ ์ง์ฐ ์๊ฐ์ด ์๊ณ , ์บ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ ๋ฐ์ดํธ ๋์ง ์์ ์ ์๋ค.
ConfigMap์ ๊ฐ์ด ์๋์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ ๊ฑด Pod์์ ๋ณผ๋ฅจ ๋ง์ดํธ๋ก ์ฐ๊ฒฐํ์ ๊ฒฝ์ฐ ๋ฟ์ด๋ค. ํ๊ฒฝ ๋ณ์๋ก ์ ๋ฌํ ConfigMap์ ๊ฐ์ ์๋์ผ๋ก ์ ๋ฐ์ดํธ ๋์ง ์๊ธฐ ๋๋ฌธ์, Pod์ ์ฌ์์ ํด์ผ ํ๋ค.