Docs Menu

Kubernetes์˜ MongoDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜

์ค‘์š”

์ด ์„น์…˜์€ ๋‹จ์ผ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ ๋ฐฐํฌ์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์ค‘ Kubernetes cluster MongoDB ๋ฐฐํฌ์˜ ๊ฒฝ์šฐ ์•„ํ‚คํ…์ฒ˜, ๊ธฐ๋Šฅ ๋ฐ ์ œํ•œ ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Kubernetes Operator ๋ฐ Cloud Manager ๋˜๋Š” Ops Manager๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ MongoDB database ๋ฆฌ์†Œ์Šค๋ฅผ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Cloud Manager ๋˜๋Š” Ops Manager๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ Kubernetes์— Ops Manager๋ฅผ ๋ฐฐํฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kubernetes Operator๋Š” Cloud Manager ๋˜๋Š” Ops Manager๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์€ MongoDB database ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

  • MongoDB

  • MongoDBUser

์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์€ Kubernetes Operator์—์„œ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. Kubernetes Operator๋Š” ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค์˜ ์‚ฌ์–‘์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด Kubernetes Operator๋Š” ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ Cloud Manager ๋˜๋Š” MongoDB Ops Manager์— ํ‘ธ์‹œํ•˜๊ณ , ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ MongoDB deployment์˜ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

Kubernetes Operator๋Š” MongoDB ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค์— ์˜ํ•ด ์ •์˜๋œ MongoDB database ๋ฐฐํฌ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์€ MongoDB database ๋‹ค์Œ ์œ ํ˜•์˜ MongoDB database ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • Standalone

  • ReplicaSet

  • ShardedCluster

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ Kubernetes Operator์—์„œ MongoDB ๋ฆฌ์†Œ์Šค์˜ ๊ฐ ์œ ํ˜• ๊ตฌ์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Diagram showing the high-level architecture of the MongoDB resources in
the MongoDB Enterprise Kubernetes Operator
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

MongoDB database ๋ฆฌ์†Œ์Šค์˜ Standalone ์œ ํ˜•์— ๋Œ€ํ•ด Kubernetes Operator๋Š” ๋‹จ์ผ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง„ ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ StatefulSet๋กœ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

Kubernetes Operator๋Š” ์ƒ์„ฑํ•  ํŒŒ๋“œ ์ˆ˜์™€ ํ•จ๊ป˜ ํŒŒ๋“œ ์‚ฌ์–‘์ด ํฌํ•จ๋œ StatefulSet๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Kubernetes Operator๋Š” Kubernetes StatefulSet ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋…๋ฆฝํ˜• MongoDB database ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ค‘์š”

Kubernetes์—์„œ Standalone ๋ฆฌ์†Œ์Šค๋Š” ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋ฟ์ธ ReplicaSet ๋ฆฌ์†Œ์Šค์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚˜์ค‘์— ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Standalone ๋Œ€์‹  ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜์ธ ReplicaSet๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ReplicaSet MongoDB ๋ฆฌ์†Œ์Šค์˜ ์œ ํ˜•์˜ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ StatefulSet ๋กœ spec.members Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.๊ฐ’๊ณผ ๋™์ผํ•œ ๋ฉค๋ฒ„ ์ˆ˜๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

Kubernetes Operator๋Š” Kubernetes StatefulSet ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ๋ณธ ์„ธํŠธ์˜ ๊ฐ ๋…ธ๋“œ์— ๋Œ€ํ•ด StatefulSet์— ํ•˜๋‚˜์˜ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

StatefulSet์˜ ๊ฐ ํŒŒ๋“œ๋Š” MongoDB Agent ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

MongoDB ๋ฆฌ์†Œ์Šค์˜ ShardedCluster ์œ ํ˜•์€ ํ•˜๋‚˜ ์ด์ƒ์˜ Config ์„œ๋ฒ„, mongos ์ธ์Šคํ„ด์Šค ๋ฐ ์ƒค๋“œ ๋ฉค๋ฒ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ShardedCluster ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•ด Kubernetes Operator๊ฐ€ ๋‹ค์Œ์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

  • ๋ชจ๋“  Config ์„œ๋ฒ„์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ StatefulSet

  • ๋ชจ๋“  mongos ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ StatefulSet

  • ๊ฐ ์ƒค๋“œ ๋…ธ๋“œ๋‹น ํ•˜๋‚˜์˜ StatefulSet

