ניהול שירותי Cloud Run

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

כל שירות מקבל כתובת URL ייחודית וקבועה של run.app, שנשארת גם כשיוצרים גרסאות חדשות. פונקציות שנפרסו ב-Cloud Run נחשבות גם הן לשירותים, ומוקצית להן כתובת run.app שמכילה את שם השירות וגיבוב (hash).

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

כדי לקבל את ההרשאות שנדרשות לניהול השירותים והגרסאות של Cloud Run, בקשו מהאדמין להקצות לכם את התפקיד מפתח ב-Cloud Run (roles/run.developer) ב-IAM בשירות Cloud Run.

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

יצירת שירות

כדי ליצור שירות חדש, צריך לפרוס בו קובץ אימג' של קונטיינר בפעם הראשונה. במאמר הזה מוסבר איך פורסים שירות חדש.

הצגת רשימת השירותים בפרויקט

אפשר לראות את רשימת השירותים שזמינים בפרויקט באמצעות מסוף Google Cloud או Google Cloud CLI:

המסוף

כדי לראות את רשימת השירותים:

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

    כניסה ל-Cloud Run

  2. בודקים את רשימת השירותים שמוצגת בפרויקט.

gcloud

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

gcloud run services list

שימו לב שלכל שירות משויכת כתובת URL.

אפשר לסנן את הרשימה לפי מאפיינים של הגדרת השירות, כמו תווית שהוקצתה.

Cloud Code

כדי להציג את רשימת השירותים באמצעות Cloud Code, קראו את המדריכים של Cloud Run Explorer ל-IntelliJ ול-Visual Studio Code.

ספריות לקוח

כדי לראות את רשימת השירותים מקוד:

‫API בארכיטקטורת REST

כדי לראות את רשימת השירותים בפרויקט, שולחים GETבקשת HTTP לנקודת הקצה service של Cloud Run Admin API.

לדוגמה, באמצעות curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X GET \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services

מחליפים את:

  • ‫ACCESS_TOKEN עם אסימון גישה תקף לחשבון שיש לו הרשאות IAM לצפייה בשירותים. לדוגמה, אם אתם מחוברים ל-gcloud, אתם יכולים לאחזר אסימון גישה באמצעות gcloud auth print-access-token. מתוך מכונה של קונטיינר ב-Cloud Run, אתם יכולים לאחזר אסימון גישה באמצעות שרת המטא-נתונים של המכונה של הקונטיינר.
  • ‫REGION באזור של השירות ב- Google Cloud .
  • ‫PROJECT-ID ב Google Cloud מזהה הפרויקט.

הצגת רשימת הפונקציות בפרויקט

אפשר להציג את רשימת הפונקציות שזמינות בפרויקט באמצעות מסוףGoogle Cloud :

המסוף

כדי לסנן לפי פונקציות ברשימת השירותים:

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

    כניסה ל-Cloud Run

  2. בוחרים באפשרות Filter services > Deployment type > Function.

    אם פרסתם בעבר את הפונקציה באמצעות Cloud Functions v2 API, בעמודה Deployed by (נפרס על ידי) יופיע הערך Cloud Functions.

העתקת שירות

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

המסוף

כדי להעתיק שירות:

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

    כניסה ל-Cloud Run

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

  3. לוחצים על Copy.

  4. בדף העתקת השירות, מגדירים או משנים את הערכים שרוצים לשנות, כמו אזור וכו'. אם משאירים את אותו אזור, צריך לתת לשירות שם חדש.

  5. לוחצים על Create (יצירה) כדי ליצור עותק ולפרוס אותו באמצעות שם השירות החדש.

YAML

  1. אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, הורידו את הגדרת ה-YAML שלו:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מבצעים את השינויים הבאים בהגדרות של השירות.

     apiVersion: serving.knative.dev/v1
     kind: Service
     metadata:
       annotations:
         ...
       name: SERVICE
       ...
     spec:
       template:
         metadata:
           annotations:
           ...
           name: REVISION
    
    • אם אתם לא פורסים את העותק באזור אחר, החליפו את הערך SERVICE בשם שבו אתם רוצים להשתמש לעותק. אם אתם פורסים את העותק באזור אחר, אתם יכולים להשתמש בשם הישן.
    • מחליפים את REVISION: שם חדש של הגרסה או מוחקים אותו (אם הוא קיים). אם מספקים שם חדש לגרסה, חובה שהוא יעמוד בקריטריונים הבאים:
      • מתחיל ב-SERVICE-
      • מכיל רק אותיות קטנות, מספרים ו--
      • לא מסתיים ב--
      • לא חורג מ-63 תווים
  3. מעתיקים את השירות באמצעות הפקודה הבאה:

    gcloud run services replace service.yaml

    משתמשים בדגל --region כדי לפרוס את העותק באזור אחר.

הצגת פרטים נוספים על שירות

אפשר לראות פרטים נוספים על שירות באמצעות מסוף Google Cloud , ‏Google Cloud CLI, קובץ YAML או API בארכיטקטורת REST:

המסוף

כדי לראות את פרטי השירות:

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

    כניסה ל-Cloud Run

  2. לוחצים על השירות ברשימת השירותים שמוצגת כדי לפתוח את תצוגת הפרטים של השירות.

gcloud

כדי לראות פרטים על שירות:

gcloud run services describe SERVICE
מחליפים את SERVICE בשם השירות.

אפשר להשתמש בדגל --format כדי לעצב את הפלט. לדוגמה, כ-YAML:

gcloud run services describe SERVICE --region REGION --format yaml

מחליפים את:

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

אפשר להשתמש ב---format export כדי לייצא כ-YAML בלי תוויות או סטטוס שנוצרו באופן אוטומטי:

gcloud run services describe SERVICE --region REGION --format export

אפשר גם להשתמש בדגל --format כדי לקבל את כתובת ה-URL של השירות:

gcloud run services describe SERVICE --region REGION --format='value(status.url)'

Cloud Code

כדי לראות את פרטי השירות באמצעות Cloud Code, אפשר לקרוא את המדריכים של Cloud Run Explorer ל-IntelliJ ול-Visual Studio Code.

מידע נוסף על גרסאות של שירותים זמין במאמר ניהול גרסאות.

ספריות לקוח

כדי לראות פרטים על שירות מקוד:

‫API בארכיטקטורת REST

כדי לראות פרטים על שירות, שולחים בקשת HTTP מסוג GET לנקודת הקצה (endpoint) של Cloud Run Admin API service.

לדוגמה, שימוש ב-curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X GET \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE-NAME

מחליפים את:

  • ‫ACCESS_TOKEN עם אסימון גישה תקין לחשבון שיש לו הרשאות IAM לצפייה בפרטי השירות. לדוגמה, אם אתם מחוברים ל-gcloud, אתם יכולים לאחזר אסימון גישה באמצעות gcloud auth print-access-token. מתוך מופע קונטיינר של Cloud Run, אפשר לאחזר אסימון גישה באמצעות שרת המטא-נתונים של מופע הקונטיינר.
  • ‫SERVICE-NAME בשם של השירות.
  • ‫REGION באזור של השירות ב- Google Cloud .
  • ‫PROJECT-ID במזהה הפרויקט ב- Google Cloud .

השבתת שירות קיים

כדי לקבל את ההרשאות שנדרשות להשבתה של שירות וגרסה קיימים של Cloud Run, צריך לבקש מהאדמין להקצות לכם את תפקיד ה-IAM‏ Cloud Run Admin (roles/run.admin) בפרויקט.

כשמשביתים שירות, כל הבקשות שנמצאות כרגע בתהליך יקבלו אישור להשלמה. עם זאת, כל בקשה נוספת לכתובת ה-URL של השירות תיכשל עם השגיאה Service unavailable או Service disabled.

בקשות לגרסאות שירות שפעילות רק בגלל תגי תנועה לא מושפעות, כי הגרסאות האלה לא מושבתות.

כדי להשבית שירות, מגדירים את קנה המידה לאפס. אפשר להשבית שירות באמצעות מסוף Google Cloud ,‏ Google Cloud CLI, קובץ YAML או API:

המסוף

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

    כניסה ל-Cloud Run

  2. לוחצים על השירות שרוצים להשבית כדי להציג את חלונית הפרטים שלו, ואז לוחצים על הכרטיסייה Scaling.

  3. בוחרים באפשרות Manual scaling (שינוי גודל ידני).

  4. מזינים את הערך 0 (אפס) בשדה מספר המכונות.

  5. לוחצים על הצגת ההבדלים ופריסה ואז על פריסת השינויים.

gcloud

כדי להשבית שירות, משתמשים בפקודה הבאה כדי להגדיר את קנה המידה לאפס:

gcloud run services update SERVICE --scaling=0

מחליפים את SERVICE בשם השירות.

YAML

  1. מורידים את הגדרות ה-YAML של השירות:

    gcloud run services describe SERVICE --format export > service.yaml
  2. מגדירים את המאפיין manualInstanceCount לאפס (0):

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
      run.googleapis.com/scalingMode: manual
      run.googleapis.com/manualInstanceCount: `0`

    מחליפים את SERVICE בשם של שירות Cloud Run.

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

    gcloud run services replace service.yaml

‫API בארכיטקטורת REST

כדי להשבית שירות, שולחים בקשת HTTP‏ PATCH לנקודת הקצה service של Cloud Run Admin API.

לדוגמה, באמצעות curl:

    curl -H "Content-Type: application/json" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    -X PATCH \
    -d '{"scaling":{"manualInstanceCount":0 }}' \
    https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE?update_mask=scaling.manualInstanceCount

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

  • ‫ACCESS_TOKEN: אסימון גישה תקין לחשבון עם הרשאות IAM לעדכון שירות. לדוגמה, אם אתם מחוברים אל gcloud, אתם יכולים לאחזר טוקן גישה באמצעות gcloud auth print-access-token. מתוך מכונה של קונטיינר ב-Cloud Run, אתם יכולים לאחזר אסימון גישה באמצעות שרת המטא-נתונים של המכונה של הקונטיינר.
  • ‫SERVICE: שם השירות.
  • ‫REGION: האזור ב- Google Cloud שבו השירות פרוס.
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud .

Terraform

כדי להשבית שירות, מגדירים את המאפיין manual_instance_count לאפס (0):

resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE_NAME"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
    }
  }
  scaling {
    scaling_mode = "MANUAL"
    manual_instance_count = "0"
  }
}

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

  • ‫SERVICE_NAME: השם של שירות Cloud Run.
  • ‫REGION: Google Cloud האזור. לדוגמה: europe-west1.
  • ‫IMAGE_URL: הפניה לקובץ אימג' בקונטיינר, לדוגמה, us-docker.pkg.dev/cloudrun/container/hello:latest. אם אתם משתמשים ב-Artifact Registry, צריך ליצור מראש את המאגר REPO_NAME. הפורמט של כתובת ה-URL הוא LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG

מחיקת שירותים קיימים

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

  • כשמוחקים שירות, נמחקים כל המשאבים שקשורים אליו, כולל כל הגרסאות של השירות, גם אם הן משרתות תנועה וגם אם לא.
  • מחיקת שירות לא מסירה באופן אוטומטי קובצי אימג' של קונטיינרים מ-Artifact Registry. כדי למחוק מ-Artifact Registry קובצי אימג' של קונטיינרים שמשמשים את הגרסאות שנמחקו, קראו את המאמר מחיקת קובצי אימג'.
  • אם מוחקים שירות עם טריגר אחד או יותר של Eventarc, הטריגרים האלה לא נמחקים אוטומטית. כדי למחוק את הטריגרים, אפשר לעיין במאמר ניהול טריגרים.
  • אחרי המחיקה, השירות עדיין מופיע במסוף Google Cloud ובממשק שורת הפקודה עד שהמחיקה מסתיימת. עם זאת, אתם לא יכולים לעדכן את השירות.
  • מחיקת שירות היא פעולה סופית: אי אפשר לבטל אותה או לשחזר את השירות. עם זאת, אם אחרי מחיקת שירות תפרסו שירות חדש עם אותו שם באותו אזור, תהיה לו אותה כתובת URL של נקודת קצה.
  • כשמוחקים פונקציית Cloud Run, היא מפסיקה לקבל בקשות חדשות. עם זאת, Cloud Run לא מפסיק באופן מיידי את כל המקרים הפעילים. במקום זאת, הפונקציה פועלת עד להשלמת המשימה במסגרת הזמן הקצוב שהגדרתם. לכן יכול להיות שהפונקציה תופיע כפעילה ביומנים למשך זמן קצר אחרי המחיקה.

אפשר למחוק שירות או פונקציה באמצעות מסוף Google Cloud , Google Cloud CLI, קובץ YAML או API בארכיטקטורת REST:

המסוף

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

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

    כניסה ל-Cloud Run

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

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

gcloud

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

gcloud run services delete SERVICE --region REGION

החלפה

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

ספריות לקוח

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

‫API בארכיטקטורת REST

כדי למחוק שירות, שולחים בקשת HTTP‏ DELETE לנקודת הקצה service של Cloud Run Admin API.

לדוגמה, באמצעות curl:

curl -H "Content-Type: application/json" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -X DELETE \
  -d '' \
  https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/services/SERVICE-NAME

מחליפים את:

  • ‫ACCESS_TOKEN עם אסימון גישה תקין לחשבון שיש לו הרשאות IAM למחיקת שירות. לדוגמה, אם אתם מחוברים ל-gcloud, אתם יכולים לאחזר אסימון גישה באמצעות gcloud auth print-access-token. מתוך מכונה של קונטיינר ב-Cloud Run, אתם יכולים לאחזר אסימון גישה באמצעות שרת המטא-נתונים של המכונה של הקונטיינר.
  • ‫SERVICE-NAME בשם של השירות.
  • ‫REGION באזור Google Cloud של השירות.
  • ‫PROJECT-ID במזהה הפרויקט ב- Google Cloud .