๐ CKA 8์ผ์ฐจ
๐ Udemy-Certified Kubernetes Administrator (CKA) with Practice Tests 94-104
๋์ปค์์ ์ปจํ
์ด๋๋ ์ปจํ
์ด๋ ๋ด๋ถ์ ํ๋ก์ธ์ค๊ฐ ์ด์์์ด์ผ Running ์ํ๊ฐ ๋๋ค.
์ปจํ
์ด๋ ์์ ์น ์๋น์ค๊ฐ ๋ฉ์ถ๊ฑฐ๋ ์ถฉ๋ํ๋ฉด ์ปจํ
์ด๋๋ ์ข
๋ฃ๋๋ค.
์ปจํ
์ด๋์์ ์คํ๋๋ ํ๋ก์ธ์ค๋ Dockerfile์ ์ํด ์ ์๋๋ค.
Dockerfile์ CMD๋ ์ปจํ
์ด๋ ์์์ ์คํ๋ ๋ช
๋ น์ด๋ค.
์ปจํ ์ด๋ ์์ ๋ช ๋ น์ ์ด๋ป๊ฒ ์ง์ ํ ๊น?
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ์ docker run
๋ช
๋ น์ด์ COMMAND๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ด๋ฏธ์ง์ ์ง์ ๋ ๊ธฐ๋ณธ ๋ช
๋ น์ ์ฌ์ ์ํ๋ค.
docker run ubuntu sleep 5
๋ฅผ ์คํํ๋ฉด ์ปจํ
์ด๋๊ฐ ์๋ํ ๋ sleep์ 5์ด ๋์ ์คํํ๊ณ ์ข
๋ฃ๋๋ค.
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ CMD๋ฅผ ์ถ๊ฐํ Dockerfile์ ์์ฑํด์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๋ ๊ฒ์ด๋ค.
์ผ์์ ์ผ๋ก ๋ช
๋ น์ ์คํํ๋ ์์ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅด๊ฒ ์ปจํ
์ด๋๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ช
๋ น์ ์คํํ๋๋ก ํ ์ ์๋ค.
๋ช
๋ น์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ์
ธ ์์, JSON์ด ์๋ค.
JSON ๋ฐฐ์ด ํฌ๋งท์์ ๋ช
๋ น์ ์ง์ ํ ๋ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๊ฐ ์คํ ๊ฐ๋ฅํด์ผ ํ๋ค.
๋ํ ๋ช
๋ น๊ณผ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ณ๋๋ก ์ง์ ํด์ผ ํ๋ค.
CMD๋ docker run
๋ช
๋ น์ [COMMAND] ์ต์
์ ๋ฐ๋ผ CMD์ ๋งค๊ฐ๋ณ์๊ฐ ์์ ํ ๋ฐ๋๋ค.
๋ฐ๋ฉด์, ENTRYPOINT์ ๊ฒฝ์ฐ ์ ๋ฌ๋ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํด์ ๋ช
๋ น์ ์คํํ๋ค.
๋ง์ฝ, ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฌ ๋ฐ์ง ๋ชปํ๋ฉด 'sleep' ๋ช
๋ น์ด ์คํ๋์ด ๋๋ฝ๋ ๋ช
๋ น๋ฌธ์ด๋ผ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๊ธฐ ์ํด์ ENTRYPOINT์ CMD๋ฅผ ๋ ๋ค ์ฌ์ฉํ๋ฉด ๋๋ค.
์ด ๊ฒฝ์ฐ, ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ์ง ์์๋ค๋ฉด ENTRYPOINT ๋ช
๋ น์ด์ CMD ๋ช
๋ น์ด ์ถ๊ฐ๋๋ค.
๋ง์ฝ ๋งค๊ฐ๋ณ์๊ฐ ์ง์ ๋์์ผ๋ฉด CMD ๋ช
๋ น์ ๋ฌดํจํ๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ์๋ ENTRYPOINT์ CMD๋ฅผ ํญ์ JSON ํฌ๋งท์ผ๋ก ์ง์ ํด์ผ ํ๋ค.
๋ง์ง๋ง์ผ๋ก ENTRYPOINT๋ฅผ ์์ ํ๊ณ ์ถ๋ค๋ฉด '--entrypoint' ์ต์
์ ์ฌ์ฉํด ์ฌ์ ์ํ๋ฉด ๋๋ค.
๋์ปค ์คํ ๋ช
๋ น์ ์ถ๊ฐ๋๋ ๋ชจ๋ ๊ฒ์ ํ๋ ์ ์ ํ์ผ์ args ์์ฑ์ผ๋ก ๊ฐ์ง๊ฒ ๋๋ค.
ํ๋ ์ ์ ํ์ผ์ args ์ต์
์ ํตํด Dockerfile์ CMD๋ฅผ ์ฌ์ ์ํ ์ ์๋ค.
Dockerfile์ ENTRYPOINT๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค๋ฉด ํ๋ ์ ์ ํ์ผ์ command ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ฆ, ํ๋ ์ ์ ํ์ผ์ command ์์ญ์ Dockerfile์ ENTRYPOINT ์์ญ์ ๋ฎ์ด์ฐ๊ณ
args ์์ญ์ Dockerfile์ CMD ์์ญ์ ๋ฎ์ด์ด๋ค.
ํ๋ ์ ์ ํ์ผ์์ args์ command๋ฅผ ๋ช
์ํ ์ ์๋ค.
args์ command๋ ๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง
ํ์์ผ๋ก ๋ช
์๋๋ค.
์๋์ ๊ฒฝ์ฐ, '--color green'์ด ์ปจํ
์ด๋์์ ์คํ๋๋ค.
์๋์ ๊ฒฝ์ฐ, 'python app.py --color pink'๊ฐ ์ปจํ
์ด๋์์ ์คํ๋๋ค.
kubectl run ๋ช
๋ น์ด๋ฅผ ์คํํ ๋ ๋ค์ ์ต์
๋ค์ ์ฌ์ฉํด์ args์ command๋ฅผ ๋๊ฒจ์ค ์ ์๋ค.
kubectl ์ต์
๊ณผ ์ปจํ
์ด๋ ์์์ ์คํ๋๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ต์
์ ๊ตฌ๋ถํ๊ธฐ ์ํด '--'๊ฐ ์ฌ์ฉ๋๋ค.
ํ๋ ์ ์ ํ์ผ์์ env ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ ์ ์๋ค.
ํค-๊ฐ ํฌ๋งท์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์ด์ธ์๋ ์ปจํผ๊ทธ๋งต๊ณผ ์ํฌ๋ฆฟํค๋ฅผ ์ฌ์ฉํด์ env๋ฅผ ์ง์ ํ ์ ์๋ค.
์ปจํผ๊ทธ ๋งต์ ์ค์์์ ํค ๊ฐ ์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค.
ํ๋ ์ ์ ํ์ผ์ env ํ๋์ ์ปจํผ๊ทธ๋งต์ ์ฝ์
ํ์ฌ ์ปจํผ๊ทธ๋งต์ ํค ๊ฐ ์์ด ํ๊ฒฝ ๋ณ์๋ก ์ฌ์ฉ๋ ์ ์๊ฒ ํ๋ค.
์ปจํผ๊ทธ ๋งต ๊ตฌ์ฑ์๋ ๋ ๋จ๊ณ๊ฐ ์๋ค.
1. Create ConfigMap
2. Inject into Pod
๋ค๋ฅธ ์ฟ ๋ฒ๋คํฐ์ค ๊ฐ์ฒด๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ปจํผ๊ทธ๋งต์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์๋ค.
๋ช
๋ น์ ์ธ ๋ฐฉ๋ฒ์ kubectl create configmap
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด๊ณ
์ ์ธ์ ์ธ ๋ฐฉ๋ฒ์ configmap ์ ์ ํ์ผ์ ์์ฑํ๊ณ kubectl create -f
๋ช
๋ น์ด๋ฅผ ์คํํ๋ ๊ฒ์ด๋ค.
kubectl create configmap
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ๋ ํค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ช
์ํ๊ธฐ ์ํด '--from-literal' ์ต์
์ ์ฌ์ฉํ ์ ์๋ค. ์ฌ๋ฌ ๊ฐ์ ํค ๊ฐ์ ๋ช
์ํ๊ธฐ ์ํด์๋ '--from-literal' ์ต์
์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํด์ผ ํ๋ค.
'--from-file' ์ต์
์ ์ฌ์ฉํ์ฌ ํ์์ ํตํด ํ์ํ ํค ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ ๋ฌํ ์๋ ์๋ค.
configmap ์ ์ ํ์ผ์ ํตํด ๋ค์๊ณผ ๊ฐ์ด configmap์ ์์ฑํ ์ ์๋ค.
๋ค์ํ ๋ชฉ์ ์ ์ํด ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ์ํ๋งํผ configmap์ ์์ฑํ ์ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ configmap์ ์ด๋ฆ์ ์ ์ ํ ๋ถ์ด๋ ๊ฒ์ด ์ค์ํ๋ค.
์ปจํผ๊ทธ๋งต์ ํตํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์๋ ํ๋ ์ ์ ํ์ผ์ 'envFrom' ํ๋์ ์ปจํผ๊ทธ๋งต ์ด๋ฆ์ ๋ช
์ํ๋ฉด ๋๋ค.
ํ๋ ์ ์ ํ์ผ์์ configmap์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ค์ ์ธ ๊ฐ์ง์ด๋ค.
env, single env, volume์ผ๋ก ์ฌ์ฉ๋ ์ ์๋ค.
configmap์ผ๋ก ํ๊ฒฝ๋ณ์ ์ค์ ํ๊ธฐ
โ์ฃผ์ํ ์ ! ๋์ด์ฐ๊ธฐ๋ฅผ ์ฃผ์ํ์!!
ConfigMap์ ์ผ๋ฐ ํ
์คํธ ํ์์ผ๋ก ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ํธ๋ฅผ ์ ์ฅํ๊ธฐ์๋ ๋ถ์ ์ ํ๋ค.
์ํธ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Secret์ด ์ฌ์ฉ๋๋ค.
Secret์ ๋น๋ฐ๋ฒํธ ๋ฑ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
์ธ์ฝ๋ฉ๋ ํ์์ผ๋ก ์ ์ฅ๋๋ค๋ ์ ๋ง ๋นผ๋ฉด ConfigMap๊ณผ ๋น์ทํ๋ค.
Secret ์ญ์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋ค ์ ์๋ค.
๋จผ์ ๋ช
๋ น์ ์ธ ๋ฐฉ๋ฒ์ '--from-literal'์ต์
์ ํตํด ํค ๊ฐ ์์ ์ง์ ํ ์ ์๋ค.
๋น๋ฐ์ด ๋๋ฌด ๋ง์ผ๋ฉด '--from-file' ์ต์
์ ์ด์ฉํด ํ์ผ๋ก ํค ๊ฐ ์์ ํ๋ฒ์ ์ง์ ํ ์ ์๋ค.
๋ค์์ผ๋ก ์ ์ธ์ ์ธ ๋ฐฉ๋ฒ์์๋ ์ํฌ๋ฆฟ ์ ์ ํ์ผ์ ๋จผ์ ์์ฑํ๊ณ kubectl apply -f
๋ช
๋ น์ด๋ฅผ ํตํด ์ํฌ๋ฆฟ์ ์์ฑํ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉ๋ ํฌ๋งท์ผ๋ก ์ ์ฅํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ผ๋ฐ ํ์์์ ์ธ์ฝ๋ฉ ๋ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณํํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ๋๋ค.
Secret์ ํ์ธํ๊ธฐ ์ํด ๋ค์ ๋ช
๋ น์ด๋ค์ ์ฌ์ฉํ ์ ์๋ค.
Secret์ ๋ฐ์ดํฐ๋ฅผ ํ์ธํ๊ธฐ ์ํด์๋ kubectl get secret ์ํฌ๋ฆฟ๋ช
-o yaml
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
์ธ์ฝ๋ฉ๋ ๊ฐ์ ํด๋
ํ๊ธฐ ์ํด์ '--decode' ์ต์
์ ์ฌ์ฉํ๋ฉด ๋๋ค.
ํ๋์ env๋ก ์ํฌ๋ฆฟ์ ์ฌ์ฉํ ์ ์๋ค. ํ๋ ์ ์ ํ์ผ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฝ์
ํ๋ ค๋ฉด envFrom์ด๋ผ๋ ํ๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
ํ๋์ ์ํฌ๋ฆฟ์ ์ฃผ์
ํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ์๋ค.
๋จ์ผ ํ๊ฒฝ ๋ณ์๋ก ๋ฃ์ ์ ์๊ณ ๋ณผ๋ฅจ์ผ๋ก ๋ฃ์ ์๋ ์๋ค.
ํ๋์ ๋ณผ๋ฅจ์ผ๋ก ์ํฌ๋ฆฟ์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ํฌ๋ฆฟ์ ๊ฐ๊ฐ์ ํน์ฑ์ ํ์ผ๋ก ์์ฑ๋๋ค.
ํ์ผ์๋ ์ํธ ๊ฐ์ด ๋ด๊ฒจ ์๋ค.
์ด ๊ฒฝ์ฐ์๋ 3๊ฐ์ ์ํธ๊ฐ 3๊ฐ์ ํ์ผ์ ๋ด๊ฒจ ์๋ค.
Secret์ ๋ค๋ฃฐ ๋๋ ์ฃผ์ํ ์ ์ด ์๋ค.
์ฐ์ , Secret์ ์ํธํ๋์ด ์์ง ์๋ค. ๊ทธ๋์ ๋๊ตฌ๋ Secret ์ ์ ํ์ผ์ ๋ณผ ์ ์๊ณ Secret ๊ฐ์ฒด๋ฅผ ์ป์ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋ค.
๋ฐ๋ผ์ ์ฃผ์ํด์ผ ํ๋ฉฐ RBAC(Role Based Access Control, ์ญํ ๊ธฐ๋ฐ ์ ๊ทผ ์ ์ด)๋ ์ 3์์ ์ํธ ๊ณต๊ธ์๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข๋ค.
Secret์ base64 ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ธ์ฝ๋ฉํ๋ค. base64๋ก ์ธ์ฝ๋ฉ๋ ์ํธ๋ฅผ ๊ฐ์ง ์ฌ๋์ ๋๊ตฌ๋ ์ํธ๋ฅผ ๋์ฝ๋ฉํ ์ ์๋ค. ๋ฐ๋ผ์ Secret์ ๊ทธ๋ค์ง ์์ ํ์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋ ์ ์๋ค.
Secret์ ์ํธ ๋ฐ ๊ธฐํ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์ค์๋ก ๋
ธ์ถ๋ ์ํ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ ํ
์คํธ๋ก ์ ์ฅํ๋ ๊ฒ๋ณด๋ค ์์ ํ๋ค.
'Secret ์ ์ ํ์ผ์ ์์ค ์ฝ๋ ๋ ํฌ์งํ ๋ฆฌ์ ์ฌ๋ฆฌ์ง ์๋๋ค', 'ETCD์ ์ํธํ๋์ด ์ ์ฅ๋๋๋ก ETCD์ ์ ์ฅ๋ ๋ Secret์ ๋ํ ์ํธํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ค' ๋ฑ์ ๊ดํ์ Secret์ด ๋์ฑ ์์ ํ๋๋ก ๋ง๋ค์ด ์ค๋ค.
๋ํ ์ฟ ๋ฒ๋คํฐ์ค๋ Secret์ ์์ ํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด
๊ทธ๋ฌ๋ Helm Secrets, HashiCorp Valut์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๊ฐ์ด Kubernetes์ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ค๋ฅธ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋ค.