איך לבצע התקנת MongoDB על Kubernetes

התקנות של יישומים ב-Kubernetes יכולות להיות אתגריות, במיוחד עבור יישומים השומרים על המצב כמו MongoDB לאשף Kubernetes. איך ניתן להקל על ההתקנה? השתמשו ב-MongoDB Kubernetes Operator להתקנה ולניהול אוטומטי של יישומים ששומרים על המצב בתוך אשף Kubernetes שלכם.

במדריך זה, תלמדו איך להתקין את MongoDB ב-Kubernetes באמצעות ה- MongoDB Kubernetes Operator.

המשך לקרוא והתחילו לאוטומט את ההתקנות שלכם ב-Kubernetes!

דרישות מקדימות

מדובר בהדגמה ידי יד. כדי לעקוב, וודאו שיש לכם את הדרישות הבאות:

  • A Kubernetes cluster – This demo uses the Kubernetes cluster v1.23.
  • jq מפרט JSON מותקן על המכונה המקומית שלך.

יצירת מרחב שמות עבור MongoDB

כאשר אתה מפרסם יישומים ל-Kubernetes, יצירת מרחב שמות מסוים עבור הפרוייקטים שלך תמיד מומלצת.

מרחבי שמות עוזרים בניהול משאבי Kubernetes יותר קל עבור מנהלי מערכות ומונעים קריסות שמות. בו זמנית, יצירת מרחבי שמות מונעת שימוש לא נכון במשאבים בסביבת Kubernetes.

פתח את הטרמינל שלך והרץ את הפקודה kubectl create ליצירת מרחב שמות חדש (ns) בשם mongodb באשכול Kubernetes שלך.

kubectl create ns mongodb

עכשיו הרץ את הפקודה הבאה kubectl get כדי לאמת את רשימת מרחבי השמות באשכול Kubernetes שלך.

kubectl get ns

תראה מרחב שמות חדש בשם mongodb זמין באשכול שלך, כפי שמוצג למטה.

Creating and Verifying the mongodb Namespace

הורדת מפעיל Kubernetes של MongoDB

אחרי שיצרת מרחב שמות, הגיע הזמן להוריד את אופרטור ה־Kubernetes של MongoDB. אופרטור ה־Kubernetes של MongoDB הוא סט של אופרטורים Kubernetes. אלו אופרטורים Kubernetes מציעים התקנה, הגדרה וניהול אוטומטי של MongoDB Community על סביבת Kubernetes.

הריצו את הפקודה git למטה כדי לקלון את פרויקט אופרטור ה־Kubernetes של MongoDB למכונה המקומית שלכם.

git clone <https://github.com/mongodb/mongodb-kubernetes-operator.git>

עכשיו, הריצו כל פקודה למטה כדי לשנות את תיקיית העבודה הנוכחית שלכם ל־mongodb-kubernetes-operator ולרשום (ls) את כל הקבצים והתיקיות הזמינים.

# שינוי תיקיית העבודה ל־mongodb-kubernetes-operator
cd mongodb-kubernetes-operator/

# רשימת קבצים ותיקיות
ls

תראו תת־תיקייה בשם config בתוך תיקיית הפרויקט ~/mongodb-kubernetes-operator, כפי שמוצג למטה. התת־תיקייה config מכילה דוגמאות של קבצי YAML להפצת MongoDB על Kubernetes.

Downloading mongodb-kubernetes-operator Source Code

הפצת ה־MongoDB Operator

עכשיו, כשהמרחב המותאם אישית שלכם ואופרטור ה־Kubernetes של MongoDB מוכנים, אתם מוכנים להפיץ את אופרטור ה־MongoDB לאשף ה־Kubernetes שלכם. כיצד? תשתמשו בתצורה בתוך תיקיית ה־config.

אופרטור ה־MongoDB טופל את מחזור החיים של ההפצה שלכם של MongoDB על אשף ה־Kubernetes. האופרטור ייצור, ינהל ויגדיל באופן אוטומטי את המצב של ההפצה של MongoDB שלכם.

