הפעלה והתחברות ל-AlloyDB Omni

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

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

ההוראות הספציפיות ל-Kubernetes בדף הזה מבוססות על היכרות בסיסית עם הפעלת Kubernetes.

הפעלת AlloyDB Omni

התהליכים שבהם משתמשים כדי להריץ את AlloyDB Omni תלויים בשאלה אם מריצים את AlloyDB Omni באשכול Kubernetes.

הפעלת AlloyDB Omni

כדי להפעיל אשכול מסד נתונים שהופסק, מגדירים את isStopped ל-false בהגדרת המניפסט שלו.

אפשר לעשות את זה בשורת הפקודה באמצעות kubectl:

  kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME \
  -p '{"spec":{"primarySpec":{"isStopped":false}}}' --type=merge  -n DB_CLUSTER_NAMESPACE

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

  • ‫DB_CLUSTER_NAME: השם של אשכול מסד הנתונים הזה, לדוגמה my-db-cluster.
  • ‫DB_CLUSTER_NAMESPACE (אופציונלי): מרחב השמות שבו יצרתם את אשכול מסד הנתונים, לדוגמה my-db-cluster-namespace.

בדיקת הסטטוס של AlloyDB Omni

kubectl get dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -n DB_CLUSTER_NAMESPACE

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

הפלט אמור להיראות כך:

NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady

עצירת AlloyDB Omni

כדי לעצור אשכול של מסד נתונים, מגדירים את isStopped ל-true בהגדרת המניפסט שלו.

אפשר לעשות את זה בשורת הפקודה באמצעות kubectl:

  kubectl patch dbclusters.alloydbomni.dbadmin.goog DB_CLUSTER_NAME -p '{"spec":{"primarySpec":{"isStopped":true}}}' --type=merge -n DB_CLUSTER_NAMESPACE

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

  • ‫DB_CLUSTER_NAME: השם של אשכול מסד הנתונים הזה, לדוגמה my-db-cluster.
  • ‫DB_CLUSTER_NAMESPACE (אופציונלי): מרחב השמות שבו יצרתם את אשכול מסד הנתונים, לדוגמה my-db-cluster-namespace.

התחברות ל-AlloyDB Omni שפועל ב-Kubernetes

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

קישור באמצעות psql שמותקן מראש

אתם יכולים לבצע חיבור לבדיקה באמצעות לקוח psql שכבר מותקן ב-pod שבו פועל מסד הנתונים.

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

export DBPOD=`kubectl get pod --selector=alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -n DB_CLUSTER_NAMESPACE -o jsonpath='{.items[0].metadata.name}'`
kubectl exec -ti $DBPOD -n DB_CLUSTER_NAMESPACE -c database -- psql -h localhost -U postgres

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

אם יצרתם את אשכול מסד הנתונים במרחב השמות שמוגדר כברירת מחדל, אתם יכולים לדלג על הגדרת DB_CLUSTER_NAMESPACE.

אחרי שמזינים את הפקודה, שרת מסד הנתונים מבקש סיסמה. מזינים את הסיסמה שסיפקתם את הגרסה שלה בקידוד Base64 כסוד של Kubernetes כשיצרתם את אשכול מסד הנתונים. לדוגמה, אם יצרתם את אשכול מסד הנתונים עם הסוד Q2hhbmdlTWUxMjM=, סיסמת ההתחברות שבה צריך להשתמש כאן היא ChangeMe123.

אופרטור AlloyDB Omni מחבר אתכם לשרת בתפקיד המשתמש postgres ומציג את שורת הפקודה postgres=#. עכשיו אפשר להריץ פקודות של psql ושאילתות SQL.

כדי לצאת מ-psql, מריצים את הפקודה \q.

התחברות מ-Pod נפרד באותו אשכול

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

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

כדי ליצור חיבורים מאובטחים למסד הנתונים באמצעות TLS:

  • במניפסט שמגדיר את ה-Pod שיוצר את החיבורים של הלקוח, מציינים סוד של אישור TLS. הוא יכול להיות אחד מהבאים:

    • סוד של אישור TLS שכבר יצרתם באשכול Kubernetes. למידע נוסף על עבודה עם סודות של אישורי TLS ב-Kubernetes, ראו סודות TLS.

    • סוד ברירת המחדל של האישור שנוצר על ידי מפעיל AlloyDB Omni Kubernetes, שנקרא DB_CLUSTER_NAME-ca-cert, אם לא מציינים סוד TLS כחלק מהמניפסט של אשכול מסד הנתונים.

  • בכל פעם ש-Pod הלקוח מתחבר לאשכול מסד הנתונים, צריך להגדיר את משתני הסביבה הבאים לפני יצירת החיבור:

    • מגדירים את PGSSLMODE להיות "verify-ca".

    • מגדירים את PGSSLROOTCERT לנתיב המוחלט של קובץ ה-ca.crt הרלוונטי במערכת הקבצים של pod הלקוח.

