צריך להתאים את Cloud Run עם Firebase Hosting כדי ליצור ולהציג את תוכן דינמי או לפתח ממשקי API ל-REST כמיקרו-שירותים.
באמצעות Cloud Run אפשר לפרוס אפליקציה שארוזה בקובץ אימג' בקונטיינר. לאחר מכן, באמצעות Firebase Hosting, אפשר להפנות בקשות HTTPS שיפעילו את באפליקציה בקונטיינרים.
- Cloud Run תומך במספר שפות (כולל Go, Node.js, Python ו-Java), כך שתוכלו להשתמש בשפת התכנות ובמסגרת התכנות שבחרתם.
- Cloud Run קנה מידה אוטומטי ואופקי קובץ האימג' של הקונטיינר שיטפל בבקשות שהתקבלו, ואז המערכת תקטין את התמונה כאשר הביקושים יורדים.
- אתם משלמים רק על השימוש במעבד, בזיכרון וברשתות במהלך הטיפול בבקשות.
לדוגמה, תרחישים לדוגמה ודוגמאות של Cloud Run שמשולבים עם Firebase Hosting, כדאי להיכנס אל סקירה כללית ללא שרת (serverless).
במדריך הזה מוסבר איך:
- כתיבת אפליקציה פשוטה של Hello World
- ארגון אפליקציה בקונטיינר והעלאה שלה אל Container 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:
פותחים את דף API של Cloud Run במסוף Google APIs.
כשמופיעה בקשה, בוחרים את הפרויקט ב-Firebase.
לוחצים על Enable בדף ה-API Cloud Run.
להתקין ולהפעיל את Cloud SDK.
צריך לבדוק שהכלי
gcloud
מוגדר לפרויקט הנכון:gcloud config list
שלב 1: כתיבת האפליקציה לדוגמה
לתשומת ליבך, ב-Cloud Run יש תמיכה שפות רבות אחרות בנוסף לשפות המוצגות בדוגמה הבאה.
Go
יוצרים ספרייה חדשה בשם
helloworld-go
ואז משנים את הספרייה ל זה:mkdir helloworld-go
cd helloworld-go
יוצרים קובץ חדש בשם
helloworld.go
ואז מוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמקשיב ביציאה שמוגדרת על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה ואפשר להעלות אותה לקונטיינרים Container Registry
Node.js
יוצרים ספרייה חדשה בשם
helloworld-nodejs
ואז משנים את הספרייה לתוכו:mkdir helloworld-nodejs
cd helloworld-nodejs
יוצרים קובץ
package.json
עם התוכן הבא:יוצרים קובץ חדש בשם
index.js
ומוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמאזינים ליציאה שהוגדרה על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה ואפשר להעלות אותה לקונטיינרים Container Registry
Python
יוצרים ספרייה חדשה בשם
helloworld-python
ואז משנים את הספרייה לתוכו:mkdir helloworld-python
cd helloworld-python
יוצרים קובץ חדש בשם
app.py
ואז מוסיפים את הקוד הבא:הקוד הזה יוצר שרת אינטרנט בסיסי שמאזינים ליציאה שהוגדרה על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה ואפשר להעלות אותה לקונטיינרים Container Registry
Java
התקנה Java SE 8 ואילך JDK ו-CURL.
לתשומת ליבכם: צריך לעשות זאת רק כדי ליצור את פרויקט האינטרנט החדש לשלב הבא. קובץ ה-Docker, שמתואר בהמשך, יטען את כל או יחסי התלות בתוך הקונטיינר.
במסוף, יוצרים פרויקט אינטרנט ריק חדש באמצעות cURL, ואז פקודות של unzip:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
הפעולה הזו יוצרת פרויקט SpringBoot.
עדכון הכיתה
SpringBootApplication
ב-src/main/java/com/example/helloworld/HelloworldApplication.java
על ידי הוספת@RestController
כדי לטפל במיפוי של/
וגם להוסיף השדה@Value
כדי לספק את משתנה הסביבהTARGET
:הקוד הזה יוצר שרת אינטרנט בסיסי שמאזינים ליציאה שהוגדרה על ידי משתנה הסביבה
PORT
.
האפליקציה מוכנה והיא מוכנה ליצירת קונטיינרים והעלאתה אל Container Registry
שלב 2: הכנסת אפליקציה לקונטיינר והעלאה שלה אל Container Registry
ליצור קונטיינרים של האפליקציה לדוגמה על ידי יצירת קובץ חדש בשם
Dockerfile
לאותה ספרייה כמו קובצי המקור. מעתיקים את התוכן הבא לקובץ.Go
Node.js
Python
Java
צריך ליצור קובץ אימג' בקונטיינר באמצעות Cloud Build על ידי הרצת הפקודה הבאה מהספרייה שמכילה את קובץ ה-Docker:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
אחרי השלמת הפעולה, תופיע הודעת 'הצלחה' שמכילה את שם התמונה
(gcr.io/PROJECT_ID/helloworld
).
תמונת הקונטיינר מאוחסנת עכשיו ב-Container Registry ואפשר להשתמש בה שוב אם הרצויה.
לתשומת ליבך: במקום Cloud Build, אפשר להשתמש בגרסה מותקנת באופן מקומי מ-Docker מפתחים את הקונטיינר באופן מקומי.
שלב 3: פורסים את קובץ האימג' של הקונטיינר ב-Cloud Run
לפרוס באמצעות הפקודה הבאה:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
כשמוצגת ההודעה:
- בחירת אזור (לדוגמה
us-central1
) - מאשרים את שם השירות (לדוגמה,
helloworld
) - צריך להשיב
Y
כדי לאפשר הפעלות לא מאומתות
- בחירת אזור (לדוגמה
כדי לקבל את הביצועים הטובים ביותר, צריך לקשר את שירות Cloud Run עם Hosting באזורים הבאים:
us-west1
us-central1
us-east1
europe-west1
asia-east1
אפשר לכתוב מחדש ב-Cloud Run מ-Hosting באזורים הבאים:
asia-east1
asia-east2
asia-northeast1
asia-northeast2
asia-northeast3
asia-south1
asia-south2
asia-southeast1
asia-southeast2
australia-southeast1
australia-southeast2
europe-central2
europe-north1
europe-southwest1
europe-west1
europe-west12
europe-west2
europe-west3
europe-west4
europe-west6
europe-west8
europe-west9
me-central1
me-west1
northamerica-northeast1
northamerica-northeast2
southamerica-east1
southamerica-west1
us-central1
us-east1
us-east4
us-east5
us-south1
us-west1
us-west2
us-west3
us-west4
us-west1
us-central1
us-east1
europe-west1
asia-east1
ממתינים כמה רגעים עד שהפריסה תסתיים. לאחר הצלחה, שורת הפקודה מציג את כתובת ה-URL של השירות. לדוגמה:
https://helloworld-RANDOM_HASH-us-central1.a.run.app כדי להיכנס למאגר התגים שנפרס, פותחים את כתובת ה-URL של השירות בדפדפן אינטרנט.
השלב הבא ינחה אותך איך לגשת לאפליקציה הזו בקונטיינר מ בכתובת URL אחת (Firebase Hosting), כדי שהיא תוכל ליצור תוכן דינמי אתר שמתארח ב-Firebase.
שלב 4: הפניית בקשות אירוח לאפליקציה בקונטיינרים
ב- לשכתוב כללים, ניתן להפנות בקשות שתואמים לתבניות ספציפיות ליעד אחד.
בדוגמה הבאה מוסבר איך להפנות את כל הבקשות מהדף /helloworld
באתר Hosting כדי להפעיל את המכונה של הקונטיינר helloworld
ולהריץ אותה.
מוודאים שהתנאים הבאים מתקיימים:
יש לך את את הגרסה העדכנית של ה-CLI של Firebase.
אתחלת את 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 אחרים באמצעות Firebase Admin SDK.
מידע נוסף על Cloud Run, כולל מדריכים מפורטים עבור הגדרה, ניהול והגדרה של קונטיינרים.
מומלץ לעיין בתמחור מכסות ומגבלות עבור Cloud Run