Kubernetes Operator๋Š” Kubernetes StatefulSet ์ปจํŠธ๋กค๋Ÿฌ์— ์˜์กดํ•˜์—ฌ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด ์ƒ์„ฑ๋œ ๊ฐ StatefulSet์— ํ•˜๋‚˜์˜ ํŒŒ๋“œ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

MongoDB ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ์ ์šฉํ•˜๋ฉด, Kubernetes Operator๋Š” ๊ฐ ๋ฆฌ์†Œ์Šค๋ฅผ StatefulSet๋กœ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

Kubernetes Operator:

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋ณต์ œ๋ณธ ์„ธํŠธ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ Kubernetes Operator๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Diagram describing how the MongoDB Enterprise Kubernetes
Operator makes changes to the MongoDB Custom Resource Definition
for a replica set
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ Kubernetes Operator๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Diagram describing how the MongoDB Enterprise Kubernetes
Operator makes changes to the MongoDB Custom Resource Definition
for a sharded cluster
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€

MongoDB ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ๋•Œ ๋˜๋Š” ๊ด€๋ จ ConfigMap ๋˜๋Š” ์‹œํฌ๋ฆฟ์„ ๋ณ€๊ฒฝํ•  ๋•Œ, Kubernetes Operator๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์กฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Kubernetes Operator์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ์ ํŠธ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ConfigMap์—์„œ ํ•„์š”ํ•œ ์กฐ์ง ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ์„ ์ฝ์Šต๋‹ˆ๋‹ค.

    ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ๋ณ€๊ฒฝํ•˜๋ฉด Kubernetes Operator๋Š” ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ–ˆ์Œ์„ ์‹๋ณ„ํ•˜๊ณ  spec.opsManager.configMapRef.name์— ์ง€์ •๋œ ConfigMap์˜ ์‚ฌ์–‘์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    MongoDB ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ Kubernetes Operator๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ConfigMap์„ ์ƒ์„ฑํ•˜์—ฌ Cloud Manager ๋˜๋Š” Ops Manager ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. MongoDB Agent๋Š” ์ด ConfigMap์„ ์‚ฌ์šฉํ•˜์—ฌ MongoDB ๋ฆฌ์†Œ์Šค์˜ ๋ฐฐํฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜์— ์ง€์ •๋œ ์‹œํฌ๋ฆฟ์—์„œ Cloud Manager ๋˜๋Š” Ops Manager์— ๋Œ€ํ•œ ์ธ์ฆ ๊ตฌ์„ฑ์„ ์ฝ์Šต๋‹ˆ๋‹ค.

    ์ด ์‹œํฌ๋ฆฟ์€ Kubernetes Operator๊ฐ€ Cloud Manager ๋˜๋Š” Ops Manager์— ์ธ์ฆํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ Cloud Manager API ํ‚ค ๋˜๋Š” Ops Manager API ํ‚ค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    MongoDB ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ Kubernetes Operator๋ฅผ ๊ตฌ์„ฑํ•  ๋•Œ ์ด ์‹œํฌ๋ฆฟ์„ Kubernetes์—์„œ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‹œํฌ๋ฆฟ ์ €์žฅ์†Œ ๋„๊ตฌ์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  3. Kubernetes Operator๋Š” Cloud Manager ๋˜๋Š” Ops Manager์— ์—ฐ๊ฒฐํ•˜์—ฌ ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ConfigMap์˜ orgId ํ•„๋“œ์—์„œ ์กฐ์ง์„ ์ฝ์Šต๋‹ˆ๋‹ค. orgId ํ•„๋“œ์— ๊ฐ’์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ด ์„ ํƒ์  ํ•„๋“œ์— ๊ฐ’์„ ์ง€์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ConfigMap์˜ projectName ํ•„๋“œ์— ์ง€์ •๋œ ํ”„๋กœ์ ํŠธ ์ด๋ฆ„์„ ์ฝ๊ฑฐ๋‚˜ ์—†๋Š” ๊ฒฝ์šฐ Cloud Manager ๋˜๋Š” Ops Manager์—์„œ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • MongoDB Agent์šฉ์œผ๋กœ Kubernetes Operator๊ฐ€ ์ƒ์„ฑํ•œ <project-id>-group-secret ์‹œํฌ๋ฆฟ์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. Kubernetes Operator๋Š” ์‹œํฌ๋ฆฟ ์ €์žฅ์†Œ ๋„๊ตฌ ์—์„œ ์‹œํฌ๋ฆฟ์„ ์ฝ๊ฑฐ๋‚˜ MongoDB Ops Manager API ํ‚ค ๋˜๋Š” Cloud Manager API ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œํฌ๋ฆฟ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ์ž์ฒด๋ฅผ ConfigMap ๋ฐ ์ด ์‹œํฌ๋ฆฟ์˜ ๊ฐ์‹œ์ž๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Kubernetes Operator๋Š” ConfigMap ๋˜๋Š” ์‹œํฌ๋ฆฟ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. Kubernetes Operator๋Š” ๋ชจ๋“  TLS ๋ฐ X.509 ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ๋ณต์ œ๋ณธ ์„ธํŠธ์— ๋Œ€ํ•ด TLS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” <prefix>-<resource-name>-cert ์‹œํฌ๋ฆฟ ๋˜๋Š” ์‹œํฌ๋ฆฟ ์ €์žฅ์†Œ ๋„๊ตฌ์— ์ œ๊ณต๋œ ์ธ์ฆ์„œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

    • ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•ด TLS๊ฐ€ ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” ์ด๋Ÿฌํ•œ ์‹œํฌ๋ฆฟ์—์„œ ์ธ์ฆ์„œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

      • ๊ฐ ์ƒค๋“œ ๋ฉค๋ฒ„์— ๋Œ€ํ•ด <prefix>-<resource-name>-x-cert ์ž…๋‹ˆ๋‹ค.

      • ๋ชจ๋“  config ์„œ๋ฒ„์— ๋Œ€ํ•ด <prefix>-<resource-name>-config-cert .

      • ๋ชจ๋“  mongos ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด <prefix>-<resource-name>-mongos-cert .

      • ์‹œํฌ๋ฆฟ ์ €์žฅ ๋„๊ตฌ.

    • X.509 ๋˜๋Š” X.509 ๋ฐ TLS๋ฅผ ์‚ฌ์šฉํ•œ ๋‚ด๋ถ€ ์ธ์ฆ์ด ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” ํ•ด๋‹น ์ธ์ฆ์„œ์— ํ•„์š”ํ•œ ๊ตฌ์„ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  5. Kubernetes Operator๋Š” ํ•„์š”ํ•œ StatefulSet๋ฅผ ์ฐพ์•„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜, StatefulSet๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ƒˆ StatefulSet๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. StatefulSet์˜ ์ˆ˜๋Š” MongoDB ๋ฆฌ์†Œ์Šค ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

    • ReplicaSet ๋˜๋Š” Standalone ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ Kubernetes Operator๋Š” ๋‹จ์ผ StatefulSet๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ShardedCluster ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ Kubernetes Operator๋Š” ๋‹ค์Œ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

      • ๋ชจ๋“  Config ์„œ๋ฒ„์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ StatefulSet.

      • ๋ชจ๋“  mongos ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ StatefulSet.

      • ๊ฐ ์ƒค๋“œ ๋…ธ๋“œ๋‹น ํ•˜๋‚˜์˜ StatefulSet.

      ์ด ์‹œ์ ์—์„œ ๊ฐ ํŒŒ๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ MongoDB Agent ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜์ง€๋งŒ, ์•„์ง mongod ์ธ์Šคํ„ด์Šค๋ฅผ ํฌํ•จํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

    • ๊ฐ MongoDB Agent ์ธ์Šคํ„ด์Šค๋Š” Cloud Manager ๋˜๋Š” Ops Manager ํด๋ง์„ ์‹œ์ž‘ํ•˜์—ฌ MongoDB ์ž๋™ํ™” ๊ตฌ์„ฑ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

      ์ฐธ๊ณ 

      ๋น„์ •์  ์ปจํ…Œ์ด๋„ˆ: ๊ฐ€ MongoDB Agent ์ฒ˜์Œ์œผ๋กœ ๊ตฌ์„ฑ์„ ์ˆ˜์‹ ํ•˜๋ฉด ์— MongoDB ์ง€์ •๋œ ๋ฒ„์ „์˜ spec.version ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ธํ„ฐ๋„ท์—์„œ ๋‹ค์šด๋กœ๋“œํ•˜๊ฑฐ๋‚˜,MongoDB Ops Manager ๊ฐ€ MongoDB Agent ๋กœ์ปฌ ๋ชจ๋“œ ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ ์—์„œ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

      ์ •์  ์ปจํ…Œ์ด๋„ˆ: ์ •์  ์ปจํ…Œ์ด๋„ˆ๋Š” ๋Ÿฐํƒ€์ž„์— ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์  ์ปจํ…Œ์ด๋„ˆ(๊ณต๊ฐœ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • MongoDB Agent๋Š” ์ž๋™ํ™” ๊ตฌ์„ฑ์„ ์ˆ˜์‹ ํ•œ ํ›„ ํ•ด๋‹น ํŒŒ๋“œ์—์„œ mongod ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    • StatefulSet๋ฅผ ์ œ์™ธํ•˜๊ณ  MongoDB ์‚ฌ์šฉ์ž ์ง€์ • ๋ฆฌ์†Œ์Šค๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฐ StatefulSet์˜ ๊ฐ ํŒŒ๋“œ์— mongos ๋Œ€ํ•ด Kubernetes Operator๋Š” Persistent Volume Claim ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. . ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์—์„œ spec.persistent ๋ฅผ false ๋กœ ์„ค์ •ํ•˜์—ฌ ์ด ๋™์ž‘์„ ์žฌ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  6. Kubernetes Operator๋Š” MongoDB Agent๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ํ•œ ์ž๋™ํ™” ๊ตฌ์„ฑ์„ ์‚ฌ์–‘์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์—ฌ Cloud Manager ๋˜๋Š” Ops Manager๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    • ๊ฐ ํŒŒ๋“œ์— ๋Œ€ํ•œ ๊ฐ MongoDB Agent๋Š” Cloud Manager ๋˜๋Š” Ops Manager๋ฅผ ๋‹ค์‹œ ํด๋งํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ ์ž๋™ํ™” ๊ตฌ์„ฑ์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์–‘์˜ ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด Kubernetes Operator๊ฐ€ ๋กค๋ง ์—…๋ฐ์ดํŠธ ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. StatefulSets์˜ ์ƒˆ ์‚ฌ์–‘๊ณผ ์ผ์น˜ํ•˜๋Š” ์ƒˆ ํŒŒ๋“œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    • Kubernetes Operator๋Š” ๊ฐ MongoDB Agent๊ฐ€ ์ค€๋น„ ์ƒํƒœ์— ๋„๋‹ฌํ–ˆ๋‹ค๊ณ  ๋ณด๊ณ ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

    ์ฐธ๊ณ 

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฆฌ์†Œ์Šค ์˜ ๋ณด์•ˆ ๊ตฌ์„ฑ ์„ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ 6 ํ™•์žฅํ•˜๋‹ค 5 ํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ์กด StatefulSet์—์„œ Kubernetes Operator๋Š” ๋‹จ๊ณ„๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋‹จ๊ณ„๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  7. Kubernetes Operator๋Š” Kubernetes ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด MongoDB ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ์ƒˆ๋กœ์šด StatefulSet์— ํ•„์š”ํ•œ ์„œ๋น„์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    ServiceType ClusterIP ์˜ ๊ฒฝ์šฐ , Kubernetes Operator๋Š” ClusterIP ๋ฅผ None ๋กœ ์„ค์ •ํ•˜๊ณ  ๋‹ค์Œ ์กฐ์น˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    • ์ด ์„œ๋น„์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ReplicaSet ๋˜๋Š” Standalone ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฆฌ์†Œ์Šค์˜ ์ด๋ฆ„์— -svc์„(๋ฅผ) ์ถ”๊ฐ€ํ•˜์—ฌ ์„œ๋น„์Šค ์ด๋ฆ„์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    • ShardedCluster ๋ฆฌ์†Œ์Šค์˜ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” ์ด๋Ÿฌํ•œ ๋ช…๋ช… ๊ทœ์น™์„ ์‚ฌ์šฉํ•œํ•ฉ๋‹ˆ๋‹ค.

      • mongos ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ, Kubernetes Operator๋Š” spec.service ์— ์ง€์ •๋œ ์ด๋ฆ„ ๋˜๋Š” -svc ์ด ์ถ”๊ฐ€๋œ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      • Config ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ Kubernetes Operator๋Š” -cs๊ฐ€ ์ถ”๊ฐ€๋œ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

      • ๊ฐ ์ƒค๋“œ์˜ ๊ฒฝ์šฐ Kubernetes Operator๋Š” -sh๊ฐ€ ์ถ”๊ฐ€๋œ ๋ฆฌ์†Œ์Šค ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • ํฌํŠธ์˜ ๊ฒฝ์šฐ Kubernetes Operator๋Š” ๊ธฐ๋ณธ ํฌํŠธ 27017 ๋˜๋Š” ์— ์ง€์ •๋œ .net.port ๋ฅผ spec.additionalMongodConfig ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐฉ๋ฒ•์ด SCRAM ์œผ๋กœ ์„ค์ •๋œ ๊ฒฝ์šฐ, MongoDB ์‚ฌ์šฉ์ž ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘ ์€ ์‚ฌ์šฉ์ž ์ž๊ฒฉ ์ฆ๋ช…์„ ์ €์žฅํ•˜๋Š” ์‹œํฌ๋ฆฟ ์ €์žฅ์†Œ ๋„๊ตฌ ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. Kubernetes spec.passwordSecretKeyRef ์‹œํฌ๋ฆฟ MongoDBUser ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์˜ ์„ค์ •์—์„œ ์‹œํฌ๋ฆฟ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

Kubernetes Operator๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์‹œํฌ๋ฆฟ์„ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค. ์‹œํฌ๋ฆฟ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋ฉด Kubernetes Operator๊ฐ€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. MongoDB ์‚ฌ์šฉ์ž ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์˜ spec.MongoDBResourceRef.name ์„ค์ •์— ์ง€์ •๋œ ๊ฐ’์— ๋”ฐ๋ผ MongoDB ์‚ฌ์šฉ์ž์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. Cloud Manager ๋˜๋Š” Ops Manager์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

  3. Cloud Manager ๋˜๋Š” Ops Manager์—์„œ ์‚ฌ์šฉ์ž์˜ ์ž๊ฒฉ ์ฆ๋ช…์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฉ”์„œ๋“œ๊ฐ€ SCRAM์ธ ๊ฒฝ์šฐ ์‹œํฌ๋ฆฟ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ฝ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ Kubernetes Operator๋Š” ์ด์ „ ์ด๋ฆ„์„ ์ œ๊ฑฐํ•˜๊ณ  ์ƒˆ ์ด๋ฆ„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    • Cloud Manager ๋˜๋Š” Ops Manager์— ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์‚ฌ์šฉ์ž ์‹œํฌ๋ฆฟ ๋˜๋Š” MongoDB ์‚ฌ์šฉ์ž ๋ฆฌ์†Œ์Šค ์‚ฌ์–‘์„ ๋ณ€๊ฒฝํ•  ๊ฒฝ์šฐ Kubernetes Operator๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

Diagram describing how the MongoDB Enterprise Kubernetes
Operator reconciles changes to the MongoDBUser
Custom Resource Definition
ํด๋ฆญํ•˜์—ฌ ํ™•๋Œ€