התקנה של AlloyDB Omni ב-Kubernetes

בוחרים גרסה של מאמרי העזרה:

בדף הזה מופיעה סקירה כללית של אופרטור AlloyDB Omni Kubernetes, עם הוראות לשימוש בו כדי לפרוס את AlloyDB Omni באשכול Kubernetes. ההנחה היא שאתם מכירים את הפעולות הבסיסיות של Kubernetes.

הוראות להתקנת AlloyDB Omni בסביבת Linux רגילה מפורטות במאמר התקנת AlloyDB Omni.

סקירה כללית

כדי לפרוס את AlloyDB Omni באשכול Kubernetes, צריך להתקין את אופרטור AlloyDB Omni, שהוא תוסף ל-Kubernetes API ש-Google מספקת.

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

תאימות לאופרטור AlloyDB Omni 1.1.0

גרסה 1.1.0 של אופרטור AlloyDB Omni לא תואמת לגרסאות 15.5.3 ו-15.5.4 של AlloyDB Omni. אם אתם משתמשים באחת מהגרסאות האלה של AlloyDB Omni, יכול להיות שתקבלו הודעת שגיאה דומה לזו:

Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3

לפני שמתחילים

צריך שתהיה לכם גישה לדברים הבאים:

  • אשכול Kubernetes, שבו פועלת התוכנה הבאה:

  • הכלי kubectl.

  • helmהכלי לניהול חבילות.

  • ‫Google Cloud CLI. אחרי שמתקינים את ה-CLI של gcloud, צריך לאמת את החשבון ב- Google Cloud באמצעות הפקודה gcloud auth login.

לכל צומת באשכול Kubernetes חייבים להיות:

  • לפחות שני מעבדי x86 או AMD64.
  • זיכרון RAM בנפח 8GB לפחות.
  • גרסת ליבת Linux‏ 4.18 ואילך.
  • קבוצת בקרה v2‏ (cgroup v2) מופעלת.

התקנת אופרטור AlloyDB Omni

כדי להתקין את אופרטור AlloyDB Omni:

  1. מגדירים כמה משתני סביבה:

    export GCS_BUCKET=alloydb-omni-operator
    export HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)
    export OPERATOR_VERSION="${HELM_PATH%%/*}"
  2. מורידים את האופרטור AlloyDB Omni:

    gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursive
  3. מתקינים את אופרטור AlloyDB Omni:

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    $(helm install --help | grep -q -- '--rollback-on-failure' && echo '--rollback-on-failure' || echo '--atomic') \
    --timeout 5m

    אם ההתקנה בוצעה בהצלחה, יוצג הפלט הבא:

    NAME: alloydbomni-operator
    LAST DEPLOYED: CURRENT_TIMESTAMP
    NAMESPACE: alloydb-omni-system
    STATUS: deployed
    REVISION: 1
    TEST SUITE: None
    
  4. כדי לנקות, מוחקים את קובץ ההתקנה של אופרטור AlloyDB Omni שהורד. הקובץ נקרא alloydbomni-operator-VERSION_NUMBER.tgz והוא נמצא בספריית העבודה הנוכחית.

הגדרת האחסון ב-GDC במודל מחובר

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

איך מגדירים את Symcloud Storage כסוג האחסון שמוגדר כברירת מחדל

מידע נוסף על שינוי ברירת המחדל של כל סוגי האחסון האחרים מופיע במאמר שינוי ברירת המחדל של StorageClass.

שלבי ההתאמה של Red Hat OpenShift

