์๋ ํ์ธ์, ์ต์ DevOps ์์์ ์๊ธฐ ์ฝ๊ฒ ๊ณต์ ํ๋ DevOps ์ฌํ์ ์ํ ์์์ง์ ๋๋ค.
์ง๋ 12์, CD(Continuous Deployment, ์ง์์ ๋ฐฐํฌ) ํด๋ก ์ ๋ช ํ Argo CD์ 2.10 ๋ฒ์ ์ด ๋ฆด๋ฆฌ์ฆ๋์์ต๋๋ค. Argo CD๋ Kubernetes ํด๋ฌ์คํฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด๋ค ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๋๋ก ๋์์ฃผ๋ Tool์ธ๋ฐ์.
ํน์ Git ๋ ํ์งํ ๋ฆฌ์ ์ ์ฅ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์(Kubernetes์์ App ๋ฐฐํฌ ์ ์ฌ์ฉํ๋ yaml ํ์ผ ๋ฑ)๋ฅผ Web UI ๋๋ CLI(Command Line Interface)๋ก ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ์ํ๋ฅผ ํ์ธํ๊ฑฐ๋ ๊ด๋ฆฌํ ์ ์์ด์ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค.๐
๊ทธ๋ผ Argo CD ์ต์ ๋ฆด๋ฆฌ์ฆ์ ์ฃผ์ ์ ๋ฐ์ดํธ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.๐
โApp ๋ฐฐํฌ๋ฅผ ๋ณด๋ค ์ ์ฐํ๊ฒ, ApplicationSet ํ ํ๋ฆฟ ๊ธฐ๋ฅ ๊ณ ๋ํ
์ด๋ฒ ๋ฆด๋ฆฌ์ฆ๋ฅผ ํตํด Argo CD์์ App์ ๋ฐฐํฌํ ๋ ํ์ํ ์ ๋ณด๋ฅผ ์ ์ํ๋ AppicationSet์ ํ ํ๋ฆฟ ๊ธฐ๋ฅ์ด ๊ณ ๋ํ๋์์ต๋๋ค.
ApplicationSet์ App์ ์ด๋ฆ, App ์ ์ ํ์ผ์ด ์ ์ฅ๋ ๋ ํ์งํ ๋ฆฌ URL, App ์ ์ ํ์ผ์ ๊ฒฝ๋ก์ฒ๋ผ ๋ฐฐํฌ์ ํ์ํ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ์ ์ํ๊ณ , ๊ฐ์ง๊ณ ์๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ํด๋น App์ ๋ฐฐํฌํ๋ ์ญํ ์ ์ํํฉ๋๋ค.
ApplicationSet์ ํ ํ๋ฆฟ ๊ธฐ๋ฅ์ generators์ ๋ฏธ๋ฆฌ ์ ์ํ ํน์ ๊ฐ์ App ๋ฐฐํฌ ์ ๋ณด๊ฐ ํฌํจ๋ template ๋ด {{ํน์ ์์น}}์ ๋์ ํ App์ ๋ฐฐํฌํ๋ฏ๋ก ๋ค์ํ ๋ฐฐํฌ ๋ฐฉ์์ ์ง์ํฉ๋๋ค.
์ ApplicationSet ์์์์ generators - list - elements์ ๋ฏธ๋ฆฌ ์ ์ํ cluster์ url ๊ฐ์ template์ ๊ฐ {{cluster}} ๋ฐ {{url}}์ ์ง์ด๋ฃ์ ๋ค Kubernetes์ ๋ฐฐํฌํ๋ฏ๋ก, ์ธ ๊ฐ์ง App(engineering-dev-guestbook, engineering-prod-guestbook, finance-preprod-guestbook)์ด ๊ฐ๊ฐ์ url์ ๊ฐ์ง๊ณ ๋ฐฐํฌ๋ฉ๋๋ค.
์ด๋ฒ ๋ฆด๋ฆฌ์ฆ์์ ์ฌ๊ธฐ์ templatePatch ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ template์ if๋ฌธ ๋ฑ์ ์ ์ํ ์ ์๊ฒ ๋์๊ณ , ๋ณต์กํ ๋ฐฐํฌ ์ ์ฑ ๋ ์ง์ํ ์ ์๊ฒ ๋์์ต๋๋ค.
๋ง์ฝ ์์ ๊ฐ์ด templatePatch๊ฐ ์ถ๊ฐ๋ ์์์์ generators์ autoSync๊ฐ true๋ก ์ ์๋์ด ์๋ค๋ฉด, templatePatch ๋ด {{- if .autoSync}} ๋ธ๋ก ๋ด์ฉ์ด ์ ์ฉ๋์ด ๋ฐฐํฌ๋ฉ๋๋ค.
๐ขApp ๋ฐฐํฌ ์ํ ์๋ฆผ ์ค์ ์ ๋ฐ์ดํธ
์ด๋ฒ ๋ฆด๋ฆฌ์ฆ์์ App ๋ฐฐํฌ ์ ์ํ ์๋ฆผ(Notification) ์ค์ ์ ๋ํด์๋ ์ ๋ฐ์ดํธ๊ฐ ์์์ต๋๋ค. ๋ฐ๋ก ๊ด๋ฆฌ์๊ฐ ์๋ ์ฌ์ฉ์๊ฐ ๋ฐฐํฌํ App์ ๋ํด ์ฌ์ฉ์๋ App ๋ฐฐํฌ ์ํ ์๋ฆผ์ ์ค์ ๊ฐ๋ฅํ๊ฒ ๋ ๊ฒ์ธ๋ฐ์.
๊ธฐ์กด์๋ ๊ด๋ฆฌ์๋ง์ด ๋ฐฐํฌ๋ App์ ์ํ ๋ณํ์ ๋ํ ์๋ฆผ ์ค์ ์ด ๊ฐ๋ฅํ์ต๋๋ค.
๊ทธ๋ฌ๋ค Argo CD v2.5 ๋ฆด๋ฆฌ์ฆ๋ฅผ ๊ฑฐ์น๋ฉด์ ๊ด๋ฆฌ์๊ฐ ์๋ ์ฌ์ฉ์๋ App์ ๋ฐฐํฌํ ์ ์๊ฒ ๋์๋๋ฐ์. ์ฌ๊ธฐ์ ๋ํ ์ฐ์ฅ์ ์ผ๋ก, ์ด๋ฒ ์ ๋ฐ์ดํธ๋ฅผ ํตํด ์ฌ์ฉ์๋ ์์ ์ด ๋ฐฐํฌํ App์ ์๋ฆผ ์ค์ ์ด ๊ฐ๋ฅํ๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ด๋ ๊ฒ ์ ๋ฐ์ดํธ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋นํจ์จ์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํจ์ ๋๋ค. ๊ธฐ์กด ๋ฐฉ์์์ App ๋ฐฐํฌ ์ํ ์๋ฆผ ์ค์ ์ ํ๋ ค๋ฉด ๊ด๋ฆฌ์๋ฅผ ๊ฑฐ์ณ์ผ ํ๊ณ , ์๊ฐ๊ณผ ๋น์ฉ์ด ์ฐ์ผ ์๋ฐ์ ์์๊ธฐ ๋๋ฌธ์ด์ฃ .
๐ญ๋ง์น๋ฉฐ...
Argo CD๋ ์์ ๋ง์๋๋ฆฐ ๊ฒ์ฒ๋ผ Git ๋ ํ์งํ ๋ฆฌ๋ฅผ ์ค์ฌ(GitOps)์ผ๋ก CD(Continuous Deployment) ์์ ์ ๋๋ฆฌ ์ฐ์ด๋ ํด์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฒ ์์์ง ์ฃผ์ ๋ก ๋ค๋ค๋ดค๋๋ฐ์.
ํน์ Argo CD ๊ด๋ จํด์ ๋ ๊ถ๊ธํ ์ ์ด๋ ์๊ฒฌ์ด ์์ผ์๋ค๋ฉด ์๋ ๋ฉ์ผ๋ฆฌ ๋๊ธ ๋จ๊ฒจ์ฃผ์ธ์.๐
๊ทธ๋ผ, ๋ค์ ์์์ง์์ ๋ณด๋ค ์์ฐจ๊ณ ํฅ๋ฏธ๋ก์ด ๋ด์ฉ์ผ๋ก ์ฐพ์๋ต๊ฒ ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๐บ
์๊ฒฌ์ ๋จ๊ฒจ์ฃผ์ธ์