בדף הזה מופיעים מידע ודוגמאות להתחברות למופע Cloud SQL משירות שפועל ב-Cloud Run.
הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה של Cloud Run שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא התחברות מ-Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
Cloud Run היא פלטפורמת מחשוב מנוהלת שמאפשרת להריץ קונטיינרים ישירות על גבי תשתית Google Cloud .
הגדרת מופע של Cloud SQL
- אם עדיין לא עשיתם את זה, מפעילים את Cloud SQL Admin API בפרויקט שממנו מתחברים: Google Cloud
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - יצירת מכונה של Cloud SQL ל-MySQL. מומלץ לבחור
מיקום של מופע Cloud SQL באותו אזור שבו נמצא שירות Cloud Run, כדי לשפר את זמן האחזור, להימנע מחלק מהעלויות של הרשת ולהפחית את הסיכון לכשלים חוצי-אזורים.
כברירת מחדל, Cloud SQL מקצה כתובת IP ציבורית למכונה חדשה. יש לכם גם אפשרות להקצות כתובת IP פרטית. מידע נוסף על אפשרויות הקישוריות לשניהם זמין בדף סקירה כללית על חיבורים.
- כשיוצרים את המכונה, אפשר לבחור את
היררכיית אישורי השרת (CA) עבור המכונה, ואז להגדיר את ההיררכיה כ-
serverCaModeעבור המכונה. צריך לבחור באפשרות CA לכל מופע (GOOGLE_MANAGED_INTERNAL_CA) בתור מצב CA של השרת עבור מופעים שרוצים להתחבר אליהם מאפליקציות אינטרנט.
הגדרת Cloud Run
השלבים להגדרת Cloud Run תלויים בסוג כתובת ה-IP שהקציתם למכונה של Cloud SQL. אם אתם מעבירים את כל תעבורת היציאה דרך יציאה ישירה מ-VPC או דרך מחבר של חיבור לרשת (VPC) מאפליקציית serverless, השתמשו בכתובת IP פרטית. השוואה בין שתי שיטות של תעבורת נתונים יוצאת (egress) מהרשתכתובת IP ציבורית (ברירת מחדל)
- מוודאים שלמופע יש כתובת 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 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 פרטית.
- מגדירים את שיטת תעבורת הנתונים היוצאת (egress) כדי להתחבר לאותה רשת VPC כמו מכונת Cloud SQL. חשוב לשים לב לתנאים הבאים:
- גם תעבורת נתונים יוצאת (egress) ישירה של VPC וגם חיבור לרשת (VPC) מאפליקציית serverless תומכים בתקשורת עם רשתות VPC שמחוברות באמצעות Cloud VPN וקישור בין רשתות שכנות (peering) של VPC.
- תעבורת נתונים יוצאת (egress) ישירה מ-VPC וחיבור לרשת (VPC) מאפליקציית serverless לא תומכים ברשתות מדור קודם.
- אלא אם אתם משתמשים ב- VPC משותף, המחבר חייב להיות באותו פרויקט ובאותו אזור כמו המשאב שמשתמש בו, אבל המחבר יכול לשלוח תעבורה למשאבים באזורים שונים.
- מתחברים באמצעות כתובת ה-IP הפרטית והיציאה של המופע
3306.
התחברות ל-Cloud SQL
אחרי שמגדירים את Cloud Run, אפשר להתחבר למכונה של Cloud SQL.
כתובת IP ציבורית (ברירת מחדל)
לנתיבי כתובות IP ציבוריות, אפשר להגדיר את Cloud Run לשימוש בשרת proxy ל-Cloud SQL Auth להצפנה בשתי דרכים:
- באמצעות שקעי Unix
- באמצעות מחבר Cloud SQL
שימוש ב-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 כמארח ויציאה 3306.
Python
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Java
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
הערה:
- המשתנה INSTANCE_CONNECTION_NAME צריך להיות מיוצג בתבנית <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>
- השימוש בארגומנט ipTypes=PRIVATE יגרום ל-SocketFactory להתחבר עם כתובת IP פרטית שמשויכת למופע.
- אפשר לעיין בדרישות הגרסה של JDBC socket factory עבור הקובץ pom.xml.
Node.js
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
Go
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
C#
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-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 Quotas and Limits).מכונות קונטיינר של Cloud Run מוגבלות ל-100 חיבורים למסד נתונים של Cloud SQL. לכל מופע של שירות או משימה ב-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
- מידע נוסף על יצירה ופריסה של תמונות בקונטיינר
- דוגמה מלאה ב-Python לשימוש ב-Cloud Run עם MySQL