אפשר לשלב בין Cloud Run לבין Firebase Hosting כדי ליצור ולהציג את התוכן הדינמי או כדי ליצור ממשקי API ל-REST בתור מיקרו-שירותים.
באמצעות Cloud Run, אפשר לפרוס אפליקציה שמוגדרת כחבילה בקובץ אימג' של קונטיינר. לאחר מכן, באמצעות Firebase Hosting, אפשר להפנות בקשות HTTPS להפעלת האפליקציה בקונטיינרים.
- Cloud Run תומך בכמה שפות (כולל Go, Node.js, Python ו-Java), כך שאתם יכולים להשתמש בשפת התכנות ובמסגרת העבודה שתבחרו.
- Cloud Run מתבצעת התאמה אוטומטית לעומס (auto-scaling) והרחבה אופקית של קובץ אימג' של קונטיינר כדי לטפל בבקשות שהתקבלו, ואז מצטמצמת כשהביקוש יורד.
- משלמים רק על השימוש במעבד, בזיכרון ובחיבור לרשת במהלך הטיפול בבקשות.
תרחישי שימוש לדוגמה ודוגמאות ל-Cloud Run שמשולב עם Firebase Hosting זמינים בסקירה הכללית בנושא בלי שרת (serverless).
במדריך הזה נסביר איך:
- כתיבת אפליקציית Hello World פשוטה
- העברת אפליקציה לקונטיינר והעלאה שלה אל Artifact Registry
- פריסת קובץ האימג' של הקונטיינר אל Cloud Run
- הפניית בקשות Hosting ישירות לאפליקציה שמופעלת בתוך קונטיינר
שימו לב: כדי לשפר את הביצועים של הצגת תוכן דינמי, אתם יכולים לשנות את הגדרות המטמון.
לפני שמתחילים
לפני שמשתמשים ב-Cloud Run, צריך להשלים כמה משימות ראשוניות, כולל הגדרת חשבון Cloud Billing, הפעלת Cloud Run API והתקנת כלי שורת הפקודה gcloud.
הגדרת חיוב לפרויקט
Cloud Run מציע מכסת שימוש ללא תשלום, אבל עדיין צריך חשבון Cloud Billing שמשויך לפרויקט Firebase כדי להשתמש ב-Cloud Run או לנסות אותו.
הפעלת ה-API והתקנת ה-SDK
מפעילים את Cloud Run API ב-Google APIs Console:
פותחים את הדף Cloud Run API ב-Google APIs Console.
כשמתבקשים, בוחרים את הפרויקט ב-Firebase.
לוחצים על הפעלה בדף של Cloud Run API.
מתקינים ומפעילים את Cloud SDK.
בודקים שהכלי
gcloudמוגדר לפרויקט הנכון:gcloud config list
שלב 1: כותבים את האפליקציה לדוגמה
שימו לב ש-Cloud Run תומך בשפות רבות אחרות בנוסף לשפות שמוצגות בדוגמה הבאה.
המשך
יוצרים ספרייה חדשה בשם
helloworld-go, ואז עוברים לספרייה הזו:mkdir helloworld-go
cd helloworld-go
יוצרים קובץ חדש בשם
helloworld.goומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ליציאה שמוגדרת על ידי משתנה הסביבה
PORT.
האפליקציה מוכנה להעברה לקונטיינר ולהעלאה אל Artifact Registry.
Node.js
יוצרים ספרייה חדשה בשם
helloworld-nodejsואז עוברים אליה:mkdir helloworld-nodejs
cd helloworld-nodejs
יוצרים קובץ
package.jsonעם התוכן הבא:יוצרים קובץ חדש בשם
index.jsומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ליציאה שמוגדרת על ידי משתנה הסביבה
PORT.
האפליקציה מוכנה להעברה לקונטיינר ולהעלאה אל Artifact Registry.
Python
יוצרים ספרייה חדשה בשם
helloworld-pythonואז עוברים אליה:mkdir helloworld-python
cd helloworld-python
יוצרים קובץ חדש בשם
app.pyומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ליציאה שמוגדרת על ידי משתנה הסביבה
PORT.
האפליקציה מוכנה להעברה לקונטיינר ולהעלאה אל Artifact Registry.
Java
מתקינים Java SE 8 או גרסה מתקדמת יותר של JDK ו-CURL.
שימו לב: אנחנו צריכים לעשות את זה רק כדי ליצור את פרויקט האינטרנט החדש בשלב הבא. קובץ ה-Dockerfile, שמתואר בהמשך, יטען את כל התלויות לתוך הקונטיינר.
מהמסוף, יוצרים פרויקט אינטרנט חדש וריק באמצעות פקודות cURL ואז פקודות unzip:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zipunzip helloworld.zip
ייווצר פרויקט SpringBoot.
מעדכנים את המחלקה
SpringBootApplicationבקובץsrc/main/java/com/example/helloworld/HelloworldApplication.javaעל ידי הוספת@RestControllerלטיפול במיפוי/, ומוסיפים גם שדה@Valueכדי לספק את משתנה הסביבהTARGET:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ליציאה שמוגדרת על ידי משתנה הסביבה
PORT.
האפליקציה מוכנה להעברה לקונטיינר ולהעלאה אל Artifact Registry.
שלב 2: יצירת קונטיינר לאפליקציה והעלאה שלו אל Artifact Registry
יוצרים קובץ חדש בשם
Dockerfileבאותה תיקייה שבה נמצאים קובצי המקור, כדי להכניס את האפליקציה לדוגמה לקונטיינר. מעתיקים את התוכן הבא לקובץ.המשך
Node.js
Python
Java
כדי ליצור את קובץ אימג' של קונטיינר באמצעות Cloud Build, מריצים את הפקודה הבאה מהספרייה שמכילה את קובץ Docker:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
אם הפעולה תצליח, תוצג הודעה על הצלחה עם שם התמונה
(gcr.io/PROJECT_ID/helloworld).
קובץ אימג' של קונטיינר מאוחסן עכשיו ב-Artifact Registry ואפשר לעשות בו שימוש חוזר אם רוצים.
שימו לב: במקום Cloud Build, אתם יכולים להשתמש בגרסה של Docker שהתקנתם באופן מקומי כדי ליצור את הקונטיינר באופן מקומי.
שלב 3: פריסת קובץ אימג' של קונטיינר ב-Cloud Run
מבצעים פריסה באמצעות הפקודה הבאה:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
כשמוצגת בקשה:
- בוחרים אזור (לדוגמה
us-central1) - מאשרים את שם השירות (לדוגמה,
helloworld) - משיבים
Yלallow unauthenticated invocations (אישור הפעלות לא מאומתות)
- בוחרים אזור (לדוגמה
מחכים כמה רגעים עד שהפריסה תושלם. אם הפעולה בוצעה ללא שגיאות, כתובת ה-URL של השירות תוצג בשורת הפקודה. לדוגמה:
https://helloworld-RANDOM_HASH-us-central1.a.run.app פותחים את כתובת ה-URL של השירות בדפדפן אינטרנט כדי להיכנס למאגר שהופעל.
בשלב הבא מוסבר איך לגשת לאפליקציה הזו שמבוססת על קונטיינר מכתובת URL מסוג Firebase Hosting כדי שהיא תוכל ליצור תוכן דינמי לאתר שלכם שמארח ב-Firebase.
שלב 4: הפניית בקשות אירוח לאפליקציה בקונטיינר
באמצעות כללי שכתוב, אפשר להפנות בקשות שתואמות לתבניות ספציפיות ליעד יחיד.
בדוגמה הבאה מוצגות הוראות להפניית כל הבקשות מהדף
/helloworld באתר Hosting להפעלת המופע של מאגר התגים helloworld.
חשוב לוודא ש:
אתם משתמשים בגרסה העדכנית של Firebase CLI.
הפעלת את Firebase Hosting.
הוראות מפורטות להתקנת ה-CLI ולאתחול Hosting זמינות במדריך למתחילים בנושא Hosting.
פותחים את קובץ
firebase.json.מוסיפים את ההגדרה
rewriteבקטעhosting:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1", // optional (if omitted, default is us-central1) "pinTag": true // optional (see note below) } } ] }
כדי לפרוס את הגדרות האירוח באתר, מריצים את הפקודה הבאה מהרמה הבסיסית (root) של ספריית הפרויקט:
firebase deploy --only hosting
עכשיו אפשר להגיע למאגר התגים דרך כתובות ה-URL הבאות:
תת-הדומיינים שלכם ב-Firebase:
PROJECT_ID.web.app/ו-PROJECT_ID.firebaseapp.com/דומיינים מותאמים אישית שמקושרים:
CUSTOM_DOMAIN/
Hosting בדף ההגדרה יש פרטים נוספים על כללי שכתוב. אפשר גם לקרוא על סדר העדיפויות של התגובות בהגדרות שונות של Hosting.
בדיקה מקומית
במהלך הפיתוח, אתם יכולים להריץ ולבדוק את קובץ האימג' של קונטיינר באופן מקומי. הוראות מפורטות זמינות במסמכי התיעוד של Cloud Run.
השלבים הבאים
הגדרת שמירה במטמון של התוכן הדינמי ב-CDN גלובלי.
אינטראקציה עם שירותים אחרים של Firebase באמצעות SDK של Firebase לאדמינים.
Cloud Runמידע נוסף, כולל מדריכים מפורטים להגדרה, לניהול ולתצורה של מאגרי תגים.
כדאי לעיין בתמחור ובמכסות והמגבלות של Cloud Run.