Kubernetes์๋ ์ ์ฉ, ํธ์ง, ํจ์น, ๊ต์ฒด ๋ฑ ๋ฆฌ์์ค ์ ๋ฐ์ดํธ๋ฅผ ์ํ ์ฌ๋ฌ ์ต์ ์ด ์์ต๋๋ค. ๊ฐ๊ฐ์ ๊ธฐ๋ฅ๊ณผ ์ฌ์ฉ ์๊ธฐ๊ฐ ํผ๋๋ฉ๋๋ค. ๊ทธ๊ฒ์ ์์ ๋ด ์๋ค.

๋ฉด "kubernetes ์ ์ฉ ๋ ๊ต์ฒด"๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ์์ต๋๋ค. , ์ด๋ ์ ํํ์ง ์์ต๋๋ค. "kubernetes ์ ์ฉ ๋ ํจ์น" ์ฒซ ๋ฒ์งธ ๋งํฌ๋ ๋ค์์ ๋ํ ๋ฌธ์์
๋๋ค. kubectl patch, ๋น๊ต๋ ํฌํจ๋์ง ์์ต๋๋ค. apply ะธ patch. ์ด ๊ธฐ์ฌ์์๋ ๋ค์ํ ์ต์
๊ณผ ๊ฐ ์ต์
์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Kubernetes ๋ฆฌ์์ค(์๋น์ค, ๋ฐฐํฌ, ์์ ๋ฑ)์ ์๋ช ์ฃผ๊ธฐ ๋์ ๋๋๋ก ์ด ๋ฆฌ์์ค์ ์ผ๋ถ ์์ฑ์ ๋ณ๊ฒฝ, ์ถ๊ฐ ๋๋ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ฉ๋ชจ๋ฅผ ์ถ๊ฐํ๊ณ ๋ณต์ ๋ณธ ์๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ์ค์ ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค CLI
์ด๋ฏธ CLI๋ฅผ ํตํด Kubernetes ํด๋ฌ์คํฐ๋ก ์์
ํ๊ณ ์๋ค๋ฉด ๋ค์ ์ฌํญ์ ์ด๋ฏธ ์ต์ํ ๊ฒ์
๋๋ค. apply ะธ edit. ํ apply ํ์ผ์์ ๋ฆฌ์์ค ์ฌ์์ ์ฝ๊ณ Kubernetes ํด๋ฌ์คํฐ์ "upsert"๋ฅผ ์ํํฉ๋๋ค. ์ฆ, ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑํ๊ณ , ์์ผ๋ฉด ์
๋ฐ์ดํธํฉ๋๋ค. ํ edit API๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ์ฝ์ ๋ค์ ๋ฆฌ์์ค ์ฌ์์ ๋ก์ปฌ ํ์ผ์ ๊ธฐ๋กํ ๋ค์ ํ
์คํธ ํธ์ง๊ธฐ์์ ์ฝ๋๋ค. ํ์ผ์ ํธ์งํ๊ณ ์ ์ฅํ ํ kubectl API๋ฅผ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์ ๋ณด๋ด๋ฉด ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฆฌ์์ค์ ์ ์คํ๊ฒ ์ ์ฉํฉ๋๋ค.
๋ชจ๋๊ฐ ๋ช
๋ น์ ์๋ ๊ฒ์ ์๋๋๋ค patch ะธ replace. ํ patch ๋ช
๋ น์ค์์ ๋ณ๊ฒฝ๋ ๋ถ๋ถ๋ง ์ ๊ณตํ์ฌ ๋ฆฌ์์ค ์ฌ์์ ์ผ๋ถ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ํ replace ์ ๋์ผํ๊ฒ ์๋ edit, ๊ทธ๋ฌ๋ ๋ชจ๋ ์์
์ ์๋์ผ๋ก ์ํํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ์ฌ์์ ํ์ฌ ๋ฒ์ ์ ๋ค์ด๋ก๋ํด์ผ ํฉ๋๋ค. kubectl get -o yaml, ํธ์งํ ๋ค์ ์ฌ์ฉํ์ธ์. replace ๋ณ๊ฒฝ๋ ์ฌ์์ ๋ฐ๋ผ ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. ํ replace ๋ฆฌ์์ค๋ฅผ ์ฝ๊ณ ๊ต์ฒดํ๋ ์ฌ์ด์ ๋ณ๊ฒฝ ์ฌํญ์ด ๋ฐ์ํ ๊ฒฝ์ฐ ์๋ํ์ง ์์ต๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค API
์๋ง๋ ๋น์ ์ ๋ฐฉ๋ฒ์ ์ต์ํ ๊ฒ์
๋๋ค. CoreV1().Pods().Update(), replaceNamespacedService ๋๋ patch_namespaced_deployment, ๋ค์์ ํตํด ํด๋ฌ์คํฐ๋ก ์์
ํ๋ ๊ฒฝ์ฐ ์ผ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ํตํด ์ด๋ฌํ ๋ฉ์๋๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. PUT ะธ PATCH. ์ด ๊ฒฝ์ฐ, update ะธ replace ์ฌ์ฉํ๋ค PUT๊ณผ patch, ์๋ฌด๋ฆฌ ์ฌ์ํ ๊ฒ์ด๋ผ๋ ๋ค์์ ์ฌ์ฉํฉ๋๋ค. PATCH.
๊ทธ๊ฒ์ ์ธ๊ธ๋์ด์ผ kubectl API๋ฅผ ํตํด ํด๋ฌ์คํฐ์์๋ ์๋ํฉ๋๋ค. ๋ค์ ๋งํด์, kubectlGo ์ธ์ด์ฉ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์ ์๋ ๋ํผ๋ก, ํ์ค API ๊ธฐ๋ฅ ์ธ์๋ ๋ ๊ฐ๊ฒฐํ๊ณ ์ฝ๊ธฐ ์ฌ์ด ํ์์ผ๋ก ํ์ ๋ช
๋ น์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฃผ๋ก ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฏธ ์์์ฐจ๋ ธ์ ์๋ ์์ง๋ง ๋ค์ ๋ฉ์๋๋ apply ์ด์ ๋จ๋ฝ์์๋ ์์์ ์ธ๊ธํ์ง ์์์ต๋๋ค. ํ์ฌ(2020๋
XNUMX์, ์ฝ. ์ญ์) ๋ชจ๋ ๋
ผ๋ฆฌ kubectl apply, ์ฆ. ์กด์ฌํ์ง ์๋ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฒ์ ์ ์ ์ผ๋ก ์ฝ๋ ์ธก์์ ์๋ํฉ๋๋ค. kubectl. ๋
ธ๋ ฅ์ ๊ธฐ์ธ์ด๊ณ ์์ต๋๋ค apply API ์ธก์ ์์ง๋ง ์์ง ๋ฒ ํ ๋ฒ์ ์
๋๋ค. ์๋์ ๋ ์์ธํ ์์ฑํ๊ฒ ์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํจ์น
๊ฐ์ฅ ์ ์ฌ์ฉ๋จ patch, ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ค๋ ๊ฒฝ์ฐ. ์ด๋ ๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ Kubernetes API๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ํ๋ ๋ฐฉ์์ด๋ฉฐ kubectl (ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํผ์ด๊ธฐ ๋๋ฌธ์ ๋๋์ง๋ ์์ต๋๋ค. ์ฝ. ์ญ์).
์ ๋ต์ ์ผ๋ก ์์
๋ชจ๋ ํ kubectl apply, edit ะธ patch ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค PATCH ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํ๊ธฐ ์ํ HTTP ์์ฒญ์์. ๋ช
๋ น ๊ตฌํ์ ๋ ์์ธํ ์ดํด๋ณด๋ฉด ๋ชจ๋ ๋ช
๋ น์ด ๋ค์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ค๋ฉด ๋ช
๋ น์ ์คํํด์ผ ํ์ง๋ง patch ๋ค๋ฅธ ์ ๊ทผ๋ฒ์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค(์์ธํ ๋ด์ฉ์ ์๋ ์ฐธ์กฐ). ์ ๋ต์ ๋ณํฉ ํจ์น ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณต๋ ์ฌ์์ ๊ธฐ์กด ์ฌ์๊ณผ ๋ณํฉํ์ฌ "์ ๋๋ก" ์๋ํฉ๋๋ค. ๋ณด๋ค ๊ตฌ์ฒด์ ์ผ๋ก ๋งํ๋ฉด ๊ฐ์ฒด์ ๋ฐฐ์ด์ ๋ชจ๋ ๊ฒฐํฉํ๋ ค๊ณ ์๋ํ๋๋ฐ, ์ด๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ถ๊ฐ๋๋ ๊ฒฝํฅ์ด ์์์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค. patch ํฌ๋ ์ปจํ
์ด๋ ์ฌ์์ ์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ํ๊ฒฝ ๋ณ์๋ฅผ ๋ฎ์ด์ฐ๋ ๋์ ๊ธฐ์กด ํ๊ฒฝ ๋ณ์์ ์ถ๊ฐ๋ฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ ๊ฑฐํ๋ ค๋ฉด ์ ๊ณต๋ ์ฌ์์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ๊ฐ์ ๋ก null๋ก ์ค์ ํด์ผ ํฉ๋๋ค. ์ด๋ ํ์ด kubectl ์
๋ฐ์ดํธ์ฉ์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ข๋์?
๋ค์์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ kubectl apply, ์
๋ฐ์ดํธํ ๋ ํญ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค kubectl apply์ kubectl ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๊ณ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ์ ์์ฒญ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ ํ๊ฒ ์ถ์ ํ ์ ์์ต๋๋ค. ์ฅ์ ์ ํญ์ ์ฌ์ฉ apply ์ด๋ ์ด์ ์ ์ ์ฉ๋ ์ฌ์์ ์ถ์ ํ์ฌ ์ฌ์ ์์ฑ๊ณผ ๋ฐฐ์ด ์์๊ฐ ๋ช
์์ ์ผ๋ก ์ ๊ฑฐ๋๋ ์๊ธฐ๋ฅผ ์ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ํตํด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. apply ์์ฑ๊ณผ ๋ฐฐ์ด ์์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ๋ฉด ์ผ๋ฐ์ ์ธ ์ ๋ต์ ๋ณํฉ์ ์๋ํ์ง ์์ต๋๋ค. ํ edit ะธ patch ๋ค์๊ณผ ๊ฐ์ ๋ฉ๋ชจ๋ฅผ ์
๋ฐ์ดํธํ์ง ๋ง์ธ์. kubectl apply ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฏ๋ก Kubernetes API๋ฅผ ํตํด ์ถ์ ๋ฐ ์ํ๋์ง๋ง ๋ช
๋ น์ ํตํด ์ํ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ edit ะธ patch, ํ์ ๋ช
๋ น์๋ ํ์๋์ง ์์ apply์ฆ, apply ์ ๋ํ ์
๋ ฅ ์ฌ์์ ๋ํ๋์ง ์๋๋ผ๋ ์ ๊ฑฐํ์ง ์์ต๋๋ค. apply (๋ฌธ์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ ์์ต๋๋ค. edit ะธ patch ์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. apply, ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ - ์๋์ค).
๋ช
๋ น์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ apply, ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. edit๊ณผ patch, ๋ณ๊ฒฝ ๋ด์ฉ์ ๊ฐ์ฅ ์ ํฉํ ๋ช
๋ น์ ์ ํํฉ๋๋ค. BOM ์์ฑ์ ์ถ๊ฐํ๊ณ ๋ณ๊ฒฝํ ๋ ๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๊ฑฐ์ ๋์ผํฉ๋๋ค. ์ฌ์ ์์ฑ์ด๋ ๋ฐฐ์ด ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ edit ์ผํ์ฑ ์คํ์ฒ๋ผ ๋์ํฉ๋๋ค. apply, ํธ์ง ์ ํ์ ์ฌ์ ์ถ์ ์ ํฌํจํ์ฌ ๋ฆฌ์์ค์์ ์์ฑ๊ณผ ๋ฐฐ์ด ์์๋ฅผ ๋ช
์์ ์ผ๋ก ์ ๊ฑฐํ ์ ์์ต๋๋ค. ์ฌ์์์ ์์ฑ ๊ฐ์ ๋ช
์์ ์ผ๋ก null๋ก ์ค์ ํด์ผ ํฉ๋๋ค. patch๋ฆฌ์์ค์์ ์ ๊ฑฐํฉ๋๋ค. ์ ๋ต์ ๋ณํฉ ํจ์น๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด ์์๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๋ณํฉ ์ง์๋ฌธ์ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ ๋ณต์กํฉ๋๋ค. ๋ณด๋ค ์คํ ๊ฐ๋ฅํ ๋์์ ์๋์ ๋ค๋ฅธ ์
๊ทธ๋ ์ด๋ ์ ๊ทผ ๋ฐฉ์์ ์ฐธ์กฐํ์ธ์.
์์ ๋ช
๋ น๊ณผ ์ ์ฌํ๊ฒ ์๋ํ๋ ์
๋ฐ์ดํธ ๋ฉ์๋๋ฅผ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌํํ๋ ค๋ฉด kubectl, ์์ฒญ์ ์ค์ ๋์ด์ผ ํฉ๋๋ค. content-type ะฒ application/strategic-merge-patch+json. ์ฌ์์์ ์์ฑ์ ์ ๊ฑฐํ๋ ค๋ฉด ๋น์ทํ ๋ฐฉ์์ผ๋ก ํด๋น ๊ฐ์ ๋ช
์์ ์ผ๋ก null๋ก ์ค์ ํด์ผ ํฉ๋๋ค. kubectl patch. ๋ฐฐ์ด ์์๋ฅผ ์ ๊ฑฐํด์ผ ํ๋ ๊ฒฝ์ฐ ์
๋ฐ์ดํธ ์ฌ์์ ๋ณํฉ ์ง์๋ฌธ์ ํฌํจํ๊ฑฐ๋ ์
๋ฐ์ดํธ์ ๋ํด ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ ๋ฐ์ดํธ์ ๋ํ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์
Kubernetes๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ์
๋ฐ์ดํธ ์ ๊ทผ ๋ฐฉ์์ ์ง์ํฉ๋๋ค. ะธ . JSON ๋ณํฉ ํจ์น ์ ๊ทผ ๋ฐฉ์์ ๋ถ๋ถ์ ์ธ Kubernetes ์ฌ์์ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ๊ณ ์ ๋ต์ ๋ณํฉ ํจ์น ์ ๊ทผ ๋ฐฉ์๊ณผ ์ ์ฌํ ๊ฐ์ฒด ๋ณํฉ์ ์ง์ํฉ๋๋ค. ๋์ ์ฐจ์ด์ ์ ํฌ๋ ์ฌ์์ ์ปจํ
์ด๋ ๋ฐฐ์ด์ ํฌํจํ์ฌ ๋ฐฐ์ด ๊ต์ฒด๋ง ์ง์ํ๋ค๋ ์ ์
๋๋ค. ์ด๋ JSON ๋ณํฉ ํจ์น๋ฅผ ์ฌ์ฉํ ๋ ์ปจํ
์ด๋์ ์์ฑ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ปจํ
์ด๋์ ๋ํ ์์ ํ ์ฌ์์ ์ ๊ณตํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ์ ๊ทผ ๋ฐฉ์์ BOM์ ๋ฐฐ์ด์์ ์์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ๋ช
๋ น์ค์์ ๋ค์์ ์ฌ์ฉํ์ฌ JSON ๋ณํฉ ํจ์น๋ฅผ ์ ํํ ์ ์์ต๋๋ค. kubectl patch --type=merge. Kubernetes API๋ก ์์
ํ ๋ ์์ฒญ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. PATCH ๋ฐ ์ค์น content-type ะฒ application/merge-patch+json.
JSON ํจ์น ์ ๊ทผ ๋ฐฉ์์ ๋ฆฌ์์ค์ ๋ถ๋ถ ์ฌ์์ ์ ๊ณตํ๋ ๋์ ๋ฆฌ์์ค์ ์ ์ฉํ๋ ค๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐฐ์ด๋ก ์ ๊ณตํ๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์ ๋ฐฐ์ด์ ๊ฐ ์์๋ ๋ฆฌ์์ค์ ์ ์ฉ๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ํ ์ค๋ช
์ ๋ํ๋
๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ๋ณ๊ฒฝ ์ฌํญ์ ํํํ๋ ๋ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํ ๋ฐฉ๋ฒ์ด์ง๋ง, ๋ถ๋ถ ๋ฆฌ์์ค ์ฌ์์ ๋ณด๋ด๋ ๋์ Kubernetes๊ฐ ์๋ ๋ณ๋์ ํ์์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋์ดํ๋ ๋น์ฉ์ด ๋ญ๋๋ค. ์์ kubectl ๋ค์์ ์ฌ์ฉํ์ฌ JSON ํจ์น๋ฅผ ์ ํํ ์ ์์ต๋๋ค. kubectl patch --type=json. Kubernetes API๋ฅผ ์ฌ์ฉํ ๋ ์ด ์ ๊ทผ ๋ฐฉ์์ ์์ฒญ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํฉ๋๋ค. PATCH ๋ฐ ์ค์น content-type ะฒ application/json-patch+json.
์์ ๊ฐ์ด ํ์ํฉ๋๋ค - ๊ต์ฒด๋ฅผ ์ฌ์ฉํ์ธ์
์ด๋ค ๊ฒฝ์ฐ์๋ ๋ฆฌ์์ค๋ฅผ ์ฝ๋ ์๊ฐ๊ณผ ์
๋ฐ์ดํธ๋๋ ์๊ฐ ์ฌ์ด์ ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋์ง ์์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ฆ, ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์ ์ฉ๋๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์์. ์ด ๊ฒฝ์ฐ ๋ฆฌ์์ค๋ฅผ ์
๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. replace. ์๋ฅผ ๋ค์ด ์ฌ๋ฌ ์์ค์ ์ํด ์
๋ฐ์ดํธ๋๋ ์นด์ดํฐ๊ฐ ์๋ ConfigMap์ด ์๋ ๊ฒฝ์ฐ ๋ ์์ค๊ฐ ๋์์ ์นด์ดํฐ๋ฅผ ์
๋ฐ์ดํธํ์ฌ ์
๋ฐ์ดํธ๊ฐ ์์ค๋์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ์์ฐํ๋ ค๋ฉด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ผ๋ จ์ ์ด๋ฒคํธ๋ฅผ ์์ํด ๋ณด์ธ์. patch:
- A์ B๋ API์์ ๋ฆฌ์์ค์ ํ์ฌ ์ํ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๊ฐ๊ฐ์ ์นด์ดํฐ๋ฅผ XNUMX์ฉ ์ฆ๊ฐ์ํค๊ณ "์ ๋ฐ์ดํธ์" ๋ฉ๋ชจ์ ๊ฐ๊ฐ "A" ๋๋ "B"๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์์ ๋ก์ปฌ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์์ค๋ฅผ ์กฐ๊ธ ๋ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธํฉ๋๋ค.
- B๋ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์
๋ฐ์ดํธ A๊ฐ ์์ค๋ฉ๋๋ค. ๋ง์ง๋ง ์์
patch ์ด๊ธฐ๋ฉด ์นด์ดํฐ๋ XNUMX๊ฐ ์๋ XNUMX์ฉ ์ฆ๊ฐํ๊ณ "updated-by" ๋ฉ๋ชจ์ ๊ฐ์ "B"๋ก ๋๋๋ฉฐ "A"๋ฅผ ํฌํจํ์ง ์์ต๋๋ค. ์์ ๋ด์ฉ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์
๋ฐ์ดํธ๊ฐ ์๋ฃ๋ ๋ ๋ฐ์ํ๋ ์ํฉ๊ณผ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค. replace:
- A์ B๋ API์์ ๋ฆฌ์์ค์ ํ์ฌ ์ํ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๊ฐ๊ฐ์ ์นด์ดํฐ๋ฅผ XNUMX์ฉ ์ฆ๊ฐ์ํค๊ณ "์ ๋ฐ์ดํธ์" ๋ฉ๋ชจ์ ๊ฐ๊ฐ "A" ๋๋ "B"๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์์ ๋ก์ปฌ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์์ค๋ฅผ ์กฐ๊ธ ๋ ๋น ๋ฅด๊ฒ ์ ๋ฐ์ดํธํฉ๋๋ค.
- B๋ ๋ฆฌ์์ค ์
๋ฐ์ดํธ๋ฅผ ์๋ํ์ง๋ง ๋ฆฌ์์ค ๋ฒ์ ์ด ์ฌ์์ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ API์์ ์
๋ฐ์ดํธ๋ฅผ ๊ฑฐ๋ถํฉ๋๋ค.
replace๋ฆฌ์์ค ๋ฒ์ ์ด A์ ๊ต์ฒด ์์ ์ ์ํด ์ฆ๊ฐ๋์๊ธฐ ๋๋ฌธ์ Kubernetes์ ์๋ ๋ฆฌ์์ค์ ํ์ฌ ๋ฒ์ ๊ณผ ์ผ์นํ์ง ์์ต๋๋ค.
์์ ๊ฒฝ์ฐ B๋ ๋ฆฌ์์ค๋ฅผ ๋ค์ ๊ฐ์ ธ์์ ์ ์ํ๋ก ๋ณ๊ฒฝํ๊ณ ๋ค์ ์๋ํด์ผ ํฉ๋๋ค. replace. ์ด๋ ๊ฒ ํ๋ฉด ์นด์ดํฐ๊ฐ XNUMX๋งํผ ์ฆ๊ฐํ๊ณ "์
๋ฐ์ดํธ ๊ธฐ์ค" ๋ฉ๋ชจ ๋์ "AB"๊ฐ ํฌํจ๋ฉ๋๋ค.
์์ ์๋ ์คํํ ๋ replace ์ ์ฒด ๋ฆฌ์์ค๊ฐ ์์ ํ ๋์ฒด๋ฉ๋๋ค. ์ฌ์ฉ๋๋ ์ฌ์ replace, ๋ถ๋ถ์ ์ด๊ฑฐ๋ ๋ถ๋ถ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ ์ ๋ฉ๋๋ค. apply, ๊ทธ๋ฌ๋ ์ถ๊ฐ๋ฅผ ํฌํจํ์ฌ ์๋ฃ๋์์ต๋๋ค. resourceVersion ์ฌ์ ๋ฉํ๋ฐ์ดํฐ์ ์ถ๊ฐ๋ฉ๋๋ค. ํ์ฑํํ์ง ์์ ๊ฒฝ์ฐ resourceVersion ์ ๊ณตํ ๋ฒ์ ์ด ์ต์ ๋ฒ์ ์ด ์๋๋ฉด ๊ต์ฒด๊ฐ ๊ฑฐ๋ถ๋ฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ฅ ์ข์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ replace โ ๋ฆฌ์์ค๋ฅผ ์ฝ๊ณ ์
๋ฐ์ดํธํ๊ณ ์ฆ์ ๊ต์ฒดํ์ญ์์ค. ์ฌ์ฉ kubectl, ๋ค์๊ณผ ๊ฐ์ด ๋ณด์ผ ์ ์์ต๋๋ค.
$ kubectl get deployment my-deployment -o json
| jq '.spec.template.spec.containers[0].env[1].value = "new value"'
| kubectl replace -f -์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๋ค์ ๋ ๋ช
๋ น์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ค๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. deployment.yaml ์์ฑ์ ํฌํจํ์ง ์์ต๋๋ค .metadata.resourceVersion
$ kubectl create -f deployment.yaml
$ kubectl replace -f deployment.yaml์ด๋ ์์์ ๋งํ ๋ด์ฉ๊ณผ ๋ชจ์๋๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. "์ฒจ๊ฐ resourceVersion ์ฌ์ ๋ฉํ๋ฐ์ดํฐ์ ํฌํจ๋ฉ๋๋ค."๋ผ๊ณ ๋งํ๋ ๊ฒ์ด ์๋ชป๋ ๊ฒ์ธ๊ฐ์? ์๋์, ๊ทธ๋ ์ง ์์ต๋๋ค. kubectl ๊ทํ๊ฐ ์ง์ ํ์ง ์์ ์๋ฆผ resourceVersion, ๋ฆฌ์์ค์์ ์ฝ์ด์ ์ง์ ํ ์ฌ์์ ์ถ๊ฐํ ๋ค์ ์คํํฉ๋๋ค. replace. ์์์ฑ์ ์์กดํ๋ฉด ์ ์ฌ์ ์ผ๋ก ์ํํ ์ ์์ผ๋ฏ๋ก ๋ง๋ฒ์ ์ ์ ์ผ๋ก ์ธก๋ฉด์์ ์๋ํฉ๋๋ค. kubectl, API์ ํจ๊ป ์๋ํ๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ ์ด์ ์์กดํด์๋ ์ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ํ์ฌ ๋ฆฌ์์ค ์ฌ์์ ์ฝ๊ณ ์
๋ฐ์ดํธํ ๋ค์ ์คํํด์ผ ํฉ๋๋ค. PUT ์๊ตฌ.
ํจ์น๋ฅผ ํ ์๋ ์์ต๋๋ค. ๊ต์ฒด ์์ ์ ์ํํฉ๋๋ค.
๋๋ก๋ API์์ ์ฒ๋ฆฌํ ์ ์๋ ์ผ๋ถ ๋ณ๊ฒฝ ์์
์ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ์์ฑํ์ฌ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ๋ก ๊ต์ฒดํ ์ ์์ต๋๋ค. ์ด๋ ๋ค์์ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. kubectl replace --force. ๋ช
๋ น์ ์คํํ๋ฉด ๋ฆฌ์์ค๊ฐ ์ฆ์ ์ ๊ฑฐ๋ ๋ค์ ์ ๊ณต๋ ์ฌ์์์ ๋ค์ ์์ฑ๋ฉ๋๋ค. API์๋ "๊ฐ์ ๊ต์ฒด" ํธ๋ค๋ฌ๊ฐ ์์ผ๋ฉฐ API๋ฅผ ํตํด ์ด๋ฅผ ์ํํ๋ ค๋ฉด ๋ ๊ฐ์ง ์์
์ ์ํํด์ผ ํฉ๋๋ค. ๋จผ์ ๋ฆฌ์์ค๋ฅผ ์ค์ ํ์ฌ ์ญ์ ํด์ผ ํฉ๋๋ค. gracePeriodSeconds ์(0)์ผ๋ก propagationPolicy "๋ฐฑ๊ทธ๋ผ์ด๋"์์ ์ํ๋ ์ฌ์์ผ๋ก ์ด ๋ฆฌ์์ค๋ฅผ ๋ค์ ์์ฑํฉ๋๋ค.
๊ฒฝ๊ณ : ์ด ์ ๊ทผ ๋ฐฉ์์ ์ ์ฌ์ ์ผ๋ก ์ํํ๋ฉฐ ์ ์๋์ง ์์ ์ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
์๋ฒ ์ธก์์ ์ ์ฉ
์์์ ์ธ๊ธํ๋ฏ์ด Kubernetes ๊ฐ๋ฐ์๋ ๋ก์ง์ ๊ตฌํํ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ์์ต๋๋ค. apply ์ผ๋ก kubectl Kubernetes API์์. ๋
ผ๋ฆฌ apply Kubernetes 1.18์์ ๋ค์์ ํตํด ์ฌ์ฉ ๊ฐ๋ฅ kubectl apply --server-side ๋๋ API๋ฅผ ํตํด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ PATCH ั content-type application/apply-patch+YAML.
์ฐธ๊ณ : JSON๋ ์ ํจํ YAML์ด๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฌ์์ JSON์ผ๋ก ๋ณด๋ผ ์ ์์ต๋๋ค.
content-type์์งapplication/apply-patch+yaml.
๊ทธ ๋
ผ๋ฆฌ ์ธ์ kubectl API๋ฅผ ํตํด ๋ชจ๋ ์ฌ๋์ด ์ฌ์ฉํ ์ ์๊ฒ ๋์์ผ๋ฉฐ, apply ์๋ฒ ์ธก์์๋ ์ฌ์์ ํ๋๋ฅผ ๋ด๋นํ๋ ์ฌ๋์ ์ถ์ ํ์ฌ ์ถฉ๋ ์๋ ํธ์ง์ ์ํ ์์ ํ ๋ค์ค ์ก์ธ์ค๋ฅผ ํ์ฉํฉ๋๋ค. ์ฆ, ๋ง์ฝ apply ์๋ฒ ์ธก์์๋ ๋ ๋๋ฆฌ ๋ณด๊ธ๋ ๊ฒ์ด๋ฉฐ kubectl, Pulumi ๋๋ Terraform, GitOps์ ๊ฐ์ ๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋ํ ๋ฒ์ฉ ๋ณด์ ๋ฆฌ์์ค ๊ด๋ฆฌ ์ธํฐํ์ด์ค๋ ๋ฌผ๋ก ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์์ฒด ์์ฑ ์คํฌ๋ฆฝํธ๋ ๋ํ๋ ๊ฒ์
๋๋ค.
๊ฒฐ๊ณผ
ํด๋ฌ์คํฐ์ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ๋ํ ๊ฐ๋ตํ ๊ฐ์๊ฐ ๋์์ด ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋จ์ํ ์ ์ฉ๊ณผ ๊ต์ฒด๊ฐ ์๋๋ผ ์ ์ฉ, ํธ์ง, ํจ์น ๋๋ ๊ต์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ค๋ ์ ์ ์์๋๋ฉด ์ข์ต๋๋ค. ๊ฒฐ๊ตญ ์์น์ ์ผ๋ก ๊ฐ ์ ๊ทผ ๋ฐฉ์์๋ ๊ณ ์ ํ ์ ์ฉ ์์ญ์ด ์์ต๋๋ค. Atomic ๋ณ๊ฒฝ์ ๊ฒฝ์ฐ ๊ต์ฒด๊ฐ ๋ฐ๋์งํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ์ ์ฉ์ ํตํด ์ ๋ต์ ๋ณํฉ ํจ์น๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ต์ํ "kubernetes ์ ์ฉ ๋ ๊ต์ฒด"๋ฅผ ๊ฒ์ํ ๋ Google์ด๋ StackOerflow๋ฅผ ์ ๋ขฐํ ์ ์๋ค๋ ์ ์ ์ดํดํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. ์ ์ด๋ ์ด ๊ธฐ์ฌ๊ฐ ํ์ฌ ๋ต๋ณ์ ๋์ฒดํ ๋๊น์ง๋ ๋ง์ด์ฃ .

์ถ์ฒ : habr.com
