הגדרה של Private Service Connect

במאמר הזה מוסבר איך להגדיר את Private Service Connect לחיבורים לרשת הפרטית של מכונות Cloud SQL.

אחרי שמגדירים את Private Service Connect ואת נקודות הקצה שלו, אתם והלקוחות של האפליקציה יכולים להתחבר למכונה הראשית של Cloud SQL או לכל אחת מרפליקות הקריאה שלה מכמה רשתות של ענן וירטואלי פרטי (VPC) ששייכות לקבוצות, לצוותים, לפרויקטים או לארגונים שונים. אתם יכולים גם להגדיר שמות DNS גלובליים או לכל מכונה בנפרד, לחיבורי לקוח שמבוססים על שמות DNS. זה שימושי במקרים של יתירות כשל ותוכנית התאוששות מאסון (DR).

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

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

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

  3. Enable the Service Networking, Network Connectivity, Cloud DNS APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  4. Make sure that you have the following role or roles on the project: Compute Network Admin, Cloud SQL Admin, Cloud DNS Admin, Cloud SQL Instance User

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. Click Grant access.
    4. In the New principals field, enter your user identifier. This is typically the identifier for a user in a workforce identity pool. For details, see Represent workforce pool users in IAM policies, or contact your administrator.

    5. Click Select a role, then search for the role.
    6. To grant additional roles, click Add another role and add each additional role.
    7. Click Save.
  5. Install the gcloud CLI.

  6. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init

התפקידים הנדרשים ל-Private Service Connect

בטבלה הבאה מפורטים התפקידים שנדרשים כדי להגדיר Private Service Connect ולהתחבר אליו באמצעות מכונה של Cloud SQL.

תפקיד תיאור
compute.networkAdmin

נותן שליטה מלאה על רשת ה-VPC שיוזמת חיבור למכונה של Cloud SQL. אתם יכולים ליצור ולנהל כתובות IP, כללי חומת אש, כללי מדיניות של חיבור לשירות ונקודות קצה (endpoints) של Private Service Connect.

אם אתם משתמשים ב-Private Service Connect כדי להתחבר למכונה של Cloud SQL מכמה רשתות VPC, לכל רשת יש אדמין משלה.

dns.admin מעניק שליטה מלאה על המשאבים של Cloud DNS, כולל תחומי DNS ורשומות.
cloudsql.admin התפקיד הזה נותן שליטה מלאה על מכונה של Cloud SQL, ומאפשר לשלוט במכונה לאורך מחזור החיים שלה.
cloudsql.instanceUser נותן גישה למכונה של Cloud SQL. אם מתחברים דרך לקוח Cloud SQL Auth Proxy, צריך להיות לכם תפקיד לקוח Cloud SQL. אם אתם מתחברים ישירות, אתם לא צריכים תפקידים והרשאות של ניהול זהויות והרשאות גישה (IAM).

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

יצירת נקודת קצה מסוג Private Service Connect

נקודות הקצה של Private Service Connect הן כתובות IP פנימיות ברשת VPC של הצרכן, שלקוחות ברשת הזו יכולים לגשת אליהן ישירות. הלקוחות יכולים להשתמש בנקודות הקצה האלה כדי להתחבר למכונות של Cloud SQL.

אתם יכולים להגדיר ש-Cloud SQL ייצור באופן אוטומטי נקודת קצה של Private Service Connect ב-VPC, או ליצור את נקודת הקצה באופן ידני.

יצירת נקודת הקצה באופן אוטומטי

כדי ש-Cloud SQL ייצור באופן אוטומטי את נקודת הקצה של Private Service Connect:

  1. יוצרים מדיניות חיבור לשירות ברשת ה-VPC. המדיניות הזו מאפשרת להקצות נקודות קצה של Private Service Connect באופן אוטומטי.

  2. יוצרים מכונה של Cloud SQL עם Private Service Connect שמופעל במכונה, ומגדירים את המכונה כך שתיצור נקודות קצה של Private Service Connect באופן אוטומטי.

  3. אחזור נקודת הקצה של המכונה. כך תוכלו להשתמש בנקודת הקצה כדי להתחבר למכונה.

יצירת מדיניות של חיבור לשירות

אפשר ליצור מדיניות חיבור לשירות באמצעות מסוף Google Cloud , ה-CLI של gcloud או ה-API.

המסוף

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

    כניסה לדף Private Service Connect

  2. לוחצים על הכרטיסייה Connection Policies (מדיניות חיבורים).

  3. לוחצים על Create connection policy.

  4. מזינים שם למדיניות החיבור.

  5. מציינים את מחלקת השירות:

    1. בשדה Source service class, בוחרים באפשרות Google services.
    2. בתפריט Service class, בוחרים באפשרות google-cloud-sql כי Cloud SQL הוא השירות המנוהל של מדיניות החיבור.
  6. בקטע Target endpoints scope, בוחרים את ה-Network ואת ה-Region שעליהם חלה המדיניות.

  7. אופציונלי: אם המדיניות של החיבור לשירות והמכונה של Cloud SQL נמצאות בפרויקטים, בתיקיות או בארגונים שונים, מגדירים את היקף המכונה של השירות בהתאמה אישית:

    1. מעבירים את המתג Custom service instance scope למצב מופעל.
    2. בשדה Scopes, מזינים את המזהים של הפרויקטים, התיקיות או הארגונים שבהם נמצא המכונה.
  8. בקטע Policy, בוחרים רשת משנה אחת או יותר מהתפריט Subnetworks. רשתות המשנה משמשות להקצאת כתובות IP לנקודות קצה.

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

  10. לוחצים על יצירת מדיניות.

gcloud

כדי ליצור מדיניות חיבור לשירות, משתמשים בפקודה service-connection-policies create.

gcloud network-connectivity service-connection-policies create POLICY_NAME \
    --network=NETWORK \
    --project=PROJECT_ID \
    --region=REGION \
    --service-class=SERVICE_CLASS \
    --subnets=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks/SUBNETS \
    --psc-connection-limit=LIMIT \
    --description="DESCRIPTION" \
    --producer-instance-location=PRODUCER_INSTANCE_LOCATION \
    --allowed-google-producers-resource-hierarchy-level=RESOURCE_HIERARCHY_LEVEL

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

  • ‫POLICY_NAME: השם של מדיניות החיבור לשירות.
  • ‫NETWORK: הרשת שהמדיניות הזו חלה עליה.
  • ‫PROJECT_ID: מזהה הפרויקט או מספר הפרויקט של רשת ה-VPC. ברשתות VPC משותפות, צריך לפרוס את כללי המדיניות של החיבור לשירות בפרויקט המארח, כי כללי המדיניות האלה לא נתמכים בפרויקטים של שירות.
  • ‫REGION: האזור שהמדיניות הזו חלה עליו. אותה מדיניות צריכה להיות קיימת בכל אזור שבו רוצים להפוך את קישוריות השירות לאוטומטית.
  • ‫SERVICE_CLASS: מזהה המשאב של מחלקת השירות, שסופק על ידי היצרן. ב-Cloud SQL, מחלקת השירות היא google-cloud-sql.
  • ‫SUBNETS: רשת משנה אחת או יותר של צרכן רגיל, שמשמשת להקצאת כתובות IP לנקודות קצה של Private Service Connect. כתובות ה-IP האלה מוקצות באופן אוטומטי ומוחזרות למאגר של תת-הרשת, בזמן שנוצרים ונמחקים מכונות של שירותים מנוהלים. רשתות המשנה צריכות להיות באותו אזור שבו נמצאת מדיניות החיבור לשירות. אם לכמה כללי מדיניות קישוריות יש את אותו אזור, אתם יכולים להשתמש באותה רשת משנה בכללי המדיניות האלה. אפשר להזין כמה רשתות משנה ברשימה מופרדת בפסיקים.
  • ‫LIMIT: המספר המקסימלי של נקודות קצה שאפשר ליצור באמצעות המדיניות הזו. אם לא מציינים מגבלה, אין מגבלה.
  • ‫DESCRIPTION: תיאור אופציונלי של מדיניות החיבור לשירות.
  • ‫PRODUCER_INSTANCE_LOCATION: מציינים אם לאשר היררכיה מותאמת אישית של מיקומים למכונה של Cloud SQL. אם המכונה נמצאת בפרויקט, בתיקייה או בארגון שונים מהמדיניות, צריך להגדיר את הערך הזה ל-custom-resource-hierarchy-levels.

  • ‫RESOURCE_HIERARCHY_LEVEL: רשימה של פרויקטים, תיקיות או ארגונים שבהם נמצא המכונה. הרשימה הזו מופיעה באחת מהצורות הבאות:

    • projects/PROJECT_ID
    • folders/FOLDER_ID
    • organizations/ORGANIZATION_ID.

לדוגמה, הפקודה הבאה יוצרת מדיניות חיבור לשירות עבור מחלקת השירות
google-cloud-sql, שמקצה כתובות IP מרשת המשנה managed-services. באמצעות המדיניות הזו אפשר ליצור עד 10 נקודות קצה של Private Service Connect. צריך ליצור את נקודות הקצה בפרויקטים שנמצאים באותו ארגון שבו נמצא המכונה של השירות המנוהל. המכונה של Cloud SQL נמצאת בפרויקט myproject.

gcloud network-connectivity service-connection-policies create cloud-sql-policy \
    --network=default \
    --project=my-project \
    --region=us-central1 \
    --service-class=google-cloud-sql \
    --subnets=managed-service-subnet \
    --psc-connection-limit=10 \
    --producer-instance-location=custom-resource-hierarchy-levels \
    --allowed-google-producers-resource-hierarchy-level=projects/myproject

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫REGION: האזור של המדיניות לחיבור לשירות.
  • ‫POLICY_NAME: השם של מדיניות החיבור לשירות.
  • ‫DESCRIPTION: תיאור אופציונלי של המדיניות לחיבור לשירות.
  • ‫NETWORK: הרשת של מדיניות החיבור לשירות.
  • ‫LIMIT: המספר המקסימלי של נקודות קצה שאפשר ליצור באמצעות המדיניות הזו. אם לא מציינים מגבלה, אין מגבלה.
  • ‫SUBNETS: רשת משנה רגילה אחת או יותר של הצרכן, שמשמשת להקצאת כתובות IP לנקודות קצה של Private Service Connect. כתובות ה-IP האלה מוקצות באופן אוטומטי ומוחזרות למאגר של תת-הרשת כשמופעים של שירותים מנוהלים נוצרים ונמחקים. רשתות המשנה צריכות להיות באותו אזור שבו נמצאת מדיניות החיבור לשירות. אם לכמה כללי מדיניות של חיבורים יש את אותו אזור, אפשר להשתמש באותה רשת משנה בכללי המדיניות האלה. אפשר להזין כמה רשתות משנה ברשימה מופרדת בפסיקים.
  • ‫SERVICE_CLASS: מזהה המשאב של מחלקת השירות, שסופק על ידי היצרן.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies?serviceConnectionPolicyId=POLICY_NAME

