התקנה של AlloyDB Omni באמצעות כלי לתזמור קונטיינרים

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

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

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

סקירה כללית

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

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

תמונת הבסיס

החל מגרסה 1.5.0, קובצי האימג' של Kubernetes לאופרטור AlloyDB Omni מבוססים על Universal Base Image (UBI) 9 של Red Hat. המעבר הזה משפר את האבטחה, העקביות והתאימות של הפריסות.

הפניות לתמונות של סיכום SHA

כדי למנוע התקפות על שרשרת האספקה ולעמוד בדרישות של OpenShift Certification, אופרטור AlloyDB Omni משתמש בתקצירי SHA-256 במקום בתגי גרסאות לכל ההפניות לקובצי אימג' של קונטיינרים.

  • שדרוגים אוטומטיים: אופרטור AlloyDB Omni משתמש ב-ImageCatalog פנימי כדי לנהל את התקצירים האלה ולהבטיח החזרות אמינות של מישור הנתונים במהלך שדרוגים שנכשלו.

  • הפעלה: כברירת מחדל, ההפניות לתקציר מופעלות בחבילה של OpenShift Certified. משתמשים בחבילות של OLM או Helm יכולים להפעיל אותן ידנית על ידי הגדרת משתנה הסביבה ENABLE_DIGEST_IMAGE_REFS לערך true באמצעות הגדרת המינוי ל-OLM או הערך enableDigestImageRefs בתרשים Helm.

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

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

בוחרים אפשרות להורדה או להתקנה

כשמנהלים עומסי עבודה באשכול Kubernetes גנרי, אפשר להשתמש ב-Helm או ב-OLM. ‫Helm הוא מנהל חבילות אוניברסלי שמשתמש בתרשימי Helm כדי להתקין כל עומס עבודה, כולל אופרטורים, בכל הגרסאות של Kubernetes. ‫OLM – האפשרות הסטנדרטית והמועדפת בפלטפורמות של OpenShift – מנהל את מחזורי החיים של האופרטורים באמצעות חבילות OLM ייעודיות.

בהתאם לסביבה ולכלים שלכם, בחרו באחת משיטות הפריסה הבאות:

מדיה מיקומי הורדה ומדריכי התקנה פריסה ב
אופרטור AlloyDB Omni עם תרשים Helm התקנת AlloyDB Omni ב-Kubernetes סביבת קונטיינרים של Kubernetes שאתם מביאים בעצמכם – לדוגמה, מקומית, עננים ציבוריים, GKE,‏ Amazon EKS ו-Azure AKS.

טיפ: אם כלי הפיתוח הרציף (CD) משולבים עם Helm, כדאי להשתמש באפשרות הזו.
אופרטור AlloyDB Omni עם חבילת OLM OperatorHub.io סביבת קונטיינרים של Kubernetes שאתם מביאים בעצמכם – לדוגמה, מקומית, עננים ציבוריים, Google Kubernetes Engine,‏ Amazon EKS ו-Azure AKS.

כדי להשתמש בחבילת OLM, צריך להתקין את OLM באשכול Kubernetes לפני שמתקינים את האופרטור. מידע נוסף זמין בכתובת olm.operatorframework.io.

טיפ: אם כלי הפיתוח הרציף (CD) שלכם כבר משתמשים ב-OLM, בחרו באפשרות הזו.
OpenShift Operator with OLM Bundle מסוף האינטרנט של Openshift Container Platform סביבת OpenShift

ב-OpenShift, גרסה של Kubernetes, משתמשים ב-OLM כשיטה הרגילה והמובנית לאריזה ולפריסה של אופרטורים.

גישה מאומתת

מוודאים שיש לכם גישה לפריטים הבאים:

עמידה בדרישות החומרה והתוכנה

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

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

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

אם אתם רוצים לפרוס את AlloyDB Omni בסביבת הייצור, קראו את המאמר הפעלת AlloyDB Omni בסביבת ייצור.

אתם יכולים להתקין את אופרטור AlloyDB Omni בשיטות שונות, כולל Helm ו-Operator Lifecycle Manager ‏ (OLM).

הגה

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

  1. מתקינים את אופרטור AlloyDB Omni ממרשם ה-OCI:
    helm install alloydbomni-operator oci://gcr.io/alloydb-omni/alloydbomni-operator \
    --version 1.9.0 \
    --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
    

OLM

כדי להתקין את אופרטור AlloyDB Omni באמצעות Operator Lifecycle Manager:

  1. נכנסים לדף AlloyDB Omni Operator.

  2. לוחצים על התקנה. אם עדיין לא עשיתם את זה, בצעו את ההוראות להתקנת האופרטור OLM וקטלוג OperatorHub.io בלבד.

  3. יוצרים את מרחב השמות alloydb-omni-system אם הוא עדיין לא קיים.

    kubectl create ns alloydb-omni-system
    
  4. מגדירים את OLM OperatorGroup כדי לוודא שהאופרטור מוגדר ברמת האשכול.

    kubectl apply -f - <<EOF
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: operator-sdk-og
      namespace: alloydb-omni-system
    spec:
      upgradeStrategy: Default
    EOF
    
  5. מתקינים את האופרטור באמצעות משאב של מינוי ל-OLM.

    kubectl apply -f - <<EOF
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: my-alloydb-omni-operator
      namespace: alloydb-omni-system
    spec:
      channel: stable
      name: alloydb-omni-operator
      source: operatorhubio-catalog
      sourceNamespace: olm
    EOF
    
  6. מתקינים את אישור ברירת המחדל ClusterIssuer. השלב הזה הוא אופציונלי אם משתמשים במנפיקי אישורים בהתאמה אישית.

    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: alloydbomni-selfsigned-cluster-issuer
    spec:
      selfSigned: {}
    EOF
    

