התחברות ל-Cloud SQL ל-PostgreSQL מ-Google Kubernetes Engine

במאמר הזה נסביר איך לפרוס אפליקציה לדוגמה ב-Google Kubernetes Engine ‏ (GKE) שמחובר למופע PostgreSQL באמצעות מסוף Cloud de Confiance ואפליקציית לקוח. המשאבים שנוצרו במדריך למתחילים הזה עולים בדרך כלל פחות מדולר אחד (USD), בהנחה שמשלימים את השלבים, כולל הניקוי, בזמן.

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

  1. In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that you have the permissions required to complete this guide.

  3. Verify that billing is enabled for your Cloud de Confiance project.

  4. Enable the Artifact Registry, Cloud Build, Cloud SQL Admin, Compute Engine, Kubernetes Engine, Service Networking APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. מתקינים את ה-CLI של gcloud.

  6. הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

    איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

התפקידים הנדרשים

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

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

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

הגדרת Cloud SQL

יצירת מכונה של Cloud SQL

יצירת מסד נתונים

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

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. בוחרים באפשרות quickstart-instance.
  3. בתפריט הניווט SQL, בוחרים באפשרות Databases (מסדי נתונים).
  4. לוחצים על  יצירת מסד נתונים.
    1. בשדה שם מסד הנתונים בתיבת הדו-שיח מסד נתונים חדש, מזינים quickstart-db.
    2. לוחצים על יצירה.

gcloud

מריצים את הפקודה gcloud sql databases create כדי ליצור מסד נתונים.

gcloud sql databases create quickstart-db --instance=quickstart-instance

יצירת משתמש

המסוף

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. כדי לפתוח את הדף סקירה כללית של מכונה, לוחצים על שם המכונה.
  3. בתפריט הניווט של SQL, בוחרים באפשרות משתמשים.
  4. לוחצים על הוספת חשבון משתמש.
  5. בדף Add a user account to instance instance_name, מוסיפים את הפרטים הבאים:
    • שם משתמש: מוגדר לערך quickstart-user
    • סיסמה: מציינים סיסמה למשתמש במסד הנתונים. חשוב לשמור את הערך הזה כי תצטרכו אותו בשלב מאוחר יותר במדריך הזה למתחילים.
  6. לוחצים על הוספה.

gcloud

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

מריצים את הפקודה gcloud sql users create כדי ליצור את המשתמש.

gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=DB_PASS

מגבלות האורך של שמות המשתמשים ב-Cloud SQL זהות לאלה של PostgreSQL מקומי.

יצירת אשכול GKE

המסוף

  1. במסוף Cloud de Confiance , נכנסים לדף Google Kubernetes Engine.

    מעבר אל Google Kubernetes Engine

  2. לוחצים על יצירה.
  3. לוחצים על Configure (הגדרה) עבור GKE Autopilot.
  4. בשדה Name (שם), מציינים את שם האשכול כ-gke-cloud-sql-quickstart.
  5. לוחצים על יצירה.

gcloud

מריצים את הפקודה gcloud container clusters create-auto כדי ליצור את האשכול.

gcloud container clusters create-auto gke-cloud-sql-quickstart \
    --region us-central1

שיבוט אפליקציה לדוגמה של Cloud SQL מ-GitHub באמצעות Cloud Shell

אחרי שיש לכם מופע Cloud SQL, מסד נתונים ואשכול GKE, אתם יכולים לשכפל ולהגדיר אפליקציה לדוגמה שמתחברת למופע Cloud SQL. האפליקציה לדוגמה מאוחסנת ב-GitHub. כדי לבצע את השלבים הבאים במדריך למתחילים הזה, צריך להשתמש ב-Cloud Shell, ב-gcloud וב-kubectl. הכלים gcloud ו-kubectl מותקנים מראש ב-Cloud Shell.

המשך

  1. ב-Cloud Shell Editor, פותחים את קוד המקור של אפליקציית הדוגמה.
    פתיחת Cloud Shell Editor
  2. בתיבת הדו-שיח Open in Cloud Shell, לוחצים על אישור כדי להוריד את קוד האפליקציה לדוגמה ולפתוח את ספריית האפליקציה לדוגמה ב-Cloud Shell Editor.