תוכן בקשת JSON:

{
  "description": "DESCRIPTION",
  "network": "projects/PROJECT_ID/global/networks/NETWORK",
  "pscConfig": {
    "limit": "LIMIT",
    "subnetworks": [
      "projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET"
    ]
  },
  "serviceClass": "SERVICE_CLASS"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkconnectivity.v1.OperationMetadata",
    "createTime": "2023-08-15T16:59:29.236110917Z",
    "target": "projects/PROJECT_ID/locations/REGION/serviceConnectionPolicies/POLICY_NAME",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

יצירה אוטומטית של מדיניות חיבור לשירות

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

המסוף

אם אתם משתמשים במסוף Google Cloud , צרו את מכונת Cloud SQL כשהאפשרות Private Service Connect מופעלת. במסוף Google Cloud נבדקים התפקידים הנדרשים והם מוגדרים באופן אוטומטי. אם Network Connectivity API עדיין לא מופעל בפרויקט, יכול להיות שתצטרכו להפעיל אותו.

‫gcloud או REST

אם אתם משתמשים ב-ה-CLI של gcloud או ב-Cloud SQL Admin API, אתם צריכים להקצות תפקידים נוספים לסוכן השירות של Cloud SQL לפני שאתם יוצרים את המכונה.

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

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

    gcloud beta services identity create \
      --service=sqladmin.googleapis.com \
      --project=INSTANCE_PROJECT
    

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

    • ‫INSTANCE_PROJECT: הפרויקט שבו מתכננים ליצור את המכונה של Cloud SQL.

    הפקודה יוצרת סוכן שירות בפורמט service-INSTANCE_PROJECT_NUMBER@gcp-sa-cloudsql..

  2. נותנים לסוכן השירות של Cloud SQL את הרשאות ה-IAM הנדרשות, על ידי הקצאת התפקידים הבאים לסוכן השירות:

    • אדמין של רשת צרכנים לאוטומציה של שירותים (roles/networkconnectivity.consumerNetworkAdmin)
    • צפייה ברשת Compute‏ (roles/compute.networkViewer)

    כדי להוסיף את התפקידים לסוכן השירות של Cloud SQL, מריצים את הפקודות הבאות:

    gcloud projects add-iam-policy-binding CONSUMER_PROJECT \
      --member='serviceAccount:CLOUD_SQL_SERVICE_AGENT' \
      --role='roles/networkconnectivity.consumerNetworkAdmin'
    
    gcloud projects add-iam-policy-binding CONSUMER_PROJECT \
      --member='serviceAccount:CLOUD_SQL_SERVICE_AGENT' \
      --role='roles/compute.networkViewer'
    

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

    • ‫CONSUMER_PROJECT: הפרויקט שבו תיווצר נקודת הקצה של Private Service Connect. אם אתם משתמשים ברשת VPC משותפת, זה יכול להיות הפרויקט המארח או פרויקט השירות.
    • ‫CLOUD_SQL_SERVICE_AGENT: כתובת האימייל של חשבון סוכן השירות של Cloud SQL שיצרתם.

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

אתם יכולים ליצור מכונה עם Private Service Connect שמופעל במכונה, ולהגדיר את המכונה כך שתיצור נקודות קצה באופן אוטומטי באמצעות מסוף Google Cloud , ה-CLI של gcloud או ה-API.

המסוף

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

    כניסה לדף Cloud SQL Instances

  2. בקטע Customize your instance, מרחיבים את הקטע Connections.
  3. מסמנים את התיבה Private IP.
  4. בקטע Choose a private connection method, מסמנים את התיבה Private Service Connect (PSC)‎.
  5. בקטע Endpoint setup, לוחצים על Add an Endpoint.
  6. בקטע Endpoint setup, מבצעים את הפעולות הבאות:
    1. בכרטיס New Endpoint, בוחרים את הפרויקט שבו רוצים להגדיר את נקודת הקצה מהתפריט Project.
    2. בוחרים רשת לנקודת הקצה בתפריט Network.
    3. אם Network Connectivity API לא מופעל, לוחצים על Enable.
  7. לוחצים על אישור הגדרת הרשת. אם זוהתה מדיניות חיבור לשירות ברשת שבחרתם, תוצג הודעה שהפעולה בוצעה בהצלחה. אם לא זוהתה מדיניות חיבור לשירות אבל ההרשאות הוענקו בהצלחה, Google Cloud תיצור בשבילכם מדיניות חיבור לשירות.
  8. אופציונלי: משלימים את אפשרויות ההגדרה האחרות של המכונה.
  9. לוחצים על Create Instance.

gcloud

כדי ליצור מכונה שמופעל בה Private Service Connect, משתמשים בפקודה gcloud sql instances create:

gcloud sql instances create INSTANCE_NAME \
  --project=PROJECT_ID \
  --region=REGION_NAME \
  --cpu=NUMBER_OF_vCPUs \
  --memory=MEMORY_SIZE \
  --root-password=ROOT_PASSWORD \
  --availability-type=AVAILABILITY_TYPE \
  --database-version=DATABASE_VERSION \
  --no-assign-ip \
  --enable-private-service-connect \
  --allowed-psc-projects=ALLOWED_PROJECTS \
  --psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT \
  --enable-psc-auto-dns \
  --enable-psc-write-endpoint-dns

זה שינוי אופציונלי. כדי ליצור או לעדכן מדיניות של חיבור לשירות באופן אוטומטי כשיוצרים את המכונה של Cloud SQL, מוסיפים לפקודה את הפרמטר --enable-psc-auto-connection-policy. כדי להשתמש בפרמטר הזה, צריך להגדיר הרשאות נוספות. מידע נוסף זמין במאמר יצירה אוטומטית של מדיניות חיבור לשירות.

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

  • ‫INSTANCE_NAME: שם המכונה.
  • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה.
  • ‫REGION_NAME: שם האזור של המכונה.
  • ‫NUMBER_OF_vCPUs: מספר הליבות של המכונה.
  • ‫MEMORY_SIZE: כמות הזיכרון של המכונה.
  • ‫ROOT_PASSWORD: הסיסמה של המשתמש ב-root Cloud SQL.
  • ‫AVAILABILITY_TYPE: הפעלת זמינות גבוהה למכונה. בפרמטר הזה, מציינים את אחד מהערכים הבאים:

    • ‫REGIONAL: מאפשר זמינות גבוהה ומומלץ למכונות בסביבת הייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך האזור שבחרתם.
    • ‫ZONAL: לא מספק יכולת יתירות כשל. זה ערך ברירת המחדל.

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

  • ‫DATABASE_VERSION: גרסת מסד הנתונים של המכונה (לדוגמה, SQLSERVER_2019_STANDARD).

  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של מזהי פרויקטים או מספרי פרויקטים מותרים, שמהם נקודות הקצה של Private Service Connect יכולות להתחבר למכונות של Cloud SQL.

    אם פרויקט לא מופיע ברשימה הזו, אי אפשר ליצור בו נקודות קצה של Private Service Connect כדי להתחבר למכונה.

  • ‫CONSUMER_NETWORK: הנתיב לרשת ה-VPC שבה צריך ליצור את נקודות הקצה של Private Service Connect. לדוגמה: projects/my-host-project/global/networks/default.

  • ‫CONSUMER_PROJECT: הפרויקט שבו נוצרה נקודת הקצה של Private Service Connect. אם אתם משתמשים ברשת VPC משותפת, זה יכול להיות הפרויקט המארח או פרויקט השירות.

    כל הפרויקטים שתציינו בפרמטרים של החיבור האוטומטי יתווספו אוטומטית לפרויקטים המורשים. אם רוצים ליצור נקודות קצה (endpoints) של Private Service Connect באופן ידני בפרויקטים מסוימים, אפשר להוסיף את הפרויקטים האלה לרשימת הפרויקטים המורשים.

כדי להפעיל ולהגדיר את Private Service Connect, משתמשים בפרמטרים הבאים:

  • ‫--enable-private-service-connect: הפעלת Private Service Connect.
  • --allowed-psc-projects=ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של מזהי פרויקטים או מספרים מותרים. אלה הפרויקטים שמהם נקודות קצה של Private Service Connect יכולות להתחבר למכונות Cloud SQL.
  • ‫--psc-auto-connections=network=CONSUMER_NETWORK,project=CONSUMER_PROJECT: הנתיב לרשת ה-VPC שבה צריך ליצור נקודות קצה של Private Service Connect.
  • ‫--enable-psc-auto-dns: מציין אם צריך להפעיל את אוטומציית ה-DNS של Private Service Connect במכונה הזו. כברירת מחדל, האפשרות מושבתת במכונות חדשות כשמפעילים את Private Service Connect באמצעות --enable-private-service-connect.

    כשאוטומציית DNS מופעלת, Cloud SQL מקצה רשומת DNS לכל מכונה בכל הרשתות שמוגדרות עם חיבורים אוטומטיים של Private Service Connect.

  • ‫--enable-psc-write-endpoint-dns: מציין אם אוטומציית ה-DNS של נקודת הקצה לכתיבה של Private Service Connect מופעלת במכונה הזו. התכונה הזו נתמכת רק במכונות Enterprise Plus שבהן מוגדר גם --enable-psc-auto-dns, והיא מושבתת כברירת מחדל כשיוצרים מכונה חדשה.

    כשהאוטומציה של נקודת הקצה לכתיבה ב-DNS מופעלת, Cloud SQL מקצה רשומת DNS גלובלית שתשמש כנקודת קצה לכתיבה באשכול הרפליקציה בכל הרשתות שמוגדרים בהן חיבורים אוטומטיים של Private Service Connect. רשומת ה-DNS הגלובלית הזו תמיד מפנה למכונה הראשית הנוכחית של אשכול הרפליקציה, וכך מאפשרת יתירות כשל חלקה של האפליקציה בלי צורך לעדכן את מחרוזת החיבור בצד הלקוח במקרה של פעולת יתירות כשל או מעבר לרפליקה.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫INSTANCE_NAME: השם של המכונה ב-Cloud SQL.
  • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה.
  • ‫REGION_NAME: שם האזור של המכונה.
  • ‫DATABASE_VERSION: גרסת מסד הנתונים של המכונה (לדוגמה, SQLSERVER_2019_STANDARD).
  • ‫ROOT_PASSWORD: הסיסמה של משתמש root ב-Cloud SQL.
  • ‫AVAILABILITY_TYPE: סוג הזמינות של המכונה באזור. משתמשים בפרמטר הזה כדי להפעיל או להשבית את הזמינות הגבוהה של המכונה, על ידי ציון אחד מהערכים הבאים:
    • ‫REGIONAL: מאפשר זמינות גבוהה ומומלץ למכונות בסביבת הייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך המחוז שבחרתם.
    • ‫ZONAL: לא מספק יכולת מעבר. זה ערך ברירת המחדל.

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

  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של מזהי פרויקטים או מספרים מותרים, שמהם נקודות קצה של Private Service Connect יכולות להתחבר למכונות של Cloud SQL.

    אם פרויקט לא מופיע ברשימה הזו, אי אפשר ליצור בו נקודות קצה של Private Service Connect כדי להתחבר למכונה.

  • ‫CONSUMER_PROJECT: הפרויקט שבו נוצרה נקודת הקצה של Private Service Connect. אם אתם משתמשים ברשת VPC משותפת, זה יכול להיות הפרויקט המארח או פרויקט השירות.

    כל הפרויקטים שציינתם בפרמטרים של החיבור האוטומטי נוספים אוטומטית לפרויקטים המורשים. אם רוצים ליצור נקודות קצה (endpoints) של Private Service Connect באופן ידני בפרויקטים מסוימים, אפשר להוסיף את הפרויקטים האלה לרשימת הפרויקטים המורשים.

  • ‫PARENT_PROJECT: הפרויקט שמכיל את הרשת CONSUMER_NETWORK. אם לא מציינים פרויקט אחר ב-CONSUMER_PROJECT, נקודות הקצה נוצרות באופן אוטומטי ב-PARENT_PROJECT
  • ‫CONSUMER_PROJECT: אופציונלי. צריך לציין את זה רק אם CONSUMER_NETWORK היא רשת VPC משותפת ואתם רוצים לאפשר יצירה אוטומטית של נקודות קצה של Private Service Connect בפרויקט שירות.

    כל הפרויקטים שציינתם בפרמטרים של החיבור האוטומטי נוספים אוטומטית לפרויקטים המורשים. אם רוצים, אפשר להוסיף לרשימת הפרויקטים המורשים פרויקטים שבהם רוצים ליצור נקודות קצה של Private Service Connect באופן ידני.

  • ‫CONSUMER_NETWORK: רשת ה-VPC שבה רוצים לאפשר יצירה אוטומטית של נקודות קצה של Private Service Connect. לדוגמה:
    projects/my-host-project/global/networks/default.
  • ‫MACHINE_TYPE: ערך מחרוזת מספרי שמייצג את סוג המכונה. לדוגמה: code>db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, כאשר NUMBER_OF_vCPUs ו-MEMORY_SIZE הם מספר הליבות וכמות הזיכרון שרוצים להקצות למכונה.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscAutoConnections": [
          {
            "consumerProject":"CONSUMER_PROJECT",
            "consumerNetwork":"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK"
          }
        ],
        "pscEnabled": true,
        "pscAutoConnectionPolicyEnabled": true,
        "pscAutoDnsEnabled": true,
        "pscWriteEndpointDnsEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

