์๋ ํ์ธ์ ๊ตฌ๋ ์๋, ์ต์ DevOps ์์์ ์ ๋ฆฌํด์ ๊ณต์ ํด๋๋ฆฌ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
๋ด์ด ์ค๋ ํ๋๋ ์ฌ๊ธ์ฌ๊ธ ๋์์ง๋ 4์์ธ๋ฐ์.
์ด๋ฒ ์์์ง์์๋ Argo CD์ v2.11 ์ ๋ฐ์ดํธ์ ๋ํด ๋ค๋ค๋ณผ ์์ ์ ๋๋ค. ์ง๋ 1์ ์์์ง์์ Argo CD์ v2.10 ์ ๋ฐ์ดํธ์ ๋ํด ๋ค๋ฃฌ ์ ์ด ์์๋๋ฐ์. ๊ทธ ํ๋ก ์ด๋์ 3๊ฐ์์ด ์ง๋ฌ์ผ๋ ์๊ฐ์ด ์ฐธ ๋น ๋ฅด๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.๐
์ง๋ Argo CD์ v2.10 ์ ๋ฐ์ดํธ์ ๋ํด ๊ถ๊ธํ์๋ค๋ฉด ์ฌ๊ธฐ์ ํ์ธํด๋ณด์ธ์.
์ด๋ฒ์๋ Argo CD์ GitOps์ ๋ํด ์ข ๋ ์ดํด๋ณธ ๋ค์ ์ต์ ์ ๋ฐ์ดํธ ์์์ ์๊ฐํด๋๋ฆฌ๊ฒ ์ต๋๋ค.
๐Git ๋ ํ์งํ ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค๋ฅผ ์ด์ํ๋ GitOps ํจํด
Argo CD์ ๊ณต์ ํํ์ด์ง์์๋ Argo CD๋ฅผ Kubernetes ๊ธฐ๋ฐ์ GitOps ํด์ด๋ผ๊ณ ์๊ฐํ๊ณ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด GitOps๋ ๋ฌด์์ผ๊น์? Git๊ณผ Ops๋ฅผ ๋๋ ์ ์๊ฐํด๋ณด๋ฉด ์ข๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
๋จผ์ Git์ ์ฐ๋ฆฌ๊ฐ ๊ฐ๋ฐ์ ํํ ์ฌ์ฉํ๊ณ ์๋ ์ฝ๋ ํ์ ๊ด๋ฆฌ ํด์ ๋๋ค. ์ฐธ๊ณ ๋ก ์ด๋ฅผ ์๊ฒฉ ์ ์ฅ์์์ ๊ด๋ฆฌํ ์ ์๋ ์๋ฃจ์ ์ค ํ๋๊ฐ GitHub์ด์ฃ .
Ops๋ Operation์ ์ค์๋ง์ด๋ฉฐ ์๋น์ค ์ด์ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค.
์ฆ, GitOps๋ ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ ์ฌ์ฉ๋๋ ์ฝ๋๋ฅผ Git์ ์ด์ฉํด ๊ด๋ฆฌํ๋ ๊ธฐ๋ฒ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
Kubernetes ํด๋ฌ์คํฐ์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ k8s ํด๋ฌ์คํฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ค๋ฉด Service, Deployment, ConfigMap ๋ฑ ๋ค์ํ Kubernetes ๊ด๋ จ Manifest ํ์ผ๋ค์ด ์์ด์ผ ํ ํ ๋ฐ์.
๋ฐฐํฌ์ ํ์ํ ํ์ผ๋ค์ Git ์ ์ฅ์์ ๊ด๋ฆฌ๋ฅผ ํ๋ ๊ฐ๋ ์ด GitOps์ ๋๋ค.
GitOps ํจํด์ ์ด์ฉํ ๊ฒฝ์ฐ, ํ๋์ ์ ์ฅ์์์ ๋ฐฐํฌ์ ํ์ํ ํ์ผ๋ค์ ํจ๊ป ๊ด๋ฆฌํ ์ ์์ด ํ์๋ค์ด ํ์ ํ๊ธฐ์ ์ฉ์ดํ๊ณ ์ผ๊ด์ฑ ์๋ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๐GitOps ํจํด์ผ๋ก Kubernetes ๊ธฐ๋ฐ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ Argo CD
์ง๊ธ๊น์ง GitOps ํจํด์ ๋ํด ์์๋ดค๋๋ฐ์. ๊ทธ๋ ๋ค๋ฉด Kubernetes ํด๋ฌ์คํฐ์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ GitOps ๊ธฐ๋ฐ Argo CD๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ป์ ์ ์๋ ์ฅ์ ์ ๋ฌด์์ด ์์๊น์?
- ์์์๋ ์ ๊น ์ดํด๋ณธ ๊ฒ์ฒ๋ผ, Kubernetes ํ๊ฒฝ์ ์๋น์ค๋ฅผ ๋ฐฐํฌํ ๋ ํ์ํ ํ์ผ๋ค์ ๋จ์ผ ์ ์ฅ์์์ ๊ด๋ฆฌํ ์ ์์ด ์ผ๊ด์ฑ ์๋ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ๋ํ Git ์ ์ฅ์์ ํ์ผ ๋ฒ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ด ์๋ก ์์ ํ ํ์ผ์ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ์ด์ ๋ฒ์ ์ ํ์ผ๋ก ๋ณต์์ํค๊ธฐ๋ ์ฉ์ดํฉ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก Argo CD์์ ์ ๊ณตํ๋ ๋์๋ณด๋๋ฅผ ํตํด ๋ฐฐํฌ ํํฉ ๋ฐ ์ฌ๋ฌ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
Argo CD๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ์ค์น ๊ฐ๋ฅํฉ๋๋ค. ๊ณต์ Git์์ Kubernetes yaml ํ์ผ์ ๋ค์ด๋ฐ๊ฑฐ๋, Command Line ํ๊ฒฝ(CLI)์์ ํจํค์ง๋ก ๋ค์ด๋ฐ์ ์๋ ์์ต๋๋ค.
์ด๋ ๊ฒ ์ค์น๋ Argo CD๋ Kubernetes ํด๋ฌ์คํฐ ๋ด์์ ๋์ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ณ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. Argo CD๋ Git ์ ์ฅ์์ ์ ์ฅ๋ ํ์ผ๋ค์ ๋ณํ๋ฅผ Webhook์ผ๋ก ๊ฐ์งํ ์ ์๊ธฐ ๋๋ฌธ์, Git์์ PR Merge๋ก ์ ๋ฐ์ดํธ๋ ํ์ผ์ ๊ฐ์งํ์ฌ ์ด์ ๋ง์ถฐ ์๋์ผ๋ก ์๋ก ๋ฐฐํฌํ ์๋ ์์ต๋๋ค.
์ฆ, Argo CD๋ Git ์ ์ฅ์์ ์ ์ฅ๋ ๋ฐฐํฌ ๊ด๋ จ ํ์ผ๋ค์ ์ํ๋ฅผ ๊ณ์ ํ์ธํ๋ฉด์ ์ค์ ๋ฐฐํฌ ํํฉ๊ณผ Sync๋ฅผ ๋ง์ถ๋ ์ญํ ์ ์ํํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด Argo CD์ v2.11 ์ ๋ฐ์ดํธ์์ ์ด๋ค ๋ณํ๊ฐ ์์์๊น์?
- ๋ฐฐํฌ๋ฅผ ์์ํ ์ฌ์ฉ์ ์ด๋ฆ ํ์ ๊ธฐ๋ฅ ์ถ๊ฐ
- Argo CD์์ auto-sync ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐํฌ๋ ์๋น์ค์ ๊ฒฝ์ฐ, ๊ธฐ์กด์๋ ๋ฐฐํฌ ์์ ์ Git Hash ๊ฐ ์ธ์๋ ๋ฐฐํฌ ์์ ์ ๊ดํ ๋ณ๋ค๋ฅธ ์ ๋ณด๊ฐ ํ์๋์ง ์์๋๋ฐ์.
- ์ด๋ฒ ์ ๋ฐ์ดํธ ์ดํ๋ถํฐ๋ ๋ฐฐํฌํ ์ฌ์ฉ์์ ์ด๋ฆ์ด ํ์๋์ด ํธ์์ฑ์ ๋์์ต๋๋ค.
- ๋ค์ํ ์์ค(Multi-source)๋ก๋ถํฐ ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ๊ณ ๋ํ
- Argo CD v2.6๋ถํฐ Multi-source๋ฅผ ํ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ธฐ๋ฅ์ด ์ง์๋๊ธฐ ์์ํ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณต๊ฐ ์ ์ฅ์์ Helm chart์ ๋น๊ณต๊ฐ ์ ์ฅ์์ values ํ์ผ์ Argo CD๋ฅผ ํตํด ํจ๊ป ๋ฐ์์์ ์กฐํฉ ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋ ๊ธฐ๋ฅ์ธ๋ฐ์.
- Argo CD CLI์ UI ์ค ์ผ๋ถ ์์ญ์์ Multi-source๋ก ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด Single-source๋ก ์ ์๋ ๊ฒ์ผ๋ก ์ทจ๊ธ๋์ด์์ต๋๋ค.
- ํ์ง๋ง ์ด๋ฒ v2.11 ์ ๋ฐ์ดํธ ์ดํ๋ถํด Argo CD CLI ์์์ ๋ ๋ง์ ๋ช ๋ น์ด๊ฐ Multi-source๋ก ์ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ํ ์์ ์ ๋๋ค.
๐ญ๋ง์น๋ฉฐ...
์ด๋ฒ ์์์ง์์ Argo CD์ ์ต์ ์์์ ์๊ฐํ๋ฉด์ GitOps์ Argo CD์ ๋ํด์๋ ๊ฐ๋ตํ ๋ค๋ค๋ณด์์ต๋๋ค.
ํน์ ์ด๋ฒ ๋ด์ฉ ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๐บ
๐References
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์