בדף הזה מופיעים מידע ודוגמאות להתחברות למופע Cloud SQL משירות שפועל בפונקציות Cloud Run.
הוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה של פונקציות Cloud Run שמחוברת ל-Cloud SQL זמינות במדריך למתחילים בנושא התחברות מפונקציות Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
פונקציות Cloud Run הוא פתרון מחשוב קל משקל למפתחים, שמאפשר ליצור פונקציות עצמאיות למטרה יחידה שמגיבות לאירועים ב-Cloud, בלי צורך לנהל שרת או סביבת זמן ריצה.
הגדרת מופע של Cloud SQL
- אם עדיין לא עשיתם את זה, מפעילים את Cloud SQL Admin API בפרויקט שממנו מתחברים: Cloud de Confiance
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 ל-PostgreSQL. מומלץ לבחור
מיקום של מופע Cloud SQL באותו אזור שבו נמצא שירות Cloud Run, כדי לשפר את זמן האחזור, להימנע מחלק מהעלויות של הרשת ולהפחית את הסיכון לכשלים חוצי-אזורים.
כברירת מחדל, Cloud SQL מקצה כתובת IP ציבורית למכונה חדשה. יש לכם גם אפשרות להקצות כתובת IP פרטית. מידע נוסף על אפשרויות הקישוריות לשניהם זמין בדף סקירה כללית על חיבורים.
- כשיוצרים את המכונה, אפשר לבחור את
היררכיית אישורי השרת (CA) עבור המכונה, ואז להגדיר את ההיררכיה כ-
serverCaModeעבור המכונה. צריך לבחור באפשרות CA לכל מופע (GOOGLE_MANAGED_INTERNAL_CA) בתור מצב CA של השרת עבור מופעים שרוצים להתחבר אליהם מאפליקציות אינטרנט.
הגדרת פונקציות Cloud Run
השלבים להגדרת פונקציות Cloud Run תלויים בסוג כתובת ה-IP שהקציתם למופע Cloud SQL.כתובת IP ציבורית (ברירת מחדל)
כדי להגדיר פונקציות Cloud Run כדי לאפשר חיבורים למופע Cloud SQL:
- מוודאים שלמופע שנוצר למעלה יש כתובת IP ציבורית. אפשר לאשר זאת בדף Overview של המופע במסוףCloud de Confiance . אם אתם צריכים להוסיף כתובת IP ציבורית, תוכלו לעיין במאמר בנושא הגדרת כתובת IP ציבורית.
- מקבלים את INSTANCE_CONNECTION_NAME של המופע. הערך הזה זמין:
- בדף Overview של המופע, במסוףCloud de Confiance , או
- מריצים את הפקודה הבאה:
gcloud sql instances describe [INSTANCE_NAME]
-
מגדירים את חשבון השירות לפונקציה. אם חשבון השירות שנותן את ההרשאה שייך לפרויקט אחר מהמכונה של Cloud SQL, צריך להפעיל את Cloud SQL Admin API ולהוסיף את
Cloud SQL Clientתפקיד ה-IAM לשני הפרויקטים. - מוודאים שלחשבון השירות יש את התפקיד הזה כדי שהחשבון יוכל להתחבר ל-Cloud SQL.
- אם אתם משתמשים ב
פונקציות Cloud Run ולא בפונקציות Cloud Run (דור ראשון), אתם צריכים את ההגדרות הבאות (אפשר גם לעיין במאמר בנושא
הגדרת Cloud Run):
- פורסים את הפונקציה.
כשמתחילים ליצור פונקציה ב-Cloud Run במסוף Cloud de Confiance , שירות Cloud Run הבסיסי עוד לא נוצר. אי אפשר להגדיר חיבור ל-Cloud SQL עד שהשירות הזה נוצר (על ידי פריסת פונקציית Cloud Run). - במסוף Cloud de Confiance , בפינה הימנית העליונה של הדף Function details (פרטי הפונקציה), בקטע Powered by Cloud Run (מופעל על ידי Cloud Run), לוחצים על הקישור כדי לגשת לשירות Cloud Run הבסיסי.
- בדף Service details של Cloud Run, בוחרים בכרטיסייה Edit and deploy new revision.
- פועלים לפי השלבים הרגילים (כמו בכל שינוי בהגדרות) כדי להגדיר הגדרה חדשה לחיבור Cloud SQL.
הפעולה הזו יוצרת גרסה חדשה של Cloud Run, וגרסאות עוקבות מקבלות באופן אוטומטי את החיבור הזה ל-Cloud SQL, אלא אם משנים אותו באופן מפורש.
- פורסים את הפונקציה.
כתובת IP פרטית
אם חשבון השירות שמוגדרים לו הרשאות שייך לפרויקט אחר מזה שמכיל את מכונת Cloud SQL, צריך לבצע את הפעולות הבאות:
- בכל אחד מהפרויקטים, מפעילים את Cloud SQL Admin API.
- מוסיפים את הרשאות ה-IAM לחשבון השירות בפרויקט שמכיל את מכונת Cloud SQL.
- מוודאים שלמכונת Cloud SQL שנוצרה קודם יש כתובת IP פרטית. אם אתם צריכים להוסיף כתובת IP פרטית, תוכלו להיעזר בהוראות שבמאמר הגדרת כתובת IP פרטית.
- יוצרים מחבר של חיבור לרשת (VPC) מאפליקציית serverless באותה רשת VPC שבה נמצאת מכונת Cloud SQL. חשוב לשים לב לתנאים הבאים:
- אלא אם אתם משתמשים ב- VPC משותף, המחבר צריך להיות באותו פרויקט ובאותו אזור כמו המשאב שמשתמש בו, אבל הוא יכול לשלוח תעבורה למשאבים באזורים שונים.
- חיבור לרשת (VPC) מאפליקציית serverless תומך בתקשורת עם רשתות VPC שמחוברות באמצעות Cloud VPN וקישור בין רשתות שכנות (peering) של VPC.
- חיבור לרשת (VPC) מאפליקציית serverless לא תומך ברשתות מדור קודם.
- הגדרת פונקציות Cloud Run לשימוש במחבר.
- מתחברים באמצעות כתובת ה-IP הפרטית והיציאה של המופע
5432.
התחברות ל-Cloud SQL
אחרי שמגדירים את פונקציות Cloud Run, אפשר להתחבר למופע Cloud SQL.
כתובת IP ציבורית (ברירת מחדל)
בנתיבי IP ציבוריים, אפשר להגדיר פונקציות Cloud Run לשימוש בשרת proxy ל-Cloud SQL Auth להצפנה בשתי דרכים:
- באמצעות שקעי Unix
- באמצעות מחבר Cloud SQL
כתובת IP פרטית
בנתיבי IP פרטיים, האפליקציה מתחברת ישירות למופע דרך רשת VPC. בשיטה הזו נעשה שימוש ב-TCP כדי להתחבר ישירות למכונה של Cloud SQL בלי להשתמש בשרת proxy ל-Cloud SQL Auth.
התחברות באמצעות TCP
מתחברים באמצעות כתובת ה-IP הפרטית של מופע Cloud SQL כמארח ויציאה 5432.
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.
Go
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
PHP
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, אפשר לעיין בקובץ ה-README ב-GitHub.
שיטות מומלצות ומידע נוסף
אפשר להשתמש בשרת proxy ל-Cloud SQL Auth כשבודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במדריך לתחילת העבודה עם שרת proxy ל-Cloud SQL Auth.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו, על ידי שרת מסד הנתונים עצמו או על ידי התשתית הבסיסית של פונקציות Cloud Run. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים שמבצעים חיבור מחדש אוטומטי לחיבורי לקוח שנפסקו. בנוסף, מומלץ להשתמש במאגר חיבורים עם היקף גלובלי כדי להגדיל את הסיכוי שהפונקציה תשתמש מחדש באותו חיבור להפעלות הבאות של הפונקציה, ותסגור את החיבור באופן טבעי כשהמופע יוסר (הקטנת קנה מידה אוטומטית). דוגמאות מפורטות יותר לשימוש במאגרי חיבורים מופיעות במאמר בנושא ניהול חיבורים למסדי נתונים.מגבלות על חיבורים
ב-Cloud SQL יש מגבלה מקסימלית על מספר החיבורים בו-זמנית, והמגבלות האלה עשויות להשתנות בהתאם למנוע מסד הנתונים שנבחר (ראו מיכסות ומגבלות של Cloud SQL). מומלץ להשתמש בחיבור לפונקציות Cloud Run, אבל חשוב להגדיר את המספר המקסימלי של החיבורים ל-1.ככל האפשר, צריך להקפיד לאתחל מאגר חיבורים רק לפונקציות שזקוקות לגישה למסד הנתונים. חלק ממאגרי החיבורים יוצרים חיבורים מראש, מה שיכול לצרוך משאבים עודפים ולכלול אותם במגבלות החיבורים. לכן מומלץ להשתמש ב Lazy Initialization כדי לדחות את היצירה של מאגר חיבורים עד שצריך אותו, ולכלול את מאגר החיבורים רק בפונקציות שבהן הוא נמצא בשימוש.
דוגמאות מפורטות יותר להגבלת מספר החיבורים מופיעות במאמר בנושא ניהול חיבורים למסדי נתונים.
מגבלות מכסת API
פונקציות Cloud Run מספקות מנגנון שמתחבר באמצעות שרת proxy ל-Cloud SQL Auth, שמשתמש ב-Cloud SQL Admin API. מגבלות מכסת ה-API חלות על שרת proxy ל-Cloud SQL Auth. המיכסה של Cloud SQL Admin API שנעשה בה שימוש היא בערך פי שניים ממספר המופעים של Cloud SQL שהוגדרו כפול המספר הכולל של הפונקציות שנפרסו. אתם יכולים להגדיר את המספר המקסימלי של קריאות בו-זמניות כדי לשנות את מכסת ה-API הצפויה לשימוש. בנוסף, בפונקציות Cloud Run יש מגבלות קצב על מספר הקריאות ל-API שמותרות בכל 100 שניות.