אלה השדות שבהם משתמשים כדי להפעיל אוטומציה של DNS ושם DNS גלובלי של נקודת קצה (endpoint) לכתיבה:

  • ‫psc_auto_dns_enabled: מציין אם אוטומציית ה-DNS של Private Service Connect מופעלת במכונה הזו. כברירת מחדל, האפשרות מושבתת במכונות חדשות כש-Private Service Connect מופעל באמצעות --enable-private-service-connect.

    כשהאוטומציה של DNS מופעלת, Cloud SQL מקצה רשומת DNS אוניברסלית בכל הרשתות שמוגדרות עם חיבורים אוטומטיים של Private Service Connect.

  • ‫psc_write_endpoint_dns_enabled: מציין אם אוטומציית ה-DNS של נקודת הקצה לכתיבה של Private Service Connect מופעלת במכונה הזו. התכונה הזו נתמכת רק במופעים של Enterprise Plus שבהם מוגדר גם --enable-psc-auto-dns, והיא מושבתת כברירת מחדל כשנוצר מופע חדש.

    כשהאוטומציה של DNS לנקודת קצה לכתיבה מופעלת, Cloud SQL מקצה רשומת DNS גלובלית שתשמש כנקודת קצה לכתיבה בכל הרשתות שמוגדרים בהן חיבורים אוטומטיים של Private Service Connect. רשומת ה-DNS הגלובלית הזו תמיד מפנה למכונה הראשית הנוכחית של אשכול הרפליקציה, וכך מאפשרת יתירות כשל חלקה של האפליקציה בלי צורך בעדכונים של מחרוזת החיבור בצד הלקוח במקרה של פעולת יתירות כשל או מעבר לרפליקה.

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

  • ‫psc_auto_connection_policy_enabled: מציין אם לאפשר ל-Google Cloud ליצור או לעדכן מדיניות של חיבור לשירות כשיוצרים את המכונה של Cloud SQL. כדי להשתמש באפשרות הזו, צריך להגדיר הרשאות נוספות. מידע נוסף זמין במאמר יצירה אוטומטית של מדיניות חיבור לשירות.

Terraform

כדי ליצור את המכונה, משתמשים במשאב של Terraform עם השדה psc_config:

resource "google_sql_database_instance" "INSTANCE_NAME"
{
  name = "INSTANCE_NAME"
  database_version = "DATABASE_VERSION"
  settings
  {
    tier = "MACHINE_TYPE"
    ip_configuration
    {
      psc_config
      {
        psc_enabled = true
        psc_auto_dns_enabled = true
        psc_write_endpoint_dns_enabled = true
        allowed_consumer_projects = ["ALLOWED_PROJECTS"]
        psc_auto_connections
        {
          consumer_network = "CONSUMER_NETWORK"
          consumer_service_project_id = "CONSUMER_PROJECT"
        }
      }
      ipv4_enabled = false
    }
  }
}

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

  • ‫INSTANCE_NAME: שם המכונה.
  • ‫DATABASE_VERSION: גרסת מסד הנתונים של המכונה (לדוגמה, SQLSERVER_2019_STANDARD).
  • ‫MACHINE_TYPE: סוג המכונה.
  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של מזהי פרויקטים או מספרי פרויקטים מותרים, שמהם נקודות הקצה של Private Service Connect יכולות להתחבר למכונות של Cloud SQL.

    אם פרויקט לא מופיע ברשימה הזו, אי אפשר ליצור בו נקודות קצה של Private Service Connect כדי להתחבר למכונה.

  • ‫CONSUMER_NETWORK: הנתיב לרשת ה-VPC שבה צריך ליצור את נקודות הקצה של Private Service Connect. לדוגמה: projects/my-host-project/global/networks/default.

  • ‫CONSUMER_PROJECT: הפרויקט שבו נוצרה נקודת הקצה של Private Service Connect. אם אתם משתמשים ברשת VPC משותפת, זה יכול להיות הפרויקט המארח או פרויקט השירות.

אתם יכולים להשתמש בשדות האלה כדי להפעיל אוטומציה של DNS ושם DNS גלובלי של נקודת קצה לכתיבה:

  • ‫psc_auto_dns_enabled: מציין אם אוטומציית ה-DNS של Private Service Connect מופעלת במכונה הזו. כברירת מחדל, האפשרות מושבתת במכונות חדשות כש-Private Service Connect מופעל באמצעות --enable-private-service-connect.

    כשהאוטומציה של DNS מופעלת, Cloud SQL מקצה רשומת DNS אוניברסלית בכל הרשתות שמוגדרות עם חיבורים אוטומטיים של Private Service Connect.

  • ‫psc_write_endpoint_dns_enabled: מציין אם אוטומציית ה-DNS של נקודת הקצה לכתיבה של Private Service Connect מופעלת במכונה הזו. התכונה הזו נתמכת רק במופעים של Enterprise Plus שבהם מוגדר גם --enable-psc-auto-dns, והיא מושבתת כברירת מחדל כשנוצר מופע חדש.

    כשהאוטומציה של DNS לנקודת קצה לכתיבה מופעלת, Cloud SQL מקצה רשומת DNS גלובלית שתשמש כנקודת קצה לכתיבה בכל הרשתות שמוגדרים בהן חיבורים אוטומטיים של Private Service Connect. רשומת ה-DNS הגלובלית הזו תמיד מפנה למכונה הראשית הנוכחית של אשכול הרפליקציה, וכך מאפשרת יתירות כשל חלקה של האפליקציה בלי צורך בעדכונים של מחרוזת החיבור בצד הלקוח במקרה של פעולת יתירות כשל או מעבר לרפליקה.

כדי להפעיל את Private Service Connect וליצור מדיניות חיבור לשירות באופן אוטומטי, משתמשים בשדה הבא:

  • ‫psc_auto_connection_policy_enabled: מציין אם לאפשר ל-Google Cloud ליצור או לעדכן מדיניות של חיבור לשירות כשיוצרים את המכונה של Cloud SQL. כדי להשתמש באפשרות הזו, צריך להגדיר הרשאות נוספות. מידע נוסף זמין במאמר יצירה אוטומטית של מדיניות חיבור לשירות.

החלה של השינויים

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

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

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

למחוק את השינויים

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

  1. כדי להשבית את ההגנה מפני מחיקה, בקובץ התצורה של Terraform מגדירים את הארגומנט deletion_protection לערך false.
    deletion_protection =  "false"
  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:
    terraform apply
  1. כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה:

    terraform destroy

אחזור נקודת הקצה (endpoint)

אחרי שמאחזרים את כתובת ה-IP הפנימית, שהיא נקודת הקצה של Private Service Connect למכונה, אפשר להשתמש בנקודת הקצה הזו כדי להתחבר למכונה.

gcloud

כדי להציג מידע על מכונה, כולל כתובת ה-IP שהיא נקודת הקצה של Private Service Connect של המכונה, משתמשים בפקודה gcloud sql instances describe:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID \
--format='json(settings.ipConfiguration.pscConfig.pscAutoConnections)'

מחליפים את הפרטים הבאים:

