בדף הזה מובאת סקירה כללית של AlloyDB Omni Kubernetes Operator, עם הוראות לשימוש בו כדי לפרוס את 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 שפועלת בו התוכנה הבאה:
- Kubernetes גרסה 1.21 ואילך.
- שירות
cert-manager, שהותקן באמצעות 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, מבצעים את השלבים הבאים:
מגדירים כמה משתני סביבה:
export GCS_BUCKET=alloydb-omni-operatorexport HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)export OPERATOR_VERSION="${HELM_PATH%%/*}"מורידים את אופרטור AlloyDB Omni:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursiveמתקינים את אופרטור 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כדי לנקות, מוחקים את קובץ ההתקנה שהורד של אופרטור AlloyDB Omni. שם הקובץ הוא
alloydbomni-operator-VERSION_NUMBER.tgzוהוא נמצא בספריית העבודה הנוכחית.
הגדרת אחסון ב-GDC במודל מחובר
כדי להתקין את אופרטור AlloyDB Omni ב-GDC במודל מחובר, צריך לבצע שלבים נוספים להגדרת האחסון כי באשכולות GDC במודל מחובר לא מוגדרת מחלקת אחסון כברירת מחדל. צריך להגדיר סוג אחסון כברירת מחדל לפני שיוצרים אשכול מסד נתונים של AlloyDB Omni.
מידע נוסף על הגדרת Symcloud Storage כסוג האחסון שמוגדר כברירת מחדל מופיע במאמר הגדרת Symcloud Storage כסוג האחסון שמוגדר כברירת מחדל.
מידע נוסף על שינוי ברירת המחדל של כל סוגי האחסון האחרים מופיע במאמר שינוי ברירת המחדל של StorageClass.
שלבי התאמה ב-Red Hat OpenShift
אם אתם משתמשים ב-Red Hat OpenShift 4.12 ואילך, אתם צריכים לבצע את השלבים הבאים אחרי ההתקנה של אופרטור AlloyDB Omni ולפני יצירת אשכול מסד נתונים של AlloyDB Omni באשכול Kubernetes. אם לא, אפשר לדלג על השלבים האלה.
כדי להוסיף הרשאות לעדכון של אובייקטים מסוג finalizer של מופע AlloyDB Omni, צריך לערוך את תפקיד האשכול
system:controller:statefulset-controllerבאופן הבא:kubectl edit clusterrole system:controller:statefulset-controllerבעורך הטקסט, מוסיפים את השורה הבאה לסוף תפקיד האשכול:
- 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כדי להוסיף הרשאות לעדכון של פעולות סיום (finalizers) של DBInstance ב-AlloyDB Omni, צריך לערוך את תפקיד האשכול
fleet-manager-role:kubectl edit clusterrole fleet-manager-roleבעורך הטקסט, מוסיפים את השורה הבאה לסוף תפקיד האשכול:
- apiGroups: - alloydbomni.dbadmin.goog resources: - dbinstances/finalizers verbs: - updateמוסיפים את ההגבלה
anyuidsecurity context לחשבון השירות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.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 ועל אופן היישום שלהם זמין במאמר בנושא ניהול משאבים.