בדף הזה מוסבר איך להתחבר למכונה של Cloud SQL משירות שפועל ב-Cloud Run, ומוצגות דוגמאות.
להוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה ב-Cloud Run שמחוברת ל-Cloud SQL, קראו את המדריך למתחילים להתחברות מ-Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
Cloud Run היא פלטפורמת מחשוב מנוהלת שמאפשרת להריץ קונטיינרים ישירות על גבי תשתית Cloud de Confiance by S3NS .
הגדרת מכונה של Cloud SQL
- אם עדיין לא עשיתם את זה, מפעילים את Cloud SQL Admin API בפרויקט Cloud de Confiance שממנו מתחברים:
התפקידים שנדרשים כדי להפעיל ממשקי 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 של המופע בCloud de Confiance מסוף. אם אתם צריכים להוסיף כתובת IP ציבורית, תוכלו להיעזר בהוראות שבמאמר בנושא הגדרה של כתובת IP ציבורית.
- משיגים את INSTANCE_CONNECTION_NAME של המכונה. אפשר למצוא את הערך הזה בדף Overview של המכונה במסוףCloud de Confiance , או על ידי הרצת הפקודה הבאה של
gcloud sql instances describe: מחליפים את INSTANCE_NAME בשם של המכונה ב-Cloud SQL.gcloud sql instances describe INSTANCE_NAME
- מקבלים את CLOUD_RUN_SERVICE_ACCOUNT_NAME של שירות Cloud Run. אפשר למצוא את הערך הזה בדף IAM של הפרויקט שמארח את שירות Cloud Run בCloud de Confiance מסוף, או על ידי הפעלת הפקודה הבאה של
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 כוללת את גרסה 1 של Cloud SQL Auth Proxy. מידע נוסף על דרישות החיבור ל-Cloud SQL עבור Cloud SQL Auth Proxy זמין במאמר בנושא דרישות לשימוש ב-Cloud SQL Auth Proxy.
כמו כל שינוי בהגדרות, הגדרת תצורה חדשה לחיבור ל-Cloud SQL מובילה ליצירת גרסה חדשה של Cloud Run. גם הגרסאות הבאות יקבלו באופן אוטומטי את החיבור הזה ל-Cloud SQL, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותו.
המסוף
-
מתחילים להגדיר את השירות. כדי להוסיף חיבורים של Cloud SQL לשירות קיים:
- ברשימה Services, לוחצים על שם השירות הרצוי.
- לוחצים על עריכה ופריסה של גרסה חדשה.
- מפעילים את האפשרות להתחבר למכונת Cloud SQL:
- לוחצים על Container(s) (מאגרי תגים) ואז על Settings (הגדרות).
- גוללים לקטע 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 כדי שתהיה לו גישה לכל סוד.
מעדכנים את המשאב הראשי של 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 הצפויה לשימוש.