הגדרת בדיקות תקינות של קונטיינרים למשימות

בדף הזה מוסבר איך להגדיר בדיקות מוכנות להפעלה של HTTP,‏ TCP ו-gRPC למשימות חדשות וקיימות של Cloud Run. ההגדרה משתנה בהתאם לסוג הבקשה לבדיקת תקינות (probe).

תרחישים לדוגמה

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

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

דרישות לגבי בדיקות ודפוסי התנהגות

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

אם בדיקת ההפעלה לא מצליחה בפרק הזמן שצוין, Cloud Run משבית את הקונטיינר. מרווח הזמן הזה מחושב כך: failureThreshold * periodSeconds, והוא לא יכול להיות ארוך מ-240 שניות.
הפעלה של HTTP יצירה של נקודת קצה (endpoint) לבדיקת תקינות HTTP
שימוש ב-HTTP/1
אחרי שמגדירים את הבקשה לבדיקת תקינות (probe), Cloud Run שולח בקשת GET לנקודת הקצה של בדיקת תקינות העבודה (לדוגמה, /ready). כל תגובה בין 200 ל-400 נחשבת להצלחה, וכל תגובה אחרת מצביעה על כשל.

אם בדיקת ההפעלה לא מצליחה בתוך הזמן שצוין (failureThreshold * periodSeconds), שלא יכול לעלות על 240 שניות, הקונטיינר מושבת.
הפעלת gRPC הטמעה של פרוטוקול בדיקת תקינות של gRPC במשימת Cloud Run אם בדיקת ההפעלה לא מצליחה בתוך הזמן שצוין (failureThreshold * periodSeconds), שלא יכול להיות גדול מ-240 שניות, הקונטיינר מושבת

הגדרת בדיקות

מגדירים בדיקות HTTP,‏ TCP ו-gRPC באמצעות מסוף Cloud de Confiance או YAML:

המסוף

חשוב: אם אתם מגדירים את העבודה שלכם ב-Cloud Run לבדיקות HTTP, אתם צריכים גם להוסיף נקודת קצה לבדיקת תקינות HTTP בקוד של העבודה כדי להגיב לבדיקה. אם מגדירים בדיקת תקינות של gRPC, צריך גם להטמיע את פרוטוקול בדיקת התקינות של gRPC במשימת Cloud Run.

  1. נכנסים לדף Jobs ב-Cloud Run במסוף Cloud de Confiance by S3NS :

    כניסה ל-Cloud Run

  2. כדי ליצור משימה חדשה, לוחצים על Deploy container (פריסת קונטיינר). אם רוצים לערוך משימה קיימת, לוחצים על הכרטיסייה משימות, לוחצים על המשימה הרצויה ואז על הצגה ועריכה של הגדרות המשימה.

  3. מרחיבים את האפשרות Containers, Networking, Security (מאגרי נתונים, רשתות, אבטחה).

  4. בקטע Container(s) (מאגרי תגים), עוברים אל Health checks (בדיקות תקינות) ולוחצים על Add health check (הוספת בדיקת תקינות) כדי לפתוח את חלונית ההגדרות Add health check (הוספת בדיקת תקינות).

  5. בתפריט Select health check type (בחירת סוג בדיקת תקינות), בוחרים את סוג ההפעלה של בדיקת התקינות.

  6. בתפריט Select probe type (בחירת סוג בדיקה), בוחרים את סוג הבדיקה, כמו HTTP או gRPC. יוצג טופס הגדרת הבדיקה.

  7. שימו לב שהגדרת הבדיקה משתנה בהתאם לסוג הבדיקה. מגדירים את ההגדרות של הבדיקה:

    • אם אתם משתמשים בבדיקות תקינות של HTTP:
      • בשדה Path (נתיב) מציינים את הנתיב היחסי אל נקודת הקצה, לדוגמה, /.
      • מסמנים את תיבת הסימון HTTP Headers (כותרות HTTP) כדי לציין כותרות מותאמות אישית אופציונליות. לאחר מכן מציינים את שם הכותרת בשדה Name (שם) ואת ערך הכותרת בשדה Value (ערך). לוחצים על הוספת כותרת HTTP כדי לציין כותרות נוספות.
    • בשדה Port (יציאה), מציינים את היציאה שבה קונטיינר העבודה מאזין לבדיקה.
    • בקטע Initial delay (השהיה ראשונית), מציינים כמה שניות להמתין אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
    • בקטע תקופה, מציינים את מרווח הזמן (בשניות) שבו תתבצע הבדיקה. לדוגמה, 2 כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
    • בסף הכשל, מציינים כמה פעמים לנסות שוב את הבדיקה לפני כיבוי המאגר. ערך ברירת המחדל הוא 3.
    • בקטע Timeout, מציינים כמה שניות להמתין עד שהבדיקה תסתיים. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
  8. לוחצים על הוספה כדי להוסיף את ערך הסף החדש.

YAML

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

