בדף הזה מוסבר איך לפרוס שירותים ב-Cloud Run באמצעות קובץ שמבוסס על מפרט Compose.
אפשר לפרוס ל-Cloud Run באמצעות קובץ Compose בדרכים הבאות:
שימוש ב-Compose לפריסה ב-Cloud Run הוא אידיאלי לפיתוח, ומפשט את המעבר מהסביבה המקומית לסביבת ענן. כך תוכלו לשמור על פורמט תצורה עקבי גם באפליקציות המקומיות וגם באפליקציות שפרסתם.
לניהול סביבות ייצור בסביבת תשתית כקוד (IaC), מומלץ להשתמש ב-Terraform.
מגבלות
- פריסת Compose פורסת שירות יחיד של Cloud Run עם כמה קונטיינרים.
- הפריסה של Compose מתרגמת רק קבוצת משנה של תכונות נתמכות של Cloud Run.
- שירותים שנוצרו באמצעות Compose מוגדרים כברירת מחדל למופע מקסימלי אחד.
- הכלי Cloud Run Compose deploy מפשט את הפריסה, אבל הוא לא מחליף אסטרטגיה מקיפה של תשתית כקוד לסביבות ייצור.
פריסת שירותים מתמונות של קונטיינרים באמצעות Compose
מגדירים את השירותים בקובץ compose.yaml ופורסים אותם מקובצי אימג' קיימים של קונטיינרים. מידע נוסף זמין במאמר בנושא פריסת תמונות של קונטיינרים.
דוגמה: אפליקציה עם שירות יחיד
בדוגמה הבאה מוצג קובץ compose.yaml לשירות אינטרנט שמשתמש בקובץ אימג' של קונטיינר מוכן מראש.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
פריסת השירותים
כדי לפרוס את השירותים, מריצים את הפקודה
gcloud beta run compose up:gcloud beta run compose up compose.yamlמגיבים
yלכל ההנחיות להתקנת רכיבים נדרשים או להפעלת ממשקי API.אופציונלי: הפיכת השירות לציבורי אם רוצים לאפשר גישה לשירות ללא אימות.
אחרי הפריסה, מוצגת כתובת ה-URL של שירות Cloud Run. מעתיקים את כתובת ה-URL הזו ומדביקים אותה בדפדפן כדי לראות את הקונטיינר הפועל. אפשר להשבית את אימות ברירת המחדל במסוף Google Cloud .
פריסה מקוד המקור באמצעות Compose
מגדירים את השירותים בקובץ compose.yaml ומבצעים פריסה על ידי בנייה מקוד המקור. מידע נוסף מופיע במאמר בנושא פריסת שירותים מקוד מקור.
דוגמה: אפליקציה עם שירות יחיד
בדוגמה הבאה מוצג קובץ compose.yaml לשירות אינטרנט שנבנה ממקור בספרייה הנוכחית.
services:
web:
build: .
ports:
- "8080:8080"
פריסת השירותים
בספריית הפרויקט, יוצרים קובץ
compose.yamlעם הגדרות השירות.כדי לפרוס את השירותים, מריצים את הפקודה
gcloud beta run compose up:gcloud beta run compose up compose.yamlמגיבים
yלכל ההנחיות להתקנת הרכיבים הנדרשים או להפעלת ממשקי API.אופציונלי: הפיכת השירות לציבורי אם רוצים לאפשר גישה לשירות ללא אימות.
אחרי הפריסה, מוצגת כתובת ה-URL של שירות Cloud Run. מעתיקים את כתובת ה-URL הזו ומדביקים אותה בדפדפן כדי לראות את הקונטיינר הפועל. אפשר להשבית את אימות ברירת המחדל במסוף Google Cloud .
תכונות נתמכות
כשפורסים באמצעות קובץ compose.yaml, Cloud Run יכול להקצות באופן אוטומטי משאבים אחרים של Google Cloud כפי שמוגדר בקובץ ה-Compose. אם נדרשים משאבים, Cloud Run יבקש מכם אישור לפני יצירתם.
Cloud Run תומך בקבוצת המשנה הבאה של תכונות Compose:
| שדה הכתיבה | מיפוי ותיאור של Cloud Run |
|---|---|
services |
השירותים ממופים לקונטיינרים נפרדים בשירות Cloud Run שנפרס. |
volumes |
יש תמיכה חלקית. מתרגם את ההרכבות של |
secrets |
יש תמיכה. שימוש ב-Secret Manager. |
configs |
יש תמיכה. שימוש ב-Cloud Storage. |
build |
Cloud Build יוצר את הקונטיינר באמצעות הקשר של ה-build, מתייג אותו ומעביר אותו בדחיפה למאגר |
image |
פורס קובץ אימג' מוכן מראש של קונטיינר ממאגר נתמך. משתמשים באפשרות הזו אם יש תמונה מוכנה מראש. תמיכה רק בתמונות של Docker Hub ו-Artifact Registry. אם אתם משתמשים בתמונות בהתאמה אישית, אתם יכולים להעביר אותן בדחיפה ל-Artifact Registry ולהשתמש בהן. |
ports |
רשימה של מיפויי יציאות, כמו |
expose |
רשימת יציאות לחשיפה אבל לא לפרסום, כמו |
depends_on |
הגדרה של סדר ההפעלה של הקונטיינר. כך מוודאים שלכל שירות שמופיע ברשימה |
cpu_count / cpus |
רמז שמשמש להגדרת מגבלות המעבד והזיכרון ב-Cloud Run, והקצאת משאבים באופן אוטומטי לפי הלוגיקה הבאה:
|
container_name |
מגדיר את שם המאגר לפתרון תלות, ומוגדר כברירת מחדל לשם השירות אם לא צוין. |
environment |
מעביר משתני סביבה לקונטיינר המתאים ב-Cloud Run. |
command |
הפקודה הזו מבטלת את ברירת המחדל של הפקודה בקונטיינר, שהוגדרה על ידי הקונטיינר, על ידי מיפוי למאפיין |
entrypoint |
יש תמיכה. |
env_file |
יש תמיכה. |
x-google-cloudrun:ingress-container |
(Extension) מוסיפים את התוסף הספציפי הזה של Google לשירות ומגדירים אותו לערך |
x-google-cloudrun:volume-type: in-memory |
(הרחבה) מוסיפים את ההרחבה הספציפית הזו של Google לנפח אחסון ומגדירים אותה ל- |
סודות שממופים ל-Secret Manager
אם קובץ compose.yaml מגדיר את secrets, ה-CLI של gcloud מקצה סודות של Secret Manager לאחסון הנתונים האלה.
כרכים והגדרות שממופים ל-Cloud Storage
אם בקובץ compose.yaml מוגדרים volumes או configs ברמה העליונה, ה-CLI של gcloud מקצה קטגוריה של Cloud Storage לניהול הנתונים האלה. נוצרת קטגוריה אחת לכל פריסה, והתיקיות משמשות להפרדה בין נפחים והגדרות.
- כרכים עם שם: תיקייה ריקה שמתאימה לשם הכרך נוצרת בקטגוריה.
- טעינת תיקיות מקושרות: כשמטעינים תיקיות מקושרות, Cloud Run מעלה את התוכן של ספריית קובצי המקור המקומית לתיקייה בקטגוריה לפני הפריסה.
- Configs: לכל הגדרה שמוגדרת עם מקור
file:, Cloud Run מעלה את התוכן של הקובץ המקומי לתיקייה בדלי.
התפקידים הנדרשים
במהלך הפריסה, Cloud Run מקצה אוטומטית את התפקידים הנדרשים לזהות השירות של השירות שנפרס, כדי לגשת למשאבים שהוקצו:
- Cloud Storage Bucket:
roles/storage.objectUser - Secret Manager Secrets:
roles/secretmanager.secretAccessor
תקשורת בין מאגרי תגים באותו מופע
Cloud Run מוסיף רשומה לקובץ /etc/hosts בכל קונטיינר. הערך הזה ממפה את שמות השירותים מקובץ compose.yaml לכתובות ה-IP הפנימיות שלהם, וכך השירותים יכולים לתקשר ביניהם באמצעות שמות השירותים.