בדף הזה מוסבר איך להתחבר למכונה של Cloud SQL משירות שפועל בפונקציות Cloud Run, ומוצגות דוגמאות.
להוראות מפורטות להפעלת אפליקציית אינטרנט לדוגמה של פונקציות Cloud Run שמחוברת ל-Cloud SQL, קראו את המדריך למתחילים להתחברות מפונקציות Cloud Run.
Cloud SQL הוא שירות מנוהל של מסד נתונים, שבעזרתו אפשר ליצור, לתחזק ולנהל מסדי נתונים רלציוניים בענן.
פונקציות Cloud Run הן פתרון מחשוב קל משקל למפתחים, שמאפשר ליצור פונקציות עצמאיות למטרה יחידה שמגיבות לאירועים ב-Cloud בלי צורך לנהל שרת או סביבת זמן ריצה.
הגדרת מכונה של 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.כתובת 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 ולהוסיף את תפקיד ה-IAM
Cloud SQL Clientלשני הפרויקטים. - מוודאים שלחשבון השירות יש את התפקיד הזה, כדי שהחשבון יוכל להתחבר ל-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 הבסיסי.
- בדף 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 ללא שרת באותה רשת VPC שבה נמצא המכונה של Cloud SQL. שימו לב לתנאים הבאים:
- אם אתם לא משתמשים ב-VPC משותף, המחבר צריך להיות באותו פרויקט ובאותו אזור כמו המשאב שמשתמש בו, אבל הוא יכול לשלוח תנועה למשאבים באזורים שונים.
- חיבור לרשת (VPC) מאפליקציית serverless תומך בתקשורת עם רשתות VPC שמחוברות באמצעות Cloud VPN וקישור בין רשתות VPC שכנות (peering).
- חיבור לרשת VPC מאפליקציית Serverless לא תומך ברשתות מדור קודם.
- מגדירים את פונקציות Cloud Run כך שישתמשו במחבר.
- מתחברים באמצעות כתובת ה-IP הפרטית של המכונה ויציאה
3306.
התחברות ל-Cloud SQL
אחרי שמגדירים את פונקציות Cloud Run, אפשר להתחבר למכונה של Cloud SQL.
כתובת IP ציבורית (ברירת מחדל)
בנתיבים של כתובות IP ציבוריות, אפשר להגדיר את פונקציות Cloud Run כך שישתמשו ב-Cloud SQL Auth Proxy להצפנה בשתי דרכים:
- באמצעות שקעי Unix
- באמצעות מחבר של Cloud SQL
כתובת 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.
PHP
כדי לראות את קטע הקוד הזה בהקשר של אפליקציית אינטרנט, עיינו ב-README ב-GitHub.
שיטות מומלצות ומידע נוסף
אתם יכולים להשתמש ב-Cloud SQL Auth Proxy כשאתם בודקים את האפליקציה באופן מקומי. הוראות מפורטות מופיעות במדריך למתחילים לשימוש ב-Cloud SQL Auth Proxy.
מאגרי חיבורים
יכול להיות שהחיבורים למסדי הנתונים הבסיסיים ינותקו על ידי שרת מסד הנתונים עצמו או על ידי התשתית שעליה מבוססות פונקציות Cloud Run. מומלץ להשתמש בספריית לקוח שתומכת במאגרי חיבורים, שמחברים מחדש באופן אוטומטי חיבורי לקוח מנותקים. בנוסף, מומלץ להשתמש במאגר חיבורים ברמת ההיקף הגלובלי כדי להגדיל את הסבירות שהפונקציה תשתמש שוב באותו חיבור בקריאות הבאות לפונקציה, ותסגור את החיבור באופן טבעי כשהמכונה תפונה (התאמה אוטומטית לעומס (automatic scaling) כלפי מטה). דוגמאות מפורטות יותר לשימוש במאגרי חיבורים מופיעות במאמר ניהול חיבורים למסדי נתונים.מגבלות על החיבורים
ב-Cloud SQL יש מגבלה על מספר החיבורים בו-זמנית, והמגבלות האלה עשויות להשתנות בהתאם למנוע של מסד הנתונים שנבחר (ראו מכסות ומגבלות ב-Cloud SQL).
מומלץ להשתמש במאגר חיבורים עם פונקציות Cloud Run, אבל חשוב להגדיר את המספר המקסימלי של החיבורים ל-1.
במידת האפשר, כדאי להקפיד להפעיל מאגר חיבורים רק לפונקציות שצריכות גישה למסד הנתונים. חלק ממאגרי החיבורים יוצרים חיבורים מראש, מה שעלול לצרוך משאבים מיותרים ולהיכלל במגבלות החיבורים. לכן מומלץ להשתמש באתחול מושהה כדי לעכב את היצירה של מאגר החיבורים עד שיהיה בו צורך, ולכלול את מאגר החיבורים רק בפונקציות שבהן משתמשים בו.
במאמר ניהול החיבורים למסד הנתונים תוכלו לקרוא דוגמאות מפורטות יותר שמסבירות איך להגביל את מספר החיבורים.
מגבלות המכסות של ה-API
פונקציות Cloud Run מספקות מנגנון שמתחבר באמצעות Cloud SQL Auth Proxy, שמשתמש ב-Cloud SQL Admin API. מגבלות המכסות של ה-API חלות על Cloud SQL Auth Proxy. המכסה של Cloud SQL Admin API שנעשה בה שימוש היא בערך פי שניים ממספר המכונות של Cloud SQL שהוגדרו, כפול המספר הכולל של הפונקציות שנפרסו. אתם יכולים להגדיר את המספר המקסימלי של קריאות בו-זמנית כדי לשנות את מכסת ה-API הצפויה. בפונקציות Cloud Run יש גם מגבלות קצב על מספר הקריאות ל-API שמותרות לכל 100 שניות.