הפעלה והתחברות ל-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

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

הפסקת 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`: the name of this database cluster—for example, `my-db-cluster`.
*   `DB_CLUSTER_NAMESPACE` (Optional): the namespace where you created this database cluster—for example, `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 נפרד באותו אשכול

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

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

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

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

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

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

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

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

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

קובץ המניפסט הבא מראה איך להגדיר פוד שמתקין את תמונת PostgreSQL הרשמית, שכוללת את לקוח שורת הפקודה psql. בדוגמה הזו מניחים שלא ציינתם הגדרת סוד TLS במניפסט שמגדיר את אשכול מסד הנתונים. לכן, אופרטור 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.3.0"
      primarySpec:
        port: 6789
        adminUser:
          passwordRef:
            name: db-pw-dbcluster-sample
        resources:
          memory: 5Gi
          cpu: 1
          disks:
           - name: DataDisk
             size: 10Gi
    

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