בתגובה, שימו לב לערך שמופיע לצד השדה pscConfig:pscAutoConnections:ipAddress. הערך הזה הוא כתובת ה-IP הפנימית, שהיא גם נקודת הקצה של Private Service Connect במכונה.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-custom-2-7680",
    "kind": "sql#settings",
    "availabilityType": "REGIONAL",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
      "pscAutoConnections": {
        consumerNetwork:"projects/PARENT_PROJECT/global/networks/CONSUMER_NETWORK",
        consumerNetworkStatus:"CONSUMER_NETWORK_STATUS",
        consumerProject:"CONSUMER_PROJECT",
        ipAddress:"IP_ADDRESS",
        status:"STATUS"
        },
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
}

השדות הבאים קיימים במכונות שמופעל בהן Private Service Connect:

  • ‫allowedConsumerProjects: רשימה של הפרויקטים המורשים למכונה. אתם יכולים ליצור נקודות קצה (endpoints) של Private Service Connect מכל רשת VPC בפרויקטים האלה לצירוף השירות של המכונה.
  • ‫pscAutoConnections: רשת ה-VPC המותרת, הסטטוס של מדיניות החיבור לשירות והסטטוס של כתובת ה-IP שהיא נקודת הקצה של המכונה.
  • ‫pscEnabled: אם במכונה מופעל Private Service Connect.

כדי לראות איך ליצור את בקשת ה-API הבסיסית בארכיטקטורת REST למשימה הזו, עיינו בדף instances:get.

יצירת נקודת הקצה באופן ידני

כדי ליצור את נקודת הקצה של Private Service Connect באופן ידני:

  1. יוצרים מכונה של Cloud SQL עם Private Service Connect שמופעל במכונה.

  2. משיגים את ה-URI של צירוף השירות. משתמשים ב-URI הזה כדי ליצור את נקודת הקצה של Private Service Connect.

  3. שומרים כתובת IP פנימית לנקודת הקצה של Private Service Connect ויוצרים נקודת קצה עם הכתובת הזו.

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

אתם יכולים ליצור מכונה עם Private Service Connect באמצעות ה-CLI של gcloud, ‏Terraform או ה-API.

gcloud

כדי ליצור מכונה שמופעל בה Private Service Connect, משתמשים בפקודה gcloud sql instances create:

gcloud sql instances create INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip \
--database-version=DATABASE_VERSION
--cpu=NUMBER_OF_vCPUs \
--memory=MEMORY_SIZE \
--root-password=ROOT_PASSWORD

מחליפים את הפרטים הבאים:

  • ‫INSTANCE_NAME: שם המכונה.
  • ‫PROJECT_ID: המזהה או מספר הפרויקט ב- Google Cloud שמכיל את המכונה.
  • ‫REGION_NAME: שם האזור של המכונה.
  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של מזהי פרויקטים או מספרי פרויקטים מותרים, שמהם נקודות קצה של Private Service Connect יכולות להתחבר למכונות Cloud SQL.

    אם פרויקט מסוים לא מופיע ברשימה הזו, אי אפשר ליצור בו נקודות קצה (endpoints) של Private Service Connect כדי להתחבר למכונה.

  • ‫AVAILABILITY_TYPE: הפעלת זמינות גבוהה למכונה. בפרמטר הזה, מציינים את אחד מהערכים הבאים:
    • ‫REGIONAL: מאפשר זמינות גבוהה ומומלץ למופעי ייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך האזור שבחרתם.
    • ‫ZONAL: לא מספק יכולת יתירות כשל. זה ערך ברירת המחדל.

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

  • ‫DATABASE_VERSION: גרסת מסד הנתונים של המכונה (לדוגמה, SQLSERVER_2019_STANDARD).
  • ‫NUMBER_OF_vCPUs: מספר הליבות של המכונה.
  • ‫MEMORY_SIZE: נפח הזיכרון של המכונה.
  • ‫ROOT_PASSWORD: הסיסמה של משתמש root ב-Cloud SQL.

Terraform

כדי ליצור מכונה שמופעל בה Private Service Connect, משתמשים ב משאב של Terraform google_sql_database_instance.

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_ENTERPRISE"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier              = "db-custom-2-7680"
    availability_type = "REGIONAL"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
    ip_configuration {
      psc_config {
        psc_enabled               = true
        allowed_consumer_projects = [] # Add consumer project IDs here.
      }
      ipv4_enabled = false
    }
  }
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

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

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: המזהה או מספר הפרויקט ב- Google Cloud שמכיל את המכונה.
  • ‫INSTANCE_NAME: שם המכונה.
  • ‫REGION_NAME: שם האזור של המכונה.
  • ‫ROOT_PASSWORD: הסיסמה של משתמש root ב-Cloud SQL.
  • ‫AVAILABILITY_TYPE: הפעלת זמינות גבוהה במכונה. בפרמטר הזה, מציינים את אחד מהערכים הבאים:
    • ‫REGIONAL: מאפשר זמינות גבוהה ומומלץ למופעי ייצור. המכונה עוברת למצב של מעבר לגיבוי בעת כשל באזור אחר בתוך האזור שבחרתם.
    • ‫ZONAL: לא מספק יכולת יתירות כשל. זה ערך ברירת המחדל.

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

  • ‫ALLOWED_PROJECTS: רשימה מופרדת בפסיקים של מזהי פרויקטים או מספרי פרויקטים מותרים, שמהם נקודות קצה של Private Service Connect יכולות להתחבר למכונות Cloud SQL.

    אם פרויקט מסוים לא מופיע ברשימה הזו, אי אפשר ליצור בו נקודות קצה (endpoints) של Private Service Connect כדי להתחבר למכונה.

  • ‫MACHINE_TYPE: ערך מחרוזת מספרי שמייצג את סוג המכונה. לדוגמה: db-custom-NUMBER_OF_vCPUs-MEMORY_SIZE, כאשר NUMBER_OF_vCPUs ו-MEMORY_SIZE הם מספר הליבות וכמות הזיכרון שאתם רוצים למכונה.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

תוכן בקשת JSON:

