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

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

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud 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

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

  4. Verify that billing is enabled for your Google Cloud project.

  5. 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

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

  7. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

    gcloud init
  9. In the Google Cloud console, on the project selector page, select or create a Google Cloud 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

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

  11. Verify that billing is enabled for your Google Cloud project.

  12. 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

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

  14. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

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

    gcloud init

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

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

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

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

הגדרת Cloud SQL

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

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

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

המסוף

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

    כניסה לדף 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

יצירת אשכול GKE

המסוף

  1. במסוף Google Cloud , נכנסים לדף 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

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

יוצרים ומגדירים Google Cloud חשבון שירות לשימוש ב-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 לחשבון השירות Google Cloud שזה עתה יצרתם. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. אפליקציית הדוגמה משתמשת ברישום ביומן, לכן מריצים את הפקודה gcloud projects add-iam-policy-binding באופן הבא כדי להוסיף את התפקיד Log Writer לחשבון השירות Google Cloud שיצרתם. מחליפים את YOUR_PROJECT_ID במזהה הפרויקט.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.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.iam.gserviceaccount.com" \
      --role="roles/artifactregistry.reader"
יוצרים חשבון שירות של Kubernetes שמוגדרת לו גישה ל-Cloud SQL על ידי קישור שלו לחשבון השירות באמצעות איחוד שירותי אימות הזהות של עומסי עבודה ב-GKE. Google Cloud
  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 באופן הבא כדי להפעיל את הקישור של חשבון השירות Google Cloud וחשבון השירות של 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.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \
      gke-quickstart-service-account@YOUR_PROJECT_ID.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.iam.gserviceaccount.com

הגדרת סודות

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

kubectl create secret generic gke-cloud-sql-secrets \
  --from-literal=database=quickstart-db \
  --from-literal=username=sqlserver \
  --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/cloud-sql/sqlserver/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/sqlserver/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/sqlserver/mssql
      
  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/sql-server/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 .

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

הסרת המשאבים

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

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

    כניסה לדף Cloud SQL Instances

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

    מעבר אל Google Kubernetes Engine

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

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

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

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

    כניסה לדף 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 במסוף Google Cloud .

    לדף APIs

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

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

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

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

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

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

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