פריסת קונטיינרים ב-Cloud Run

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

כדי לפרוס את הקונטיינר ב-Cloud Run:

  1. איך מתקינים את הגרסה 1.15.0 של Migrate to Containers

  2. מוסיפים מקור להעברה ויוצרים העברה בדיוק כמו שעושים היום עם סביבת זמן הריצה הקיימת.

  3. התאמה אישית של תוכנית ההעברה לפי הצורך.

    1. מורידים את תוכנית המיגרציה. תוכנית המיגרציה מיוצגת על ידי AppXGenerateArtifactsFlow.

      לדוגמה, למיגרציה בשם my-migration:

      migctl migration get my-migration
    2. פותחים את תוכנית ההעברה שהורדה, my-migration.yaml, בכלי לעריכת טקסט.

    3. אימות של מנהל השירותים המשופר של 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
    4. מבצעים התאמות אישיות נוספות שנדרשות להעברה, כמו שמתואר במאמר בנושא התאמה אישית של תוכנית ההעברה.

    5. כשמסיימים לערוך, שומרים את הקובץ הערוך.

    6. מעלים את תוכנית ההעברה הערוכה:

      migctl migration update my-migration --main-config my-migration.yaml
  4. יוצרים ו בודקים את תוצרי המיגרציה בדיוק כמו שעושים היום עם זמן הריצה הקיים.

  5. עורכים את הקובץ החדש services-config.yaml כדי להגדיר את מאפייני האתחול של הקונטיינר. שומרים את הקובץ ובונים מחדש את קובץ אימג' של קונטיינר כדי להחיל את השינויים.

    מידע נוסף על עריכת קובץ services.yaml זמין במאמר שימוש בקובץ services-config.yaml.

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

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL

    כאשר gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL מציין את המיקום של קובץ אימג' של קונטיינר.

  7. כדי לפרוס את הקונטיינר ב-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. השינויים היחידים שצריך לבצע בתהליך ההתחלה המהירה הם:

  1. בשלב 3 של העברת המכונה הווירטואלית, שבו בודקים את תוכנית ההעברה, מגדירים את v2kServiceManager ל-true בתוכנית ההעברה ושומרים את התוכנית:

    v2kServiceManager: true
  2. אחרי שהמיגרציה מסתיימת, פותחים את קובץ deployment_spec.yaml בעורך כדי לזהות את המיקום של מאגר התגים. לדוגמה, אמור להופיע משהו דומה לזה:

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
  3. בקטע 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
  4. מ-Cloud Shell, שולחים בקשה לקונטיינר באמצעות כתובת ה-URL של השירות שלו, ומעבירים את פרטי הכניסה:

    curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app

    עכשיו אמור להופיע הדף 'Hello World!‎'.

המאמרים הבאים