{
  "name": "INSTANCE_NAME",
  "project": PROJECT_ID",
  "region": "REGION_NAME",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "rootPassword": "ROOT_PASSWORD",
  "kind": "sql#instance",
  "settings": {
    "availabilityType": "AVAILABILITY_TYPE",
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
  "status": "RUNNING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "startTime": "2023-06-14T18:48:35.499Z",
  "operationType": "CREATE",
  "name": "OPERATION_ID",
  "targetId": "INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

קבלת קובץ מצורף לשירות

אחרי שיוצרים מכונה של Cloud SQL עם Private Service Connect, מקבלים את ה-URI של קובץ השירות המצורף ומשתמשים בו כדי ליצור את נקודת הקצה של Private Service Connect.

gcloud

כדי להציג מידע מסכם על מכונה שבה מופעל Private Service Connect, כמו השדה pscServiceAttachmentLink שמציג את ה-URI שמצביע על הקובץ המצורף לשירות של המכונה, משתמשים בפקודה gcloud sql instances describe:

gcloud sql instances describe INSTANCE_NAME \
--project=PROJECT_ID

מחליפים את הפרטים הבאים:

  • ‫INSTANCE_NAME: השם של מכונת Cloud SQL שאליה יכולות להתחבר נקודות קצה של Private Service Connect ברשתות VPC
  • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה

בדוגמה הבאה מוצג פלט לדוגמה של הפקודה הזו:

gcloud sql instances describe myinstance \
--project=12345

...
pscServiceAttachmentLink: projects/45678/regions/myregion/serviceAttachments/myserviceattachment

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה
  • ‫INSTANCE_NAME: השם של המכונה

ה-method של ה-HTTP וכתובת ה-URL:

GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  ...
  pscServiceAttachmentLink: "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"
}

בשדה pscServiceAttachmentLink מוצג ה-URI שמצביע על צירוף השירות של המכונה.

יצירת נקודת קצה מסוג Private Service Connect

אתם יכולים לשמור כתובת IP פנימית לנקודת הקצה של Private Service Connect וליצור נקודת קצה עם הכתובת הזו. כדי ליצור את נקודת הקצה, צריך את מזהה ה-URI של צירוף השירות ואת הפרויקטים שמותרים למכונה.

gcloud

  1. כדי לשמור כתובת IP פנימית לנקודת הקצה של Private Service Connect, משתמשים בפקודה
    gcloud compute addresses create:

    gcloud compute addresses create ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --subnet=SUBNET_URI \
    --addresses=INTERNAL_IP_ADDRESS

    מחליפים את הפרטים הבאים:

    • ‫ADDRESS_NAME: השם של כתובת ה-IP הפנימית.
    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud לנקודת הקצה.
    • ‫REGION_NAME: שם האזור של נקודת הקצה.
    • ‫SUBNET_URI: השם של רשת המשנה של כתובת ה-IP. הפורמט הוא: projects/SUBNET_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNET_NAME. אם רשת המשנה נמצאת ברשת VPC משותפת, מומלץ ש-SUBNET_PROJECT_ID יהיה הפרויקט המארח.
    • ‫INTERNAL_IP_ADDRESS: כתובת ה-IP שרוצים לשמור. כתובת ה-IP הזו חייבת להיות בטווח ה-IP הראשי של רשת המשנה. כתובת ה-IP יכולה להיות כתובת RFC 1918 או רשת משנה עם טווחים שהם לא RFC. אם אתם לא רוצים לציין את כתובת ה-IP כי אתם רוצים ש- Google Cloud יקצה כתובת IP זמינה ברשת המשנה, אל תציינו את הדגל הזה.
  2. כדי לוודא שכתובת ה-IP שמורה, משתמשים בפקודה gcloud compute addresses list:

    gcloud compute addresses list ADDRESS_NAME \
    --project=PROJECT_ID

    בתגובה, מוודאים שמופיע הסטטוס RESERVED לכתובת ה-IP.

  3. כדי ליצור את נקודת הקצה של Private Service Connect ולהפנות אותה לקובץ המצורף של שירות Cloud SQL, משתמשים בפקודה gcloud compute forwarding-rules create:

    gcloud compute forwarding-rules create ENDPOINT_NAME \
    --address=ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --network=NETWORK_URI \
    --target-service-attachment=SERVICE_ATTACHMENT_URI \
    --allow-psc-global-access

    מחליפים את הפרטים הבאים:

    • ‫ENDPOINT_NAME: השם של נקודת הקצה
    • ‫NETWORK_URI: ה-URI של רשת ה-VPC של נקודת הקצה. הפורמט הוא: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME. אם רוצים להשתמש ברשת VPC משותפת, צריך לציין את הפרויקט המארח בתור NETWORK_PROJECT_ID.
    • ‫SERVICE_ATTACHMENT_URI: ה-URI של צירוף השירות
  4. כדי לוודא שחיבור השירות מקבל את נקודת הקצה, משתמשים בפקודה
    gcloud compute forwarding-rules describe:

    gcloud compute forwarding-rules describe ENDPOINT_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    בתשובה, מוודאים שמופיע סטטוס ACCEPTED בשדה pscConnectionStatus. נקודת הקצה יכולה להתחבר לצירוף השירות.

Terraform

כדי ליצור נקודת קצה (endpoint) של Private Service Connect, משתמשים ב משאב Terraform של google_sql_database_instance.

אפשר להשתמש בדוגמה הבאה כדי ליצור נקודת קצה של Private Service Connect ב-IPv4.

resource "google_compute_address" "default" {
  name         = "psc-compute-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = "default"     # Replace value with the name of the subnet here.
  address      = "10.128.0.44" # Replace value with the IP address to reserve.
}

data "google_sql_database_instance" "default" {
  name = resource.google_sql_database_instance.default.name
}

resource "google_compute_forwarding_rule" "default" {
  name                    = "psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region                  = "us-central1"
  network                 = "default"
  ip_address              = google_compute_address.default.self_link
  load_balancing_scheme   = ""
  target                  = data.google_sql_database_instance.default.psc_service_attachment_link
  allow_psc_global_access = true
}

אפשר להשתמש בדוגמה הבאה כדי ליצור נקודת קצה (endpoint) מסוג Private Service Connect ב-IPv6.

resource "google_compute_network" "ipv6_default" {
  name                     = "net-ipv6"
  auto_create_subnetworks  = false
  enable_ula_internal_ipv6 = true
}

resource "google_compute_subnetwork" "ipv6_default" {
  name             = "subnet-internal-ipv6"
  ip_cidr_range    = "10.0.0.0/16"
  region           = "us-central1"
  stack_type       = "IPV4_IPV6"
  ipv6_access_type = "INTERNAL"
  network          = google_compute_network.ipv6_default.id
}

resource "google_compute_address" "ipv6_default" {
  name         = "psc-compute-ipv6-address-${google_sql_database_instance.default.name}"
  region       = "us-central1"
  address_type = "INTERNAL"
  subnetwork   = google_compute_subnetwork.ipv6_default.name
  ip_version   = "IPV6"
}

resource "google_compute_forwarding_rule" "ipv6_ilb_example" {
  name   = "ipv6-psc-forwarding-rule-${google_sql_database_instance.default.name}"
  region = "us-central1"

  load_balancing_scheme   = ""
  target                  = data.google_sql_database_instance.default.psc_service_attachment_link
  network                 = google_compute_network.ipv6_default.name
  subnetwork              = google_compute_subnetwork.ipv6_default.name
  ip_address              = google_compute_address.ipv6_default.id
  allow_psc_global_access = true
}

כך מחילים את ההגדרות של Terraform בפרויקט ב- Google Cloud :

הכנת Cloud Shell

  1. מפעילים את Cloud Shell.
  2. מגדירים את פרויקט ברירת המחדל ב- Google Cloud שבו רוצים להחיל את ההגדרות של Terraform.

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

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    אם תגדירו ערכים ספציפיים בקובץ התצורה של Terraform, הם יבטלו את ערכי ברירת המחדל של משתני הסביבה.

הכנת הספרייה

לכל קובץ תצורה של Terraform צריכה להיות ספרייה משלו (שנקראת גם מודול ברמה הבסיסית).

  1. יוצרים ספרייה חדשה ב-Cloud Shell ובה יוצרים קובץ חדש. שם הקובץ חייב לכלול את הסיומת .tf, למשל main.tf. במדריך הזה, הקובץ נקרא main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. אם אתם עוקבים אחרי המדריך, תוכלו להעתיק את הקוד לדוגמה בכל קטע או שלב.

    מעתיקים את הקוד לדוגמה בקובץ main.tf החדש שיצרתם.

    לחלופין, אפשר גם להעתיק את הקוד מ-GitHub. כדאי לעשות את זה כשקטע הקוד של Terraform הוא חלק מפתרון מקצה לקצה.

  3. בודקים את הפרמטרים לדוגמה ומשנים אותם בהתאם לסביבה שלכם.
  4. שומרים את השינויים.
  5. מפעילים את Terraform. צריך לעשות זאת רק פעם אחת לכל ספרייה.
    terraform init

    אופציונלי: תוכלו לכלול את האפשרות -upgrade, כדי להשתמש בגרסה העדכנית ביותר של הספק של Google:

    terraform init -upgrade

החלה של השינויים

  1. בודקים את ההגדרות ומוודאים שהמשאבים שמערכת Terraform תיצור או תעדכן תואמים לציפיות שלכם:
    terraform plan

    מתקנים את ההגדרות לפי הצורך.

  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform:
    terraform apply

    ממתינים עד שב-Terraform תוצג ההודעה "Apply complete!‎".

  3. פותחים את הפרויקט ב- Google Cloud כדי להציג את התוצאות. במסוף Google Cloud , נכנסים למשאבים בממשק המשתמש כדי לוודא שהם נוצרו או עודכנו ב-Terraform.

REST

  1. שומרים כתובת IP פנימית לנקודת הקצה של Private Service Connect.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud לנקודת הקצה (endpoint)
    • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)
    • ‫ADDRESS_NAME: השם של כתובת ה-IP הפנימית
    • ‫SUBNET_URI: השם של רשת המשנה של כתובת ה-IP. הפורמט הוא: projects/SUBNET_PROJECT_ID/regions/REGION_NAME/subnetworks/SUBNET_NAME. אם רשת המשנה נמצאת ברשת VPC משותפת, מומלץ ש-SUBNET_PROJECT_ID יהיה הפרויקט המארח.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses

    תוכן בקשת JSON:

    {
      "name": "ADDRESS_NAME",
      "addressType": "INTERNAL",
      "subnetwork": "SUBNET_URI"
    }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#operation",
      "id": "OPERATION_ID",
      "name": "OPERATION_NAME",
      "operationType": "insert",
      "status": "RUNNING",
      "targetLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "progress": 0
    }
    
  2. מוודאים שכתובת ה-IP שמורה.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה של Private Service Connect
    • ‫REGION_NAME: שם האזור
    • ‫ADDRESS_NAME: השם של כתובת ה-IP

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#address",
      "id": "ADDRESS_ID",
      "creationTimestamp": "2024-05-09T11:20:50.114-07:00",
      "name": "ADDRESS_NAME",
      "description": "This is the name of the internal IP address.",
      "address": "IP_ADDRESS",
      "status": "RESERVED",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "addressType": "EXTERNAL"
    }
    

    בתגובה, מוודאים שמופיע הסטטוס RESERVED לכתובת ה-IP.

  3. יוצרים את נקודת הקצה של Private Service Connect ומפנים אותה לקובץ המצורף של שירות Cloud SQL.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud לנקודת הקצה (endpoint)
    • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)
    • ‫ENDPOINT_NAME: השם של נקודת הקצה
    • ‫ADDRESS_URI: ה-URI של כתובת ה-IP הפנימית השמורה. הפורמט הוא: projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME. אפשר גם לציין את כתובת ה-IP ישירות.
    • ‫SERVICE_ATTACHMENT_URI: ה-URI של צירוף השירות
    • ‫NETWORK_URI: ה-URI של רשת ה-VPC של נקודת הקצה. הפורמט הוא: projects/NETWORK_PROJECT_ID/global/networks/NETWORK_NAME. אם רוצים להשתמש ברשת VPC משותפת, צריך לציין את הפרויקט המארח בתור NETWORK_PROJECT_ID.

    ה-method של ה-HTTP וכתובת ה-URL:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules

    תוכן בקשת JSON:

    {
      "name": "ENDPOINT_NAME",
      "IPAddress": "ADDRESS_URI",
      "target": "SERVICE_ATTACHMENT_URI",
      "network": "NETWORK_URI",
      "allowPscGlobalAccess": true
    }
    

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#operation",
      "id": "OPERATION_ID",
      "name": "OPERATION_NAME",
      "operationType": "insert",
      "status": "RUNNING",
      "targetLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "progress": 0
    }
    
  4. מוודאים שנקודת הקצה מקושרת ל-Service Attachment.

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה של Private Service Connect
    • ‫REGION_NAME: שם האזור
    • ‫ENDPOINT_NAME: השם של נקודת הקצה

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#forwardingRule",
      "id": "ENDPOINT_ID",
      "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
      "name": "ENDPOINT_NAME",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "IPAddress": "IP_ADDRESS",
      "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
      "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
      "serviceDirectoryRegistrations": [
        {
          "namespace": "goog-psc-default"
        }
      ],
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "fingerprint": "FINGERPRINT_ID",
      "pscConnectionId": "CONNECTION_ID",
      "pscConnectionStatus": "ACCEPTED",
      "allowPscGlobalAccess": true
    }
    

    בתשובה, מוודאים שמופיע סטטוס ACCEPTED בשדה pscConnectionStatus. נקודת הקצה יכולה להתחבר לצירוף השירות.

התחברות למכונה של Cloud SQL

אתם יכולים להתחבר למכונה של Cloud SQL שמופעל בה Private Service Connect באמצעות כתובת IP פנימית, רשומת DNS, שרת Cloud SQL Auth Proxy, מחברי Cloud SQL Language Connectors אוGoogle Cloud אפליקציות אחרות.

קישור באמצעות רשומת DNS

‫DNS היא הדרך המומלצת להתחבר למכונות שמופעל בהן Private Service Connect. שם DNS מאפשר לרשתות שונות להתחבר לאותו מכונה, שבה לנקודות הקצה של Private Service Connect בכל רשת יכולות להיות כתובות IP שונות. בנוסף, כדי להתחבר למכונות האלה, צריך להשתמש בשמות DNS ב-Cloud SQL Auth Proxy. במאמר הגדרת DNS ל-Private Service Connect מוסבר איך מגדירים DNS.

לפני שמתחברים למכונה של Cloud SQL באמצעות רשומת DNS, צריך לבצע את הפעולות הבאות:

  1. יוצרים נקודת קצה מסוג Private Service Connect.
  2. מוודאים שקובץ השירות המצורף של המכונה מקבל את נקודת הקצה. כדי לוודא שהסטטוס של נקודת הקצה הוא ACCEPTED, בודקים את הסטטוס.
  3. מגדירים תחום מנוהל של DNS ורשומת DNS.

אחרי שתעמדו בתנאים האלה, תוכלו להשתמש ברשומת ה-DNS כדי להתחבר למכונה מכל רשת VPC שבה יצרתם את נקודת הקצה.

sqlcmd -S DNS_RECORD -d DATABASE_NAME -U USERNAME

מחליפים את הפרטים הבאים:

  • ‫DNS_RECORD: רשומת ה-DNS של נקודת הקצה
  • ‫DATABASE_NAME: השם של מסד הנתונים של Cloud SQL ל-SQL Server שנמצא בתוך המכונה
  • ‫USERNAME: השם של המשתמש שמתחבר למכונה

חיבור ישיר באמצעות כתובת IP פנימית

לפני שמתחברים למכונה של Cloud SQL שמופעל בה Private Service Connect, צריך לבצע את הפעולות הבאות:

  1. יוצרים נקודת קצה מסוג Private Service Connect.
  2. מוודאים שקובץ השירות המצורף של המכונה מקבל את נקודת הקצה. כדי לוודא שהסטטוס של נקודת הקצה הוא ACCEPTED, בודקים את הסטטוס.

אחרי שתעמדו בתנאים האלה, תוכלו להשתמש בכתובת ה-IP של נקודת הקצה כדי לגשת למכונה מכל רשת VPC שבה יצרתם את נקודת הקצה.

  1. אחזור של כתובת ה-IP הפנימית של נקודת הקצה של Private Service Connect באמצעות השם של כתובת ה-IP של נקודת הקצה.

    gcloud

    כדי לאחזר את כתובת ה-IP, משתמשים בפקודה gcloud compute addresses describe:

    gcloud compute addresses describe ADDRESS_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME

    מחליפים את הפרטים הבאים:

    • ‫ADDRESS_NAME: השם של כתובת ה-IP של נקודת הקצה
    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה (endpoint)
    • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)

    בתשובה, מוודאים שכתובת IP מופיעה בשדה address. זוהי כתובת ה-IP הפנימית.

    REST

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה (endpoint)
    • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)
    • ‫ADDRESS_NAME: השם של כתובת ה-IP של נקודת הקצה

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#address",
      "id": "ADDRESS_ID",
      "creationTimestamp": "2024-05-09T11:20:50.114-07:00",
      "name": "ADDRESS_NAME",
      "description": "This is the name of the internal IP address.",
      "address": "IP_ADDRESS",
      "status": "RESERVED",
      "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/addresses/ADDRESS_NAME",
      "networkTier": "PREMIUM",
      "labelFingerprint": "LABEL_FINGERPRINT_ID",
      "addressType": "EXTERNAL"
    }
    

    כתובת ה-IP הפנימית היא הערך שמשויך לשדה address.

  2. לחלופין, אפשר לאחזר את כתובת ה-IP הפנימית של נקודת הקצה של Private Service Connect באמצעות הקובץ המצורף לשירות של המכונה ב-Cloud SQL.

    gcloud

    כדי לאחזר את כתובת ה-IP, משתמשים בפקודה gcloud compute forwarding-rules list:

    gcloud compute forwarding-rules list \
    --filter="TARGET:REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME" \
    --project=PROJECT_ID

    מחליפים את הפרטים הבאים:

    • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)
    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה (endpoint)
    • SERVICE_ATTACHMENT_NAME: השם של צירוף השירות של המכונה ב-Cloud SQL

    בתשובה, מוודאים שמופיעה כתובת IP. זוהי כתובת ה-IP הפנימית.

    זוהי דוגמה לתשובה:

    NAME REGION IP_ADDRESS TARGET
    myInstance us-central1 10.10.10.10 us-central1/serviceAttachments/a-123456789e0a-psc-service-attachment-abc123d4e5f67gh8

    REST

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה (endpoint)
    • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)
    • ‫SERVICE_ATTACHMENT_PROJECT_ID: המזהה או מספר הפרויקט של Google Cloud הפרויקט שמכיל את חיבור השירות
    • ‫SERVICE_ATTACHMENT_NAME: השם של חיבור השירות למכונה של Cloud SQL

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules?target="https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME"

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      "kind": "compute#forwardingRuleList",
      "id": "projects/PROJECT_ID/regions/REGION_NAME/forwardingRules",
      "items": [
        {
          "kind": "compute#forwardingRule",
          "id": "FORWARDING_RULE_ID",
          "creationTimestamp": "2023-10-31T13:04:37.168-07:00",
          "name": "FORWARDING_RULE_NAME",
          "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
          "IPAddress": "IP_ADDRESS",
          "target": "https://www.googleapis.com/compute/v1/projects/SERVICE_ATTACHMENT_PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
          "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/FORWARDING_RULE_NAME",
          "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME",
          "serviceDirectoryRegistrations": [
            {
              "namespace": "goog-psc-default"
            }
          ],
          "networkTier": "PREMIUM",
          "labelFingerprint": "LABEL_FINGERPRINT_ID",
          "fingerprint": "FINGERPRINT_ID",
          "pscConnectionId": "PSC_CONNECTION_ID",
          "pscConnectionStatus": "CLOSED",
          "allowPscGlobalAccess": true
        }
      ],
      "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules"
    }
    

    כתובת ה-IP הפנימית היא הערך שמשויך לשדה IPAddress.

  3. כדי להתחבר למכונה של Cloud SQL, משתמשים בכתובת ה-IP הפנימית.

    sqlcmd -S IP_ADDRESS -d DATABASE_NAME -U USERNAME

    מחליפים את הפרטים הבאים:

    • ‫IP_ADDRESS: כתובת ה-IP של נקודת הקצה
    • ‫DATABASE_NAME: השם של מסד הנתונים של Cloud SQL ל-SQL Server שנמצא בתוך המכונה
    • ‫USERNAME: השם של המשתמש שמתחבר למכונה

התחברות באמצעות Cloud SQL Auth Proxy

Cloud SQL Auth Proxy הוא מחבר שמאפשר גישה מאובטחת למכונה שמופעל בה Private Service Connect, בלי צורך ברשתות מורשות או בהגדרת SSL.

מגדירים את Cloud SQL Auth Proxy באמצעות שם ה-DNS של המכונה ב-Private Service Connect. שם DNS מזהה רשומת DNS שממפה משאב DNS לשם דומיין. מידע נוסף על הפעלת DNS לפרויקט זמין במאמר הגדרת DNS ב-Private Service Connect. כדי לאתר שמות DNS קיימים למכונה, ראו איתור שמות DNS.

אם הפעלתם אשכול מתקדם של יתירות כשל, אתם יכולים גם להגדיר את Cloud SQL Auth Proxy כך שישתמש בשם ה-DNS של נקודת הקצה לכתיבה של Private Service Connect. לדוגמה, אם שם נקודת הקצה לכתיבה ב-DNS של Private Service Connect באשכול הוא abcdef123456.987654321fedcb.global.sql-psc.goog, צריך להפעיל את שרת ה-proxy לאימות באופן הבא:

./cloud-sql-proxy abcdef123456.987654321fedcb.global.sql-psc.goog

אם אתם מתחברים באמצעות Private Service Connect, אתם צריכים את גרסה v2.5.0 או גרסה חדשה יותר של Cloud SQL Auth Proxy.

הורדה והתקנה של Cloud SQL Auth Proxy

כדי להתחבר למכונות שבהן מופעל Private Service Connect, צריך להוריד ולהתקין את הקובץ הבינארי של Cloud SQL Auth Proxy. הקובץ הבינארי שאתם מורידים תלוי במערכת ההפעלה, ובשאלה אם היא משתמשת בליבה של 32 ביט או 64 ביט. רוב החומרות החדשות יותר משתמשות בליבה של 64 ביט.

אם אתם לא בטוחים אם המכונה שלכם מריצה ליבה של 32 ביט או 64 ביט, השתמשו בפקודה uname -a ל-Linux או ל-macOS. ב-Windows, עיינו במסמכי התיעוד של Windows.

הפעלת Cloud SQL Auth Proxy

‫Cloud SQL Auth Proxy תומך בחיבורים למכונות שמופעל בהן Private Service Connect. מידע נוסף זמין במאמר הפעלת Cloud SQL Auth Proxy.

  1. לצפות בסיכום המידע על מכונת Cloud SQL, כולל שם החיבור של המכונה.

    gcloud

    כדי להציג מידע מסכם על מכונה של Cloud SQL, משתמשים בפקודה
    gcloud sql instances describe.

      gcloud sql instances describe INSTANCE_NAME \
        --project=PROJECT_ID \
        --format='value(connectionName)'

    מחליפים את הפרטים הבאים:

    • ‫INSTANCE_NAME: השם של מכונת Cloud SQL
    • ‫PROJECT_ID: המזהה או מספר הפרויקט ב- Google Cloud שמכיל את המכונה

    שם החיבור הוא בפורמט PROJECT_ID:REGION_NAME:INSTANCE_NAME.

    REST

    לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

    • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את המכונה
    • ‫INSTANCE_NAME: השם של המכונה

    ה-method של ה-HTTP וכתובת ה-URL:

    GET https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

    אתם אמורים לקבל תגובת JSON שדומה לזו:

    {
      ...
      "connectionName": "PROJECT_ID:REGION_NAME:INSTANCE_NAME"
    }
    

    שם החיבור הוא בפורמט PROJECT_ID:REGION_NAME:INSTANCE_NAME.

  2. מעתיקים את השם של החיבור למכונה.
  3. מפעילים את Cloud SQL Auth Proxy:

      ./cloud-sql-proxy INSTANCE_CONNECTION_NAME --psc

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

התחברות באמצעות מחברי השפה של Cloud SQL

מחברי השפה של Cloud SQL הם ספריות שמספקות גישה מאובטחת למכונה של Cloud SQL שמופעל בה Private Service Connect, בלי צורך ברשתות מורשות או בהגדרת SSL.

מגדירים את Cloud SQL Auth Proxy באמצעות שם ה-DNS של המכונה ב-Private Service Connect, ואת שם ה-DNS של נקודת הקצה לכתיבה ב-Private Service Connect של אשכול מתקדם של יתירות כשל, אם הפעלתם אחד כזה. שם DNS מזהה רשומת DNS שממפה משאב DNS לשם דומיין. מידע נוסף על הפעלת DNS לפרויקט זמין במאמר הגדרת DNS ב-Private Service Connect. כדי לאתר שמות DNS קיימים למכונה, ראו איתור שמות DNS.

