פריסת סביבות מרובות מקוד בסיס

מקובל לפרוס כמה סביבות מאותו בסיס קוד, כשכל אחת מהן מוגדרת בצורה קצת שונה. לדוגמה, יכול להיות שתרצו להקצות פחות 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:

  1. במסוף Firebase, בוחרים את פרויקט הסביבה הזמנית (בדוגמה הזו, my-staging-firebase-project).
  2. בתפריט הניווט הימני, בוחרים באפשרות App Hosting.
  3. לוחצים על View dashboard (הצגת מרכז הבקרה) בקצה העורפי שבחרתם.
  4. בכרטיסייה הגדרות, בוחרים באפשרות סביבה.
  5. בקטע שם הסביבה,מזינים את שם הסביבה. אפשר לתת לסביבה כל שם שרוצים. בדוגמה הזו, זהו staging.
  6. לוחצים על 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.

השלבים הבאים