מקובל לפרוס כמה סביבות מאותו בסיס קוד, כשכל אחת מהן מוגדרת בצורה קצת שונה. לדוגמה, יכול להיות שתרצו להקצות פחות CPU ו-RAM לסביבת הבדיקה, או לוודא שבסביבת הייצור תישאר לפחות מופע אחד פעיל ומוכן לטפל בבקשות. יכול להיות שתרצו גם לציין משתני סביבה וסודות שונים בהתאם לסביבה ולמשאבים שבהם אתם רוצים להשתמש.
במדריך הזה מוסבר איך לפרוס סביבת ייצור וסביבת Staging, כל אחת בפרויקט נפרד ב-Firebase. באמצעות אותם עקרונות, אפשר לבצע פריסה לסוגים שונים של סביבות. במאמרים סקירה כללית של סביבות ושיטות מומלצות כלליות להגדרת פרויקטים ב-Firebase אפשר לקרוא מידע נוסף על סביבות.
דרישות מוקדמות
- קוד האפליקציה כבר מאוחסן ב-GitHub.
- כבר יצרתם פרויקט נפרד לכל אחת מהסביבות שלכם – לדוגמה,
my-production-firebase-project
ו-my-staging-firebase-project
. חשוב לתייג את פרויקט Firebase בסביבת הייצור עם סוג הסביבה 'ייצור'. - בכל פרויקט, יצרתם קצה עורפי App Hosting, כשההסתעפות הפעילה מוגדרת להסתעפות GitHub שאתם רוצים לפרוס (למשל
main
). למידע נוסף, אפשר לעיין במאמר תחילת העבודה עם App Hosting.
שלב 0: יצירת הגדרת ברירת מחדל בקובץ apphosting.yaml
App Hosting תומך בקובץ תצורה בשם apphosting.yaml
לניהול הגדרות זמן ריצה (CPU, מקביליות, מגבלות זיכרון וכו') ומשתני סביבה לאפליקציה. הוא גם תומך בהפניות לסודות שמנוהלים באמצעות Cloud Secret Manager, כך שאפשר לבדוק אותו בבקרת מקור. מידע נוסף זמין במאמר הגדרת קצה עורפי.
כדי להתחיל, יוצרים קובץ apphosting.yaml
בתיקיית השורש של האפליקציה.
זהו קובץ התצורה החלופי שמשמש כשלא נמצא קובץ תצורה ספציפי לסביבה. הערכים שמאוחסנים ב-apphosting.yaml
צריכים להיות ערכי ברירת מחדל שאפשר להשתמש בהם בבטחה בכל הסביבות.
בקטעים הבאים מוסבר איך לשנות ערכי ברירת מחדל ב-apphosting.yaml
עבור סביבות ספציפיות. בתרשים הזרימה הזה מוצגת דוגמה ליצירת סביבת פיתוח.
שלב 1: הגדרת שם הסביבה
לכל קצה עורפי של App Hosting יש הגדרה של שם הסביבה. השדה הזה משמש למיפוי של ה-backend לקובץ הגדרות שספציפי לסביבה, ואפשר לשנות אותו בכל שלב. אפשר להגדיר רק שם סביבה אחד לכל קצה עורפי.
כדי להגדיר את שם הסביבה של ה-Backend:
- במסוף Firebase, בוחרים את פרויקט הסביבה הזמנית (בדוגמה הזו, my-staging-firebase-project).
- בתפריט הניווט הימני, בוחרים באפשרות App Hosting.
- לוחצים על View dashboard (הצגת מרכז הבקרה) בקצה העורפי שבחרתם.
- בכרטיסייה הגדרות, בוחרים באפשרות סביבה.
- בקטע שם הסביבה,מזינים את שם הסביבה. אפשר לתת לסביבה כל שם שרוצים. בדוגמה הזו, זהו staging.
- לוחצים על Save (שמירה).
כשמופעלת App Hosting השקה של גרסה חדשה של ה-Backend (ב-git push או באופן ידני דרך המסוף), App Hosting יחפש קובץ apphosting.ENVIRONMENT_NAME.yaml
לפני שיחזור ל-apphosting.yaml
.
שלב 2: יוצרים קובץ apphosting.yaml
ספציפי לסביבה
כדי לציין שינויים בהגדרות שספציפיים לסביבה, יוצרים קובץ בשם apphosting.ENVIRONMENT_NAME.yaml
. הפורמט של הקובץ הזה זהה לפורמט של קובץ ברירת המחדל apphosting.yaml, והוא צריך להיות ממוקם בספריית השורש של האפליקציה לצד apphosting.yaml
.
בזמן ה-build, המערכת ממזגת את שני הקבצים האלה, והערכים בקובץ ה-YAML הספציפי לסביבה מקבלים עדיפות על פני הערכים בקובץ הבסיס apphosting.yaml
.App Hosting
בדוגמה הזו, יוצרים קובץ בשם apphosting.staging.yaml
בספריית הבסיס של האפליקציה:
runConfig:
cpu: 1
memoryMiB: 512
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
נניח שכבר יש לכם apphosting.yaml
שנראה כך:
runConfig:
cpu: 3
memoryMiB: 1024
maxInstances: 4
minInstances: 0
concurrency: 100
env:
- variable: API_URL
value: api.service.com
availability:
- BUILD
- RUNTIME
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
הפלט הסופי אחרי המיזוג, שאפשר לבדוק ביומנים של Cloud Build, ייראה כך:
runConfig:
cpu: 1
memoryMiB: 512
maxInstances: 4
minInstances: 0
concurrency: 5
env:
- variable: API_URL
value: api.staging.service.com
availability:
- BUILD
- variable: STORAGE_BUCKET
value: mybucket.firebasestorage.app
availability:
- RUNTIME
- variable: API_KEY
secret: secretIDforAPI
- variable: DATABASE_URL
secret: secretStagingDatabaseURL
שימו לב שערכים מסוימים של runConfig
כמו CPU נדרסו, וגם משתני סביבה חופפים.
שלב 3: פריסת בסיס הקוד
אחרי שמסיימים לערוך את קובץ apphosting.ENVIRONMENT_NAME.yaml
הספציפי לסביבה, מעלים את הקובץ ל-GitHub:
$ git add apphosting.<ENVIRONMENT_NAME>.yaml
$ git commit -m "Added environment specific yaml file"
$ git push
כל השרתים העורפיים שתויגו עם שם הסביבה הזה ישתמשו בערכי ברירת המחדל הספציפיים שציינתם בקובץ ה-YAML המתאים, ויחזרו לערך apphosting.yaml
אם לא יימצא ערך. בשרתי קצה עורפיים שלא משויך אליהם שם סביבה, אפשר להמשיך להשתמש בקובץ apphosting.yaml.
השלבים הבאים
- כדאי לעיין ב-codelab של Firebase שמשלב אפליקציה מתארחת עם אימות ב-Firebase ותכונות של AI מבית Google: Next.js | Angular
- חיבור דומיין מותאם אישית.
- הגדרת הקצה העורפי.
- מעקב אחר השקות, שימוש באתר ויומנים.