Kubernetes Operator
CRD, Kubernetes Operator
์ปจํ ์ด๋ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ธฐ ์ํด Kubernetes๊ฐ ๋์ ๋์์ง๋ง, ์ฌ๋์ด ์ง์ ์ ์ง๋ณด์ํด์ผ ํ๋ ๋ถ๋ถ์ด ์กด์ฌํ๋ค. ์ฌ๋์ด ๋ฐ๋ณต์ ์ผ๋ก ์์์ ํด์ผ ํ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ฒ์ด Kubernetes Operator์ด๋ค.
Kubernetes Operator๋ฅผ ์ดํดํ๋ ค๋ฉด, ๋จผ์ CRD์ Custom Controller๋ฅผ ์์์ผ ํ๋ค.
CRD (Custom Resource Definition)
Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ค ๋ณด๋ฉด ์ด์ฉ์ ์์ด ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ด ํ์ํ ์๋ ์๊ณ , Deployment, Service ๋ฑ์ ์ถ์ํํ๊ธฐ ์ํ ๋ณ๋์ ์ค๋ธ์ ํธ๊ฐ ํ์ํ ๋๊ฐ ์๋ค. ์ด ๋ Kubernetes์์ ์ ๊ณตํ๋ CR(Custom Resource)๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. CR์ kubernetes์์ ๋ด์ฅํ๊ณ ์๋ Resource๋ค ์ด์ธ์ ์ฌ์ฉ์๊ฐ ํ์์ ๋ฐ๋ผ ์๋ก ์ ์ํ Resource๋ฅผ ๋งํ๋ฉฐ, kubectl ๊ฐ์ kubernetes ๊ธฐ๋ณธ ๋ช ๋ น์ด ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋ค.
Kubernetes Resource๋ฅผ ํ์ฅํ๊ธฐ ์ํด CR์ ์ฌ์ฉํ๋ ค๋ฉด, CR์ ์ด๋ค ํญ๋ชฉ์ด ์ ์๋์ด์ผ ํ๋์ง๋ฅผ ์ ์ธํ ๋ฉํ๋ฐ์ดํฐ ์ค๋ธ์ ํธ์ธ CRD๋ฅผ ๋จผ์ ์์ฑํ๊ณ Kubernetes Api Server์ ๋ฑ๋กํด์ผ ํ๋ค.
CRD๋ apiextensions.k8s.io/v1 ํ์ฅํด์ OpenAPI Schema v3(OAS 3.0) ์คํ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์, OAS 3.0 ๊ธฐ๋ฐ์ผ๋ก ์กฐ๊ฑด์ ์๋ฐฐ๋๋ ํญ๋ชฉ์ด ์๋์ง Validationํ ์ ์๋ค. โป ์ฐธ๊ณ ๋ก, swagger๋ OAS๊ธฐ๋ฐ์ผ๋ก REST API ์ค๊ณ, ๋น๋, ๋ฌธ์ํ์ ์ฌ์ฉํ๋ ์คํ์์ค ๋๊ตฌ์ด๋ค.
CRD๋ฅผ ์์ฑํ ํ, Custom Controller๋ฅผ ๊ตฌํํ๋ฉด, kubernetes API๋ฅผ ํ์ฅํ Custom Resource๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
Kubernetes Operator
Kubernetes Operator๋ CRD์ Controller๋ก ๊ตฌ์ฑ๋๋๋ฐ, Custom Resource๊ฐ ์ด๋ป๊ฒ ๋์ํด์ผ ํ๊ณ , ์ด๋ป๊ฒ ๋ฐฐํฌ๋์ด์ผ ํ๊ณ , (๋ฌธ์ ์ ๋ํด์) ์ด๋ป๊ฒ ๋ฐ์ํด์ผ ํ๋์ง ๋ฑ์ ๋ํด ์ ์ํ์ฌ ์ ์ดํ ์ ์๋ค.
Kubernetes Operator์ ๋์ ๋ฐฉ์์
1) CRD๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ํ๋ ์ํ๋ฅผ CR์ ์์ฑํ๊ณ ๋ฐฐํฌํ๋ฉด, (CR์ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ด ๋ฟ) 2) Custom Controller๊ฐ CR์ ๋ชจ๋ํฐ๋งํ๊ณ ์๋ค๊ฐ ๋ณ๊ฒฝ๋ CR์ ์ํ๋ฅผ ๋ง์ถ๊ธฐ ์ํด ์ค์น, ์ ๊ทธ๋ ์ด๋ ๋ฑ ํ์ํ ์์ ์ ํ๋ค.

Kubernetes API๋ก CR ๋ฑ๋ก
๋ค์์ Kubernetes API๋ก CR์ ๋๋กํ ๋, Client์ Custom Controller ๊ฐ์ ๋์ ์ ์ฐจ์ด๋ค.
1) Reflector๋ Kubernetes API์์ ์ง์ ํ Resource(kind)๋ฅผ ์ํ๋ค๊ฐ, 2) ์๋ก์ด Resource ์ธ์คํด์ค(Object)๊ฐ ๊ฐ์ง๋๋ฉด Delta Fifo ํ์ ๋ฃ๋๋ค. 3) Informer๊ฐ Delta Fifo ํ์์ Object๋ฅผ ๊บผ๋ด์, 4) ๋์ค์ ๊ฒ์ํ ์ ์๋๋ก Indexer์ ์ ๋ฌํ๋ฉด, 5) Indexer๊ฐ Object์ Key๋ฅผ ์์ฑํ๊ณ ํด๋น Key๋ก Object๋ฅผ ์ ์ฅํ๋ค. 6) ๊ทธ ๋ค์, Informer๋ Custom Controller ์ฝ๋ฐฑํจ์๋ก Object์ Key๋ฅผ ์ ๋ฌํ๊ณ 7) Workqueue์ ๋ฃ์ผ๋ฉด 8) Key๋ฅผ ๊บผ๋ด์ 9) Index๋ฅผ ํตํด Key๋ก Object๋ฅผ ๊ฐ์ ธ์จ๋ค.

Last updated
Was this helpful?