הגדרה של Private Service Connect

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

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

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

  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 billing is enabled for your Google Cloud project.

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

  5. 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 email address for a Google Account.

    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.
  6. Install the gcloud CLI.

  7. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

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

    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 billing is enabled for your Google Cloud project.

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

  12. 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 email address for a Google Account.

    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.
  13. Install the gcloud CLI.

  14. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  15. 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 Client. אם אתם מתחברים ישירות, אתם לא צריכים תפקידים והרשאות של ניהול זהויות והרשאות גישה (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 שמופעל עבור המכונה, ומגדירים את המכונה כך שייווצרו נקודות קצה (endpoints) של 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. בקטע סוג שירות המקור, בוחרים באפשרות שירותי Google.
    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.iam.gserviceaccount.com.

  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 מופעל עבור המכונה, ולהגדיר את המכונה כך שייווצרו נקודות קצה (endpoints) באופן אוטומטי באמצעות 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. בתפריט רשת, בוחרים רשת לנקודת הקצה.
    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.

    אם פרויקט מסוים לא מופיע ברשימה הזו, אי אפשר ליצור בו נקודות קצה (endpoints) של 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: הסיסמה של משתמש Cloud SQL‏ root.
  • ‫AVAILABILITY_TYPE: סוג הזמינות האזורית של המכונה. משתמשים בפרמטר הזה כדי להפעיל או להשבית את הזמינות הגבוהה של המכונה, על ידי ציון אחד מהערכים הבאים:
    • ‫REGIONAL: מאפשר זמינות גבוהה ומומלץ למופעי ייצור. המופע עובר לזמינות בעוד אזור באזור שבחרתם.
    • ‫ZONAL: לא מספק אפשרות מעבר. זה ערך ברירת המחדל.

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

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

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

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

    כל הפרויקטים שציינתם בפרמטרים של החיבור האוטומטי נוספים אוטומטית לפרויקטים המורשים. אם רוצים ליצור נקודות קצה של 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 של נקודת קצה גלובלית לכתיבה:

  • ‫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. כדי להשבית את ההגנה מפני מחיקה, מגדירים את הארגומנט deletion_protection בקובץ התצורה של Terraform לערך false.
    deletion_protection =  "false"
  2. מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה, כדי להחיל את הגדרות Terraform המעודכנות:
    terraform apply
  1. כדי להסיר משאבים שהוחלו בעבר על הגדרות Terraform, מריצים את הפקודה הבאה ומזינים yes בהודעה שמופיעה:

    terraform destroy

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

אפשר לאחזר את כתובת ה-IP הפנימית, שהיא נקודת הקצה (endpoint) של 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: רשימה של הפרויקטים המורשים למופע. אתם יכולים ליצור נקודות קצה של 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 פנימית לנקודת הקצה (endpoint) של 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 של קובץ ה-Service Attachment ואת הפרויקטים שמותרים למופע.

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

כדי ליצור נקודת קצה מסוג 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.

  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.

  4. מוודאים שחיבור השירות מקבל את נקודת הקצה.

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

    • ‫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 או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: שם האזור של נקודת הקצה

    בתשובה, מוודאים שכתובת 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 הפרויקט שמכיל את נקודת הקצה
    • ‫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 הפרויקט שמכיל את נקודת הקצה
    • ‫REGION_NAME: שם האזור של נקודת הקצה
    • ‫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

שרת ה-proxy ל-Cloud SQL Auth הוא מחבר שמספק גישה מאובטחת למכונה עם 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, מפעילים את פרוקסי האימות כך:

./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. הקובץ הבינארי שמורידים תלוי במערכת ההפעלה, ובגרעין (kernel) של מערכת ההפעלה – 32 סיביות או 64 סיביות. רוב החומרות החדשות יותר משתמשות בליבה של 64 ביט.

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

הפעלת Cloud SQL Auth Proxy

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

  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.

מגדירים את שרת ה-proxy ל-Cloud SQL Auth באמצעות שם ה-DNS של Private Service Connect של המכונה, ושם ה-DNS של נקודת הקצה (endpoint) של 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.

בסביבות הנתמכות האלה של שרתים וירטואליים, יש תמיכה גם במחברי שפות ל-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. משיגים את מזהה הפרויקט של הדייר (tenant) ב-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, שרוצים להגדיר בשבילה קישוריות יוצאת.

      שומרים את הערך של מזהה פרויקט הדייר (tenant) כדי לכלול אותו בהמשך ברשימה של מזהי הפרויקטים המקובלים. ההרשאה הזו נדרשת כשיוצרים או מעדכנים חיבור לרשת בפרויקט ב- 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 פנימית סטטית לנקודת הקצה של 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: יש מדיניות תואמת של חיבור לשירות, אבל השדה היקף המופע של השירות במדיניות לא מוגדר כך שיאפשר חיבור למופע הזה של 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 לא נמצא ברשימת הממשקים שאושרו, מעדכנים את מחבר הרשת. מידע נוסף מופיע במאמר בנושא ניהול קבצים מצורפים לרשת.

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