پرش به مطلب اصلی

MongoDB

MongoDB یک دیتابیس قدرت‌مند و منعطف است که شیوه‌ی ذخیره و بازیابی اطلاعات را برای کاربران آسان کرده است. این ابزار به‌گونه‌ای طراحی شده که برای داده‌های با حجم بالا و بدون ساختار راهکاری مقیاس‌پذیر و مناسب ارایه ‌دهد. رویکرد MongoDB در ذخیره‌ی داده‌ها Document-Based است به این معنا که داده‌ها در قالبی شبیه به JSON قرار می‌گیرند؛ به همین دلیل،‌توسعه‌دهندگان می‌توانند ساختارهای پیچیده و آرایه‌های تودرتو را در MongoDB ذخیره کنند.

در کانتینر ابری آروان‌کلاد می‌توانید با استفاده از اپراتورها، یک مونگودی‌بی با ۳ نود پیاده‌سازی کنید. برای این اپراتور از نسخه‌ی ۰.۹.۰ پروژه‌ی mongoDB استفاده شده است.

فایل زیر را با یک نام دل‌خواه مانند mongodbcommunity.yaml ذخیره کنید:

---
apiVersion: mongodbcommunity.mongodb.com/v1
kind: MongoDBCommunity
metadata:
name: example-mongodb
spec:
members: 3
type: ReplicaSet
version: "6.0.5"
security:
authentication:
modes: ["SCRAM"]
statefulSet:
spec:
template:
spec:
containers:
- name: mongod
resources:
limits:
cpu: "0.5"
memory: 1Gi
requests:
cpu: "0.5"
memory: 1Gi
- name: mongodb-agent
resources:
limits:
cpu: "0.2"
memory: 250M
requests:
cpu: "0.2"
memory: 250M
readinessProbe:
failureThreshold: 50
initialDelaySeconds: 10
timeoutSeconds: 20
users:
- name: my-user
db: admin
passwordSecretRef: # a reference to the secret that will be used to generate the user's password
name: my-user-password
roles:
- name: clusterAdmin
db: admin
- name: userAdminAnyDatabase
db: admin
scramCredentialsSecretName: my-scram
additionalMongodConfig:
storage.wiredTiger.engineConfig.journalCompressor: zlib

# the user credentials will be generated from this secret
# once the credentials are generated, this secret is no longer required
---
apiVersion: v1
kind: Secret
metadata:
name: my-user-password
type: Opaque
stringData:
password: MTIzNDU2Cg==
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: mongodb-database
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: mongodb-database
rules:
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- apiGroups:
- ""
resources:
- pods
verbs:
- patch
- delete
- get
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: mongodb-database
subjects:
- kind: ServiceAccount
name: mongodb-database
roleRef:
kind: Role
name: mongodb-database
apiGroup: rbac.authorization.k8s.io

سپس برای استقرار دستور زیر را اجرا کنید:

kubectl apply -f mongodbcommunity.yaml -n [namespace]

به‌جای [namespace] نام پروژه‌ی خود در کانتینر ابری آروان‌کلاد را قرار دهید.

برای بررسی جزییات و نمونه‌های بیش‌تر به مستندات اپراتور MongoDB مراجعه کنید.