להפעיל את אופרטור MongoDB, יש ליצור הגדרת משאבים מותאמת אישית (CRD) של Kubernetes Custom Resources Definition (CRD) ואת הבקר. ה- CRD של Kubernetes הוא נרחב ל- API של Kubernetes, שמאפשר לך ליצור משאבים מותאמים אישית ב-Kubernetes.

1. הפעל את הפקודה kubectl apply למטה כדי ליצור CRD חדש של Kubernetes עבור פיתוח MongoDB.

ה-אופרטור Kubernetes החליף את כל ההתמעטות אדם כדי לפרסם את היישום ב-Kubernetes. האופרטור הוא בקר של קפיצים שפותח ומנהל באופן אוטומטי את היישום התקי לך ב-Kubernetes.

kubectl apply -f config/crd/bases/mongodbcommunity.mongodb.com_mongodbcommunity.yaml
Creating New Kubernetes CRD MongoDB Kubernetes Deployment

2. לאחר מכן, הפעל את פקודת kubectl get הבאה כדי לוודא את רשימת ה-crd הזמינה ב-Kubernetes שלך.

kubectl get crd/mongodbcommunity.mongodbcommunity.mongodb.com

למטה, תראה את ה-CRD בשם mongodbcommunity.mongodbcommunity.mongodb.org.

Checking List of CRDs

3. הפעל את הפקודה למטה כדי ליצור גישה מבוססת תפקיד (RBAC) מותאמת אישית חדשה עבור אופרטור MongoDB, וציין את המימוש של RBAC לכתובת המרחב של mongodb.

פקודה זו יוצרת תפקיד, קשר תפקיד וחשבון שירות חדשים עבור אופרטור MongoDB, הכוללים הרשאות מותאמות אישית על קבוצת ה-Kubernetes שלך. אלו הרשאות מותאמות אישית הנדרשות לפרט לפרט להפעיל ולנהל באופן אוטומטי את MongoDB.

kubectl apply -k config/rbac/ -n mongodb
Deploying RBAC for MongoDB Deployment

4. כעת, הפעל את כל פקודת kubectl למטה כדי לוודא את התפקיד, הקשר תפקיד וחשבון השירות עבור אופרטור MongoDB.

# בדיקת רשימת תפקידים
kubectl get role mongodb-kubernetes-operator -n mongodb

# בדיקת רשימת קשרי תפקיד
kubectl get rolebinding mongodb-kubernetes-operator -n mongodb

# בדיקת חשבון שירות
kubectl get serviceaccount mongodb-kubernetes-operator -n mongodb

הפלט למטה מציג את התפקיד, הקשר תפקיד וחשבון השירות "mongodb-kubernetes-operator" הוא נוצר במרחב השמור "mongodb".

Checking role, rolebinding, and serviceaccount on Kubernetes

5. לאחר הוודאות, הפעל את הפקודה של kubectl למטה כדי להפעיל את אופרטור MongoDB במרחב השמור "mongodb".

פקודה זו תיצור כלי pod חדש (mongodb-kubernetes-operator) עם תמונת Docker בסיסית (quay.io/mongodb/mongodb-kubernetes-operator). פוד זה ישמש כבקר להפעלה אוטומטית של MongoDB ReplicaSets בקבוצת Kubernetes שלך.

kubectl create -f config/manager/manager.yaml -n mongodb

למטה, ניתן לראות כי פרטי ההפעלה של אופרטור MongoDB נוצרים, אך הפוד עדיין בתהליך איתחול.

Deploying MongoDB Operator to the mongodb Namespace

6. לבסוף, הפעל את הפקודות הבאות כדי לוודא את ההפעלה והפודים במרחב השמור "mongodb".

# בדיקת הפרסום במרחב השמור "mongodb"
kubectl get deployment.apps -n mongodb

# בדיקת הפודים במרחב השמור "mongodb"
kubectl get pods -n mongodb

כפי שאתה יכול לראות למטה, פוד האופרטור MongoDB פועל.

Verifying MongoDB Operator Deployment and Pod

עימות MongoDB ReplicaSet ל-Kubernetes