מחברי השפה של Cloud SQL תומכים בחיבורים של Private Service Connect באמצעות סוג ה-IP‏ PSC בספריות המתאימות שלהם. המסמכים של כל מחבר נמצאים במסמכים הציבוריים ב-GitHub בנושא תוכנית התאוששות מאסון (DR) מתקדמת:

התחברות מסביבת App Engine Standard, מ-Cloud Run או מפונקציות Cloud Run

כדי להתחבר למכונות של Cloud SQL שמופעל בהן Private Service Connect, אתם יכולים להשתמש ב-App Engine Standard או ב-Cloud Run.

בסביבות האלה בלי שרת (serverless), אפשר להשתמש גם במחברי שפה של Cloud SQL וגם בחיבורי TCP ישירים באמצעות כתובת IP ומספר יציאה. בחיבורי TCP ישירים, זו כתובת ה-IP שאתם שומרים כשאתם יוצרים את נקודת הקצה של Private Service Connect. אפשר לציין את כתובת ה-IP ככתובת של מארח מסד הנתונים.

אם יוצרים רשומת DNS לנקודת הקצה, אפשר לציין את הרשומה הזו למארח.

קישור מ-BigQuery

כדי לגשת לנתונים ב-Cloud SQL ולבצע שאילתות על הנתונים האלה דרך חיבור IP פנימי, משתמשים בפרמטר
--enable-google-private-path. הפרמטר הזה תקף רק אם:

  • אתם משתמשים בפרמטר --no-assign-ip.
  • הפרמטר --network משמש כדי לציין את השם של רשת ה-VPC שבה רוצים להשתמש כדי ליצור חיבור פנימי.

הגדרת קישוריות יוצאת למכונה של Cloud SQL

אתם יכולים להגדיר את מכונת Cloud SQL שמופעל בה Private Service Connect כך שתהיה לה קישוריות יוצאת לרשת שלכם באמצעות ממשק Private Service Connect ומחבר רשת. למידע נוסף על אופן הפעולה של קישוריות יוצאת ב-Private Service Connect ועל המגבלות שלה, קראו את הסקירה הכללית על קישוריות יוצאת ב-Private Service Connect.

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

  1. יוצרים או מעדכנים חיבור לרשת. מכונת Cloud SQL משתמשת בחיבור הרשת הזה כדי להתחבר לממשק Private Service Connect של הרשת.

    1. מחבר הרשת צריך להיות באותו אזור כמו המכונה של Cloud SQL, וצריך להגדיר אותו כך שיקבל חיבורים באופן אוטומטי באמצעות רשימה מממשקי Private Service Connect.

    2. מאתרים את מזהה הפרויקט של הדייר ב-Cloud SQL. משתמשים בפקודה gcloud sql instances describe כדי לאחזר פרטים על המכונה. מזהה הפרויקט של הדייר מופיע בכתובת ה-URL של צירוף השירות שמוצגת בפלט:

        ADMIN_PROJECT=PROJECT_ID
        INSTANCE_NAME=INSTANCE_NAME
      
        TENANT_PROJECT_ID=$(gcloud --project=$ADMIN_PROJECT sql instances describe $INSTANCE_NAME | grep pscServiceAttachmentLink | cut -f 2 -d "/")
      

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

      • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloudשבו אתם משתמשים.
      • ‫INSTANCE_NAME: השם של המכונה של Cloud SQL שמופעל בה Private Service Connect, שרוצים להגדיר לה קישוריות יוצאת.

      שומרים את הערך של מזהה הפרויקט של הדייר כדי לכלול אותו בהמשך ברשימת מזהי הפרויקטים המקובלים. ההרשאה הזו נדרשת כשיוצרים או מעדכנים חיבור לרשת בפרויקט ב- Google Cloud .

  2. מזהים את הרשת שרוצים לקבל ממנה חיבורים יוצאים של Cloud SQL, ומוודאים שיש לה ממשק Private Service Connect.

  3. מפעילים חיבורים יוצאים למכונה של Cloud SQL באמצעות מחבר הרשת.

אתם יכולים גם להשבית את הקישוריות היוצאת בכל שלב, אם אתם כבר לא צריכים חיבורים יוצאים למכונה.

מידע נוסף על קישוריות יוצאת של Private Service Connect זמין במאמר חיבורים יוצאים של Private Service Connect.

הפעלת חיבורים יוצאים במכונה של Cloud SQL

כדי להפעיל קישוריות יוצאת במכונה של Cloud SQL, קודם צריך ליצור או לעדכן מחבר רשת בפרויקט ב- Google Cloud .

gcloud

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

gcloud beta sql instances patch INSTANCE_NAME \
  --psc-network-attachment-uri=NETWORK_ATTACHMENT_URI \
  --project=PROJECT_ID

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

  • ‫INSTANCE_NAME: השם של מכונת Cloud SQL עם Private Service Connect שרוצים להגדיר לקישוריות יוצאת.
  • ‫NETWORK_ATTACHMENT_URI: ה-URI של מחבר הרשת בפרויקט Google Cloud שבו רוצים להשתמש כדי להתחבר לממשק Private Service Connect של הרשת.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloudשבו אתם משתמשים.

כדי לוודא שהקישוריות היוצאת של Private Service Connect הופעלה, מריצים את הפקודה gcloud sql instances describe. אם הפלט כולל את הערך psc-network-attachment-uri, סימן שהקישוריות של Private Service Connect לתעבורה יוצאת הופעלה בהצלחה.

REST v1

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫NETWORK_ATTACHMENT_URI: ה-URI של חיבור הרשת בפרויקט.
  • INSTANCE_ID: השם של המכונה ב-Cloud SQL.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID

תוכן בקשת JSON:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": "NETWORK_ATTACHMENT_URI"
        "kind": "sql#settings"
      }
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

REST v1beta4

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫NETWORK_ATTACHMENT_URI: ה-URI של חיבור הרשת בפרויקט.
  • INSTANCE_ID: השם של המכונה ב-Cloud SQL.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

תוכן בקשת JSON:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": "NETWORK_ATTACHMENT_URI"
      }
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

למידע על פתרון בעיות שקשורות לקישוריות יוצאת ב-Private Service Connect, קראו את המאמר פתרון בעיות ב-Private Service Connect.

השבתת החיבורים היוצאים במכונה של Cloud SQL

gcloud

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

gcloud beta sql instances patch INSTANCE_NAME \
  --clear-psc-network-attachment-uri \
  --project=PROJECT_ID

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

  • ‫INSTANCE_NAME: השם של המכונה ב-Cloud SQL שמופעל בה Private Service Connect, שרוצים להגדיר לה קישוריות יוצאת.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloudשבו אתם משתמשים.

REST v1

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫NETWORK_ATTACHMENT_URI: ה-URI של חיבור הרשת בפרויקט. כדי להשבית, צריך להגדיר את הערך null.
  • INSTANCE_ID: השם של מכונת Cloud SQL.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID

תוכן בקשת JSON:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": null,
        "kind": "sql#settings"
      }
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

REST v1beta4

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט.
  • ‫NETWORK_ATTACHMENT_URI: ה-URI של חיבור הרשת בפרויקט. כדי להשבית, צריך להגדיר את הערך null.
  • INSTANCE_ID: השם של מכונת Cloud SQL.

ה-method של ה-HTTP וכתובת ה-URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID

תוכן בקשת JSON:

{
  "settings": {
    "ipConfiguration": {
      "pscConfig: {
        "networkAttachmentUri": null,
        "kind": "sql#settings"
      }
    },
  }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID",
  "status": "PENDING",
  "user": USER,
  "insertTime": "2025-05-13T20:44:23.064Z",
  "operationType": "UPDATE",
  "targetId": "INSTANCE_ID",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID","
}

בדיקת הקישוריות

כדי לבדוק את הקישוריות הנכנסת למכונה של Cloud SQL שמופעל בה Private Service Connect, מגדירים את כתובת ה-IP של נקודת הקצה של Private Service Connect ככתובת ה-IP של היעד.

gcloud

כדי ליצור בדיקת קישוריות למכונה של Cloud SQL שמופעל בה Private Service Connect, משתמשים בפקודה gcloud network-management connectivity-tests create:

gcloud network-management connectivity-tests create CONNECTIVITY_TEST_NAME \
--source-instance=SOURCE_INSTANCE \
--destination-cloud-sql-instance=DESTINATION_CLOUD_SQL_INSTANCE \
--destination-network=DESTINATION_NETWORK \
--destination-port=DESTINATION_PORT \
--protocol=tcp \
--round-trip

מחליפים את הפרטים הבאים:

  • ‫CONNECTIVITY_TEST_NAME: השם של בדיקת הקישוריות.
  • ‫SOURCE_INSTANCE: ה-URI של המכונה ב-Compute Engine שבה נמצאת כתובת ה-IP של המקור (לדוגמה, projects/myproject/zones/myzone/instances/myinstance).
  • DESTINATION_CLOUD_SQL_INSTANCE: כתובת ה-URL של מכונת Cloud SQL (לדוגמה, projects/myproject/instances/myinstance).
  • ‫DESTINATION_NETWORK: ה-URI של רשת ה-VPC שבה נמצאת כתובת ה-IP של היעד (לדוגמה, projects/myproject/global/networks/mynetwork).
  • ‫DESTINATION_PORT: מספר היציאה ששמור למכונה. במכונות של Cloud SQL ל-SQL Server, מספר היציאה הוא 1433.

REST

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_ID: המזהה או מספר הפרויקט ב- Google Cloud שמכיל את המכונה.
  • ‫CONNECTIVITY_TEST_NAME: השם של בדיקת הקישוריות.
  • ‫SOURCE_IP_ADDRESS: כתובת ה-IP של מכונת המקור ב-Compute Engine.
  • ‫SOURCE_INSTANCE: ה-URI של המכונה ב-Compute Engine שבה נמצאת כתובת ה-IP של המקור (לדוגמה, projects/myproject/zones/myzone/instances/myinstance).
  • ‫SOURCE_NETWORK: ה-URI של רשת ה-VPC שבה נמצאת כתובת ה-IP של המקור (לדוגמה, projects/myproject/global/networks/mynetwork).
  • DESTINATION_IP_ADDRESS: כתובת ה-IP של מכונת היעד ב-Cloud SQL.
  • ‫DESTINATION_PORT: מספר היציאה ששמור למכונה. במכונות של Cloud SQL ל-SQL Server, מספר היציאה הוא 1433.
  • ‫DESTINATION_NETWORK: ה-URI של רשת ה-VPC שבה נמצאת כתובת ה-IP של היעד (לדוגמה, projects/myproject/global/networks/mynetwork).