Java

  1. ב-Cloud Shell Editor, פותחים את קוד המקור של אפליקציית הדוגמה.
    פתיחת Cloud Shell Editor
  2. בתיבת הדו-שיח Open in Cloud Shell, לוחצים על אישור כדי להוריד את קוד האפליקציה לדוגמה ולפתוח את ספריית האפליקציה לדוגמה ב-Cloud Shell Editor.

Node.js

  1. ב-Cloud Shell Editor, פותחים את קוד המקור של אפליקציית הדוגמה.
    פתיחת Cloud Shell Editor
  2. בתיבת הדו-שיח Open in Cloud Shell, לוחצים על אישור כדי להוריד את קוד האפליקציה לדוגמה ולפתוח את ספריית האפליקציה לדוגמה ב-Cloud Shell Editor.

Python

  1. ב-Cloud Shell Editor, פותחים את קוד המקור של אפליקציית הדוגמה.
    פתיחת Cloud Shell Editor
  2. בתיבת הדו-שיח Open in Cloud Shell, לוחצים על אישור כדי להוריד את קוד האפליקציה לדוגמה ולפתוח את ספריית האפליקציה לדוגמה ב-Cloud Shell Editor.

הפעלת אשכול GKE

מפעילים את אשכול GKE שיצרתם כרגע כאשכול ברירת המחדל שישמש את הפקודות שנותרו במדריך הזה.

מריצים את הפקודה gcloud container clusters get-credentials באופן הבא כדי להפעיל את אשכול GKE.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \
  --region us-central1

הגדרה של חשבון שירות

יוצרים ומגדירים Cloud de Confiance by S3NS חשבון שירות לשימוש ב-GKE, כך שיהיה לו התפקיד Cloud SQL Client עם הרשאות להתחבר ל-Cloud SQL.
  1. כדי ליצור חשבון שירות חדש, מריצים את הפקודה gcloud iam service-accounts create באופן הבא:
    gcloud iam service-accounts create gke-quickstart-service-account \
      --display-name="GKE Quickstart Service Account"
  2. מריצים את הפקודה gcloud projects add-iam-policy-binding באופן הבא כדי להוסיף את התפקיד Cloud SQL Client לחשבון השירות Cloud de Confiance by S3NS שזה עתה יצרתם. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.s3ns.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. אפליקציית הדוגמה משתמשת ברישום ביומן, לכן מריצים את הפקודה gcloud projects add-iam-policy-binding באופן הבא כדי להוסיף את התפקיד Log Writer לחשבון השירות Cloud de Confiance by S3NS שיצרתם. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.s3ns.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  4. חשבון השירות צריך להיות מסוגל לשלוף תמונות ממאגר artifactory, לכן מריצים את הפקודה
    gcloud projects add-iam-policy-binding באופן הבא כדי להוסיף את התפקיד Artifact Registry Reader לחשבון השירות. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.s3ns.iam.gserviceaccount.com" \
      --role="roles/artifactregistry.reader"
יוצרים חשבון שירות של Kubernetes שמוגדרת לו גישה ל-Cloud SQL על ידי קישור שלו לחשבון השירות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE. Cloud de Confiance by S3NS
  1. יוצרים חשבון שירות ב-Kubernetes.
    1. מעדכנים את הקובץ service-account.yaml ב-Cloud Shell Editor. מחליפים את <YOUR-KSA-NAME> ב-ksa-cloud-sql.
    2. מריצים את הפקודה kubectl apply ב-Cloud Shell באופן הבא:
      kubectl apply -f service-account.yaml
  2. מריצים את הפקודה gcloud iam service-accounts add-iam-policy-binding באופן הבא כדי להפעיל את הקישור של חשבון השירות Cloud de Confiance by S3NS וחשבון השירות של Kubernetes ל-IAM. מחליפים את הפרטים הבאים:
    • YOUR_PROJECT_ID במזהה הפרויקט.
    • YOUR_K8S_NAMESPACE עם default, שהוא מרחב השמות שמוגדר כברירת מחדל לאשכולות שנוצרו ב-GKE.
    • YOUR_KSA_NAME עם ksa-cloud-sql.
    gcloud iam service-accounts add-iam-policy-binding \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:YOUR_PROJECT_ID.s3ns.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \
      gke-quickstart-service-account@YOUR_PROJECT_ID.s3ns.iam.gserviceaccount.com
  3. מריצים את הפקודה kubectl annotate באופן הבא כדי להוסיף הערה לחשבון השירות של Kubernetes עם קישור IAM. מחליפים את הפרטים הבאים:
    • YOUR_KSA_NAME עם ksa-cloud-sql.
    • YOUR_PROJECT_ID במזהה הפרויקט.
    kubectl annotate serviceaccount \
      YOUR_KSA_NAME  \
      iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.s3ns.iam.gserviceaccount.com