לאחר הפעלת מסד הנתונים של MongoDB, יש להפעיל את ReplicaSet ב-Kubernetes כדי לספק זמינות גבוהה ואחריות עבור הפעלת MongoDB שלך. לא תרצה זמן מעצור בהפעלה שלך.

הפעלת ReplicaSets של MongoDB באמצעות MongoDB Kubernetes Operator מאובטחת כברירת מחדל באמצעות אימות SCRAM למשתמשים. באותו זמן, ניתן להשתמש בחיבור מאובטח של TLS למשתמשים ולחיבורי יישומים, ולחשוף מדדי Prometheus לניטור של משאבים.

קשור: התחלה עם מערכת ניטור Kubernetes של Grafana & Prometheus

בתוך התיקייה config/samples/, ישנם מספר דוגמאות של קבצי YAML להפעלת ReplicaSet. כל קובץ יכול לשמש בסטריאו שונה של הפעלה, אך קובץ ההפעלה המוגדר כברירת מחדל הוא mongodb.com_v1_mongodbcommunity_cr.yaml.

1. ערוך את קובץ ה-YAML של ההפעלה בעזרת העורך שאתה מעדיף. בדוגמה זו נעשה שימוש בקובץ /mongodb.com_v1_hostpath.yaml עבור הפעלה מקומית. קובץ זה נמצא בתיקייה config/samples/arbitrary_statefulset_configuration/.

אם אתה מיישם את אופרטור MongoDB Kubernetes בשירותי הענן כמו GKE ו-AKS, השתמש בקובץ YAML mongodb.com_v1_mongodbcommunity_cr.yaml. אך אם אתה מיישם מקומית בתוך Kind או Minikube, אתה יכול להשתמש בקובץ YAML מותאם אישית (arbitrary_statefulset_configuration/mongodb.com_v1_hostpath.yaml), שיצירת PV ו-PVC מותאמים אוטומטית עבור כדוריות MongoDB ReplicaSet.

למטה, שנה את מספר הכדוריות השכפול (חברים) שברצונך להטביע בהתאם לסביבתך, אך ברירת המחדל היא 3. למדריך זה, מספר הכדוריות השכפול מוגדר ל-2.

spec:
  members: 2 # מספר הכדוריות השכפול שיצוין
  security:
    authentication:
      modes:
      - SCRAM
  statefulSet:

החלף את <your-password-here> בסיסמה החזקה שלך. תשתמש בסיסמה זו כדי להתחבר למסד הנתונים של MongoDB, וברירת המחדל, אתה משתמש באימות SCRAM.

שמור את השינויים וסגור את העורך כאשר אתה מרוצה מהסיסמה.

---
apiVersion: v1
kind: Secret
metadata:
  name: my-user-password
type: Opaque
stringData:
  password: <your-password-here> # הגדר סיסמה עבור מנהל MongoDB

2. לאחר מכן, הרץ את הפקודה kubectl הבאה כדי להטביע (apply) את כדוריות השכפול של MongoDB באמצעות הקובץ mongodb.com_v1_hostpath.yaml במרחב השמות mongodb.

הפקודה הזו יוצרת את האלה:

  • A new custom resource (MongoDBCommunity) with the name mdb0 under the mongodbcommunity.mongodb.com/v1 CRD
  • סודות Kubernetes לאחסון סיסמאות משתמש MongoDB. בנוסף, כמה PVs ו-PVCs עם סוג ה-typ כ-hostPath עבור קבוצת השכפול MongoDB.

ההפרטה תיקח זמן מסוים, תלוי בגודל של ReplicaSets שיש ליצור ובקשת הקוברנטיס עצמה.

kubectl apply -f config/samples/arbitrary_statefulset_configuration/mongodb.com_v1_hostpath.yaml -n mongodb
Deploying MongoDB Replica Sets

3. לאחר ההפרטה, הריצו כל פקודה מתחת כדי לוודא את המשאבים המותאמים אישית וה-pods במרחב ה-mongodb.

# בדיקת ה-mongodbcommunity crd
kubectl get mongodbcommunity -n mongodb

# בדיקת pods במרחב ה-mongodb
kubectl get pods -n mongodb