ה-method של ה-HTTP וכתובת ה-URL:

POST https://networkmanagement.googleapis.com/v1beta/projects/PROJECT_ID/locations/global/connectivityTests?testId=CONNECTIVITY_TEST_NAME

תוכן בקשת JSON:

{
  "source": {
    "ipAddress": "SOURCE_IP_ADDRESS",
    "instance": "SOURCE_INSTANCE",
    "network": "SOURCE_NETWORK"
  },
  "destination": {
    "ipAddress": "DESTINATION_IP_ADDRESS",
    "port": DESTINATION_PORT,
    "network": "DESTINATION_NETWORK",
    "projectId": "PROJECT_ID"
  },
  "protocol": "TCP"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אתם אמורים לקבל תגובת JSON שדומה לזו:

{
  "name": "projects/PROJECT_ID/locations/global/operations/operation-OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.networkmanagement.v1.OperationMetadata",
    "createTime": "2024-05-23T16:43:49.313981473Z",
    "target": "projects/PROJECT_ID/locations/global/connectivityTests/CONNECTIVITY_TEST_NAME",
    "verb": "create",
    "cancelRequested": false,
    "apiVersion": "v1"
  },
  "done": false
}

מגבלות

  • אתם יכולים להגדיר עד 20 נקודות קצה של Private Service Connect שמחוברות לקובץ המצורף של השירות במכונה של Cloud SQL, כשהתכונה Private Service Connect מופעלת.

    אם אתם צריכים להתחבר מרשתות VPC נוספות, אתם יכולים להשתמש בהפצת נקודות קצה של Private Service Connect דרך NCC. מידע נוסף זמין במאמר הפצה של נקודות קצה של Private Service Connect.

  • אפשר ליצור עד 64,512 חיבורים בו-זמנית באמצעות Private Service Connect למכונה של Cloud SQL.

  • הדגלים הבאים לא תקפים או מושפעים:

    • --no-assign-ip: צריך להשתמש בדגל הזה כי מכונות שמופעל בהן Private Service Connect לא תומכות בשימוש בסוגי קישוריות אחרים, כמו חיבורים של כתובות IP חיצוניות
    • ‫--authorized-networks: אי אפשר להשתמש בדגל הזה כדי להוסיף רשתות מורשות
    • --network: אי אפשר להשתמש בדגל הזה כי הוא משויך לגישה לשירותים פרטיים
    • ‫--allocated-ip-range-name: אי אפשר להשתמש בדגל הזה כי אין תמיכה בשמות של טווחי כתובות IP מותרים
  • אי אפשר להגדיר מכונה שמופעל בה Private Service Connect כך שתשתמש בגישה לשירותים פרטיים או בחיבורים לכתובות IP חיצוניות.

    • אי אפשר להפעיל חיבורים של כתובות IP חיצוניות במכונה שמופעל בה Private Service Connect.
    • אי אפשר להפעיל גישה לשירותים פרטיים או להוסיף רשתות מורשות למכונה.
    • אי אפשר לשנות את סוג הקישוריות של המכונה.
    • אי אפשר להשתמש בפקודה gcloud sql connect, ב-Cloud Shell, ב-Cloud Build, ב-Database Migration Service או ב-Datastream כדי להתחבר למכונות של Cloud SQL שמופעל בהן Private Service Connect.

    • כשבודקים את הקישוריות למכונה של Cloud SQL שמופעל בה Private Service Connect, אי אפשר להגדיר את הפריטים הבאים:

      • כתובת ה-IP הפנימית או שם ה-DNS של המכונה כיעד ישיר
      • המופע כמקור
      • כתובת ה-IP של נקודת הקצה של Private Service Connect כמקור
    • אי אפשר להשתמש ברשתות מורשות כדי להוסיף לרשימת ההיתרים על סמך כתובת IP.

    • אין תמיכה בהוספה לרשימת היתרים שמבוססת על כתובת IP ונאכפת על ידי בקרת גישה מבוססת-הקשר.

    • במכונות Cloud SQL שמופעל בהן Private Service Connect, אין תמיכה בשירות מנוהל ל-Microsoft Active Directory (שנקרא גם "שירות מנוהל ל-Microsoft AD").

      פתרון בעיות

      בקטע הזה מפורט מידע על בעיות שקשורות למכונות של Cloud SQL שמופעל בהן Private Service Connect, וגם שלבים לפתרון הבעיות.

      שגיאה פתרון בעיות
      החיבור לשירות של המכונה לא מקבל את נקודת הקצה של Private Service Connect.
      1. בודקים את הסטטוס של נקודת הקצה.

        gcloud

        כדי לבדוק את הסטטוס, משתמשים בפקודה
        gcloud compute forwarding-rules describe.

        gcloud compute forwarding-rules describe ENDPOINT_NAME \
        --project=PROJECT_ID \
        --region=REGION_NAME \
        | grep pscConnectionStatus

        מחליפים את הפרטים הבאים:

        • ‫ENDPOINT_NAME: השם של נקודת הקצה
        • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה (endpoint)
        • ‫REGION_NAME: שם האזור של נקודת הקצה (endpoint)

        REST

        לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

        • ‫PROJECT_ID: המזהה או מספר הפרויקט של הפרויקט ב- Google Cloud שמכיל את נקודת הקצה של Private Service Connect
        • ‫REGION_NAME: שם האזור
        • ‫ENDPOINT_NAME: השם של נקודת הקצה

        ה-method של ה-HTTP וכתובת ה-URL:

        GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME

        כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

        אתם אמורים לקבל תגובת JSON שדומה לזו:

        {
          "kind": "compute#forwardingRule",
          "id": "ENDPOINT_ID",
          "creationTimestamp": "2024-05-09T12:03:21.383-07:00",
          "name": "ENDPOINT_NAME",
          "region": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME",
          "IPAddress": "IP_ADDRESS",
          "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_NAME",
          "selfLink": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/forwardingRules/ENDPOINT_NAME",
          "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default",
          "serviceDirectoryRegistrations": [
            {
              "namespace": "goog-psc-default"
            }
          ],
          "networkTier": "PREMIUM",
          "labelFingerprint": "LABEL_FINGERPRINT_ID",
          "fingerprint": "FINGERPRINT_ID",
          "pscConnectionId": "CONNECTION_ID",
          "pscConnectionStatus": "ACCEPTED",
          "allowPscGlobalAccess": true
        }
        
      2. מוודאים שהסטטוס של נקודת הקצה הוא ACCEPTED. אם הסטטוס הוא PENDING, המכונה לא מאפשרת לפרויקט Google Cloud שמכיל את נקודת הקצה. מוודאים שפרויקט הרשת שבו נוצרה נקודת הקצה מורשה. מידע נוסף זמין במאמר עריכת מכון שהופעלה בו Private Service Connect.
      ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: The resource 'projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME' was not found הודעת השגיאה הזו יכולה להופיע כששומרים כתובת IP פנימית סטטית לנקודת הקצה (endpoint) של Private Service Connect. מוודאים שרשת המשנה שצוינה קיימת בפרויקט שצוין ב-URI. אם רוצים ליצור נקודת קצה בפרויקט שירות אבל להשתמש ברשת משנה מרשת VPC משותפת, צריך לציין את ה-URI של רשת המשנה ולהשתמש במזהה הפרויקט של הפרויקט המארח ב-URI. מידע נוסף זמין במאמר יצירת נקודת הקצה באופן ידני.
      ERROR: (gcloud.compute.forwarding-rules.create) Could not fetch resource: - The resource 'projects/PROJECT_ID/global/networks/NETWORK_NAME' was not found הודעת השגיאה הזו יכולה להופיע כשיוצרים נקודת קצה (endpoint) של Private Service Connect באופן ידני. צריך לוודא שהרשת שצוינה קיימת בפרויקט שצוין ב-URI. אם רוצים ליצור נקודת קצה בפרויקט שירות אבל להשתמש ברשת VPC משותפת, צריך לציין את הרשת לפי ה-URI שלה ולהשתמש במזהה הפרויקט של הפרויקט המארח ב-URI. מידע נוסף זמין במאמר יצירת נקודת הקצה באופן ידני.
      Invalid consumer network status for PSC auto connection.

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

      • ‫CONNECTION_POLICY_MISSING: אין מדיניות תואמת לחיבורי שירות ברשת הצרכן. מדיניות החיבור לשירות מוגדרת לפי רשת ולפי אזור. כדי להגדיר מחדש את הרשת, קראו את המאמר עדכון מדיניות החיבור לשירות.
      • ‫CONSUMER_INSTANCE_PROJECT_NOT_ALLOWLISTED: יש מדיניות תואמת לחיבור לשירות, אבל השדה Service instance scope במדיניות לא מוגדר לאפשר חיבור למכונה הזו של Cloud SQL. מעדכנים את המדיניות כדי להגדיר את הערך של השדה Service instance scope ‏(--producer-instance-location) עם הפרויקט, התיקייה או הארגון שבהם נמצא המכונה של Cloud SQL. כדי להגדיר מחדש את מדיניות החיבור לשירות, קראו את המאמר עדכון מדיניות החיבור לשירות.
      • ‫POLICY_LIMIT_REACHED: מדיניות החיבור לשירות הגיעה למגבלת נקודות הקצה שלה. כדי לפתור את הבעיה, צריך להגדיל את מגבלת נקודות הקצה על ידי עדכון המדיניות של חיבורי השירות.
      No permission to create a service connection policy.

      אין לכם את ההרשאות הנדרשות כדי ליצור מדיניות חיבור לשירות. כדי ליצור מדיניות חיבור לשירות, צריך את התפקיד Compute Network Admin IAM. למידע נוסף, קראו את המאמר תפקידים והרשאות.

      מחבר הרשת אינו יכול לקבל חיבורים מהממשק של Private Service Connect כשמשתמשים בקישוריות יוצאת של Private Service Connect.

      אם הרשת החיצונית לא יכולה לקבל חיבורים מממשק Private Service Connect, יכול להיות שכללי המדיניות של החיבורים במחבר הרשת לא מוגדרים נכון.

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

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

          gcloud compute network-attachments describe default
          --region=REGION_ID
          

      אם הממשק של Private Service Connect לא נמצא ברשימת הממשקים שאושרו, מעדכנים את מחבר הרשת. מידע נוסף זמין במאמר ניהול של חיבורי רשת.

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