OLM

כדי להתקין את אופרטור AlloyDB Omni בסביבת Red Hat OpenShift באמצעות OLM:

  1. נכנסים למסוף האינטרנט של Red Hat OpenShift.
  2. למשתמשים במצב אופליין או במצב מנותק, צריך לשקף באופן ידני את קובצי האימג' הנדרשים למאגר הפרטי באמצעות כלים ששומרים על תקצירי SHA, כמו oc image mirror. צריך להגדיר ImageDigestMirrorSet כדי להפנות בקשות לשליפת קובצי אימג' מהמאגר הציבורי של gcr.io למאגר הפרטי שלכם. כך מוודאים שאופרטור AlloyDB Omni יכול לשלוף את קובצי האימג' הנדרשים באמצעות תקצירי SHA256 שלא ניתנים לשינוי.
  3. במסוף האינטרנט של OpenShift, עוברים אל Operators > OperatorHub. אופרטור AlloyDB Omni מופיע בקטלוגים Certified ו-Community.

  4. בחלונית של אופרטור AlloyDB Omni, לוחצים על Install.

  5. מתקינים את אישור ברירת המחדל ClusterIssuer באמצעות הפקודות הבאות: השלב הזה הוא אופציונלי אם משתמשים במנפיקי אישורים בהתאמה אישית.

    kubectl apply -f - <<EOF
    apiVersion: cert-manager.io/v1
    kind: ClusterIssuer
    metadata:
      name: alloydbomni-selfsigned-cluster-issuer
    spec:
      selfSigned: {}
    EOF
    

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

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

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

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

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

אשכול מסדי נתונים של 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: "18.4.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: כמות הזיכרון לכל מכונה של מסד נתונים באשכול מסדי הנתונים הזה. מומלץ להגדיר את הערך הזה ל-8GB לכל מעבד (CPU). לדוגמה, אם הגדרתם את cpu ל-2 בשלב מוקדם יותר במניפסט, מומלץ להגדיר את memory ל-16Gi.

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

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

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

סודות לשליפת תמונות

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

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

spec:
  primarySpec:
    serviceAccount:
      imagePullSecrets:
      - name: PULL_SECRET_NAME

מחליפים את PULL_SECRET_NAME בשם של הסוד לשליפת האימג'.

שינוי קנה המידה של אשכול מסדי נתונים

כדי לשנות את משאבי המחשוב של אשכול מסד הנתונים, מעדכנים את הערכים של cpu ו-memory במניפסט של db-cluster.yaml ומחילים את השינויים. תהליך ההתאמה לעומס תלוי בבחירה שלכם: התאמה רגילה לעומס או התאמה לעומס עם זמן השבתה קצר.

שינוי גודל רגיל

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

שינוי קנה מידה עם זמן השבתה קצר

באשכולות של זמינות גבוהה (HA) עם לפחות המתנה אחת, אתם יכולים לצמצם את זמן ההשבתה במהלך שינוי קנה המידה באמצעות אסטרטגיית ההכנה וההחלפה של תחזוקה עם זמן השבתה קצר (LDTM). בשיטה הזו, שינויי ההתאמה לעומס מוחלים קודם על המכונה במצב המתנה, מתבצעת החלפה מהירה ואז השינויים מוחלים על המכונה הראשית המקורית. אפשר להגדיל או להקטין את התקציב באמצעות שיטת LDTM.

כדי להפעיל ולעקוב אחרי שינוי קנה מידה עם זמן השבתה קצר, פועלים לפי השלבים הבאים:

  1. הפעלת התאמה לעומס עם זמן השבתה קצר. מוסיפים את ההערה enableLDTM לאשכול מסד הנתונים:

    kubectl annotate dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME dbcluster.dbadmin.goog/enableLDTM=true
    

    מחליפים את DB_CLUSTER_NAME בשם של אשכול מסד הנתונים.

  2. מחילים את מפרטי ההתאמה המעודכנים. מעדכנים את הערכים של cpu ו-memory בקטע primarySpec.resources במניפסט, ומחילים את השינויים:

    kubectl apply -f db-cluster.yaml
    
  3. עוקבים אחרי תהליך ההתאמה לעומס. כדי לעקוב אחרי הפעולה, בודקים את התנאי של הסטטוס LDTMScalingInProgress:

    kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -o yaml | yq '.status.conditions[] | select(.type == "LDTMScalingInProgress")'
    

    מחליפים את DB_CLUSTER_NAME בשם של אשכול מסד הנתונים.

    בזמן שהתהליך מתבצע, הסטטוס הוא true. בסיום ההתאמה, הסטטוס של התנאי משתנה ל-false.

מגבלות

  • אפשר להגדיל את ה-LDTM רק באשכולות HA עם לפחות המתנה אחת.
  • אי אפשר לבצע שתי פעולות LDTM בו-זמנית. לדוגמה, אתם יכולים להשתמש ב-LDTM כדי לשנות את קנה המידה של אשכולות מסדי נתונים או כדי לשדרג גרסאות משניות, אבל לא את שניהם בו-זמנית.
  • אם פעולת ההתאמה לעומס (scaling) של LDTM נכשלת, צריך לבצע החזרה ידנית למצב הקודם.

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