במניפסט לדוגמה הבא מוצג איך להגדיר pod שמתקין את קובץ האימג' הרשמי של PostgreSQL, שכולל את לקוח שורת הפקודה psql. בדוגמה הזו מניחים שלא ציינתם הגדרת סוד TLS במניפסט שמגדיר את אשכול מסד הנתונים. לכן, ה-operator של AlloyDB Omni Kubernetes משתמש בסוד ברירת המחדל של TLS, שנקרא dbs-al-cert-DB_CLUSTER_NAME.

apiVersion: v1
kind: Pod
metadata:
  name: postgres
  namespace: DB_CLUSTER_NAMESPACE
spec:
  containers:
  - image: "docker.io/library/postgres:latest"
    command:
      - "sleep"
      - "604800"
    imagePullPolicy: IfNotPresent
    name: db-client
    volumeMounts:
    - name: ca-cert
      mountPath: "/DB_CLUSTER_NAME-ca-cert"
      readOnly: true
  volumes:
  - name: ca-cert
    secret:
      secretName: dbs-al-cert-DB_CLUSTER_NAME
  restartPolicy: Always

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

  • ‫DB_CLUSTER_NAME: השם של אשכול מסד הנתונים. זה אותו שם של אשכול מסד הנתונים שהצהרתם עליו כשיצרתם אותו.
  • ‫DB_CLUSTER_NAMESPACE (אופציונלי): מרחב השמות שבו יצרתם את אשכול מסד הנתונים.

עכשיו אפשר להשתמש ב-Pod כדי להתחבר באופן מאובטח לאשכול מסד הנתונים, לפי השלבים הבאים:

  1. מאתרים את כתובת ה-IP הפנימית של אשכול מסד הנתונים:

    kubectl get dbclusters.alloydbomni.dbadmin.goog -n DB_CLUSTER_NAMESPACE

    הפלט אמור להיראות כך:

    NAME              PRIMARYENDPOINT   PRIMARYPHASE   DBCLUSTERPHASE
    DB_CLUSTER_NAME   IP_ADDRESS        Ready          DBClusterReady
    

    שימו לב לערך של IP_ADDRESS, כי תצטרכו להשתמש בו בשלב הבא.

  2. משתמשים ב-psql כדי להתחבר לאשכול מה-pod של הלקוח, ומגדירים את משתני הסביבה שמאפשרים ודורשים אימות של אישור ה-TLS:

    kubectl exec -it postgres -n DB_CLUSTER_NAMESPACE -- bash
    PGSSLMODE="verify-ca" PGSSLROOTCERT=/DB_CLUSTER_NAME-ca-cert/ca.crt psql -h IP_ADDRESS -p 5432 -U postgres -d postgres

    מחליפים את IP_ADDRESS בכתובת ה-IP הפנימית שקבעתם בשלב הקודם.

  3. זה שינוי אופציונלי. התאמה אישית של היציאה שבה מסד הנתונים מקבל בקשות לחיבורים נכנסים. כדי לשנות את יציאת ברירת המחדל 5432, משתמשים במאפיין port. הערכים צריכים להיות בין 1024 ל-65535.

    בדוגמה הבאה מוצגת ההגדרה של משאב DBCluster ב-AlloyDB Omni כשמתאימים אישית את יציאת מסד הנתונים.

    apiVersion: v1
    kind: Secret
    metadata:
      name: db-pw-dbcluster-sample
    type: Opaque
    data:
      dbcluster-sample: "Q2hhbmdlTWUxMjM=" # Password is ChangeMe123
    ---
    apiVersion: alloydbomni.dbadmin.goog/v1
    kind: DBCluster
    metadata:
      name: dbcluster-sample
    spec:
      databaseVersion: "18.4.0"
      primarySpec:
        port: 6789
        adminUser:
          passwordRef:
            name: db-pw-dbcluster-sample
        resources:
          memory: 5Gi
          cpu: 1
          disks:
           - name: DataDisk
             size: 10Gi
    

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