์คํผ๋ ์ดํฐ(operator) ํจํด
์คํผ๋ ์ดํฐ(Operator)๋ ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๊ด๋ฆฌํ๋ ์ฟ ๋ฒ๋คํฐ์ค์ ์ํํธ์จ์ด ์ต์คํ ์ ์ด๋ค. ์คํผ๋ ์ดํฐ๋ ์ฟ ๋ฒ๋คํฐ์ค ์์น, ํนํ ์ปจํธ๋กค ๋ฃจํ๋ฅผ ๋ฐ๋ฅธ๋ค.
๋๊ธฐ ๋ถ์ฌ
์คํผ๋ ์ดํฐ ํจํด ์ ์๋น์ค ๋๋ ์๋น์ค ์ ์ ๊ด๋ฆฌํ๋ ์ด์์์ ์ฃผ์ ๋ชฉํ๋ฅผ ํฌ์ฐฉํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ค. ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์๋น์ค๋ฅผ ๋๋ณด๋ ์ด์์๋ ์์คํ ์ ์๋ ๋ฐฉ์, ๋ฐฐํฌ ๋ฐฉ๋ฒ ๋ฐ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋์ฒ ๋ฐฉ๋ฒ์ ๋ํด ๊น์ด ์๊ณ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค์์ ์ํฌ๋ก๋๋ฅผ ์คํํ๋ ์ฌ๋๋ค์ ์ข ์ข ๋ฐ๋ณต ๊ฐ๋ฅํ ์์ ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋ํ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ข์ํ๋ค. ์คํผ๋ ์ดํฐ ํจํด์ ์ฟ ๋ฒ๋คํฐ์ค ์์ฒด๊ฐ ์ ๊ณตํ๋ ๊ฒ ์ด์์ ์์ ์ ์๋ํํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ํฌ์ฐฉํ๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ์คํผ๋ ์ดํฐ
์ฟ ๋ฒ๋คํฐ์ค๋ ์๋ํ๋ฅผ ์ํด ์ค๊ณ๋์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ฟ ๋ฒ๋คํฐ์ค์ ์ค์ถ๋ฅผ ํตํด ๋ง์ ๋นํธ์ธ ์๋ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค. ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ํฌ๋ก๋ ๋ฐฐํฌ ๋ฐ ์คํ์ ์๋ํํ ์ ์๊ณ , ๋ํ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ํํ๋ ๋ฐฉ์์ ์๋ํํ ์ ์๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ์คํผ๋ ์ดํฐ ํจํด ๊ฐ๋ ์ ํตํด ์ฟ ๋ฒ๋คํฐ์ค ์ฝ๋ ์์ฒด๋ฅผ ์์ ํ์ง ์๊ณ ๋ ์ปจํธ๋กค๋ฌ๋ฅผ ํ๋ ์ด์์ ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค(custom resource)์ ์ฐ๊ฒฐํ์ฌ ํด๋ฌ์คํฐ์ ๋์์ ํ์ฅํ ์ ์๋ค. ์คํผ๋ ์ดํฐ๋ ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค์ ์ปจํธ๋กค๋ฌ ์ญํ ์ ํ๋ ์ฟ ๋ฒ๋คํฐ์ค API์ ํด๋ผ์ด์ธํธ๋ค.
์คํผ๋ ์ดํฐ ์์
์คํผ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์๋ํํ ์ ์๋ ๋ช ๊ฐ์ง ์ฌํญ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฃผ๋ฌธํ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ
- ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ๋ฐฑ์ ํ๊ณ ๋ณต์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋๋ ์ถ๊ฐ ๊ตฌ์ฑ ์ค์ ๊ณผ ๊ฐ์ ๊ด๋ จ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ์ ๊ทธ๋ ์ด๋ ์ฒ๋ฆฌ
- ์ฟ ๋ฒ๋คํฐ์ค API๋ฅผ ์ง์ํ์ง ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋น์ค๋ฅผ ๊ฒ์ํ์ฌ ๊ฒ์์ ์ง์
- ํด๋ฌ์คํฐ์ ์ ์ฒด ๋๋ ์ผ๋ถ์์ ์ฅ์ ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ์ฌ ๊ฐ์ฉ์ฑ ํ ์คํธ
- ๋ด๋ถ ๋ฉค๋ฒ ์ ์ถ ์ ์ฐจ์์ด ๋ถ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ๋๋ฅผ ์ ํ
์คํผ๋ ์ดํฐ์ ๋ชจ์ต์ ๋ ์์ธํ๊ฒ ๋ณผ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ? ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ํด๋ฌ์คํฐ์ ๊ตฌ์ฑํ ์ ์๋ SampleDB๋ผ๋ ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค.
- ์คํผ๋ ์ดํฐ์ ์ปจํธ๋กค๋ฌ ๋ถ๋ถ์ด ํฌํจ๋ ํ๋์ ์คํ์ ๋ณด์ฅํ๋ ๋ํ๋ก์ด๋จผํธ.
- ์คํผ๋ ์ดํฐ ์ฝ๋์ ์ปจํ ์ด๋ ์ด๋ฏธ์ง.
- ์ปจํธ๋กค ํ๋ ์ธ์ ์ฟผ๋ฆฌํ์ฌ ์ด๋ค SampleDB ๋ฆฌ์์ค๊ฐ ๊ตฌ์ฑ๋์ด ์๋์ง ์์๋ด๋ ์ปจํธ๋กค๋ฌ ์ฝ๋.
- ์คํผ๋ ์ดํฐ์ ํต์ฌ์ API ์๋ฒ์ ๊ตฌ์ฑ๋ ๋ฆฌ์์ค์ ํ์ฌ ์ํ๋ฅผ
์ผ์น์ํค๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ๋ ์ฝ๋์ด๋ค.
- ์ SampleDB๋ฅผ ์ถ๊ฐํ๋ฉด ์คํผ๋ ์ดํฐ๋ ํผ์์คํดํธ๋ณผ๋ฅจํด๋ ์์ ์ค์ ํ์ฌ ๋ด๊ตฌ์ฑ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํ ๋ฆฌ์ง, SampleDB๋ฅผ ์คํํ๋ ์คํ ์ดํธํ์ ๋ฐ ์ด๊ธฐ ๊ตฌ์ฑ์ ์ฒ๋ฆฌํ๋ ์ก์ ์ ๊ณตํ๋ค.
- SampleDB๋ฅผ ์ญ์ ํ๋ฉด ์คํผ๋ ์ดํฐ๋ ์ค๋ ์ท์ ์์ฑํ ๋ค์ ์คํ ์ดํธํ์ ๊ณผ ๋ณผ๋ฅจ๋ ์ ๊ฑฐ๋์๋์ง ํ์ธํ๋ค.
- ์คํผ๋ ์ดํฐ๋ ์ ๊ธฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐฑ์ ๋ ๊ด๋ฆฌํ๋ค. ์คํผ๋ ์ดํฐ๋ ๊ฐ SampleDB ๋ฆฌ์์ค์ ๋ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ณ ๋ฐฑ์ ์ ์ํํ ์ ์๋ ํ๋๋ฅผ ์์ฑํ๋ ์๊ธฐ๋ฅผ ๊ฒฐ์ ํ๋ค. ์ด ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ธ๋ถ ์ ๋ณด ๋ฐ ์๊ฒฉ ์ฆ๋ช ์ด ์๋ ์ปจํผ๊ทธ๋งต ๋ฐ / ๋๋ ์ํฌ๋ฆฟ์ ์์กดํ๋ค.
- ์คํผ๋ ์ดํฐ๋ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค์ ๊ฒฌ๊ณ ํ ์๋ํ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ ์ง์ ์ฝ๋๊ฐ ์๋ค. ์ด ์์ ์์ ์ฝ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ด์ ๋ฒ์ ์ ์คํ ์ค์ธ์ง ํ์ธํ๊ณ , ์ ๊ทธ๋ ์ด๋๋ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ ์ก ์ค๋ธ์ ํธ๋ฅผ ์์ฑํ๋ค.
์คํผ๋ ์ดํฐ ๋ฐฐํฌ
์คํผ๋ ์ดํฐ๋ฅผ ๋ฐฐํฌํ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ์ปค์คํ ๋ฆฌ์์ค ๋ฐํผ๋์ ์ ์ ์ ๋ฐ ์ฐ๊ด๋ ์ปจํธ๋กค๋ฌ๋ฅผ ํด๋ฌ์คํฐ์ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค. ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๊ฒ์ฒ๋ผ ์ปจํธ๋กค๋ฌ๋ ์ผ๋ฐ์ ์ผ๋ก ์ปจํธ๋กค ํ๋ ์ธ ์ธ๋ถ์์ ์คํ๋๋ค. ์๋ฅผ ๋ค์ด ํด๋ฌ์คํฐ์์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ํ๋ก์ด๋จผํธ๋ก ์คํํ ์ ์๋ค.
์คํผ๋ ์ดํฐ ์ฌ์ฉ
์คํผ๋ ์ดํฐ๊ฐ ๋ฐฐํฌ๋๋ฉด ์คํผ๋ ์ดํฐ๊ฐ ์ฌ์ฉํ๋ ๋ฆฌ์์ค์ ์ข ๋ฅ๋ฅผ ์ถ๊ฐ, ์์ ๋๋ ์ญ์ ํ์ฌ ์ฌ์ฉํ๋ค. ์์ ์์ ๋ฐ๋ผ ์คํผ๋ ์ดํฐ ์์ฒด์ ๋ํ ๋ํ๋ก์ด๋จผํธ๋ฅผ ์ค์ ํ ํ ๋ค์์ ์ํํ๋ค.
kubectl get SampleDB # ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐพ๊ธฐ
kubectl edit SampleDB/example-database # ์ผ๋ถ ์ค์ ์ ์๋์ผ๋ก ๋ณ๊ฒฝํ๊ธฐ
โฆ์ด๊ฒ์ผ๋ก ๋์ด๋ค! ์คํผ๋ ์ดํฐ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ณ ๊ธฐ์กด ์๋น์ค๋ฅผ ์ํธํ ์ํ๋ก ์ ์งํ๋ค.
์์ ๋ง์ ์คํผ๋ ์ดํฐ ์์ฑ
์์ฝ์์คํ ์ ์ํ๋ ๋์์ ๊ตฌํํ๋ ์คํผ๋ ์ดํฐ๊ฐ ์๋ค๋ฉด ์ง์ ์ฝ๋ฉํ ์ ์๋ค.
๋ํ ์ฟ ๋ฒ๋คํฐ์ค API์ ํด๋ผ์ด์ธํธ ์ญํ ์ ํ ์ ์๋ ๋ชจ๋ ์ธ์ด / ๋ฐํ์์ ์ฌ์ฉํ์ฌ ์คํผ๋ ์ดํฐ(์ฆ, ์ปจํธ๋กค๋ฌ)๋ฅผ ๊ตฌํํ๋ค.
๋ค์์ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์คํผ๋ ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ค์ด๋ค.
- Charmed Operator Framework
- Java Operator SDK
- Kopf (Kubernetes Operator Pythonic Framework)
- kube-rs (Rust)
- kubebuilder ์ฌ์ฉํ๊ธฐ
- KubeOps (.NET ์คํผ๋ ์ดํฐ SDK)
- Mast
- ์นํ (WebHook)๊ณผ ํจ๊ป Metacontroller๋ฅผ ์ฌ์ฉํ์ฌ ์ง์ ๊ตฌํํ๊ธฐ
- ์คํผ๋ ์ดํฐ ํ๋ ์์ํฌ
- shell-operator
๋ค์ ๋ด์ฉ
- CNCF ์คํผ๋ ์ดํฐ ๋ฐฑ์ ์ฝ์ด๋ณด๊ธฐ
- ์ฌ์ฉ์ ์ ์ ๋ฆฌ์์ค์ ๋ํด ๋ ์์๋ณด๊ธฐ
- OperatorHub.io์์ ์ ์ค์ผ์ด์ค์ ๋ง๋ ์ด๋ฏธ ๋ง๋ค์ด์ง ์คํผ๋ ์ดํฐ ์ฐพ๊ธฐ
- ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฌ์ฉํ ์ ์๋๋ก ์์ ์ ์คํผ๋ ์ดํฐ๋ฅผ ๊ฒ์ํ๊ธฐ
- ์คํผ๋ ์ดํฐ ํจํด์ ์๊ฐํ CoreOS ์๋ณธ ๊ธ ์ฝ๊ธฐ (์ด ๋งํฌ๋ ์๋ณธ ๊ธ์ ๋ํ ๋ณด๊ด ๋ฒ์ ์)
- ์คํผ๋ ์ดํฐ ๊ตฌ์ถ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ๊ตฌ๊ธ ํด๋ผ์ฐ๋(Google Cloud)์ ๊ธฐ์ฌ ์ฝ๊ธฐ
์ด ํ์ด์ง๋ ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ํ์๋ก ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์จ๋ํํฐ ํ๋ก์ ํธ ๋๋ ์ ํ์ ๋ํด ์ธ๊ธํ๊ณ ์์ต๋๋ค. ์ฟ ๋ฒ๋คํฐ์ค ํ๋ก์ ํธ ์ ์๋ค์ ์ด๋ฌํ ์จ๋ํํฐ ํ๋ก์ ํธ ๋๋ ์ ํ์ ๋ํด ์ฑ ์์ง์ง ์์ต๋๋ค. CNCF ์น์ฌ์ดํธ ๊ฐ์ด๋๋ผ์ธ์์ ๋ ์์ธํ ๋ด์ฉ์ ํ์ธํฉ๋๋ค.
๋ค๋ฅธ ์จ๋ํํฐ ๋งํฌ๋ฅผ ์ถ๊ฐํ๋ ๋ณ๊ฒฝ์ ์ ์ํ๊ธฐ ์ ์, ์ปจํ ์ธ ๊ฐ์ด๋๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.