בדיקות תקינות ב-Cloud Run מוודאות שמופעלים מופעי קונטיינרים בצורה תקינה ושניתן להעביר אליהם תעבורה. באמצעות בדיקות תקינות ב-Cloud Run, אתם יכולים להתאים אישית את המועד שבו הקונטיינר מוכן לקבל בקשות, ואת המועד שבו הקונטיינר ייחשב כלא תקין וידרוש הפעלה מחדש.
תרחישים לדוגמה
אפשר להגדיר את הסוגים הבאים של בדיקות תקינות:
בדיקות מוכנות להפעלה קובעות אם הקונטיינר הופעל ומוכן לקבל תנועה.
- כשמגדירים בקשה לבדיקת תקינות (probe) להפעלה, בדיקות מצב פעילות (liveness) והמוכנות מושבתות עד שבקשה לבדיקת תקינות (probe) להפעלה קובעת שהקונטיינר הופעל, כדי למנוע הפרעות להפעלת השירות.
- בקשות לבדיקת תקינות (probe) של הפעלה שימושיות במיוחד אם אתם משתמשים בבדיקות מצב פעילות (liveness) במאגרים שמתחילים לפעול לאט, כי בקשות לבדיקת תקינות (probe) של הפעלה מונעות את כיבוי המאגרים לפני שהם מתחילים לפעול.
בדיקות מצב פעילות קובעות אם להפעיל מחדש קונטיינר.
- הפעלה מחדש של קונטיינר במקרה כזה יכולה לשפר את זמינות השירות במקרה של באגים.
- בדיקות מצב פעילות נועדו להפעיל מחדש מופעים בודדים שלא ניתן לשחזר בדרך אחרת. השימוש בהם מיועד בעיקר למקרים של כשלים שלא ניתן לשחזר, כמו מצב של חסימה הדדית (deadlock) שבו שירות פועל אבל לא יכול להתקדם. אתם יכולים לדרוש בדיקת מצב פעילות (liveness) לכל מאגר באמצעות מדיניות הארגון בהתאמה אישית.
- כששירות חווה כשלים חוזרים בבקשות לבדיקת תקינות (probe), Cloud Run מגביל את ההפעלה מחדש של מופעים כדי למנוע לולאות קריסה לא מבוקרות.
בדיקות מוכנות (תצוגה מקדימה)
בדיקות מוכנות קובעות מתי מופע בשירות Cloud Run צריך להעביר תעבורה. בדיקות המוכנות מתחילות אחרי שבקשה לבדיקת תקינות (probe) של מאגר התגים עוברת בהצלחה. אם בדיקת המוכנות של מופע נכשלת מעבר לערך סף הכשל שהגדרתם, Cloud Run מפסיק לשלוח אליו תנועה חדשה. Cloud Run לא מפסיק את המופע ושולח את התנועה בחזרה למופע כשהוא מתחיל להעביר שוב את בדיקת המוכנות.
הקונטיינר צריך להטמיע את בדיקות ההפעלה, מצב הפעילות (liveness) והמוכנות באופן עקבי. אחרי שהבדיקה של ההפעלה עוברת בהצלחה, Cloud Run מחשיב את הקונטיינר כמוכן להעברת תנועה.
הגדרת בדיקות מוכנות להפעלה
כל שינוי בהגדרות מוביל ליצירה של גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
אפשר להגדיר בדיקות HTTP, TCP ו-gRPC באמצעות Google Cloud מסוף, YAML או Terraform:
המסוף
נכנסים לדף Cloud Run במסוף Google Cloud :
בשירות חדש, מרחיבים את האפשרויות Container(s), Volumes, Networking, Security כדי להציג את האפשרויות של בדיקת תקינות. בשירות קיים, לוחצים על השירות שרוצים להגדיר ואז על עריכה ופריסה כדי להציג את האפשרויות של בדיקת תקינות.
בקטע Container(s), עוברים אל בדיקות תקינות ולוחצים על הוספת בדיקת תקינות כדי לפתוח את חלונית ההגדרות הוספת בדיקת תקינות.
בתפריט בחירת סוג בדיקת תקינות, בוחרים באפשרות בדיקת הפעלה.
בתפריט Select probe type (בחירת סוג בדיקה), בוחרים את סוג הבדיקה שרוצים להשתמש בו, לדוגמה, HTTP או gRPC. יוצג טופס הגדרת הבדיקה.
הגדרת הבדיקה משתנה בהתאם לסוג הבדיקה. מגדירים את הגדרות הבדיקה:
אם אתם משתמשים בבדיקות תקינות של אתרים מסוג HTTP:
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה,
/startup,/healthאו/are_you_ready) צריך להיות זהה ל-pathבהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.בשדה Path מציינים את הנתיב היחסי לנקודת הקצה, לדוגמה,
/.מסמנים את תיבת הסימון HTTP Headers (כותרות HTTP) כדי לציין כותרות מותאמות אישית אופציונליות. מציינים את שם הכותרת בשדה Name (שם) ואת ערך הכותרת בשדה Value (ערך). לוחצים על הוספת כותרת HTTP כדי לציין כותרות נוספות.
אם אתם משתמשים בבדיקות gRPC:
- מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
בשדה Port (יציאה), מציינים את יציאת הקונטיינר שמשמשת את השירות.
בקטע השהיה ראשונית, מציינים את מספר השניות להמתנה אחרי שהמאגר התחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
בקטע Period, מציינים את התקופה (בשניות) שבה תתבצע הבקשה לבדיקת תקינות (probe). לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.בסף הכשל, מציינים את מספר הפעמים שבהן צריך לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני השבתת הקונטיינר. ערך ברירת המחדל הוא 3.
בקטע Timeout (זמן קצוב לתפוגה), מציינים את מספר השניות להמתנה עד שזמן הבדיקה יסתיים. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
לוחצים על הוספה כדי להוסיף את ערך הסף החדש.
לוחצים על יצירה או על פריסה.
כדי למחוק בקשה לבדיקת תקינות (probe), לוחצים על סמל המחיקה של בדיקת תקינות שרוצים למחוק, ואז לוחצים על פריסה כדי לפרוס גרסה חדשה של שירות Cloud Run.
gcloud
הפעלה של TCP
מריצים את הפקודה הבאה:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe tcpSocket.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. CONTAINER_PORT: היציאה של הקונטיינר שמשמשת את השירות.
- DELAY: מספר השניות להמתנה אחרי שהמאגר התחיל לפני ביצוע בקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שהבדיקה תגיע לזמן קצוב לתפוגה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1. - THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- PERIOD: תקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
הפעלה של HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
מריצים את הפקודה הבאה:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - זה שינוי אופציונלי. CONTAINER_PORT: מוגדר ליציאת המאגר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
הפעלה של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מריצים את הפקודה הבאה:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--startup-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. GRPC_SERVICE: אם הערך מוגדר, הוא משמש בשדה service של
grpc.health.v1.HealthCheckRequestכשמתבצעת קריאה ל-grpc.health.v1.Health.Checkrpc. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת הקונטיינר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
YAML
הפעלה של TCP
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
startupProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: tcpSocket: port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. CONTAINER_PORT: היציאה של הקונטיינר שמשמשת את השירות.
- DELAY: מספר השניות להמתנה אחרי שהמאגר התחיל לפני ביצוע בקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שהבדיקה תגיע לזמן קצוב לתפוגה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1. - THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- PERIOD: תקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
הפעלה של HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
startupProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE 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
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - זה שינוי אופציונלי. CONTAINER_PORT: מוגדר ליציאת המאגר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- אופציונלי: אפשר להשתמש ב-
httpHeadersכדי לספק כמה כותרות מותאמות אישית או כותרות חוזרות באמצעות השדות HEADER_NAME ו-HEADER_VALUE, כמו שמוצג. - זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
הפעלה של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
startupProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL startupProbe: grpc: service: GRPC_SERVICE port: CONTAINER_PORT initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. GRPC_SERVICE: אם הערך מוגדר, הוא משמש בשדה service של
grpc.health.v1.HealthCheckRequestכשמתבצעת קריאה ל-grpc.health.v1.Health.Checkrpc. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת הקונטיינר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שזמן הקצוב לתפוגה של הבדיקה יגיע. הערך הזה לא יכול להיות גבוה מהערך שצוין ב-periodSeconds. מציינים ערך בין 1 ל-240. ערך ברירת המחדל הוא 1.
- זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-240 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
הפעלה של TCP
מגדירים את שירות Cloud Run עם מאפיין startup_probe כמו שמוצג:
הפעלה של HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
מגדירים את שירות Cloud Run עם מאפיין startup_probe כמו שמוצג:
הפעלה של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מגדירים את שירות Cloud Run עם מאפיין startup_probe כמו שמוצג:
בדיקת התקינות של הפעלת TCP שמוגדרת כברירת מחדל
אם לא מגדירים במפורש בדיקת מוכנות להפעלה של TCP לשירות חדש ב-Cloud Run, Cloud Run מגדיר באופן אוטומטי בדיקת מוכנות להפעלה של TCP עם ערכי ברירת המחדל הבאים:
startupProbe:
timeoutSeconds: 240
periodSeconds: 240
failureThreshold: 1
אפשר לשנות את ערכי ברירת המחדל האלה לפי ההוראות שבקטע הגדרת בקשה לבדיקת תקינות (probe) בדף הזה.
דרישות והתנהגות של בדיקת מוכנות להפעלה
| סוג הבדיקה | דרישות | התנהגות |
|---|---|---|
| הפעלה של TCP | ללא | כברירת מחדל, Cloud Run יוצר חיבור TCP כדי לפתוח את שקע ה-TCP ביציאה שצוינה. אם Cloud Run לא מצליח ליצור חיבור, זה מצביע על כשל. אם בקשה לבדיקת תקינות (probe) לא מצליחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), שלא יכול לעלות על 240 שניות, הקונטיינר מושבת. אפשר לעיין גם במאמר בנושא ברירות מחדל של TCP. |
| הפעלה של HTTP | יצירת נקודת קצה (endpoint) לבדיקת תקינות ב-HTTP שימוש ב-HTTP/1 |
אחרי שמגדירים את בדיקת המוכנות, Cloud Run שולח בקשת GET לנקודת הקצה של בדיקת תקינות (לדוגמה, /health). כל תגובה מסוג 2XX או 3XX נחשבת להצלחה, וכל תגובה אחרת מצביעה על כשל.אם בדיקת המוכנות להפעלה לא מצליחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), שלא יכול לעלות על 240 שניות, הקונטיינר מושבת.אם בדיקת המוכנות להפעלה מסוג HTTP מצליחה בתוך הזמן שצוין, והגדרתם בדיקת פעילות מסוג HTTP, בדיקת הפעילות מסוג HTTP מופעלת. |
| הפעלה של gRPC | הטמעה של פרוטוקול בדיקת תקינות של gRPC בשירות Cloud Run | אם בדיקת ההפעלה לא מצליחה בתוך הזמן שצוין (failureThreshold * periodSeconds), שלא יכול להיות גדול מ-240 שניות, הקונטיינר מושבת. |
הגדרת בדיקות תקינות (liveness probes)
כל שינוי בהגדרות מוביל ליצירה של גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
אפשר להגדיר בדיקות HTTP ו-gRPC באמצעות Google Cloud מסוף, YAML או Terraform:
המסוף
נכנסים לדף Cloud Run במסוף Google Cloud :
בשירות חדש, מרחיבים את האפשרויות Container(s), Volumes, Networking, Security כדי להציג את האפשרויות של בדיקת תקינות. בשירות קיים, לוחצים על השירות שרוצים להגדיר ואז על עריכה ופריסה כדי להציג את האפשרויות של בדיקת תקינות.
בקטע Container(s), עוברים אל בדיקות תקינות ולוחצים על הוספת בדיקת תקינות כדי לפתוח את חלונית ההגדרות הוספת בדיקת תקינות.
בתפריט Select health check type (בחירת סוג בדיקת תקינות), בוחרים באפשרות Liveness check (בדיקת פעילות).
בתפריט Select probe type (בחירת סוג בדיקה), בוחרים את סוג הבדיקה שרוצים להשתמש בו, לדוגמה, HTTP או gRPC. יוצג טופס הגדרת הבדיקה.
הגדרת הבדיקה משתנה בהתאם לסוג הבדיקה. מגדירים את הגדרות הבדיקה:
אם אתם משתמשים בבדיקות תקינות של אתרים מסוג HTTP:
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה,
/startup,/healthאו/are_you_ready) צריך להיות זהה ל-pathבהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.בשדה Path מציינים את הנתיב היחסי לנקודת הקצה, לדוגמה,
/.מסמנים את תיבת הסימון HTTP Headers (כותרות HTTP) כדי לציין כותרות מותאמות אישית אופציונליות. מציינים את שם הכותרת בשדה Name (שם) ואת ערך הכותרת בשדה Value (ערך). לוחצים על הוספת כותרת HTTP כדי לציין כותרות נוספות.
אם אתם משתמשים בבדיקות gRPC:
- מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
בשדה Port (יציאה), מציינים את יציאת הקונטיינר שמשמשת את השירות.
בקטע השהיה ראשונית, מציינים את מספר השניות להמתנה אחרי שהמאגר התחיל לפעול לפני שמבצעים את הבקשה לבדיקת תקינות (probe) הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
בקטע Period, מציינים את התקופה (בשניות) שבה תתבצע הבקשה לבדיקת תקינות (probe). לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.בסף הכשל, מציינים את מספר הפעמים שבהן צריך לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני השבתת הקונטיינר. ערך ברירת המחדל הוא 3.
בקטע Timeout (זמן קצוב לתפוגה), מציינים את מספר השניות להמתנה עד שזמן הבדיקה יסתיים. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600. ערך ברירת המחדל הוא 1.
לוחצים על הוספה כדי להוסיף את ערך הסף החדש.
לוחצים על יצירה או על פריסה.
כדי למחוק בקשה לבדיקת תקינות (probe), לוחצים על סמל המחיקה של בדיקת תקינות שרוצים למחוק, ואז לוחצים על פריסה כדי לפרוס גרסה חדשה של שירות Cloud Run.
gcloud
בדיקת פעילות HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
מריצים את הפקודה הבאה:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - זה שינוי אופציונלי. CONTAINER_PORT: מוגדר ליציאת המאגר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
מצב פעילות (liveness) של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מריצים את הפקודה הבאה:
gcloud run deploy SERVICE \
--image=IMAGE_URL \
--liveness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,initialDelaySeconds=DELAY,failureThreshold=THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. GRPC_SERVICE: אם הערך מוגדר, הוא משמש בשדה service של
grpc.health.v1.HealthCheckRequestכשמתבצעת קריאה ל-grpc.health.v1.Health.Checkrpc. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת הקונטיינר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
YAML
בדיקת פעילות HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
livenessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: httpGet: path: PATH port: CONTAINER_PORT httpHeaders: - name: HEADER_NAME value: HEADER_VALUE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - PATH: נתיב יחסי לנקודת הקצה ב-HTTP, לדוגמה,
/health. - זה שינוי אופציונלי. CONTAINER_PORT: מוגדר ליציאת המאגר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- אופציונלי: אפשר להשתמש ב-
httpHeadersכדי לספק כמה כותרות מותאמות אישית או כותרות חוזרות באמצעות השדות HEADER_NAME ו-HEADER_VALUE, כמו שמוצג. - זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
מצב פעילות (liveness) של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
livenessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: spec: containers: - image: IMAGE_URL livenessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE initialDelaySeconds: DELAY timeoutSeconds: TIMEOUT failureThreshold: THRESHOLD periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. GRPC_SERVICE: אם הערך מוגדר, הוא משמש בשדה service של
grpc.health.v1.HealthCheckRequestכשמתבצעת קריאה ל-grpc.health.v1.Health.Checkrpc. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת הקונטיינר שמשמשת את השירות.
- זה שינוי אופציונלי. DELAY: מספר השניות להמתנה אחרי שהקונטיינר התחיל לפעול, לפני ביצוע הבדיקה הראשונה. מציינים ערך בין 0 שניות ל-240 שניות. ערך ברירת המחדל הוא 0 שניות.
- זה שינוי אופציונלי. THRESHOLD: מספר הפעמים שיש לנסות שוב את הבקשה לבדיקת תקינות (probe) לפני כיבוי הקונטיינר. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-3,600.ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין שנייה אחת ל-3,600 שניות. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
Terraform
כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.
בדיקת פעילות HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
מגדירים את שירות Cloud Run עם מאפיין liveness_probe כמו שמוצג:
מצב פעילות (liveness) של gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מגדירים את שירות Cloud Run עם מאפיין liveness_probe כמו שמוצג:
הדרישות וההתנהגות של בדיקת פעילות
| סוג הבדיקה | דרישות | התנהגות |
|---|---|---|
| בדיקת פעילות HTTP | יצירת נקודת קצה (endpoint) לבדיקת תקינות ב-HTTP שימוש ב-HTTP/1 |
בקשה לבדיקת תקינות מצב פעילות מתחילה רק אחרי שבקשה לבדיקת תקינות ההפעלה מסתיימת בהצלחה. אחרי הגדרת הבדיקה, ואחרי שכל בדיקת הפעלה מסתיימת בהצלחה, Cloud Run שולח בקשת GET לנקודת הקצה של בדיקת תקינות (לדוגמה, /health). כל תגובה מסוג 2XX או 3XX נחשבת להצלחה, וכל תגובה אחרת מצביעה על כשל.אם בדיקת הפעילות לא מסתיימת בהצלחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), הקונטיינר מושבת באמצעות אות SIGKILL. כל הבקשות שנותרו שעדיין מוגשות על ידי הקונטיינר מסתיימות עם קוד הסטטוס 503 HTTP. אחרי שהקונטיינר מושבת, מתבצעת התאמה אוטומטית לעומס של Cloud Run שמפעילה מופע קונטיינר חדש. |
| מצב פעילות (liveness) של gRPC | הטמעה של פרוטוקול בדיקת תקינות של gRPC בשירות Cloud Run | אם מגדירים בדיקת מוכנות להפעלה של gRPC, בדיקת החיות מתחילה רק אחרי שבדיקת המוכנות להפעלה מסתיימת בהצלחה. אחרי שמגדירים את בדיקת החיות, ואחרי שבדיקת המוכנות להפעלה מסתיימת בהצלחה, Cloud Run שולח בקשה לבדיקת תקינות לשירות. אם בדיקת החיות לא מסתיימת בהצלחה בתוך הזמן שצוין ( failureThreshold * periodSeconds), הקונטיינר נסגר באמצעות אות SIGKILL. אחרי שהקונטיינר מושבת, מתבצעת התאמה אוטומטית לעומס של Cloud Run שמפעילה מופע קונטיינר חדש. |
הגדרת בדיקות מוכנות
כל שינוי בהגדרות מוביל ליצירה של גרסה חדשה. גם גרסאות עתידיות יקבלו את הגדרת התצורה הזו באופן אוטומטי, אלא אם תבצעו עדכונים מפורשים כדי לשנות אותה.
ההגבלות הבאות חלות על בדיקות מוכנות:
אם מפעילים את התכונה 'זיקה לסשן (session affinity)', Cloud Run ממשיך לשלוח בקשות לאותו מופע, גם אם בדיקת המוכנות שלו נכשלת.
אם הגדרתם בעבר בדיקת מוכנות לשירות Cloud Run באמצעות Cloud Run Admin API v1 לפני נובמבר 2025, בדיקות המוכנות לא יופעלו גם אחרי שתפרסו הגדרה חדשה לשירות הזה. הסיבה לכך היא שהשירות שומר הגדרה ישנה יותר. השירותים שתיצרו אחרי נובמבר 2025, או אלה שלא נעשה בהם שימוש אף פעם בבדיקת מוכנות, לא יושפעו. כדי להפעיל בדיקות מוכנות נתמכות בשירותים המושפעים:
פורסים גרסה חדשה שמסירה את ההגדרה הישנה של בדיקת המוכנות.
פורסים עוד גרסה חדשה שמוסיפה את ההגדרה הרלוונטית של בדיקת המוכנות.
השלבים האלה מוחקים כל הגדרה ישנה ומפעילים את הפונקציונליות של בדיקת המוכנות.
אפשר להגדיר בדיקת מוכנות באמצעות מסוף Google Cloud , Google Cloud CLI או YAML:
המסוף
נכנסים לדף Cloud Run במסוף Google Cloud :
בשירות חדש, מרחיבים את האפשרויות Container(s), Volumes, Networking, Security כדי להציג את האפשרויות של בדיקת תקינות. בשירות קיים, לוחצים על השירות שרוצים להגדיר ואז על עריכה ופריסה כדי להציג את האפשרויות של בדיקת תקינות.
בקטע Container(s), עוברים אל בדיקות תקינות ולוחצים על הוספת בדיקת תקינות כדי לפתוח את חלונית ההגדרות הוספת בדיקת תקינות.
בתפריט Select health check type (בחירת סוג בדיקת תקינות), בוחרים באפשרות Readiness check (בדיקת מוכנות).
בתפריט Select probe type (בחירת סוג בדיקה), בוחרים את סוג הבדיקה שרוצים להשתמש בו, לדוגמה, HTTP או gRPC. יוצג טופס הגדרת הבדיקה.
הגדרת הבדיקה משתנה בהתאם לסוג הבדיקה. מגדירים את הגדרות הבדיקה:
אם אתם משתמשים בבדיקות תקינות של אתרים מסוג HTTP:
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה,
/startup,/healthאו/are_you_ready) צריך להיות זהה ל-pathבהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.בשדה Path (נתיב) מציינים את הנתיב היחסי לנקודת הקצה, לדוגמה,
/are_you_ready. נתיב ברירת המחדל הוא/.
אם אתם משתמשים בבדיקות gRPC:
- מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
בשדה Port (יציאה), מציינים את יציאת הקונטיינר של השירות. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
בקטע Period, מציינים את התקופה (בשניות) שבה יתבצע הניסיון. לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.בקטע Success threshold (סף הצלחה), מציינים את מספר ההצלחות המינימלי ברצף שצריך להשיג כדי שהבדיקה תיחשב כמוצלחת אחרי כישלון. ברירת המחדל היא 2.
בקטע Failure threshold (סף הכשל), מציינים את מספר הפעמים שבהן המערכת תנסה שוב את הבדיקה לפני שתדווח על כשל. כשל כזה יגרום להפסקת קבלת התעבורה במופע. ערך ברירת המחדל הוא 3.
בקטע Timeout (זמן קצוב לתפוגה), מציינים את מספר השניות להמתנה עד שזמן קצוב לתפוגה של הבדיקה יחול. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1.
לוחצים על הוספה כדי להוסיף את ערך הסף החדש.
לוחצים על יצירה או על פריסה.
כדי למחוק בקשה לבדיקת תקינות (probe), לוחצים על סמל המחיקה של בדיקת תקינות שרוצים למחוק, ואז לוחצים על פריסה כדי לפרוס גרסה חדשה של שירות Cloud Run.
gcloud
מוכנות ל-HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
מריצים את הפקודה הבאה:
gcloud beta run deploy SERVICE \
--image=IMAGE_URL \
--readiness-probe httpGet.path=PATH,httpGet.port=CONTAINER_PORT,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. PATH: הנתיב היחסי לנקודת הקצה ב-HTTP, לדוגמה,
/are_you_ready. נתיב ברירת המחדל הוא/. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת המאגר שמשמשת את השירות. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- זה שינוי אופציונלי. SUCCESS_THRESHOLD: מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- זה שינוי אופציונלי. FAILURE_THRESHOLD: מספר הפעמים שהבדיקה תנסה להתבצע מחדש לפני שהמערכת תדווח על כשל, מה שיגרום להפסקת קבלת התנועה במכונה. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
מוכנות ל-gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
מריצים את הפקודה הבאה:
gcloud beta run deploy SERVICE \
--image=IMAGE_URL \
--readiness-probe grpc.port=CONTAINER_PORT,grpc.service=GRPC_SERVICE,successThreshold=SUCCESS_THRESHOLD,failureThreshold=FAILURE_THRESHOLD,timeoutSeconds=TIMEOUT,periodSeconds=PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת המאגר שמשמשת את השירות. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- זה שינוי אופציונלי. GRPC_SERVICE: אם הערך מוגדר, הוא משמש בשדה service של
grpc.health.v1.HealthCheckRequestכשמתבצעת קריאה ל-grpc.health.v1.Health.Checkrpc. - זה שינוי אופציונלי. SUCCESS_THRESHOLD: מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- זה שינוי אופציונלי. FAILURE_THRESHOLD: מספר הפעמים שהבדיקה תנסה להתבצע מחדש לפני שהמערכת תדווח על כשל, מה שיגרום להפסקת קבלת התנועה במכונה. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
YAML
מוכנות ל-HTTP
מוסיפים נקודת קצה HTTP/1 (ברירת המחדל של Cloud Run, לא HTTP/2) בקוד השירות כדי להגיב לבקשה לבדיקת תקינות (probe). שם נקודת הקצה (לדוגמה, /startup, /health או /are_you_ready) צריך להיות זהה ל-path בהגדרת הבדיקה. נקודות קצה (endpoint) של בדיקות תקינות של HTTP נגישות חיצונית, והן פועלות לפי אותם עקרונות כמו כל נקודות הקצה (endpoint) של שירות HTTP שחשופות חיצונית.
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
readinessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: httpGet: path: PATH port: CONTAINER_PORT successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. PATH: הנתיב היחסי לנקודת הקצה ב-HTTP, לדוגמה,
/are_you_ready. נתיב ברירת המחדל הוא/. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת המאגר שמשמשת את השירות. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- זה שינוי אופציונלי. SUCCESS_THRESHOLD: מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- זה שינוי אופציונלי. FAILURE_THRESHOLD: מספר הפעמים שהבדיקה תנסה להתבצע מחדש לפני שהמערכת תדווח על כשל, מה שיגרום להפסקת קבלת התנועה במכונה. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
מוכנות ל-gRPC
מוודאים שקובץ אימג' של קונטיינר מטמיע את פרוטוקול בדיקת התקינות של gRPC.
-
אם אתם יוצרים שירות חדש, דלגו על השלב הזה. אם אתם מעדכנים שירות קיים, מורידים את הגדרות ה-YAML שלו:
gcloud run services describe SERVICE --format export > service.yaml
מגדירים את מאפיין
readinessProbeכמו שמוצג:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: spec: containers: - image: IMAGE_URL readinessProbe: grpc: port: CONTAINER_PORT service: GRPC_SERVICE successThreshold: SUCCESS_THRESHOLD failureThreshold: FAILURE_THRESHOLD timeoutSeconds: TIMEOUT periodSeconds: PERIOD
מחליפים את מה שכתוב בשדות הבאים:
- SERVICE: השם של שירות Cloud Run.
- 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. - זה שינוי אופציונלי. CONTAINER_PORT: יציאת המאגר שמשמשת את השירות. יציאת ברירת המחדל היא יציאת הכניסה הראשית.
- זה שינוי אופציונלי. GRPC_SERVICE: אם הערך מוגדר, הוא משמש בשדה service של
grpc.health.v1.HealthCheckRequestכשמתבצעת קריאה ל-grpc.health.v1.Health.Checkrpc. - זה שינוי אופציונלי. SUCCESS_THRESHOLD: מספר ההצלחות המינימלי ברצף שנדרש כדי שהבקשה לבדיקת תקינות (probe) תיחשב מוצלחת אחרי כשל. ערך ברירת המחדל הוא 2.
- זה שינוי אופציונלי. FAILURE_THRESHOLD: מספר הפעמים שהבדיקה תנסה להתבצע מחדש לפני שהמערכת תדווח על כשל, מה שיגרום להפסקת קבלת התנועה במכונה. ערך ברירת המחדל הוא 3.
- זה שינוי אופציונלי. TIMEOUT: מספר השניות להמתנה עד שתפוג הבדיקה. הערך הזה לא יכול להיות גדול מהערך שצוין עבור
periodSeconds. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 1. - זה שינוי אופציונלי. PERIOD: התקופה (בשניות) שבה תתבצע הבדיקה.
לדוגמה,
2כדי לבצע את הבקשה לבדיקת תקינות (probe) כל 2 שניות. מציינים ערך בין 1 ל-300. ערך ברירת המחדל הוא 10 שניות.
-
יוצרים או מעדכנים את השירות באמצעות הפקודה הבאה:
gcloud run services replace service.yaml
הקצאת CPU
- המעבד תמיד מוקצה כשמריצים בדיקות.
- כל הבדיקות מחויבות על צריכת השימוש במעבד ובזיכרון, אבל אין חיוב על בסיס בקשות.
המאמרים הבאים
- איך מגדירים פרוטוקול לבדיקת תקינות של gRPC
- אוטומציה של מעבר לגיבוי במקרה של כשל באזורים שונים באמצעות Service Health ב-Cloud Run.