בדף הזה מופיעים מידע ודוגמאות להתחברות למופע 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, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (
roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאהserviceusage.services.enable. איך מקצים תפקידים - יצירת מכונה של 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) דרך תעבורת נתונים יוצאת (egress) ישירה של VPC או דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless, אתם צריכים להשתמש בכתובת IP פרטית. השוואה בין יציאה ישירה מ-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) או עם האפשרות של 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 v1. מידע נוסף על דרישות החיבור ל-Cloud SQL עבור שרת ה-proxy ל-Cloud SQL Auth זמין במאמר דרישות לשימוש בשרת ה-proxy ל-Cloud SQL Auth.
בדומה לכל שינוי בהגדרות, הגדרה חדשה של החיבור ל-Cloud SQL מובילה ליצירה של גרסה חדשה ב-Cloud Run. גם גרסאות עתידיות יקבלו אוטומטית את החיבור הזה ל-Cloud SQL, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותו.
המסוף
-
מתחילים להגדיר את השירות. כדי להוסיף חיבורים ל-Cloud SQL לשירות קיים:
- ברשימה שירותים, לוחצים על שם השירות הרצוי.
- לוחצים על עריכה ופריסה של גרסה חדשה.
- מפעילים את האפשרות להתחבר למכונת Cloud SQL:
- לוחצים על מאגרי תגים ואז על הגדרות.
- גוללים אל חיבורים ל-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 וגם חיבור לרשת (VPC) מאפליקציית serverless תומכים בתקשורת עם רשתות VPC שמחוברות באמצעות Cloud VPN וקישור בין רשתות שכנות (peering) של 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.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו, על ידי שרת מסד הנתונים עצמו או על ידי התשתית של הפלטפורמה. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים שמבצעים חיבור מחדש אוטומטי לחיבורי לקוח שנפסקו. אתם יכולים להשתמש בניהול מאגר חיבורים עם מכונות Cloud SQL, כדי לשנות את גודל עומסי העבודה על ידי אופטימיזציה של ניצול המשאבים ושל זמן האחזור של החיבורים למכונות Cloud SQL באמצעות מאגר חיבורים. מידע מפורט על ניהול מאגר חיבורים זמין במאמר סקירה כללית על ניהול מאגר חיבורים.
דוגמאות מפורטות נוספות לשימוש במאגרי חיבורים זמינות בדף ניהול חיבורים למסד נתונים.
מגבלות על חיבורים
גם ב-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
- מידע נוסף על יצירה ופריסה של תמונות מאגר תגים.