אם אתם משתמשים ב-Red Hat OpenShift בגרסה 4.12 ואילך, אתם צריכים לבצע את השלבים הבאים אחרי שהתקנתם את אופרטור AlloyDB Omni ולפני שיצרתם אשכול של מסדי נתונים ב-AlloyDB Omni באשכול Kubernetes. אם לא, אפשר לדלג על השלבים האלה.

  1. כדי להוסיף הרשאות לעדכון של אובייקטים מסוג finalizer של מופע AlloyDB Omni, צריך לערוך את תפקיד האשכול system:controller:statefulset-controller באופן הבא:

    kubectl edit clusterrole system:controller:statefulset-controller
  2. בעורך הטקסט, מוסיפים את השורה הבאה לסוף תפקיד האשכול:

    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - instances/finalizers
      verbs:
      - update
    - apiGroups:
      - alloydbomni.internal.dbadmin.goog
      resources:
      - backuprepositories/finalizers
      verbs:
      - update
    

    ל-StatefulSet controller צריכות להיות הרשאות נוספות כדי לעדכן את ה-finalizers של המכונה שנוספו לתפקיד באשכול, כי ב-Red Hat OpenShift מופעלת OwnerReferencesPermissionEnforcement. בלי הרשאה לעדכן את ה-finalizers של המופע, בקר ה-StatefulSet לא מצליח ליצור את התביעה של נפח אחסון מתמשך (PVC) של מסד הנתונים, ומוצגת הודעת השגיאה הבאה באירועי ה-StatefulSet של מסד הנתונים:

    Warning  FailedCreate  [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers on
    
  3. כדי להוסיף הרשאות לעדכון של פונקציות ה-finalizer של AlloyDB Omni DBInstance, עורכים את התפקיד fleet-manager-role באשכול:

    kubectl edit clusterrole fleet-manager-role
  4. בכלי לעריכת טקסט, מוסיפים את הטקסט הבא בסוף תפקיד האשכול:

    - apiGroups:
      - alloydbomni.dbadmin.goog
      resources:
      - dbinstances/finalizers
      verbs:
      - update
    
  5. מוסיפים את אילוץ הקשר האבטחה anyuid לחשבון השירות default בפרויקט Red Hat OpenShift, באופן הבא:

    oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default
    

    אתם צריכים לאפשר לחשבון השירות default להשתמש במגבלת הקשר האבטחה anyuid, כי ב-Pod של מסד הנתונים, קובץ האתחול (init) של מאגר התמונות מורץ כ-root, והמאגרים האחרים מורצים עם מזהי משתמש ספציפיים. בלי הרשאה להשתמש ב-anyuid, בקר ה-StatefulSet לא מצליח ליצור את ה-PVC של מסד הנתונים, ומופיעה הודעת השגיאה הבאה באירועי ה-StatefulSet של מסד הנתונים:

    Warning  FailedCreate  [...]    unable to validate against any security context constraint
    

יצירת אשכול של מסדי נתונים

אשכול מסדי נתונים של AlloyDB Omni מכיל את כל משאבי האחסון והמחשוב שנדרשים כדי להפעיל שרת AlloyDB Omni, כולל השרת הראשי, כל הרפליקות וכל הנתונים שלכם.

אחרי שמתקינים את אופרטור AlloyDB Omni באשכול Kubernetes, אפשר ליצור אשכול של מסד נתונים של AlloyDB Omni באשכול Kubernetes על ידי החלת מניפסט שדומה לזה:

apiVersion: v1
kind: Secret
metadata:
  name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
  DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
  name: DB_CLUSTER_NAME
spec:
  databaseVersion: "15.7.0"
  primarySpec:
    adminUser:
      passwordRef:
        name: db-pw-DB_CLUSTER_NAME
    resources:
      cpu: CPU_COUNT
      memory: MEMORY_SIZE
      disks:
      - name: DataDisk
        size: DISK_SIZE

מחליפים את מה שכתוב בשדות הבאים:

  • ‫DB_CLUSTER_NAME: השם של אשכול מסד הנתונים הזה, לדוגמה my-db-cluster.

  • ‫ENCODED_PASSWORD: סיסמת ההתחברות למסד הנתונים עבור תפקיד המשתמש שמוגדר כברירת מחדל postgres, בקידוד base64. לדוגמה, Q2hhbmdlTWUxMjM= עבור ChangeMe123.

  • ‫CPU_COUNT: מספר המעבדים שזמינים לכל מכונה של מסד נתונים באשכול מסדי הנתונים הזה.

  • ‫MEMORY_SIZE: כמות הזיכרון לכל מכונה של מסד נתונים באשכול מסדי הנתונים הזה. מומלץ להגדיר את הערך הזה ל-8 גיגה-בייט לכל מעבד. לדוגמה, אם הגדרתם את cpu ל-2 בשלב מוקדם יותר במניפסט, מומלץ להגדיר את memory ל-16Gi.

  • ‫DISK_SIZE: גודל הדיסק לכל מופע של מסד נתונים, לדוגמה 10Gi.

אחרי שמחילים את המניפסט הזה, אשכול Kubernetes מכיל אשכול מסד נתונים של AlloyDB Omni עם ההגדרות שצוינו לזיכרון, למעבד (CPU) ולאחסון. כדי ליצור חיבור בדיקה עם אשכול מסד הנתונים החדש, אפשר לעיין במאמר בנושא חיבור באמצעות psql שהותקן מראש.

למידע נוסף על מניפסטים של Kubernetes ואיך להחיל אותם, ראו ניהול משאבים.

המאמרים הבאים