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

בוחרים גרסה של התיעוד:

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

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

סקירה כללית

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

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

תאימות ל-AlloyDB Omni Operator 1.1.0

גרסה 1.1.0 של AlloyDB Omni Operator לא תואמת לגרסאות 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 צריכים להיות:

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

התקנת AlloyDB Omni Operator

כדי להתקין את AlloyDB Omni Operator, מבצעים את השלבים הבאים:

  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 Operator:

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

    helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \
    --create-namespace \
    --namespace alloydb-omni-system \
    --atomic \
    --timeout 5m

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

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

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

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

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

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

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

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

  1. כדי להוסיף הרשאות לעדכון של סופיות המופעים של 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. בלי הרשאה לעדכן את פעולות הניקוי של המופע, בקר ה-StatefulSet לא מצליח ליצור את התביעה של נפח אחסון מתמשך (PVC) של מסד הנתונים, ומוצגת הודעת השגיאה הבאה באירועי ה-StatefulSet של מסד הנתונים:

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

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

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

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

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

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

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

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

אחרי שמתקינים את AlloyDB Omni Operator באשכול 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.5.5"
  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 עם הגדרות הזיכרון, המעבד והאחסון שצוינו. כדי ליצור חיבור בדיקה עם אשכול מסד הנתונים החדש, אפשר לעיין במאמר בנושא חיבור באמצעות psql שהותקן מראש.

מידע נוסף על מניפסטים של Kubernetes ועל אופן היישום שלהם זמין במאמר בנושא ניהול משאבים.

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