์๋ ํ์ธ์ ๊ตฌ๋ ์๋, ์ต์ DevOps ์์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
Kubernetes๋ฅผ ์ด์ ๋ง ๋ฐฐ์ฐ๊ฑฐ๋ ํ์ฉํ๊ธฐ ์์ํ์ ๋ถ์ด๋ผ๋ฉด, ์ ํ๋ฆฌ์ผ์ด์ ์ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๋ yaml ํ์ผ(Manifest๋ผ๊ณ ๋ ํฉ๋๋ค)๋ค์ ๊ด๋ฆฌํ๋ ๊ฒ์ด ์ฌ๊ฐ ํ๋ ์ผ์ด ์๋์ ๋๋ผ์ค ๊ฒ๋๋ค.
์น ์๋น์ค ํ๋๋ฅผ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํ๋ค๊ณ ํ๋๋ผ๋, Deployment๋ถํฐ Service, Configmap, Secret ๋ฑ ์๋น์ค ์ด์์ ํ์ํ ๊ฐ๊ฐ์ง ๋ฆฌ์์ค๋ค์ Manifest ํ์ผ์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๊ฒ ๋๋ ๋ถ๋ด๊ฐ๋ ์ปค์ง๋๋ฐ์.
๊ฑฐ๊ธฐ๋ค ์ด๋ฏธ ๋ง๋ค์ด์ง Manifest ํ์ผ์ ๋๊ตฐ๊ฐ๋ก๋ถํฐ ์ ๋ฌ๋ฐ๊ฑฐ๋, ๋๊ตฐ๊ฐ์๊ฒ ๊ณต์ ํด์ค์ผ ํ๋ค๋ฉด... ์ฌ๋ฐ๋ฅธ Manifest๊ฐ ๊ณต์ ๋์๋์ง ํ์ธํ๋ ์์ ๋งํด๋ ์์ด ๋ง์ด ๊ฐ๊ฒ ์ฃ .
์ด๋ฐ ๋ฌธ์ ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ฒ์ด ๋ฐ๋ก, Helm์ ๋๋ค.
Helm๋ ๋ฆด๋ฆฌ์ฆ ํ ๊ธ๋ฐฉ ์ธ๊ธฐ๋ฅผ ์ป์ด ํ์ฌ ๋๋ฆฌ ์ฌ์ฉ ์ค์ธ ํด์ธ๋ฐ์. ์ด๋ฒ ์์์ง์์ ํจ๊ป ์์๋ณด๊ฒ ์ต๋๋ค.
๐จManifest ํ์ผ๋ค์ ํ ํ๋ฆฟ์ผ๋ก ๊ด๋ฆฌํ๋ Helm chart
Helm์ Kubernetes์ ๋ฐฐํฌ๋๋ ํ๋ก์ ํธ์ ๊ฐ ๋ฆฌ์์ค์ Manifest๋ฅผ Command-Line ํ๊ฒฝ์์ ์์ฑํ๊ฑฐ๋ ๊ณต์ , ๋ฒ์ ๊ด๋ฆฌ๊น์ง ํด์ฃผ๋ Kubernetes ํจํค์ง ๋งค๋์ ํด์ ๋๋ค.
Helm์ ์ฃผ์ ์ปจ์ ์ Chart์ Config, Release์ธ๋ฐ์.
- Chart๋ Kubernetes ๋ฆฌ์์ค ๋ฐฐํฌ์ ํ์ํ Manifest ํ ํ๋ฆฟ ๋ฑ์ ์์ค์ฝ๋์ ๋ชจ์์ ์๋ฏธํฉ๋๋ค.
- Config๋ Kubernetes ๋ฆฌ์์ค ๋ฐฐํฌ์ ํ์ํ Configuration ๊ฐ๋ค์ด ๋ช ์๋๋ ํ์ผ์ ์๋ฏธํฉ๋๋ค. Helm์ผ๋ก Chart๊ฐ ๋ฐฐํฌ๋ ๋ Config์ ๊ฐ์ด Chart์ ๊ฒฐํฉ๋ฉ๋๋ค.
- Release๋ Helm์ ๋ฐฐํฌ ๋จ์์ ๋๋ค. Chart์ Config๊ฐ ๊ฒฐํฉ๋์ด Kubernetes ํด๋ฌ์คํฐ์์ ๋ฐฐํฌ ๋ฐ ์คํ๋๋ ์ํ๋ฅผ ํ๋์ Release๋ผ๊ณ ๋ด ๋๋ค.
Chart๋ ๋ฆฌ์์ค ๋ฐฐํฌ์ ํ์ํ ํ์ผ๋ค์ด ํฌํจ๋ ๋๋ ํ ๋ฆฌ ๊ฐ๋ ์ด๋ฉฐ, Chart์ ํฌํจ๋๋ ํ์ผ๋ค์ ์๋์ ๊ฐ์ต๋๋ค.
- Chart.yaml: Chart์ ๋ํ ์ ๋ณด๋ฅผ ๋ช ์ํ๋ yaml ํ์ผ
- values.yaml: Chart์ ๊ฒฐํฉ๋๋ ๊ธฐ๋ณธ Configuration ๊ฐ์ด ๋ช ์๋ yaml ํ์ผ
- templates: values.yaml์ ๊ฐ๋ค๊ณผ ๊ฒฐํฉ๋๋ Kubernetes ๋ฆฌ์์ค Manifest ํ ํ๋ฆฟ์ด ์์นํ๋ ํด๋
์ข ๋ ๋ช ํํ๊ณ ์ฌ์ด ์ค๋ช ์ ์ํด, fluentd๋ผ๋ ์คํ์์ค ํ๋ก์ ํธ์์ ์ ๊ณตํ๋ fluentd ๋ฐฐํฌ์ฉ ๊ณต์ Helm Chart๋ฅผ ์์๋ก ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค. fluentd๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์์งํด์ฃผ๋ ํด์ธ๋ฐ, ๊ฐ๋ณ๊ฒ ์ฌ์ฉํ๊ธฐ ์ข์์ ์ด๋ฒ ์ค์ต์ ์์๋ก ํ์ฉํ์ต๋๋ค.
์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด fluentd์ Chart ๋๋ ํ ๋ฆฌ ๋ด์๋ ์์์ ์ค๋ช ํ Chart.yaml๊ณผ values.yaml, templates ํด๋๊ฐ ํฌํจ๋์ด ์์์ ์ ์ ์๋๋ฐ์.
Helm์ด ๋ฌด์์ด๊ณ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๋์ง ์์์ผ๋, ์ด์ Helm์ผ๋ก ์ด๋ป๊ฒ Kubernetes์ ๋ฆฌ์์ค๋ฅผ ๋ฐฐํฌํ ์ ์๋์ง ์์๋ณผ๊น์?
๐ปCLI ํ๊ฒฝ์์ Helm Chart ๋ฐฐํฌํ๊ธฐ
Helm์ Kubernetes ํด๋ฌ์คํฐ์ ์ํ๋ ํ๋ก์ ํธ๋ฅผ ์ฝ๊ฒ ๋ฐฐํฌํด์ฃผ๋ ํด์ด๊ธฐ ๋๋ฌธ์, ์ค์ต์ ์ํด์ Kubernetes ํด๋ฌ์คํฐ๊ฐ ํ์ํฉ๋๋ค.
(์ฐธ๊ณ ๋ก ์ ๋ ๋ก์ปฌ์์ ํ ์คํธํ๊ธฐ ์ํด minikube๋ผ๋ ํด๋ก ๊ฐ์ Kuberntes ํ๊ฒฝ์ ๊ตฌ์ถํ๋๋ฐ์. minikube์ ๋ํด์ ๊ถ๊ธํ์ ๋ถ๋ค์ด ๊ณ์๋ค๋ฉด ์ถํ ์์์ง์์ ๋ค๋ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.๐)
๋ํ Helm ์ญ์ ์ค์น๋ฅผ ํด์ผ ํ๋๋ฐ์. ์ด์์ฒด์ ๋ณ ์์ธํ ์ค์น ๋ฐฉ๋ฒ์ ๊ณต์ ์ฌ์ดํธ ๋งํฌ์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
๋ก์ปฌ์ ์ค์ต ํ๊ฒฝ ๊ตฌ์ถ์ ๋ง์น ๋ค, ์์์ ์์๋ก ๋ fluentd์ Helm Chart๋ฅผ ์ค์ ๋ก ๋ก์ปฌ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํด๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ๋จผ์ fluentd์ Helm Chart๊ฐ ์ ์ฅ๋ ๋ ํ์งํ ๋ฆฌ๋ฅผ ๋ก์ปฌ ํ๊ฒฝ์ ์ถ๊ฐํฉ๋๋ค. CLI์์ helm repo add ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ ์ด๋ฏธ์ง์ฒ๋ผ ์ํ๋ ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๊ทธ ๋ค์ helm search repo ๋ช ๋ น์ด๋ก ์ถ๊ฐํ ๋ ํ์งํ ๋ฆฌ์ ํฌํจ๋ Chart๋ฅผ ์๋์ ๊ฐ์ด ํ์ธํ ์ ์์ต๋๋ค.
์ ์ด๋ฏธ์ง๋ฅผ ๋ณด๋ฉด fluent๋ผ๋ ๋ ํ์งํ ๋ฆฌ ์์ ์ฌ๋ฌ Helm Chart๊ฐ ํฌํจ๋์ด ์๋ ๊ตฌ์กฐ์ธ๋ฐ์. ๊ทธ ์ค ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ fluentd์ Chart๋ฅผ ์๋์ ๊ฐ์ด helm install ๋ช ๋ น์ด๋ก Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํด๋ณด๊ฒ ์ต๋๋ค. ์ฐธ๊ณ ๋ก helm install ๋ช ๋ น์ด๊ฐ ๋ฐ๋ ์ธ์๋ {๋ฐฐํฌํ๋ Release์ ์ด๋ฆ}๊ณผ {๋ฐฐํฌ ๋์ Helm chart์ ์ด๋ฆ}์ ๋๋ค.
์์ ๊ฐ์ด Helm Release์ ์ ๋ณด๊ฐ ํ์๋๊ณ , ์ํ(STATUS)๊ฐ deployed๋ผ๋ฉด Helm Chart๊ฐ ๋ฐฐํฌ๋์๋ค๋ ๋ป์ธ๋ฐ์. helm list ๋ช ๋ น์ด์ ์ฌ์ฉํ๋ฉด ํ์ฌ Helm์ผ๋ก ๋ฐฐํฌ๋ ๋ชจ๋ Release๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ฌผ๋ก ์ฐ๋ฆฐ ์ง๊ธ๊น์ง Helm์ผ๋ก Kubernetes์ fluentd๋ฅผ ๋ฐฐํฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ์๋์ ๊ฐ์ด kubectl๋ก ์ค์ ๋ฐฐํฌ๋ fluentd์ pod๋ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ง์ฝ Helm์ผ๋ก ๋ฐฐํฌํ ํ๋ก์ ํธ(Helm Release)๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด, helm uninstall ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ง๊ธ๊น์ง Helm์ด ๋ฌด์์ธ์ง ์์๋ณด๊ณ , ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง fluentd๋ผ๋ ์คํ์์ค๋ฅผ ํจ๊ป ํ์ฉํด์ ๊ฐ๋จํ ์์ ๋ก ์์๋ดค์ต๋๋ค.
์ด๋ฏธ Helm์ ์ ์ฌ์ฉํ๊ณ ๊ณ์ ๋ถ๋ค๋ ๋ง์ผ์๊ฒ ์ง๋ง, Helm์ ๋ํด ์์๊ฐ๋ ์ค์ด์๊ฑฐ๋ ๊ถ๊ธํ์ ๋ถ๋ค๋ ๋ง์ผ์ค ๊ฑฐ๋ ์๊ฐ์ด ๋ค์ด ์ด๋ฒ ์์์ง์์ ์์๋ดค๋๋ฐ์.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
์ค๋๋ ๋ฉ์ง ํ๋ฃจ ๋์ธ์, ๊ตฌ๋ ์๋ ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์