โข ๊ธฐ๋ณธ๋ถํฐ ์ปจํ
์ด๋์ Kubernetes๋ฅผ ์์ํ์ธ์. ์ฃผ์ ๋ฅผ ๋ฐฐ์ฐ๋ ๋ฐ ํน๋ณํ ๊ฒฝํ์ด ํ์ํ์ง ์์ต๋๋ค. โข ์์ฒด ํด๋ฌ์คํฐ๋ฅผ ์คํํ๊ฑฐ๋ Amazon, Google ๋ฑ์ ๊ด๋ฆฌํ Kubernetes ์๋น์ค๋ฅผ ์ ํํฉ๋๋ค. โข Kubernetes๋ฅผ ์ฌ์ฉํ์ฌ ์ปจํ
์ด๋ ์๋ช
์ฃผ๊ธฐ ๋ฐ ๋ฆฌ์์ค ์๋น๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. โข ๋น์ฉ, ์ฑ๋ฅ, ํ๋ ฅ์ฑ, ์ฑ๋ฅ ๋ฐ ํ์ฅ์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํด๋ฌ์คํฐ๋ฅผ ์ต์ ํํฉ๋๋ค. โข ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐ, ํ
์คํธ ๋ฐ ๋ฐฐํฌํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ๋ฅผ ์์๋ณด์ธ์. โข ํ์ฌ ์
๊ณ ๊ดํ์ ํ์ฉํ์ฌ ๋ณด์๊ณผ ํต์ ๋ฅผ ๋ณด์ฅํฉ๋๋ค. โข ๊ฐ๋ฐ ํ์ด ๋ณด๋ค ์ ์ฐํ๊ณ ์ ์ํ๋ฉฐ ํจ์จ์ ์ผ๋ก ์์
ํ ์ ์๋๋ก ํ์ฌ ์ ์ฒด์ DevOps ์์น์ ๊ตฌํํฉ๋๋ค.
๋๊ตฌ๋ฅผ ์ํ ์ฑ ์ธ๊ฐ?
์ด ์ฑ ์ ์๋ฒ, ์ ํ๋ฆฌ์ผ์ด์ , ์๋น์ค๋ฅผ ๋ด๋นํ๋ ๊ด๋ฆฌ ๋ถ์์ ์ง์์ ๋ฌผ๋ก ์๋ก์ด ํด๋ผ์ฐ๋ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋ ๊ธฐ์กด ์ ํ๋ฆฌ์ผ์ด์ ์ Kubernetes ๋ฐ ํด๋ผ์ฐ๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐ ๊ด๋ จ๋ ๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ต๋๋ค. ๊ฑฑ์ ํ์ง ๋ง์ธ์. Kubernetes๋ ์ปจํ ์ด๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ํ์๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ ๊ฒ์ ๊ฐ๋ฅด์ณ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๋ จ๋ Kubernetes ์ฌ์ฉ์๋ RBAC, ์ง์์ ์ธ ๋ฐฐํฌ, ๋ฏผ๊ฐํ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ๊ณผ ๊ฐ์ ์ฃผ์ ์ ๋ํ ์ฌ์ธต์ ์ธ ์ค๋ช ์ ํตํด ๋ง์ ๊ฐ์น๋ฅผ ๋ฐ๊ฒฌํ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๊ทํ์ ๊ธฐ์ ๊ณผ ๊ฒฝํ์ ๊ด๊ณ์์ด ์ฑ ์ ํ์ด์ง์ ๊ทํ์๊ฒ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ด ํ์คํ ํฌํจ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด ์ฑ ์ ์ด๋ค ์ง๋ฌธ์ ๋๋ตํฉ๋๊น?
์ฑ ์ ๊ธฐํํ๊ณ ์งํํ๋ ๋์ ์ฐ๋ฆฌ๋ ์๋ฐฑ ๋ช ์ ์ฌ๋๋ค๊ณผ ํด๋ผ์ฐ๋ ๊ธฐ์ ๊ณผ Kubernetes์ ๋ํด ๋ ผ์ํ๊ณ ์ ๊ณ ๋ฆฌ๋์ ์ ๋ฌธ๊ฐ๋ ๋ฌผ๋ก ์์ ์ด๋ณด์์๋ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด์ต๋๋ค. ๋ค์์ ์ด ๊ฐํ๋ฌผ์์ ๋ต๋ณ์ ๋ณด๊ณ ์ถ์ ์ ๋ณ๋ ์ง๋ฌธ์ ๋๋ค.
- โ์ ๋ ์ ์ด ๊ธฐ์ ์ ์๊ฐ์ ํฌ์ํด์ผ ํ๋์ง ๊ถ๊ธํฉ๋๋ค. ๋์ ์ฐ๋ฆฌ ํ์ด ํด๊ฒฐํ๋ ๋ฐ ์ด๋ค ๋ฌธ์ ๊ฐ ๋์์ด ๋ ๊น์?โ
- โ์ฟ ๋ฒ๋คํฐ์ค๋ ์ฌ๋ฏธ์์ด ๋ณด์ด์ง๋ง ์ง์ ์ฅ๋ฒฝ์ด ์๋นํ ๋์ต๋๋ค. ๊ฐ๋จํ ์์ ๋ฅผ ์ค๋นํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ง๋ง ์ถ๊ฐ ๊ด๋ฆฌ ๋ฐ ๋๋ฒ๊น ์ ์ด๋ ต์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ๋๋ค์ด ํ์ค ์ธ๊ณ์์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ ์ฐ๋ฆฌ๊ฐ ์ง๋ฉดํ ์ ์๋ ๋ฌธ์ ์ ๋ํด ์ ๋ขฐํ ์ ์๋ ์กฐ์ธ์ ์ป๊ณ ์ถ์ต๋๋ค."
- โ์ฃผ๊ด์ ์ธ ์กฐ์ธ์ด ๋์์ด ๋ ๊ฒ ๊ฐ์์. Kubernetes ์ํ๊ณ๋ ์๋ก์ด ํ์๊ฒ ์ ํํ ์ ์๋ ์ต์ ์ด ๋๋ฌด ๋ง์ต๋๋ค. ๋์ผํ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๊ฐ์ง์ผ ๋ ์ด๋ค ๋ฐฉ๋ฒ์ด ๊ฐ์ฅ ์ข์์ง ์ด๋ป๊ฒ ์ ์ ์์ต๋๊น? ์ ํํ๋ ๋ฐฉ๋ฒ?
๊ทธ๋ฆฌ๊ณ ์๋ง๋ ๋ชจ๋ ์ง๋ฌธ ์ค์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- โํ์ฌ์ ์ง์ฅ์ ์ฃผ์ง ์๊ณ ์ด๋ป๊ฒ Kubernetes๋ฅผ ์ฌ์ฉํ ์ ์๋์?โ
๋ฐ์ท. ๊ตฌ์ฑ ๋ฐ ๋น๋ฐ ๊ฐ์ฒด
Kubernetes ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ผ๋ฆฌ๋ฅผ ํด๋น ๊ตฌ์ฑ(์ฆ, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์๋ ๊ฐ์ด๋ ์ค์ )์์ ๋ถ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๊ตฌ์ฑ ๊ฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ํ๊ฒฝ๋ณ ์ค์ , ํ์ฌ ์๋น์ค DNS ์ฃผ์ ๋ฐ ์ธ์ฆ ์๊ฒฉ ์ฆ๋ช ์ด ํฌํจ๋ฉ๋๋ค.
๋ฌผ๋ก ์ด ๋ชจ๋ ๊ฒ์ ์ฝ๋์ ์ง์ ๋ฃ์ ์ ์์ง๋ง ์ด ์ ๊ทผ ๋ฐฉ์์ ์ถฉ๋ถํ ์ ์ฐํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ตฌ์ฑ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์ฝ๋๋ฅผ ๋ค์ ๋น๋ํ๊ณ ๋ฐฐํฌํด์ผ ํฉ๋๋ค. ํจ์ฌ ๋ ๋์ ํด๊ฒฐ์ฑ ์ ๊ตฌ์ฑ์ ์ฝ๋์์ ๋ถ๋ฆฌํ์ฌ ํ์ผ์ด๋ ํ๊ฒฝ ๋ณ์์์ ์ฝ๋ ๊ฒ์ ๋๋ค.
Kubernetes๋ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ๋จผ์ , ํฌ๋ ๋ํผ ์ฌ์์ ์ง์ ๋ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ ์ ๋ฌํ ์ ์์ต๋๋ค(192ํ์ด์ง์ "ํ๊ฒฝ ๋ณ์" ์ฐธ์กฐ). ๋์งธ, ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ ConfigMap ๋ฐ Secret ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ Kubernetes์ ์ง์ ์ ์ฅํ ์ ์์ต๋๋ค.
์ด ์ฅ์์๋ ์ด๋ฌํ ๊ฐ์ฒด๋ฅผ ์์ธํ ์ดํด๋ณด๊ณ ๋ฐ๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑ ๋ฐ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ช ๊ฐ์ง ์ค์ฉ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ดํด๋ด ๋๋ค.
๊ตฌ์ฑ ๋ณ๊ฒฝ ์ ํฌ๋ ์ ธ ์ ๋ฐ์ดํธ
ํด๋ฌ์คํฐ์ ๋ฐฐํฌ๊ฐ ์๊ณ ํด๋น ConfigMap์์ ์ผ๋ถ ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. Helm ์ฐจํธ(102ํ์ด์ง์ "Helm: Kubernetes์ฉ ํจํค์ง ๊ด๋ฆฌ์" ์ฐธ์กฐ)๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตฌ์ฑ ๋ณ๊ฒฝ ์ฌํญ์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ํ ๋ฒ์ ๊น๋ํ ๋ฐฉ๋ฒ์ผ๋ก ํฌ๋ ์ ธ์ ๋ค์ ๋ก๋ํ ์ ์์ต๋๋ค. ๋ฐฐํฌ ์ฌ์์ ๋ค์ ์ฃผ์์ ์ถ๊ฐํฉ๋๋ค.
checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
| sha256sum }}
์ด์ ๋ฐฐํฌ ํ ํ๋ฆฟ์๋ ๊ตฌ์ฑ ๋งค๊ฐ๋ณ์์ ์ฒดํฌ์ฌ์ด ํฌํจ๋ฉ๋๋ค. ๋งค๊ฐ๋ณ์๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํฉ๊ณ๊ฐ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. helm ์ ๊ทธ๋ ์ด๋๋ฅผ ์คํํ๋ฉด Helm์ ๋ฐฐํฌ ์ฌ์์ด ๋ณ๊ฒฝ๋์์์ ๊ฐ์งํ๊ณ ๋ชจ๋ Pod ์ ธ์ ๋ค์ ์์ํฉ๋๋ค.
Kubernetes์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ
์ฐ๋ฆฌ๋ ConfigMap ๊ฐ์ฒด๊ฐ ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ก์ธ์คํ๊ธฐ ์ํ ์ ์ฐํ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํ๋ค๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์๋ ๋น๋ฐ๋ฒํธ๋ API ํค์ ๊ฐ์ด ๋ฏผ๊ฐํ๊ณ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์์ต๋๋ค. ConfigMap์ ์ ์ฅํ ์๋ ์์ง๋ง ์ด ์๋ฃจ์ ์ ์ด์์ ์ด์ง ์์ต๋๋ค.
๋์ Kubernetes๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ก ์ค๊ณ๋ ํน๋ณํ ์ ํ์ ๊ฐ์ฒด์ธ Secret์ ์ ๊ณตํฉ๋๋ค. ๋ค์์ผ๋ก, ๋ฐ๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ ์ ์๋์ง์ ๋ํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์ํ๋ ค๋ฉด Secret ๊ฐ์ฒด์ ๋ํ Kubernetes ๋งค๋ํ์คํธ๋ฅผ ์ดํด๋ณด์ธ์(hello-secret-env/k8s/secret.yaml ์ฐธ์กฐ).
apiVersion: v1
kind: Secret
metadata:
name: demo-secret
stringData:
magicWord: xyzzy
์ด ์์์ MagicWord ๊ฐ์ธ ํค๋ xyzzy(en.wikipedia.org/wiki/Xyzzy_(computing))์ ๋๋ค. xyzzy๋ผ๋ ๋จ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์ปดํจํฐ ์ธ๊ณ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ConfigMap๊ณผ ์ ์ฌํ๊ฒ Secret ๊ฐ์ฒด์ ์ฌ๋ฌ ํค์ ๊ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋จ์ํ๋ฅผ ์ํด ํ๋์ ํค-๊ฐ ์๋ง ์ฌ์ฉํฉ๋๋ค.
๋น๋ฐ ๊ฐ์ฒด๋ฅผ ํ๊ฒฝ ๋ณ์๋ก ์ฌ์ฉ
ConfigMap๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Secret ๊ฐ์ฒด๋ ์ปจํ ์ด๋์์ ํ๊ฒฝ ๋ณ์ ๋๋ ๋์คํฌ์ ํ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ค์ ์์์๋ Secret์ ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ฅผ ํ ๋นํฉ๋๋ค.
spec:
containers:
- name: demo
image: cloudnatived/demo:hello-secret-env
ports:
- containerPort: 8888
env:
- name: GREETING
valueFrom:
secretKeyRef:
name: demo-secret
key: magicWord
๋งค๋ํ์คํธ๋ฅผ ์ ์ฉํ๋ ค๋ฉด ๋ฐ๋ชจ ์ ์ฅ์์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์.
kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created
์ด์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ก์ปฌ ํฌํธ๋ฅผ ๋ฐฐํฌ๋ก ์ ๋ฌํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํฉ๋๋ค.
kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888
์ฃผ์๋ฅผ ์ด ๋
The magic word is "xyzzy"
ํ์ผ์ ๋น๋ฐ ๊ฐ์ฒด ์ฐ๊ธฐ
์ด ์์์๋ Secret ๊ฐ์ฒด๋ฅผ ์ปจํ ์ด๋์ ํ์ผ๋ก ์ฒจ๋ถํฉ๋๋ค. ์ฝ๋๋ ๋ฐ๋ชจ ์ ์ฅ์์ hello-secret-file ํด๋์ ์์ต๋๋ค.
Secret์ ํ์ผ๋ก ์ฐ๊ฒฐํ๊ธฐ ์ํด ๋ค์ ๋ฐฐํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
spec:
containers:
- name: demo
image: cloudnatived/demo:hello-secret-file
ports:
- containerPort: 8888
volumeMounts:
- name: demo-secret-volume
mountPath: "/secrets/"
readOnly: true
volumes:
- name: demo-secret-volume
secret:
secretName: demo-secret
ํ์ด์ง์ "ConfigMap ๊ฐ์ฒด์์ ๊ตฌ์ฑ ํ์ผ ์์ฑ" ํ์ ์น์ ์์์ ๊ฐ์ต๋๋ค. 240์์๋ ๋ณผ๋ฅจ(์ด ๊ฒฝ์ฐ์๋ ๋ฐ๋ชจ-๋น๋ฐ ๋ณผ๋ฅจ)์ ์์ฑํ๊ณ ์ด๋ฅผ ์ฌ์์ VolumeMounts ์น์ ์ ์๋ ์ปจํ ์ด๋์ ๋ง์ดํธํฉ๋๋ค. mountPath ํ๋๋ /secrets์ด๋ฏ๋ก Kubernetes๋ Secret ๊ฐ์ฒด์ ์ ์๋ ๊ฐ ํค/๊ฐ ์์ ๋ํด ์ด ํด๋์ ํ๋์ ํ์ผ์ ์์ฑํฉ๋๋ค.
์ด ์์์๋ MagicWord๋ผ๋ ํ๋์ ํค-๊ฐ ์๋ง ์ ์ํ์ผ๋ฏ๋ก ๋งค๋ํ์คํธ๋ ์ปจํ ์ด๋์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ๋จ์ผ ์ฝ๊ธฐ ์ ์ฉ ํ์ผ /secrets/magicWord๋ฅผ ์์ฑํฉ๋๋ค.
์ด์ ์์ ์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์ด ๋งค๋ํ์คํธ๋ฅผ ์ ์ฉํ๋ฉด ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
The magic word is "xyzzy"
๋น๋ฐ ๊ฐ์ฒด ์ฝ๊ธฐ
์ด์ ์น์ ์์๋ kubectl explain ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ConfigMap์ ๋ด์ฉ์ ํ์ํ์ต๋๋ค. Secret์์๋ ๊ฐ์ ์์ ์ ์ํํ ์ ์๋์?
kubectl describe secret/demo-secret
Name: demo-secret
Namespace: default
Labels: <none>
Annotations:
Type: Opaque
Data
====
magicWord: 5 bytes
๋ฐ์ดํฐ ์์ฒด๋ ํ์๋์ง ์์ผ๋ฏ๋ก ์ฃผ์ํ์๊ธฐ ๋ฐ๋๋๋ค. Kubernetes์ ๋น๋ฐ ๊ฐ์ฒด๋ Opaque ์ ํ์ ๋๋ค. ์ฆ, ํด๋น ๋ด์ฉ์ด kubectl ์ค๋ช ์ถ๋ ฅ, ๋ก๊ทธ ํญ๋ชฉ ๋๋ ํฐ๋ฏธ๋์ ํ์๋์ง ์์ ์ค์๋ก ์ค์ํ ์ ๋ณด๋ฅผ ๊ณต๊ฐํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ธ์ฝ๋ฉ๋ YAML ๋ฒ์ ์ ๋ณด๋ ค๋ฉด kubectl get ๋ช ๋ น์ ์ฌ์ฉํ์ญ์์ค.
kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque
base64
์๋ ๊ฐ๊ณผ ์์ ํ ๋ค๋ฅธ eHl6enk=๋ ๋ฌด์์ ๋๊น? ์ด๋ ์ค์ ๋ก base64 ์ธ์ฝ๋ฉ์ผ๋ก ํํ๋๋ Secret ๊ฐ์ฒด์ ๋๋ค. Base64๋ ์์์ ์ด์ง ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ์ธ์ฝ๋ฉํ๋ ๋ฐฉ์์ ๋๋ค.
๋ฏผ๊ฐํ ์ ๋ณด๋ ๋ฐ์ด๋๋ฆฌ์ผ ์ ์๊ณ ์ถ๋ ฅ๋์ง ์์ ์ ์์ผ๋ฏ๋ก(TLS ์ํธํ ํค์ ๊ฒฝ์ฐ์ฒ๋ผ) Secret ๊ฐ์ฒด๋ ํญ์ base64 ํ์์ผ๋ก ์ ์ฅ๋ฉ๋๋ค.
beHl6enk= ํ ์คํธ๋ ๋น๋ฐ ๋จ์ด xyzzy์ base64 ์ธ์ฝ๋ฉ ๋ฒ์ ์ ๋๋ค. ํฐ๋ฏธ๋์์ base64 โdecode ๋ช ๋ น์ ์คํํ์ฌ ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
echo "eHl6enk=" | base64 --decode
xyzzy
๋ฐ๋ผ์ Kubernetes๋ ํฐ๋ฏธ๋์ด๋ ๋ก๊ทธ ํ์ผ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๊ฐ ์ค์๋ก ์ถ๋ ฅ๋์ง ์๋๋ก ๋ณดํธํ์ง๋ง, ํน์ ๋ค์์คํ์ด์ค์ Secret ๊ฐ์ฒด์ ๋ํ ์ฝ๊ธฐ ๊ถํ์ด ์์ผ๋ฉด ํด๋น ๋ฐ์ดํฐ๋ฅผ base64๋ก ์ฒ๋ฆฌํ ํ ๋์ฝ๋ฉํ ์ ์์ต๋๋ค.
์ผ๋ถ ํ ์คํธ๋ฅผ base64๋ก ์ธ์ฝ๋ฉํด์ผ ํ๋ ๊ฒฝ์ฐ(์: ๋ณด์ ๋น๋ฐ์ ๋ฃ๊ธฐ ์ํด) ์ธ์ ์์ด base64 ๋ช ๋ น์ ์ฌ์ฉํ์ธ์.
echo xyzzy | base64
eHl6enkK
๋น๋ฐ ๊ฐ์ฒด์ ์ ๊ทผํ๊ธฐ
๋น๋ฐ ๊ฐ์ฒด๋ฅผ ์ฝ๊ณ ํธ์งํ ์ ์๋ ์ฌ๋์ ๋๊ตฌ์ ๋๊น? ์ด๋ ์ก์ธ์ค ์ ์ด ๋ฉ์ปค๋์ฆ์ธ RBAC์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค(258ํ์ด์ง์ "์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ์๊ฐ" ํ์ ์น์ ์์ ์์ธํ ์ค๋ช ํฉ๋๋ค). RBAC๊ฐ ์๊ฑฐ๋ ํ์ฑํ๋์ง ์์ ํด๋ฌ์คํฐ๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ฌ์ฉ์ ๋ฐ ์ปจํ ์ด๋๊ฐ ๋ชจ๋ Secret ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. RBAC๊ฐ ์๋ ํ๋ก๋์ ํด๋ฌ์คํฐ๊ฐ ์์ด์๋ ์ ๋๋ค๋ ์ ์ ๋์ค์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์๋์ ๋ฐ์ดํฐ ์ํธํ
Kubernetes๊ฐ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ etcd ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ ์ ์๋ ์ฌ๋์ ์ด๋ป์ต๋๊น? API๋ฅผ ํตํด Secret ๊ฐ์ฒด๋ฅผ ์ฝ์ ์ ์๋ ๊ถํ์ด ์์ด๋ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋์?
๋ฒ์ 1.7๋ถํฐ Kubernetes๋ ์๋ ๋ฐ์ดํฐ ์ํธํ๋ฅผ ์ง์ํฉ๋๋ค. ์ด๋ etcd ๋ด๋ถ์ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ๋์คํฌ์ ์ํธํ๋์ด ์ ์ฅ๋๋ฉฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ก์ธ์คํ๋ ์ฌ๋๋ ์ฝ์ ์ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ํด๋ ํ๋ ค๋ฉด Kubernetes API ์๋ฒ์๋ง ์๋ ํค๊ฐ ํ์ํฉ๋๋ค. ์ ์ ํ๊ฒ ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์์๋ ์๋ ์ํธํ๋ฅผ ํ์ฑํํด์ผ ํฉ๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ํด๋ฌ์คํฐ์์ ์๋ ์ํธํ๊ฐ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
--experimental-encryption-provider-config=...
Experiment-encryption-provider-config ํ๋๊ทธ๊ฐ ํ์๋์ง ์์ผ๋ฉด ์๋ ์ํธํ๊ฐ ํ์ฑํ๋์ง ์์ ๊ฒ์ ๋๋ค. Google Kubernetes Engine ๋๋ ๊ธฐํ Kubernetes ๊ด๋ฆฌ ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ฐ์ดํฐ๋ ๋ค๋ฅธ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ํธํ๋๋ฏ๋ก ํ๋๊ทธ๊ฐ ํ์๋์ง ์์ต๋๋ค. etcd ์ฝํ ์ธ ๊ฐ ์ํธํ๋์๋์ง ํ์ธํ๋ ค๋ฉด Kubernetes ๊ณต๊ธ์ ์ฒด์ ๋ฌธ์ํ์ธ์.
๊ธฐ๋ฐ ๋ฐ์ดํฐ ์ ์ฅ
๋งค์ฐ ๋ฏผ๊ฐํ ๋ณด์ ๋น๋ฐ ๊ฐ์ฒด์ ๊ฐ์ด ํด๋ฌ์คํฐ์์ ์ ๊ฑฐํ๋ฉด ์ ๋๋ ์ผ๋ถ Kubernetes ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค. Helm ๊ด๋ฆฌ์๊ฐ ์ ๊ณตํ๋ ์ฃผ์์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๊ฐ ์ญ์ ๋์ง ์๋๋ก ๋ณดํธํ ์ ์์ต๋๋ค.
kind: Secret
metadata:
annotations:
"helm.sh/resource-policy": keep
๋น๋ฐ ๊ฐ์ฒด ๊ด๋ฆฌ ์ ๋ต
์ด์ ์น์ ์ ์์์๋ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ํด๋ฌ์คํฐ์ ์ ์ฅ๋ ํ ์ฆ์ ๋ฌด๋จ ์ก์ธ์ค๋ก๋ถํฐ ๋ณดํธ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋งค๋ํ์คํธ ํ์ผ์์๋ ์ผ๋ฐ ํ ์คํธ๋ก ์ ์ฅ๋์์ต๋๋ค.
๋ฒ์ ๊ด๋ฆฌ ๋์ ํ์ผ์ ๊ธฐ๋ฐ ์ ๋ณด๋ฅผ ๋ฐฐ์นํด์๋ ์ ๋ฉ๋๋ค. ์ด ์ ๋ณด๋ฅผ Kubernetes ํด๋ฌ์คํฐ์ ์ ์ฉํ๊ธฐ ์ ์ ์ด๋ป๊ฒ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ณ ์ ์ฅํ ์ ์์ต๋๊น?
์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋๊ตฌ๋ ์ ๋ต์ ์ ํํ ์ ์์ง๋ง ์ต์ํ ๋ค์ ์ง๋ฌธ์ ๋ตํด์ผ ํฉ๋๋ค.
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋๋ก ์ด๋์ ์ ์ฅํด์ผ ํฉ๋๊น?
- ํ์ฑ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๊ต์ฒดํ๊ฑฐ๋ ํธ์งํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๋ป๊ฒ ๋๋์?
์ ์ ์๊ฐ
์กด ์ ๋ฐ๋ธ ์ปดํจํฐ ์ ๊ณ์์ 30๋ ๊ฒฝ๋ ฅ์ ์ปจ์คํดํธ์ ๋๋ค. ๊ทธ๋ ์ฌ๋ฌ ๊ถ์ ์ฑ ์ ์งํํ์ผ๋ฉฐ ๋ค์ํ ๊ตญ๊ฐ์ ๋ง์ ํ์ฌ์ ํ๋ ฅํ์ฌ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ธํ๋ผ ๋ฐ Kubernetes์ ๋ํด ์กฐ์ธํ๊ณ ์์ต๋๋ค. ์ฌ๊ฐ ์๊ฐ์๋ ์ํ์ ์ฆ๊ธฐ๊ณ ๊ถ์ด ์ฌ์๋ฅผ ์ํ๋ฉฐ ์๋ง์ถ์ด๋ก์ ํผ์๋ ธ๋ฅผ ์ฐ์ฃผํฉ๋๋ค. ์๊ตญ ์ฝ์์ ๋ํ ์ ๋ณ์ฅ์ ์ด๊ณ ์์ต๋๋ค.
์ ์คํด ๋๋ฐ๊ตฌ์ค โ Kubernetes ๋ฐ ํด๋ผ์ฐ๋ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ DevOps ํ๊ฒฝ์์ ์์ ํ๋ ์์คํ ๊ด๋ฆฌ ์์ง๋์ด์ ๋๋ค. ๊ทธ๋ ์ผ์ธ์์ ์๊ฐ์ ๋ณด๋ด๊ณ , ์ปคํผ๋ฅผ ๋ง์๊ณ , ๊ฒ์ก์ด๋ฅผ ์ฆ๊ธฐ๊ณ , ์ปดํจํฐ ์์ ์์ ์๋ ๊ฒ์ ์ฆ๊น๋๋ค. ์์ฑํด ์ฃผ ์์ ํ์ ์ด๊ณ ์์ผ๋ฉฐ ๋ฉ์ง ๊ณ ์์ด์ ํจ์ฌ ๋ ๋ฉ์ง ์๋ด์ด์ ๊ฐ์ฅ ์นํ ์น๊ตฌ์ธ Adrienne๊ณผ ํจ๊ป ์ด๊ณ ์์ต๋๋ค.
ยป ์ฑ
์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ค์์์ ํ์ธํ ์ ์์ต๋๋ค.
ยป
ยป
Khabrozhiteley์ ๊ฒฝ์ฐ ์ฟ ํฐ์ ์ฌ์ฉํ์ฌ 25% ํ ์ธ์ ๋ฐ์ผ์ธ์ - Kubernetes
์ข
์ด์ฑ
์ ๊ฒฐ์ ํ์๋ฉด ์ ์์ฑ
์ด ์ด๋ฉ์ผ๋ก ๋ฐ์ก๋ฉ๋๋ค.
์ถ์ฒ : habr.com