برنامه نویسی

استقرار یک ژنراتور MongoDB Collection در Kubernetes

Summarize this content to 400 words in Persian Lang
ایجاد یک ابزار برای تولید 100 مجموعه MongoDB، که هر کدام با 1 میلیون سند تصادفی پر شده است، و استقرار آن در Kubernetes شامل چندین مرحله است. این راهنما از طریق راه‌اندازی یک محیط Kubernetes گرفته تا تولید مجموعه‌ها و استقرار کار در یک فضای نام اختصاصی را طی می‌کند.

1. تنظیم محیط Kubernetes

مطمئن شوید که یک خوشه Kubernetes (مانند GKE، EKS، AKS یا Minikube) دارید و kubectl را برای اتصال به آن پیکربندی کنید.

2. یک فضای نام اختصاصی ایجاد کنید

برای ایزوله نگه داشتن این استقرار، فضای نامی به نام my-lab ایجاد کنید:

kubectl create namespace my-lab
kubectl get ns my-lab

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. MongoDB را در Kubernetes مستقر کنید

ایجاد یک حجم پایدار (PV)

یک فایل mongo-pv.yaml ایجاد کنید تا یک حجم ثابت برای داده های MongoDB تعریف کنید:

apiVersion: v1
kind: PersistentVolume
metadata:
name: mongo-pv
namespace: my-lab
spec:
capacity:
storage: 10Gi
accessModes:
– ReadWriteOnce
hostPath:
path: /data/mongo

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

PV را اعمال کنید:

kubectl apply -f mongo-pv.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد یک ادعای حجم پایدار (PVC)

یک ادعای حجم دائمی را در mongo-pvc.yaml تعریف کنید:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mongo-pvc
namespace: my-lab
spec:
accessModes:
– ReadWriteOnce
resources:
requests:
storage: 10Gi

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

PVC را اعمال کنید:

kubectl apply -f mongo-pvc.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک استقرار MongoDB ایجاد کنید

استقرار و سرویس MongoDB را در mongo-deployment.yaml تعریف کنید:

apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo
namespace: my-lab
spec:
replicas: 1
selector:
matchLabels:
app: mongo
template:
metadata:
labels:
app: mongo
spec:
containers:
– name: mongo
image: mongo:latest
ports:
– containerPort: 27017
env:
– name: MONGO_INITDB_ROOT_USERNAME
value: “root”
– name: MONGO_INITDB_ROOT_PASSWORD
value: “password”
volumeMounts:
– name: mongo-storage
mountPath: /data/db
volumes:
– name: mongo-storage
persistentVolumeClaim:
claimName: mongo-pvc

apiVersion: v1
kind: Service
metadata:
name: mongo
namespace: my-lab
spec:
type: ClusterIP
ports:
– port: 27017
targetPort: 27017
selector:
app: mongo

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استقرار را اعمال کنید:

kubectl apply -f mongo-deployment.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. به MongoDB متصل شوید

با اتصال به آن، استقرار MongoDB را تأیید کنید:

kubectl exec -it -n my-lab — mongosh -u root -p password

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. بررسی پایداری

برای اطمینان از پایداری داده ها، استقرار MongoDB را کوچک کنید و سپس از آن نسخه پشتیبان تهیه کنید:

kubectl scale deployment mongo –replicas=0 -n my-lab
kubectl scale deployment mongo –replicas=1 -n my-lab

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

6. یک ابزار Python برای Collection Generation ایجاد کنید

با استفاده از پایتون، یک اسکریپت برای ایجاد مجموعه ها و پر کردن آنها با اسناد تصادفی تعریف کنید:

import random
import string
import pymongo
from pymongo import MongoClient

def random_string(length=10):
return ”.join(random.choices(string.ascii_letters + string.digits, k=length))

