פריסת קונטיינרים ב-Cloud Run
אם משתמשים במנהל השירותים המשופר של Linux שמוצע כברירת מחדל כדי להעביר את עומסי העבודה של הקונטיינר, אפשר לפרוס את הקונטיינר ב-Cloud Run בלי לבצע שינויים נוספים בקונטיינר.
כדי לפרוס את הקונטיינר ב-Cloud Run:
מוסיפים מקור להעברה ויוצרים העברה בדיוק כמו שעושים היום עם סביבת זמן הריצה הקיימת.
התאמה אישית של תוכנית ההעברה לפי הצורך.
מורידים את תוכנית המיגרציה. תוכנית המיגרציה מיוצגת על ידי AppXGenerateArtifactsFlow.
לדוגמה, למיגרציה בשם my-migration:
migctl migration get my-migration
פותחים את תוכנית ההעברה שהורדה,
my-migration.yaml, בכלי לעריכת טקסט.אימות של מנהל השירותים המשופר של Linux. הדגל
v2kServiceManagerמוגדר כ-trueכברירת מחדל. עם זאת, אם הכלי Migrate to Containers יזהה שירות מערכת שלא נתמך על ידי מנהל השירות, תוצג אזהרה והדגלv2kServiceManagerיוגדר לערךfalse. כשהדגל הואfalseההעברה תשתמש בסביבת זמן ריצה מדור קודם שתומכת בשירות שלכם.ההתראה הבאה מוצגת לצד השירות שלא נתמך:
Service is not supported by v2k service manager, therefore legacy runtime will be used instead of v2k service manager, and migrated workload would not fit running on Autopilot clusters of Cloudrun.
אם נמצא שירות שלא נתמך, אפשר גם להגדיר ידנית את הדגל לערך
true. במקרה כזה, אפשר להשאיר את השירות שלא נתמך בתמונה שנוצרה, למרות שהוא לא יפעל, או להסיר אותו מתוכנית ההעברה כדי לא לכלול אותו.כדי להפעיל את מנהל השירותים החדש, מאפסים את הדגל לערך
true:v2kServiceManager: true
מבצעים התאמות אישיות נוספות שנדרשות להעברה, כמו שמתואר במאמר בנושא התאמה אישית של תוכנית ההעברה.
כשמסיימים לערוך, שומרים את הקובץ הערוך.
מעלים את תוכנית ההעברה הערוכה:
migctl migration update my-migration --main-config my-migration.yaml
יוצרים ו בודקים את תוצרי המיגרציה בדיוק כמו שעושים היום עם זמן הריצה הקיים.
עורכים את הקובץ החדש
services-config.yamlכדי להגדיר את מאפייני האתחול של הקונטיינר. שומרים את הקובץ ובונים מחדש את קובץ אימג' של קונטיינר כדי להחיל את השינויים.מידע נוסף על עריכת קובץ
services.yamlזמין במאמר שימוש בקובץ services-config.yaml.אחרי שיוצרים את ארטיפקטי ההעברה, פותחים את הקובץ
deployment_spec.yamlבעורך כדי לקבוע את המיקום של קובץ אימג' של קונטיינר. לדוגמה, אמור להופיע משהו דומה לזה:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
כאשר
gcr.io/PROJECT_NAME/IMAGE_NAME:LABELמציין את המיקום של קובץ אימג' של קונטיינר.כדי לפרוס את הקונטיינר ב-Cloud Run, מריצים את הפקודה הבאה:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORTהמאפיין
--set-env-varsמגדיר את משתנה הסביבהHC_V2K_SERVICE_MANAGERלערךtrueכדי להפעיל את מנהל השירותים המשופר של Linux.המאפיין
--portמציין את היציאה שאליה נשלחות בקשות לקונטיינר. יציאת ברירת המחדל היא 8080.
דוגמה: פריסת קונטיינר מהמדריך למתחילים ב-Cloud Run
אפשר להשתמש במדריך הנוכחי למתחילים כדי להעביר קונטיינר שמכיל שרת אינטרנט פשוט, ואז לפרוס אותו ב-Cloud Run. השינויים היחידים שצריך לבצע בתהליך ההתחלה המהירה הם:
בשלב 3 של העברת המכונה הווירטואלית, שבו בודקים את תוכנית ההעברה, מגדירים את
v2kServiceManagerל-trueבתוכנית ההעברה ושומרים את התוכנית:v2kServiceManager: true
אחרי שהמיגרציה מסתיימת, פותחים את קובץ
deployment_spec.yamlבעורך כדי לזהות את המיקום של מאגר התגים. לדוגמה, אמור להופיע משהו דומה לזה:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
בקטע Deploying the migrated workload, פורסים את קובץ האימג' של הקונטיינר ב-Cloud Run באמצעות הפקודה:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80שרת האינטרנט במאגר שהועבר מאזין לבקשות ביציאה 80, לכן צריך לציין את היציאה הזו כשפורסים את המאגר.
אתם אמורים לראות את התגובה הבאה, שכוללת את כתובת ה-URL של שירות Cloud Run:
Allow unauthenticated invocations to [my-runtime] (y/N)? y Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION] Deploying new service... Done. ✓ Creating Revision… ✓ Routing traffic… Setting IAM Policy… Done. Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic. Service URL: https://my-runtime-s5ahdq-uc.a.run.app
מ-Cloud Shell, שולחים בקשה לקונטיינר באמצעות כתובת ה-URL של השירות שלו, ומעבירים את פרטי הכניסה:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
עכשיו אמור להופיע הדף 'Hello World!'.