הפלט למטה מראה את התוכן הבא:

  • המשאב המותאם MongoDBCommunity עם השם mdb0 פועל עם MongoDB v4.4.0.
  • שני pods של MongoDB ReplicaSet פועלים עם השמות mdb0-0 ו־mdb0-1. כל פוד מכיל שני תוכניות שונות, התוכנית mongod, והתוכנית mongodb-agent.
Verifying MongoDB ReplicaSet Deployment and Pods

4. לבסוף, הריצו פקודת kubectl נוספת מתחת כדי לוודא את ה-pv וה-pvc במרחב ה-mongodb.

kubectl get pv,pvc -n mongodb

הפלט למטה מראה לכם כמה pv ו־pvc בשימוש על ידי pods של MongoDB ReplicaSet.

Checking PV and PVC on the mongodb Namespace

יצירת משתמש ובסיס נתונים חדשים עבור ההפצה של MongoDB

כרגע, השלמתם את ההפצה של מפעיל MongoDB ו-ReplicaSets לערכת הקוברנטיס שלכם. השלב הבא הוא ליצור בסיס נתונים חדש ומשתמש MongoDB עבור האפליקציה שלך.

תיצרו סוד קוברנטיס חדש עבור המשתמש החדש, תערכו את משאב המותאם של ה-ReplicaSet, ותעדכנו את ה-ReplicaSet שלכם בערכת הקוברנטיס.

1. צור קובץ YAML חדש באמצעות העורך שאתה מעדיף ומלא את הסוד הקובנטי של Kubernetes הבא. אתה יכול לתת לקובץ YAML שם לפי בחירתך, אך הקובץ מקבל את השם new-user.yaml במדריך זה.

קובץ YAML זה יוצר סוד חדש של Kubernetes עם השם myappdata והסיסמה myapppassword.

---
apiVersion: v1
kind: Secret
metadata:
  name: myappdata # שם המטה של הסוד
type: Opaque
stringData:
  password: myapppassword # סיסמה עבור המשתמש החדש

2. לאחר מכן, הריץ את הפקודה kubectl הבאה כדי לבצע את התצורה של new-user.yaml.

הפקודה הזו יוצרת ומחילה (apply) סוד חדש של Kubernetes לאשכול שלך ומחילה את הסוד הזה למרחב השמות של mongodb.

kubectl apply -f new-user.yaml -n mongodb
Creating Secret to Kubernetes Cluster

3. ערוך את קובץ ה-YAML של תצורת ReplicaSet CRD שלך (mongodb.com_v1_hostpath.yaml) בתיקיית config/samples/arbitrary_statefulset_configuration.

הוסף את התצורה הבאה לקובץ mongodb.com_v1_hostpath.yaml שיוצר את מסד הנתונים והמשתמש עבור MongoDB.

ודא שתחליף את scram-secret-myapp בפרטי הזיהוי שלך, שמור את השינויים בקובץ וסגור את העורך.

    - name: appuser # משתמש חדש appuser
      db: admin # מאפשר אימות למסד נתונים המנהל
      passwordSecretRef:
        name: myappdata # הסוד של Kubernetes
      roles:
        - name: dbAdmin # הגדר תפקיד dbAdmin
          db: appdb1 # לאשכול appdb1
      scramCredentialsSecretName: scram-secret-myapp

4. כעת, הפעל את הפקודה הבאה כדי לבצע את השינויים החדשים שביצעת בקובץ mongodb.com_v1_hostpath.yaml בשלב שלוש.

kubectl apply -f config/samples/arbitrary_statefulset_configuration/mongodb.com_v1_hostpath.yaml -n mongodb
Creating New MongoDB User and Database on Kubernetes

5. לבסוף, הפעל כל פקודה למטה כדי ליצור את חיבורי ה-MongoDB המפורטים עבור היישום שלך. פקודות אלו יוצרות את חיבורי ה-MongoDB המפורטים עבור היישומים שלך בפורמט JSON ומפענחות את הפלט באמצעות פקודת jq בשורת הפקודה.