def create_collections_and_populate(db_name=”mydatabase”, collections_count=100, documents_per_collection=1_000_000):
client = MongoClient(‘mongodb://root:password@mongo:27017/’)
db = client[db_name]

for i in range(collections_count):
collection_name = f’collection_{i+1}’
collection = db[collection_name] print(f’Creating collection: {collection_name}’)

bulk_data = [{‘name’: random_string(), ‘value’: random.randint(1, 100)} for _ in range(documents_per_collection)] collection.insert_many(bulk_data)
print(f’Inserted {documents_per_collection} documents into {collection_name}’)

if __name__ == “__main__”:
create_collections_and_populate()

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

7. ابزار Python را Docker کنید

یک Dockerfile برای محفظه کردن اسکریپت پایتون ایجاد کنید:

FROM python:3.9-slim

WORKDIR /app
COPY mongo_populator.py .
RUN pip install pymongo

CMD [“python”, “mongo_populator.py”]

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تصویر را بسازید و به یک رجیستری کانتینر فشار دهید:

docker build -t /mongo-populator:latest .
docker push /mongo-populator:latest

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

8. یک شغل Kubernetes ایجاد کنید

برای اجرای اسکریپت تولید مجموعه، یک کار در mongo-populator-job.yaml تعریف کنید:

apiVersion: batch/v1
kind: Job
metadata:
name: mongo-populator
namespace: my-lab
spec:
template:
spec:
containers:
– name: mongo-populator
image: /mongo-populator:latest
env:
– name: MONGO_URI
value: “mongodb://root:password@mongo:27017/”
restartPolicy: Never
backoffLimit: 4

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

درخواست شغل:

kubectl apply -f mongo-populator-job.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

9. بررسی نسل مجموعه

پس از اتمام کار، برای بررسی داده ها به MongoDB متصل شوید:

kubectl exec -it -n my-lab — mongosh -u root -p password

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در MongoDB:

use mydatabase
show collections
db.collection_9.find().limit(5).pretty()

db.getCollectionNames().forEach(function(collection) {
var count = db[collection].countDocuments();
print(collection + “: ” + count + ” documents”);
});

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر مجموعه باید حاوی 1 میلیون سند باشد که تأیید کننده موفقیت آمیز بودن کار تولید داده باشد.

ایجاد یک ابزار برای تولید 100 مجموعه MongoDB، که هر کدام با 1 میلیون سند تصادفی پر شده است، و استقرار آن در Kubernetes شامل چندین مرحله است. این راهنما از طریق راه‌اندازی یک محیط Kubernetes گرفته تا تولید مجموعه‌ها و استقرار کار در یک فضای نام اختصاصی را طی می‌کند.

استقرار یک ژنراتور MongoDB Collection در Kubernetes

1. تنظیم محیط Kubernetes

مطمئن شوید که یک خوشه Kubernetes (مانند GKE، EKS، AKS یا Minikube) دارید و kubectl را برای اتصال به آن پیکربندی کنید.

2. یک فضای نام اختصاصی ایجاد کنید

برای ایزوله نگه داشتن این استقرار، فضای نامی به نام my-lab ایجاد کنید:

kubectl create namespace my-lab
kubectl get ns my-lab
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

3. MongoDB را در Kubernetes مستقر کنید

ایجاد یک حجم پایدار (PV)

یک فایل mongo-pv.yaml ایجاد کنید تا یک حجم ثابت برای داده های MongoDB تعریف کنید:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-pv
  namespace: my-lab
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: /data/mongo
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

PV را اعمال کنید:

kubectl apply -f mongo-pv.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

ایجاد یک ادعای حجم پایدار (PVC)

یک ادعای حجم دائمی را در mongo-pvc.yaml تعریف کنید:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pvc
  namespace: my-lab
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

PVC را اعمال کنید:

kubectl apply -f mongo-pvc.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

یک استقرار MongoDB ایجاد کنید

استقرار و سرویس MongoDB را در mongo-deployment.yaml تعریف کنید:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo
  namespace: my-lab
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
  template:
    metadata:
      labels:
        app: mongo
    spec:
      containers:
        - name: mongo
          image: mongo:latest
          ports:
            - containerPort: 27017
          env:
            - name: MONGO_INITDB_ROOT_USERNAME
              value: "root"
            - name: MONGO_INITDB_ROOT_PASSWORD
              value: "password"
          volumeMounts:
            - name: mongo-storage
              mountPath: /data/db
      volumes:
        - name: mongo-storage
          persistentVolumeClaim:
            claimName: mongo-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: mongo
  namespace: my-lab
spec:
  type: ClusterIP
  ports:
    - port: 27017
      targetPort: 27017
  selector:
    app: mongo
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استقرار را اعمال کنید:

kubectl apply -f mongo-deployment.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

4. به MongoDB متصل شوید

با اتصال به آن، استقرار MongoDB را تأیید کنید:

kubectl exec -it  -n my-lab -- mongosh -u root -p password
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

5. بررسی پایداری

برای اطمینان از پایداری داده ها، استقرار MongoDB را کوچک کنید و سپس از آن نسخه پشتیبان تهیه کنید:

kubectl scale deployment mongo --replicas=0 -n my-lab
kubectl scale deployment mongo --replicas=1 -n my-lab
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

6. یک ابزار Python برای Collection Generation ایجاد کنید

با استفاده از پایتون، یک اسکریپت برای ایجاد مجموعه ها و پر کردن آنها با اسناد تصادفی تعریف کنید:

import random
import string
import pymongo
from pymongo import MongoClient

def random_string(length=10):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

def create_collections_and_populate(db_name="mydatabase", collections_count=100, documents_per_collection=1_000_000):
    client = MongoClient('mongodb://root:password@mongo:27017/')
    db = client[db_name]

    for i in range(collections_count):
        collection_name = f'collection_{i+1}'
        collection = db[collection_name]
        print(f'Creating collection: {collection_name}')

        bulk_data = [{'name': random_string(), 'value': random.randint(1, 100)} for _ in range(documents_per_collection)]
        collection.insert_many(bulk_data)
        print(f'Inserted {documents_per_collection} documents into {collection_name}')

if __name__ == "__main__":
    create_collections_and_populate()
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

7. ابزار Python را Docker کنید

یک Dockerfile برای محفظه کردن اسکریپت پایتون ایجاد کنید:

FROM python:3.9-slim

WORKDIR /app
COPY mongo_populator.py .
RUN pip install pymongo

CMD ["python", "mongo_populator.py"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

تصویر را بسازید و به یک رجیستری کانتینر فشار دهید:

docker build -t /mongo-populator:latest .
docker push /mongo-populator:latest
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

8. یک شغل Kubernetes ایجاد کنید

برای اجرای اسکریپت تولید مجموعه، یک کار در mongo-populator-job.yaml تعریف کنید:

apiVersion: batch/v1
kind: Job
metadata:
  name: mongo-populator
  namespace: my-lab
spec:
  template:
    spec:
      containers:
        - name: mongo-populator
          image: /mongo-populator:latest
          env:
            - name: MONGO_URI
              value: "mongodb://root:password@mongo:27017/"
      restartPolicy: Never
  backoffLimit: 4
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

درخواست شغل:

kubectl apply -f mongo-populator-job.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

9. بررسی نسل مجموعه

پس از اتمام کار، برای بررسی داده ها به MongoDB متصل شوید:

kubectl exec -it  -n my-lab -- mongosh -u root -p password
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در MongoDB:

use mydatabase
show collections
db.collection_9.find().limit(5).pretty()

db.getCollectionNames().forEach(function(collection) {
     var count = db[collection].countDocuments();
     print(collection + ": " + count + " documents");
 });

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هر مجموعه باید حاوی 1 میلیون سند باشد که تأیید کننده موفقیت آمیز بودن کار تولید داده باشد.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا