אפשר לשלב את Cloud Run עם Firebase Hosting כדי ליצור ולהציג תוכן דינמי או ליצור ממשקי API בארכיטקטורת REST כמיקרו-שירותים.
באמצעות Cloud Run, אתם יכולים לפרוס אפליקציה שארוזה בקובץ אימג' של קונטיינר. לאחר מכן, באמצעות Firebase Hosting, תוכלו להפנות בקשות HTTPS כדי להפעיל את האפליקציה בקונטיינר.
- Cloud Run תומך בכמה שפות (כולל Go, Node.js, Python ו-Java), כך שאתם יכולים לבחור את שפת התכנות והמסגרת שמתאימות לכם.
- Cloud Run מגדיל אוטומטית את קובץ האימג' של הקונטיינר כדי לטפל בבקשות שהתקבלו, ומצמצם אותו כשהביקוש יורד.
- התשלום הוא רק על המעבד (CPU), הזיכרון והרשת שנצרכו במהלך הטיפול בבקשה.
בסקירה הכללית על Serverless תוכלו למצוא דוגמאות לתרחישי שימוש ולדוגמיות של Cloud Run בשילוב עם Firebase Hosting.
במדריך הזה נסביר איך:
- כתיבת אפליקציה פשוטה של Hello World
- העברת אפליקציה לקונטיינר והעלאה שלה אל Artifact Registry
- פריסת קובץ האימג' של הקונטיינר ב-Cloud Run
- הפניית בקשות Hosting לאפליקציה בקונטיינר
כדי לשפר את הביצועים של הצגת תוכן דינמי, אפשר לשנות את הגדרות המטמון.
לפני שמתחילים
לפני שמשתמשים ב-Cloud Run, צריך לבצע כמה משימות ראשוניות, כולל הגדרת חשבון Cloud Billing, הפעלת ה-API של Cloud Run והתקנת כלי שורת הפקודה של gcloud.
הגדרת החיוב בפרויקט
ב-Cloud Run יש מכסת שימוש בחינם, אבל עדיין צריך חשבון Cloud Billing שמשויך לפרויקט ב-Firebase כדי להשתמש ב-Cloud Run או לנסות אותו.
הפעלת ה-API והתקנת ה-SDK
מפעילים את ה-API של Cloud Run ב-Google APIs Console:
פותחים את דף ה-API של Cloud Run במסוף Google APIs.
כשמוצגת בקשה, בוחרים את הפרויקט ב-Firebase.
לוחצים על Enable בדף של 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
אם הפעולה בוצעה בהצלחה, תופיע הודעת SUCCESS עם שם קובץ האימג'
(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כדי לאפשר הפעלות לא מאומתות.
- בוחרים אזור (לדוגמה,
מחכים כמה רגעים עד שהפריסה תסתיים. אם הפעולה הצליחה, כתובת ה-URL של השירות תוצג בשורת הפקודה. לדוגמה:
https://helloworld-RANDOM_HASH-us-central1.a.run.app כדי לבקר בקונטיינר שנפרס, פותחים את כתובת ה-URL של השירות בדפדפן אינטרנט.
בשלב הבא נסביר איך לגשת לאפליקציה בקונטיינר מכתובת URL של Firebase Hosting, כדי שהיא תוכל ליצור תוכן דינמי לאתר שמתארח ב-Firebase.
שלב 4: הפניית בקשות אירוח לאפליקציה בקונטיינר
באמצעות כללי שכתוב, אתם יכולים להפנות בקשות שתואמות לתבניות ספציפיות ליעד אחד.
בדוגמה הבאה מוצג איך להפנות את כל הבקשות מהדף /helloworld באתר Hosting כדי להפעיל את מכונת מאגר התגים helloworld.
חשוב לוודא ש:
שאתם משתמשים בגרסה העדכנית של ה-CLI של Firebase.
הפעלת את Firebase Hosting.
במדריך לתחילת השימוש ב-Hosting מוסבר בפירוט איך מתקינים את ה-CLI ומפעילים את 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.