החלף את mdb0-admin-mongoadmin בפרטי הסביבה שלך כדלהלן:

  • mdb0 – שם המטא-דאטה של משאבי MongoDB.
  • admin – מסד הנתונים לאימות.
  • mongoadmin – המשתמש שתשתמש בו לאימות
# קבל פרטי אימות וחיבורי מנהל
kubectl get secrets mdb0-admin-mongoadmin -n mongodb -o json | jq -r '.data | with_entries(.value |= @base64d)'

# קבל פרטי אימות וחיבורי אפליקציה
kubectl get secrets mdb0-admin-appuser -n mongodb -o json | jq -r '.data | with_entries(.value |= @base64d)'

הפלט למטה מראה שאתה יכול להתחבר ל-MongoDB באמצעות חיבורים סטנדרטיים ו-Srv סטנדרטיים. תראה גם את שם המשתמש והסיסמה של התקנת MongoDB שלך.

Retrieving Details of MongoDB User and Password, and Connections

חיבור להתקנת MongoDB

סיימת להתקין את MongoDB באשף Kubernetes באמצעות אופרטור MongoDB של Kubernetes. אך איך תדע שההתקנה עובדת? תוודא את חיבור המסד והמשתמש שלך ל-MongoDB בתוך אשף Kubernetes.

לאמת את החיבור להתקנת MongoDB שלך, תשתמש בפורוורד פורטים. פורוורד פורטים ב-Kubernetes מאפשר לך ליצור פורט הולך ומכל שירות Kubernetes לפורט המקומי שלך.

1. הפעל את הפקודה kubectl למטה כדי לקבל את רשימת השירותים (svc) בכתום mongodb.

kubectl get svc -n mongodb

מתחת לכך, תראה את השירות הנקרא mdb0-svc, שמציג את פתח היציאה 27017 (פורט ברירת המחדל של MongoDB).

Listing Services on the mongodb Namespace

2. לאחר מכן, הפעל את הפקודה למטה כדי ליצור הפניית פורט לקבוצת Kubernetes.

הפקודה הזו יוצרת הפנייה חדשה לפורט בשירות Kubernetes (mdb0-svc) ומפנה את פורט המקומי 27017 לפורט השירות ב-Kubernetes 27017.

kubectl port-forward service/mdb0-svc -n mongodb 27017:27017
Setting up Port-forward

3. לבסוף, פתח את אפליקציית MongoDB Compass על המחשב המקומי שלך, הוסף חיבור חדש בעזרת הפורמט הבא, ולחץ התחבר כדי להתחבר ל-MongoDB.

שנה את שדה שם המשתמש והסיסמה עם המשתמש והסיסמה של MongoDB שלך.

# התחבר כ-mongoadmin
mongodb://mongoadmin:secretpassword@localhost:27017/admin?ssl=false

# התחבר כ-appuser
mongodb://appuser:myapppassword@localhost:27017/admin?ssl=false
Connecting as mongoadmin user to MongoDB
Connecting as appuser to MongoDB

כאשר ההתחברות הצליחה, תקבל את החלון הבא שמאשר שהתקנת ה-MongoDB ל-Kubernetes עובדת כהלכה.

עבור המשתמש mongoadmin, תראה בסיסי נתונים ברירת מחדל (local, config ו-admin).

Verifying Connection to the MongoDB mongoadmin

עבור המשתמש appuser, תראה רק מסד נתונים של רשיונות אחד בשם appdb1.

Verifying Connection to the MongoDB as appuser

מסקנה

דרך המדריך הזה, למדת כיצד להטמיע את MongoDB לקבוצת Kubernetes באמצעות MongoDB Kubernetes Operator. גם נגעת בשימוש הבסיסי של האופרטור של Kubernetes. וכעת, כבר יש לך ידע רציני על התקנת וניהול אוטומטי של אפליקציות ל-Kubernetes.

אנו ממליצים להגדיר חיבור TLS בהקמת MongoDB שלך כדי לבנות על הידע החדש שרכשת. חיבור TLS מבטיח את החיבורים בין סטים משקפים ומאבטח את חיבורי הלקוחות או האפליקציות ל-MongoDB.

Source:
https://adamtheautomator.com/mongodb-kubernetes/