בדף הזה מוסבר איך להתחבר למכונה של 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 ל-MySQL. כדי לשפר את זמן האחזור, להימנע מעלויות מסוימות של שימוש ברשת ולהפחית את הסיכון לכשלים בין אזורים, מומלץ לבחור
מיקום למכונה של 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 ציבורית (ברירת מחדל)
- מוודאים שלמכונה יש כתובת 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, ודאו שלחשבון השירות יש את תפקיד ה-IAM
Cloud SQL Client. - אם אתם מוסיפים חיבור של 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 כוללת את גרסה 1 של Cloud SQL Auth Proxy. מידע נוסף על דרישות החיבור ל-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 ו-Serverless VPC Access תומכים בתקשורת לרשתות VPC שמחוברות באמצעות Cloud VPN וVPC Network Peering.
- Direct VPC egress ו-Serverless VPC Access לא תומכים ברשתות מדור קודם.
- אם אתם לא משתמשים ב- VPC משותף, המחבר צריך להיות באותו פרויקט ובאותו אזור כמו המשאב שמשתמש בו, אבל המחבר יכול לשלוח תנועה למשאבים באזורים שונים.
- מתחברים באמצעות כתובת ה-IP הפרטית של המכונה ויציאה
3306.
התחברות ל-Cloud SQL
אחרי שמגדירים את Cloud Run, אפשר להתחבר למכונה של Cloud SQL.
כתובת IP ציבורית (ברירת מחדל)
בנתיבים של כתובות IP ציבוריות, אפשר להגדיר את Cloud Run כך שישתמש ב-Cloud SQL Auth Proxy להצפנה בשתי דרכים:
- דרך שקעי 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 Engine כדי שתהיה לו גישה לכל סוד.
מעדכנים את המשאב הראשי של Cloud Run כך שיכלול את הסודות החדשים.
מזינים terraform apply כדי להחיל את השינויים.
בפקודה לדוגמה נעשה שימוש בגרסת הסוד latest, אבל Google ממליצה להצמיד את הסוד לגרסה ספציפית, SECRET_NAME:v1.
כתובת IP פרטית
בנתיבים של כתובות IP פרטיות, האפליקציה מתחברת ישירות למכונה דרך רשת VPC. בשיטה הזו משתמשים ב-TCP כדי להתחבר ישירות למכונה של Cloud SQL בלי להשתמש ב-Cloud SQL Auth Proxy.
התחברות באמצעות 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.
המשך
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
C#
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
Ruby
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
PHP
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין ב-README ב-GitHub.
שיטות מומלצות ומידע נוסף
אתם יכולים להשתמש ב-Cloud SQL Auth Proxy כשאתם בודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במאמר התחלה מהירה: שימוש ב-Cloud SQL Auth Proxy.
אפשר גם לבדוק באמצעות שרת proxy ל-Cloud SQL דרך קונטיינר של Docker.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו על ידי שרת מסד הנתונים עצמו או על ידי תשתית הפלטפורמה. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים, שמחברים מחדש באופן אוטומטי חיבורי לקוח מנותקים. אתם יכולים להשתמש במאגר מנוהל של חיבורים במכונות של Cloud SQL, כדי לשנות את קנה המידה של עומסי העבודה באמצעות אופטימיזציה של ניצול המשאבים וזמן האחזור של החיבורים במכונות של Cloud SQL. סקירה כללית על מאגר מנוהל של חיבורים
דוגמאות מפורטות יותר לשימוש במאגרי חיבורים מופיעות בדף ניהול החיבורים למסד הנתונים.
מגבלות על החיבורים
גם במהדורת 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 הצפויה.
המאמרים הבאים
- מידע נוסף על Cloud Run
- מידע נוסף על פיתוח ופריסה של קובצי אימג' של קונטיינרים
- דוגמה פתורה ב-Python לשימוש ב-Cloud Run עם MySQL