בדף הזה מוסבר איך להתחבר למכונה של 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). אחרת, אתם יכולים לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים - יוצרים מכונה של Cloud SQL ל-SQL Server. כדי לשפר את זמן האחזור, להימנע מעלויות מסוימות של שימוש ברשת ולהפחית את הסיכון לכשלים בין אזורים, מומלץ לבחור מיקום למכונה של Cloud SQL באותו אזור של שירות Cloud Run.
כברירת מחדל, Cloud SQL מקצה כתובת IP ציבורית למכונה חדשה. אתם יכולים גם להקצות כתובת IP פרטית. למידע נוסף על אפשרויות הקישוריות של שניהם, קראו את הדף סקירה כללית על התחברות.
- כשיוצרים את המכונה, אפשר לבחור את ההיררכיה של אישור השרת (CA) של המכונה, ואז להגדיר את ההיררכיה בתור
serverCaModeשל המכונה. כדי להתחבר למכונות מאפליקציות אינטרנט, צריך לבחור באפשרות של רשות אישורים לכל מכונה (GOOGLE_MANAGED_INTERNAL_CA) כמצב של רשות האישורים בשרת.
הגדרת Cloud Run
השלבים להגדרת Cloud Run תלויים בסוג כתובת ה-IP שהקציתם למכונה של Cloud SQL. אם אתם מנתבים את כל תעבורת הנתונים היוצאת דרך Direct VPC או דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless, אתם צריכים להשתמש בכתובת IP פרטית. במאמר השוואה בין 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 בשרת, צריך להתחבר למכונה באמצעות Cloud SQL Auth Proxy v2.אם השירות פועל בסביבת זמן ריצה מהדור הראשון, אפשר להתחבר רק למכונות Cloud SQL שמוגדרות עם האפשרות של רשות אישורים (CA) לכל מכונה (
GOOGLE_MANAGED_INTERNAL_CA) כמצב ה-CA של השרת. סביבת ההפעלה מהדור הראשון של Cloud Run מטמיעה את Cloud SQL Auth Proxy בגרסה 1. מידע נוסף על דרישות החיבור ל-Cloud SQL בשביל Cloud SQL Auth Proxy זמין במאמר דרישות לשימוש ב-Cloud SQL Auth Proxy.
כמו כל שינוי בהגדרות, הגדרת תצורה חדשה לחיבור ל-Cloud SQL מובילה ליצירת גרסה חדשה של Cloud Run. גם הגרסאות הבאות יקבלו באופן אוטומטי את החיבור הזה ל-Cloud SQL, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותו.
המסוף
-
מתחילים להגדיר את השירות. כדי להוסיף חיבורים של Cloud SQL לשירות קיים:
- ברשימה Services, לוחצים על שם השירות הרצוי.
- לוחצים על Edit & deploy new revision.
- מפעילים את החיבור למכונה של Cloud SQL:
- לוחצים על מאגרים ואז על הגדרות.
- גוללים לקטע Cloud SQL connections.
- לוחצים על הוספת חיבור.
- אם עדיין לא הפעלתם את Cloud SQL Admin API, לוחצים על הכפתור Enable the Cloud SQL Admin.

- אם אתם מוסיפים חיבור למכונה של Cloud SQL בפרויקט, בחרו את המכונה הרצויה של Cloud SQL מהתפריט.
- אם משתמשים במכונה של Cloud SQL מפרויקט אחר, בוחרים בתפריט את האפשרות custom connection string ומזינים את השם המלא של החיבור למכונה בפורמט PROJECT-ID:REGION:INSTANCE-ID.
- כדי למחוק חיבור, מציבים את הסמן מימין לחיבור כדי להציג את הסמל Delete ולוחצים עליו.
-
לוחצים על Create או על Deploy.
שורת הפקודה
לפני שמשתמשים בפקודות הבאות, צריך להחליף את הערכים בשדות הבאים:
- 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, ואז בכרטיסייה Containers מאתרים את ההגדרה Cloud SQL 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 Engine כדי שתהיה לו גישה לכל סוד.
מעדכנים את המשאב הראשי של Cloud Run כך שיכלול את הסודות החדשים.
מזינים terraform apply כדי להחיל את השינויים.
בפקודה לדוגמה נעשה שימוש בגרסת הסוד latest, אבל Google ממליצה להצמיד את הסוד לגרסה ספציפית, SECRET_NAME:v1.
כתובת IP פרטית
בנתיבי IP פרטיים, האפליקציה מתחברת ישירות למכונה דרך רשת VPC. בשיטה הזו משתמשים ב-TCP כדי להתחבר ישירות למכונה של Cloud SQL בלי להשתמש ב-Cloud SQL Auth Proxy.
חיבור באמצעות 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.
שיטות מומלצות ומידע נוסף
אתם יכולים להשתמש ב-Cloud SQL Auth Proxy כשאתם בודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במדריך למתחילים לשימוש ב-Cloud SQL Auth Proxy.
אפשר גם לבדוק באמצעות שרת proxy ל-Cloud SQL דרך קונטיינר של Docker.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו על ידי שרת מסד הנתונים עצמו או על ידי תשתית הפלטפורמה. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים, שמחברים מחדש באופן אוטומטי חיבורי לקוח מנותקים.
דוגמאות מפורטות יותר לשימוש במאגרי חיבורים מופיעות בדף ניהול חיבורים למסדי נתונים.
מגבלות על החיבורים
גם במהדורת MySQL וגם במהדורת PostgreSQL של Cloud SQL יש מגבלה על מספר החיבורים בו-זמנית, והמגבלות האלה עשויות להשתנות בהתאם למנוע של מסד הנתונים שנבחר (ראו את הדף מכסות ומגבלות ב-Cloud SQL).
במכונות קונטיינר של Cloud Run אפשר ליצור עד 100 חיבורים למסד נתונים של Cloud SQL. לכל מכונה של שירות או משימה ב-Cloud Run יכולים להיות 100 חיבורים למסד הנתונים, וככל שהשירות או המשימה גדלים, המספר הכולל של החיבורים לכל פריסה יכול לגדול.
אתם יכולים להגביל את מספר החיבורים המקסימלי לכל מכונה באמצעות מאגר חיבורים. דוגמאות מפורטות יותר להגבלת מספר החיבורים מופיעות בדף ניהול החיבורים למסד הנתונים.
מגבלות המכסות של ה-API
ב-Cloud Run יש מנגנון שמתחבר באמצעות Cloud SQL Auth Proxy, שמשתמש ב-Cloud SQL Admin API. מגבלות המכסות של ה-API חלות על Cloud SQL Auth Proxy. המכסה של Cloud SQL Admin API שנעשה בה שימוש היא בערך פי שניים ממספר המכונות של Cloud SQL שהוגדרו, כפול מספר המכונות של Cloud Run של שירות מסוים שנפרסו בכל פעם. אתם יכולים להגביל או להגדיל את מספר המכונות של Cloud Run כדי לשנות את מכסת ה-API הצפויה.