הגדרת סודות

מריצים את הפקודה kubectl create secret generic באופן הבא כדי ליצור סודות של Kubernetes עבור מסד הנתונים, המשתמש והסיסמה של המשתמש, שישמשו את אפליקציית הדוגמה. הערכים של כל סוד מבוססים על הערכים שצוינו בשלבים הקודמים של המדריך הזה. מחליפים את DB_PASS בסיסמה של quickstart-user שיצרתם בשלב הקודם יצירת משתמש במדריך להתחלה מהירה.

kubectl create secret generic gke-cloud-sql-secrets \
  --from-literal=database=quickstart-db \
  --from-literal=username=quickstart-user \
  --from-literal=password=DB_PASS

פיתוח אפליקציה לדוגמה

המשך

  1. חוזרים אל Cloud Shell Editor ולוחצים על Open Terminal כדי לפתוח את שורת הפקודה של Cloud Shell.
  2. בשורת הפקודה של Cloud Shell, מריצים את הפקודה הבאה gcloud artifacts repositories create כדי ליצור מאגר ב-Artifact Registry בשם gke-cloud-sql-repo באותו אזור שבו נמצא האשכול. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  3. משנים את הספריות למיקום שבו שיכפלתם את אפליקציית הדוגמה של Cloud SQL מ-GitHub. הספרייה של האפליקציה לדוגמה מכילה Dockerfile לאפליקציה לדוגמה. לדוגמה, כדי לעבור לספרייה של האפליקציה לדוגמה, אפשר להריץ פקודה כמו הבאה:
    cd ~/cloudshell_open/golang-samples/cloudsql/postgres/database-sql
      
  4. מריצים את הפקודה gcloud builds submit באופן הבא כדי ליצור קונטיינר Docker ולפרסם אותו ב-Artifact Registry. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Java

  1. חוזרים אל Cloud Shell Editor ולוחצים על Open Terminal כדי לפתוח את שורת הפקודה של Cloud Shell.
  2. בשורת הפקודה של Cloud Shell, מריצים את הפקודה הבאה gcloud artifacts repositories create כדי ליצור מאגר ב-Artifact Registry בשם gke-cloud-sql-repo באותו אזור שבו נמצא האשכול. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  3. משנים את הספריות למיקום שבו שיכפלתם את אפליקציית הדוגמה של Cloud SQL מ-GitHub. הספרייה של האפליקציה לדוגמה מכילה pom.xml לאפליקציה לדוגמה. לדוגמה, כדי לעבור לספרייה של האפליקציה לדוגמה, אפשר להריץ פקודה כמו הבאה:
    cd ~/cloudshell_open/java-docs-samples/cloud-sql/postgres/servlet
      
  4. מריצים את הפקודה mvn באופן הבא כדי ליצור קונטיינר Docker ולפרסם אותו ב-Artifact Registry. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
      -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \
      -DskipTests -Djib.to.credHelper=gcloud