הפעלה של TCP

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מגדירים את המאפיין startupProbe כמו שמוצג:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
     name: JOB
    spec:
     template:
       metadata:
       spec:
         containers:
         - image: IMAGE_URL
           startupProbe:
             tcpSocket:
               port: CONTAINER_PORT
             initialDelaySeconds: DELAY
             timeoutSeconds: TIMEOUT
             failureThreshold: THRESHOLD
             periodSeconds: PERIOD

    מחליפים את המשתנים הבאים:

    • JOB מחליפים בשם של משימת Cloud Run.
    • IMAGE_URL עם כתובת ה-URL של קובץ אימג' של קונטיינר המשימות, לדוגמה: us-docker.pkg.dev/cloudrun/container/job:latest.
    • אופציונלי: CONTAINER_PORT עם היציאה שבה קונטיינר העבודה מאזין לבדיקה.
    • DELAY עם מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
    • אופציונלי: TIMEOUT עם מספר השניות להמתנה עד שהבדיקה תסתיים. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
    • THRESHOLD עם מספר הפעמים לניסיון חוזר של הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
    • PERIOD עם התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה, 2 כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

הפעלה של HTTP

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מגדירים את המאפיין startupProbe כמו שמוצג:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              httpGet:
                path: PATH
                port: CONTAINER_PORT
                httpHeaders:
                  - name: HEADER_NAME
                    value: HEADER_VALUE
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    מחליפים את המשתנים הבאים:

    • JOB מחליפים בשם של משימת Cloud Run.
    • IMAGE_URL עם כתובת ה-URL של קובץ אימג' של קונטיינר המשימות, לדוגמה: us-docker.pkg.dev/cloudrun/container/job:latest.
    • PATH עם הנתיב היחסי אל נקודת הקצה (endpoint) של HTTP, לדוגמה, /ready.
    • אופציונלי: CONTAINER_PORT עם היציאה שבה קונטיינר העבודה מאזין לבדיקה.
    • אופציונלי: אפשר להשתמש ב-httpHeaders כדי לספק כמה כותרות מותאמות אישית או כותרות חוזרות באמצעות השדות HEADER_NAME ו-HEADER_VALUE, כמו שמוצג.
    • אופציונלי: DELAY מספר השניות להמתנה אחרי שהקונטיינר מתחיל לפעול לפני שמבצעים את הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
    • אופציונלי: TIMEOUT עם מספר השניות להמתנה עד שהבדיקה תסתיים. הערך הזה לא יכול להיות גבוה מהערך שצוין עבור periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
    • אופציונלי: THRESHOLD עם מספר הפעמים לניסיון חוזר של הבקשה לבדיקת תקינות (probe) לפני כיבוי ה-קונטיינר. ערך ברירת המחדל הוא 3.
    • אופציונלי: PERIOD עם התקופה (בשניות) שבה יתבצע הבדיקה. לדוגמה, 2 כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

הפעלת gRPC

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. מגדירים את המאפיין startupProbe כמו שמוצג:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            startupProbe:
              grpc:
                service: GRPC_SERVICE
                port: CONTAINER_PORT
              initialDelaySeconds: DELAY
              timeoutSeconds: TIMEOUT
              failureThreshold: THRESHOLD
              periodSeconds: PERIOD

    מחליפים את המשתנים הבאים:

    • JOB מחליפים בשם של משימת Cloud Run.
    • IMAGE_URL עם כתובת ה-URL של קובץ אימג' של קונטיינר המשימות, לדוגמה: us-docker.pkg.dev/cloudrun/container/job:latest.
    • אופציונלי: GRPC_SERVICE. אם המדיניות מוגדרת, היא משמשת בשדה השירות של grpc.health.v1.HealthCheckRequest כשמתבצעת קריאה ל-RPC של grpc.health.v1.Health.Check.
    • אופציונלי: CONTAINER_PORT עם היציאה שבה קונטיינר העבודה מאזין לבדיקה.
    • אופציונלי: DELAY מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
    • אופציונלי: TIMEOUT עם מספר השניות להמתנה עד שזמן הקצוב לתשאול יפוג. הערך הזה לא יכול להיות גדול מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
    • אופציונלי: THRESHOLD עם מספר הפעמים לניסיון חוזר של הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
    • אופציונלי: PERIOD עם התקופה (בשניות) שבה יתבצע הבדיקה. לדוגמה, 2 כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
  3. יוצרים או מעדכנים את העבודה באמצעות הפקודה הבאה:

    gcloud run jobs replace job.yaml

יצירת נקודות קצה לבדיקת תקינות ב-HTTP

אם מגדירים את משימת Cloud Run לבדיקת הפעלה של HTTP, צריך להוסיף נקודת קצה בקוד המשימה כדי להגיב לבדיקה. אפשר להשתמש בכל שם לנקודת הקצה, למשל /startup או /ready. השם חייב להיות זהה לערכים שציינתם עבור path בהגדרת הבדיקה. לדוגמה, אם מציינים /ready לבדיקת מוכנות להפעלה של HTTP, צריך לציין path בהגדרת הבדיקה כמו שמוצג כאן:

startupProbe:
  httpGet:
    path: /ready