בדף הזה מופיעים מידע ודוגמאות להתחברות למופע Cloud SQL משירות שפועל ב-Cloud Run.
הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה ב-Cloud Run שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא חיבור מ-Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
Cloud Run היא פלטפורמת מחשוב מנוהלת שמאפשרת להריץ קונטיינרים ישירות על גבי תשתית Google Cloud .
הגדרת מכונה של Cloud SQL
- אם עדיין לא עשיתם את זה, מפעילים את Cloud SQL Admin API בפרויקט Google Cloud שממנו מתחברים:
תפקידים שנדרשים להפעלת ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - יצירת מכונה של Cloud SQL ל-SQL Server. מומלץ לבחור
מיקום של מכונת Cloud SQL באותו אזור שבו נמצא שירות Cloud Run, כדי לשפר את זמן האחזור, להימנע מחלק מהעלויות של הרשת ולהפחית את הסיכון לכשלים חוצי-אזורים.
כברירת מחדל, Cloud SQL מקצה כתובת IP ציבורית למכונה חדשה. יש לכם גם אפשרות להקצות כתובת IP פרטית. מידע נוסף על אפשרויות הקישוריות של שניהם זמין בדף סקירה כללית על קישוריות.
- כשיוצרים את המכונה, אפשר לבחור את
ההיררכיה של אישור השרת (CA) עבור המכונה, ואז להגדיר את ההיררכיה כ
serverCaModeעבור המכונה. צריך לבחור באפשרות CA לכל מופע (GOOGLE_MANAGED_INTERNAL_CA) כמצב CA של השרת עבור מופעים שרוצים להתחבר אליהם מאפליקציות אינטרנט.
הגדרת Cloud Run
השלבים להגדרת Cloud Run תלויים בסוג כתובת ה-IP שהקציתם למכונת Cloud SQL. אם אתם מעבירים את כל תעבורת הנתונים היוצאת (egress) דרך Direct VPC egress או דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless, אתם צריכים להשתמש בכתובת IP פרטית. להשוואה בין שתי שיטות תעבורת נתונים יוצאת (egress), ראו השוואה בין Direct VPC לבין מחברי VPC.כתובת IP ציבורית (ברירת מחדל)
Cloud Run תומך בחיבור ל-Cloud SQL ל-SQL Server דרך כתובת IP ציבורית באמצעות מחברי Go, Java ו-Python.
- מוודאים שלמופע יש כתובת IP ציבורית. אפשר לבדוק את זה בדף Overview של המופע בGoogle Cloud מסוף. אם אתם צריכים להוסיף כתובת IP ציבורית, תוכלו להיעזר בהוראות שבמאמר בנושא הגדרה של כתובת IP ציבורית.
- מקבלים את INSTANCE_CONNECTION_NAME של המופע. אפשר למצוא את הערך הזה בדף Overview של המופע בGoogle Cloud מסוף או על ידי הפעלת הפקודה הבאה:
gcloud sql instances describe מחליפים את INSTANCE_NAME בשם של מופע Cloud SQL.gcloud sql instances describe INSTANCE_NAME
- מקבלים את CLOUD_RUN_SERVICE_ACCOUNT_NAME של שירות Cloud Run. אפשר למצוא את הערך הזה בדף IAM של הפרויקט שמארח את שירות Cloud Run בGoogle Cloud מסוף, או על ידי הפעלת הפקודה
gcloud run services describeהבאה בפרויקט שמארח את שירות Cloud Run: מחליפים את המשתנים הבאים:gcloud run services describe CLOUD_RUN_SERVICE_NAME --region CLOUD_RUN_SERVICE_REGION --format="value(spec.template.spec.serviceAccountName)"
- CLOUD_RUN_SERVICE_NAME: השם של שירות Cloud Run
- CLOUD_RUN_SERVICE_REGION: האזור של שירות Cloud Run
-
מגדירים את חשבון השירות בשביל שירות Cloud Run. כדי להתחבר ל-Cloud SQL, צריך לוודא שלחשבון השירות יש
Cloud SQL Clientתפקיד IAM. - אם מוסיפים חיבור ל-Cloud SQL לשירות חדש, צריך להוסיף את השירות לקונטיינר ולהעלות אותו ל-Container Registry או ל-Artifact Registry. אם עדיין אין לכם חיבור, תוכלו לעיין בהוראות האלה בנושא יצירה ופריסה של קובץ אימג' של קונטיינר.
אם אתם מתחברים למופעים שהוגדרו עם רשות אישורים (CA) משותפת (
GOOGLE_MANAGED_CAS_CA) או עם רשות אישורים בניהול הלקוח (CUSTOMER_MANAGED_CAS_CA) בתור מצב CA של השרת, אתם צריכים לבחור את סביבת ההפעלה מהדור השני כשאתם בוחרים את סביבת ההפעלה של השירות. שתי האפשרויות של מצב CA של השרת מחייבות חיבור למכונה באמצעות Cloud SQL Auth Proxy v2.אם השירות פועל בסביבת הפעלה מהדור הראשון, אפשר להתחבר רק למופעי Cloud SQL שהוגדרו עם אפשרות רשות האישורים (CA) לכל מופע (
GOOGLE_MANAGED_INTERNAL_CA) כמצב CA של השרת. סביבת ההפעלה של Cloud Run מהדור הראשון כוללת את שרת ה-proxy ל-Cloud SQL Auth בגרסה 1. מידע נוסף על דרישות החיבור ל-Cloud SQL עבור שרת ה-proxy ל-Cloud SQL Auth זמין במאמר בנושא דרישות לשימוש בשרת ה-proxy ל-Cloud SQL Auth.
בדומה לכל שינוי בהגדרות, הגדרה חדשה של חיבור Cloud SQL מובילה ליצירה של גרסה חדשה ב-Cloud Run. גם גרסאות מאוחרות יותר יקבלו באופן אוטומטי את החיבור הזה ל-Cloud SQL, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותו.
המסוף
-
מתחילים להגדיר את השירות. כדי להוסיף חיבורים ל-Cloud SQL לשירות קיים:
- ברשימה Services, לוחצים על שם השירות הרצוי.
- לוחצים על עריכה ופריסה של גרסה חדשה.
- מפעילים את האפשרות להתחבר למכונת Cloud SQL:
- לוחצים על Container(s) (מאגרי תגים) ואז על Settings (הגדרות).
- גוללים אל Cloud SQL connections (חיבורים ל-Cloud SQL).
- לוחצים על הוספת חיבור.
- אם עדיין לא הפעלתם את Cloud SQL Admin API, לוחצים על הלחצן Enable the Cloud SQL Admin.

- אם מוסיפים חיבור למכונה של Cloud SQL בפרויקט, בוחרים את המכונה הרצויה של Cloud SQL מהתפריט.
- אם אתם משתמשים במכונת Cloud SQL מפרויקט אחר, בוחרים באפשרות מחרוזת חיבור בהתאמה אישית בתפריט ומזינים את השם המלא של חיבור המכונה בפורמט PROJECT-ID:REGION:INSTANCE-ID.
- כדי למחוק קישור, מעבירים את הסמן לצד שמאל של הקישור כדי להציג את הסמל מחיקה ולוחצים עליו.
-
לוחצים על יצירה או על פריסה.
שורת הפקודה
לפני שמשתמשים באחת מהפקודות הבאות, מחליפים את המשתנים הבאים בערכים:
- IMAGE עם התמונה שאתם פורסים
- SERVICE_NAME בשם של שירות Cloud Run
-
INSTANCE_CONNECTION_NAME עם שם החיבור של המכונה שלכם ב-Cloud SQL, או רשימה של שמות חיבורים שמופרדים בפסיקים.
אם אתם פורסים קונטיינר חדש, משתמשים בפקודה הבאה:
אם מעדכנים שירות קיים, משתמשים בפקודה הבאה:gcloud run deploy \ --image=IMAGE \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Terraform
הקוד הבא יוצר קונטיינר בסיסי של Cloud Run עם מכונה מקושרת של Cloud SQL.
-
מזינים
terraform applyכדי להחיל את השינויים. - כדי לוודא שהשינויים בוצעו, בודקים את השירות Cloud Run, לוחצים על הכרטיסייה Revisions (עדכונים) ואז על הכרטיסייה Connections (חיבורים).
כתובת IP פרטית
אם חשבון השירות שמוגדרים לו הרשאות שייך לפרויקט אחר מזה שמכיל את מכונת Cloud SQL, צריך לבצע את הפעולות הבאות:
- מפעילים את Cloud SQL Admin API בשני הפרויקטים.
- מוסיפים את הרשאות ה-IAM לחשבון השירות בפרויקט שמכיל את מכונת Cloud SQL.
- מוודאים שלמכונת Cloud SQL שנוצרה קודם יש כתובת IP פרטית. כדי להוסיף כתובת IP פנימית, אפשר לעיין במאמר בנושא הגדרת כתובת IP פרטית.
- מגדירים את שיטת היציאה כדי להתחבר לאותה רשת VPC כמו מכונת Cloud SQL. חשוב לשים לב לתנאים הבאים:
- גם Direct VPC egress וגם חיבור לרשת (VPC) מאפליקציית serverless תומכים בתקשורת עם רשתות VPC שמחוברות באמצעות Cloud VPN וקישור בין רשתות VPC שכנות.
- Direct VPC egress ו-Serverless VPC Access לא תומכים ברשתות מדור קודם.
- אלא אם אתם משתמשים ב- VPC משותף, המחבר חייב להיות באותו פרויקט ובאותו אזור כמו המשאב שמשתמש בו, אבל המחבר יכול לשלוח תעבורה למשאבים באזורים שונים.
- מתחברים באמצעות כתובת ה-IP הפרטית והיציאה של המופע
1433.
התחברות ל-Cloud SQL
אחרי שמגדירים את Cloud Run, אפשר להתחבר למכונת Cloud SQL.
כתובת IP ציבורית (ברירת מחדל)
בנתיבי כתובות IP ציבוריות, Cloud Run מספק הצפנה ומתחבר באמצעות מחברי Cloud SQL.
התחברות באמצעות מחברים של Cloud SQL
מחברי Cloud SQL הם ספריות ספציפיות לשפה שמספקות הצפנה והרשאה מבוססת-IAM כשמתחברים למכונת Cloud SQL.
Python
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
הערה:
- המשתנה CLOUD_SQL_CONNECTION_NAME צריך להיות מיוצג בתור <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- כאן מפורטות דרישות הגרסה של JDBC socket factory לקובץ pom.xml.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
שימוש ב-Secret Manager
Google ממליצה להשתמש ב-Secret Manager כדי לאחסן מידע רגיש כמו פרטי כניסה ל-SQL. אתם יכולים להעביר סודות כמשתני סביבה או לצרף אותם כנפח באמצעות Cloud Run.
אחרי יצירת סוד ב-Secret Manager, מעדכנים שירות קיים באמצעות הפקודה הבאה:
שורת הפקודה
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME --update-env-vars=INSTANCE_CONNECTION_NAME=INSTANCE_CONNECTION_NAME_SECRET \ --update-secrets=DB_USER=DB_USER_SECRET:latest \ --update-secrets=DB_PASS=DB_PASS_SECRET:latest \ --update-secrets=DB_NAME=DB_NAME_SECRET:latest
Terraform
הפקודה הבאה יוצרת משאבים סודיים כדי לאחסן בצורה מאובטחת את הערכים של שם המשתמש, הסיסמה והשם של מסד הנתונים באמצעות google_secret_manager_secret ו-google_secret_manager_secret_version. שימו לב: צריך לעדכן את חשבון השירות של פרויקט Compute כדי שתהיה לו גישה לכל סוד.
מעדכנים את משאב Cloud Run הראשי כך שיכלול את הסודות החדשים.
מזינים terraform apply כדי להחיל את השינויים.
בדוגמה לפקודה נעשה שימוש בגרסה הסודית, latest. עם זאת, Google ממליצה להצמיד את הסוד לגרסה ספציפית, SECRET_NAME:v1.
כתובת IP פרטית
בנתיבי IP פרטיים, האפליקציה מתחברת ישירות למופע דרך רשת VPC. בשיטה הזו נעשה שימוש ב-TCP כדי להתחבר ישירות למכונה של Cloud SQL בלי להשתמש בשרת proxy ל-Cloud SQL Auth.
חיבור באמצעות TCP
מתחברים באמצעות כתובת ה-IP הפרטית של מכונת Cloud SQL בתור המארח והיציאה 1433.
Python
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
הערה:
- המשתנה CLOUD_SQL_CONNECTION_NAME צריך להיות מיוצג בתור <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- השימוש בארגומנט ipTypes=PRIVATE יגרום ל-SocketFactory להתחבר עם כתובת IP פרטית שמשויכת למופע.
- אפשר לעיין בדרישות הגרסה של JDBC socket factory לקובץ pom.xml.
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Ruby
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
PHP
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
שיטות מומלצות ומידע נוסף
אתם יכולים להשתמש בשרת proxy ל-Cloud SQL Auth כשאתם בודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במדריך לתחילת העבודה עם שרת proxy ל-Cloud SQL Auth.
אפשר גם לבדוק באמצעות Cloud SQL Proxy דרך קונטיינר Docker.
מגבלות על חיבורים
במהדורות MySQL ו-PostgreSQL של Cloud SQL יש מגבלה מקסימלית על מספר החיבורים בו-זמנית, והמגבלות האלה עשויות להשתנות בהתאם למנוע מסד הנתונים שנבחר (מידע נוסף זמין בדף מכסות ומגבלות של Cloud SQL).
מספר החיבורים המקסימלי למסד נתונים של Cloud SQL במקרים של מופעי קונטיינר ב-Cloud Run הוא 100. לכל מופע של שירות או משימה ב-Cloud Run יכולים להיות 100 חיבורים למסד הנתונים, וככל שהשירות או המשימה גדלים, המספר הכולל של החיבורים לכל פריסה יכול לגדול.
אפשר להגביל את המספר המקסימלי של החיבורים שמשמשים כל מכונה באמצעות מאגר חיבורים. דוגמאות מפורטות נוספות להגבלת מספר החיבורים מופיעות בדף ניהול חיבורים למסדי נתונים.
מגבלות מכסה ל-API
Cloud Run מספק מנגנון שמתחבר באמצעות שרת proxy ל-Cloud SQL Auth, שמשתמש ב-Cloud SQL Admin API. מגבלות מכסת ה-API חלות על שרת proxy ל-Cloud SQL Auth. המיכסה של Cloud SQL Admin API שנעשה בה שימוש היא בערך פי שניים ממספר המכונות של Cloud SQL שהוגדרו, כפול מספר המכונות של Cloud Run של שירות מסוים שנפרס בכל זמן נתון. כדי לשנות את מכסת ה-API הצפויה, אפשר להגביל או להגדיל את מספר המופעים של Cloud Run.
המאמרים הבאים
- מידע נוסף על Cloud Run
- מידע נוסף על יצירה ופריסה של תמונות מאגר.