Node.js

  1. חוזרים אל Cloud Shell Editor ולוחצים על Open Terminal כדי לפתוח את שורת הפקודה של Cloud Shell.
  2. בשורת הפקודה של Cloud Shell, מריצים את הפקודה הבאה gcloud artifacts repositories create כדי ליצור מאגר ב-Artifact Registry בשם gke-cloud-sql-repo באותו אזור שבו נמצא האשכול. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  3. משנים את הספריות למיקום שבו שיכפלתם את אפליקציית הדוגמה של Cloud SQL מ-GitHub. הספרייה של האפליקציה לדוגמה מכילה Dockerfile לאפליקציה לדוגמה. לדוגמה, כדי לעבור לספרייה של האפליקציה לדוגמה, אפשר להריץ פקודה כמו הבאה:
    cd ~/cloudshell_open/nodejs-docs-samples/cloud-sql/postgres/knex
      
  4. מריצים את הפקודה gcloud builds submit באופן הבא כדי ליצור קונטיינר Docker ולפרסם אותו ב-Artifact Registry. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Python

  1. חוזרים אל Cloud Shell Editor ולוחצים על Open Terminal כדי לפתוח את שורת הפקודה של Cloud Shell.
  2. בשורת הפקודה של Cloud Shell, מריצים את הפקודה הבאה gcloud artifacts repositories create כדי ליצור מאגר ב-Artifact Registry בשם gke-cloud-sql-repo באותו אזור שבו נמצא האשכול. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  3. משנים את הספריות למיקום שבו שיכפלתם את אפליקציית הדוגמה של Cloud SQL מ-GitHub. הספרייה של האפליקציה לדוגמה מכילה Dockerfile לאפליקציה לדוגמה. לדוגמה, כדי לעבור לספרייה של האפליקציה לדוגמה, אפשר להריץ פקודה כמו הבאה:
    cd ~/cloudshell_open/python-docs-samples/cloud-sql/postgres/sqlalchemy
      
  4. מריצים את הפקודה gcloud builds submit באופן הבא כדי ליצור קונטיינר Docker ולפרסם אותו ב-Artifact Registry. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

פריסת האפליקציה לדוגמה

הסרת המשאבים

כדי לא לצבור חיובים לחשבון Cloud de Confiance על המשאבים שבהם השתמשתם בדף הזה, פועלים לפי השלבים הבאים:

  1. נכנסים לדף Cloud SQL Instances במסוף Cloud de Confiance .

    כניסה לדף Cloud SQL Instances

  2. בוחרים את מופע quickstart-instance כדי לפתוח את הדף פרטי המופע.
  3. בסרגל הסמלים בחלק העליון של הדף, לוחצים על מחיקה.
  4. בתיבת הדו-שיח Delete instance (מחיקת מכונה), מקלידים quickstart-instance ולוחצים על Delete (מחיקה) כדי למחוק את המכונה.
  5. במסוף Cloud de Confiance , נכנסים לדף Google Kubernetes Engine.

    מעבר אל Google Kubernetes Engine

  6. לוחצים על תיבת הסימון שליד gke-cloud-sql-quickstart שם השירות.
  7. לוחצים על הלחצן מחיקה בראש הדף של Google Kubernetes Engine.

שלבי ניקוי אופציונליים

אם אתם לא משתמשים בחשבון השירות שיצרתם עבור המדריך הזה, אתם יכולים להסיר אותו. Cloud de Confiance by S3NS

  1. נכנסים לדף Service accounts במסוף Cloud de Confiance .

    כניסה לדף IAM

  2. מסמנים את התיבה של חשבון IAM שנקרא gke-quickstart-service-account.
  3. לוחצים על הסרה ומאשרים את ההסרה.

אם אתם לא משתמשים בממשקי ה-API שהופעלו במסגרת ההפעלה המהירה הזו, אתם יכולים להשבית אותם.

  • ממשקי ה-API שהופעלו במדריך הזה למתחילים:
    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API
  1. נכנסים לדף APIs במסוף Cloud de Confiance .

    לדף APIs

  2. בוחרים את ה-API שרוצים להשבית ולוחצים על הלחצן השבתת ה-API.

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

בהתאם לצרכים שלכם, תוכלו לקרוא מידע נוסף על יצירת מכונות Cloud SQL.

אפשר גם לקרוא על יצירת משתמשי PostgreSQL ומסדי נתונים עבור מופע Cloud SQL.

אפשר גם לעיין במידע על התמחור של Cloud SQL.

למידע נוסף על:

בנוסף, תוכלו לקרוא על חיבור למופע Cloud SQL מאפליקציות אחרות של Google Cloud: