מדריך למתחילים: פיתוח ופריסה של אפליקציית אינטרנט ב-Python ‏ (Flask) ב-Cloud Run

בשיעור הזה נסביר איך להשתמש בפקודה אחת כדי ליצור ולפרוס אפליקציית אינטרנט Hello World מדוגמת קוד ל- Google Cloudבאמצעות Cloud Run.

אם פועלים לפי השלבים במדריך למתחילים הזה, Cloud Run יוצר בשבילכם באופן אוטומטי קובץ Dockerfile כשפורסים מקוד מקור. מידע נוסף על האופן שבו ה-buildpack של Python קובע את נקודת הכניסה (entrypoint) שמוגדרת כברירת מחדל לפריסות של קוד מקור ב-Cloud Run זמין במאמר פיתוח אפליקציית Python.

לפני שמתחילים

  1. התקינו את ה-CLI של Google Cloud.

  2. הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.

    איך נכנסים ל-CLI של gcloud באמצעות הזהות המאוחדת?

  3. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  4. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  5. אם משתמשים בפרויקט קיים, מוודאים שיש את ההרשאות הנדרשות כדי להשלים את ההדרכה. אם משתמשים בפרויקט חדש, לא צריך לוודא כי כבר יש את ההרשאות הנדרשות.

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. כדי להגדיר את פרויקט ברירת המחדל לשירות Cloud Run, מריצים את הפקודה הבאה:
     gcloud config set project PROJECT_ID
    מחליפים את PROJECT_ID במזהה הפרויקט ב- Google Cloud .
  8. אם אתם כפופים למדיניות ארגונית של הגבלה לפי דומיין שמגבילה הפעלות לא מאומתות של הפרויקט, תצטרכו לגשת לשירות הפרוס שלכם כמו שמתואר בקטע בדיקת שירותים פרטיים.

  9. מפעילים את Cloud Run Admin API ואת Cloud Build APIs, אם הם עדיין לא מופעלים:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable run.googleapis.com cloudbuild.googleapis.com

    אחרי שמפעילים את Cloud Run Admin API, נוצר באופן אוטומטי חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.

  10. אפשר לעיין במחירון של Cloud Run או להשתמש במחשבון התמחור כדי לקבל הערכה של העלויות.

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.

יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.

נותנים לחשבון השירות ב-Cloud Build גישה לפרויקט

כברירת מחדל, Cloud Build משתמש בחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine כחשבון השירות שמוגדר כברירת מחדל ב-Cloud Build כדי לבנות את קוד המקור ואת משאב Cloud Run, אלא אם משנים את ההתנהגות הזו.

כדי ש-Cloud Build יוכל לבנות את המקורות, צריך להקצות לחשבון השירות של Cloud Build את התפקיד Cloud Run Builder‏ (roles/run.builder) בפרויקט:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_EMAIL_ADDRESS \
    --role=roles/run.builder

מחליפים את PROJECT_ID במזהה הפרויקט שלכם ב- Google Cloudואת SERVICE_ACCOUNT_EMAIL_ADDRESS בכתובת האימייל של חשבון השירות של Cloud Build. אם אתם משתמשים בחשבון השירות שמוגדר כברירת מחדל של Compute Engine כחשבון השירות של Cloud Build, אתם צריכים להשתמש בפורמט הבא עבור כתובת האימייל בחשבון השירות:

PROJECT_NUMBER-compute@

מחליפים את PROJECT_NUMBER במספר הפרויקט ב- Google Cloud.

הוראות מפורטות לאיתור מזהה הפרויקט ומספר הפרויקט זמינות במאמר יצירה וניהול של פרויקטים.

לוקח כמה דקות עד שמתבצעת הפצה של הרשאת התפקיד Cloud Run builder.

כתיבת האפליקציה לדוגמה

כדי לכתוב אפליקציה ב-Python:

  1. יוצרים ספרייה חדשה בשם helloworld ועוברים אליה:

    mkdir helloworld
    cd helloworld
    
  2. יוצרים קובץ בשם main.py ומדביקים בו את הקוד הבא:

    import os
    
    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route("/")
    def hello_world():
        """Example Hello World route."""
        name = os.environ.get("NAME", "World")
        return f"Hello {name}!"
    
    
    if __name__ == "__main__":
        app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))

    הקוד הזה מגיב לבקשות עם הודעת הפתיחה 'Hello World'. הטיפול ב-HTTP מתבצע על ידי שרת אינטרנט Gunicorn במאגר. כשמפעילים את הקוד הזה ישירות לשימוש מקומי, הוא יוצר שרת אינטרנט בסיסי שמקשיב ליציאה שמוגדרת על ידי משתנה הסביבה PORT.

  3. יוצרים קובץ בשם requirements.txt ומדביקים בו את הקוד הבא:

    Flask~=3.0
    gunicorn~=23.0
    Werkzeug~=3.0
    

    הקוד הזה מוסיף חבילות שנדרשות לדוגמה.

האפליקציה מוכנה לפריסה.

פריסה מקוד המקור ל-Cloud Run

האפשרות 'פריסה ממקור' יוצרת באופן אוטומטי קובץ אימג' של קונטיינר מקוד המקור ופורסת אותו.

כדי לפרוס מקוד המקור:

  1. בתיקיית קוד המקור, מפעילים את הפקודה הבאה כדי לפרוס את התיקייה הנוכחית:

    gcloud run deploy --source .
    1. כשמופיעה בקשה להזין את שם השירות, לוחצים על Enter כדי לאשר את שם ברירת המחדל, לדוגמה helloworld.

    2. אם תתבקשו להפעיל ממשקי API נוספים בפרויקט, למשל Artifact Registry API, תצטרכו להגיב בהקשה על y.

    3. כשמוצגת בקשה לבחור אזור: בוחרים את האזור הרצוי, לדוגמה europe-west1.

    4. אם מוצגת בקשה ליצור מאגר באזור שצוין, משיבים על ידי הקשה על y.

    5. אם מופיעה בקשה allow public access: משיבים y. יכול להיות שההנחיה הזו לא תוצג אם יש מדיניות ארגונית להגבלת דומיין שמונעת את הצגתה. פרטים נוספים זמינים בקטע לפני שמתחילים.

    אחר כך מחכים כמה רגעים עד שהפריסה תסתיים. אם הפעולה בוצעה ללא שגיאות, כתובת ה-URL של השירות מוצגת בשורת הפקודה.

  2. פותחים את כתובת ה-URL של השירות בדפדפן אינטרנט כדי להיכנס לשירות שפרסתם.

מיקומי Cloud Run

‫Cloud Run הוא שירות אזורי, כלומר התשתית שמריצה את שירותי Cloud Run ממוקמת באזור ספציפי ומנוהלת על ידי Google כך שתהיה זמינה באופן יתירתי בכל התחומים באותו אזור.

הקריטריונים העיקריים לבחירת האזור שבו יפעלו שירותי Cloud Run הם זמן האחזור, הזמינות או העמידות שנדרשים לכם. בדרך כלל אפשר לבחור את האזור הקרוב ביותר למשתמשים, אבל כדאי לקחת בחשבון את המיקום של מוצרים Google Cloud אחרים שבהם נעשה שימוש בשירות Cloud Run. השימוש במוצרים של Google Cloud Google ביחד בכמה מיקומים יכול להשפיע על זמן האחזור ועל העלות של השירות.

‫Cloud Run זמין באזורים הבאים:

בכפוף לתמחור ברמה 1

בכפוף לתמחור ברמה 2

  • africa-south1 (יוהנסבורג)
  • asia-east2 (הונג קונג)
  • asia-northeast3 (סיאול, קוריאה הדרומית)
  • asia-southeast1 (סינגפור)
  • asia-southeast2 (ג'קרטה)
  • asia-south2 (דלהי, הודו)
  • ‫australia-southeast1 (סידני)
  • ‫australia-southeast2 (מלבורן)
  • europe-central2 (ורשה, פולין) סמל של עלה רמה נמוכה של CO2
  • ‫europe-west10 (ברלין)
  • europe-west12 (טורינו) סמל של עלה רמה נמוכה של CO2
  • europe-west2 (לונדון, בריטניה) סמל של עלה רמה נמוכה של CO2
  • ‫europe-west3 (פרנקפורט, גרמניה)
  • europe-west6 (ציריך, שווייץ) סמל של עלה רמה נמוכה של CO2
  • ‫me-central1 (דוחה)
  • ‫me-central2 (דמאם)
  • northamerica-northeast1 (מונטריאול) סמל של עלה רמה נמוכה של CO2
  • northamerica-northeast2 (טורונטו) סמל של עלה רמה נמוכה של CO2
  • southamerica-east1 (סאו פאולו, ברזיל) סמל של עלה רמה נמוכה של CO2
  • southamerica-west1 (סנטיאגו, צ'ילה) סמל של עלה רמה נמוכה של CO2
  • ‫us-west2 (לוס אנג'לס)
  • ‫us-west3 (סולט לייק סיטי)
  • ‫us-west4 (לאס וגאס)

אם כבר יצרתם שירות Cloud Run, תוכלו לראות את האזור בלוח הבקרה של Cloud Run בGoogle Cloud מסוף.

הסרת המשאבים

כדי להימנע מחיובים נוספים בחשבון Google Cloud , מוחקים את כל המשאבים שהצבתם באמצעות ההפעלה המהירה הזו.

מחיקת המאגר

ב-Cloud Run לא מחייבים אתכם כשהשירות שפרסתם לא בשימוש. עם זאת, יכול להיות שעדיין תחויבו על אחסון קובץ האימג' של הקונטיינר ב-Artifact Registry. כדי למחוק מאגרי Artifact Registry, פועלים לפי השלבים במאמר מחיקת מאגרים במסמכי התיעוד של Artifact Registry.

מחיקת השירות

שירותי Cloud Run לא צוברים עלויות עד שהם מקבלים בקשות. כדי למחוק את שירות Cloud Run, מבצעים את אחד מהשלבים הבאים:

המסוף

כדי למחוק שירות:

  1. נכנסים לדף Services של Cloud Run במסוף Google Cloud :

    כניסה ל-Cloud Run

  2. ברשימת השירותים, מאתרים את השירות שרוצים למחוק ולוחצים על תיבת הסימון שלו כדי לבחור אותו.

  3. לוחצים על Delete. כל הגרסאות של השירות יימחקו.

gcloud

כדי למחוק שירות, מריצים את הפקודה הבאה:

gcloud run services delete SERVICE --region REGION

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE: השם של השירות.
  • ‫REGION: Google Cloud האזור של השירות.

מחיקת פרויקט הבדיקה

כשמוחקים את הפרויקט ב- Google Cloud , החיוב על כל המשאבים באותו פרויקט נפסק. כדי לשחרר את כל Google Cloud המשאבים בפרויקט, פועלים לפי השלבים הבאים:

    כדי למחוק Google Cloud פרויקט:

    gcloud projects delete PROJECT_ID

המאמרים הבאים

מידע נוסף על בניית מאגר תגים ממקור קוד ודחיפה למאגר זמין במאמרים הבאים: