הגדרה ושימוש בסוג יעד מותאם אישית

במדריך למתחילים הזה נסביר איך להשתמש ב-Cloud Deploy כדי ליצור סוג יעד מותאם אישית, ואז לפרוס ליעד מותאם אישית מהסוג הזה.

במדריך למתחילים הזה תבצעו את הפעולות הבאות:

  1. מגדירים סוג יעד מותאם אישית, שבו קובעים את אופן הפעולה של היעד. ההגדרה הזו מתייחסת לקובצי אימג' של קונטיינרים בתוספת פקודות shell להרצה בקובצי האימג' האלה, שהן הפעולות של עיבוד ופריסה.

  2. הגדרת יעד שמפנה לסוג היעד המותאם אישית.

  3. מגדירים את צינור עיבוד הנתונים למשלוח ב-Cloud Deploy.

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

  4. יוצרים הגדרה של Skaffold, שנדרשת לגרסה.

  5. יוצרים גרסת הפצה, שיוצרת באופן אוטומטי פריסה, וכתוצאה מכך מתבצעות פעולות העיבוד והפריסה המותאמות אישית.

    במסגרת הגרסה וההשקה האלה, מופעלות גם פעולות העיבוד והפריסה שהוגדרו בהגדרות של סוג היעד המותאם אישית.

  6. צפייה בתוצאות של הפעולות המותאמות אישית. המידע הזה כולל קובץ תצורה שעבר עיבוד והועלה ל-Cloud Storage, מחרוזת שנכתבה בקובץ הזה וקובץ תוצאות שכולל את סטטוס הפעולה.

לפני שמתחילים

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  4. Install the Google Cloud CLI.

  5. Configure the gcloud CLI to use your federated identity.

    For more information, see Sign in to the gcloud CLI with your federated identity.

  6. To initialize the gcloud CLI, run the following command:

    gcloud init

    אם כבר התקנתם את Google Cloud CLI, צריך לוודא שפועלת אצלכם הגרסה העדכנית ביותר:

    gcloud components update
    
  7. מוודאים שלחשבון השירות שמשמש כברירת מחדל ב-Compute Engine יש הרשאות מספיקות.

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

    1. קודם מוסיפים את התפקיד clouddeploy.jobRunner:
      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@ \
          --role="roles/clouddeploy.jobRunner"
      
    2. מוסיפים את תפקיד המפתח לסביבת זמן הריצה הספציפית.
    3. מוסיפים את התפקיד iam.serviceAccountUser, שכולל את ההרשאה actAs לפריסה בסביבת זמן הריצה:
      gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@ \
          --member=serviceAccount:$(gcloud projects describe PROJECT_ID \
          --format="value(projectNumber)")-compute@ \
          --role="roles/iam.serviceAccountUser" \
          --project=PROJECT_ID
      

יצירת פייפליין להפצה, סוג יעד מותאם אישית ויעד

אתם יכולים להגדיר את צינור ההפצה, סוג יעד מותאם אישית ויעד בקובץ אחד או בקבצים נפרדים. במדריך למתחילים הזה, יוצרים קובץ אחד עם כל שלושת הקבצים.

  1. פותחים חלון טרמינל.

  2. יוצרים ספרייה חדשה ועוברים אליה.

    mkdir custom-target-quickstart
    cd custom-target-quickstart
    
  3. בספרייה custom-target-quickstart, יוצרים קובץ חדש, clouddeploy.yaml, עם התוכן הבא:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: custom-targets-pipeline
    serialPipeline:
      stages:
      - targetId: sample-env
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: sample-env
    customTarget:
      customTargetType: basic-custom-target
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: CustomTargetType
    metadata:
      name: basic-custom-target
    tasks:
      render:
        type: 'container'
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo "Sample manifest rendered content" > manifest.txt
            gcloud storage cp manifest.txt $CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt
            echo {\"resultStatus\": \"SUCCEEDED\", \"manifestFile\": \"$CLOUD_DEPLOY_OUTPUT_GCS_PATH/manifest.txt\"} > results.json
            gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
      deploy:
        type: 'container'
        image: gcr.io/google.com/cloudsdktool/google-cloud-cli@sha256:484e8266c1cfc84b283bc6d4eec1f6b61223115178cce76fb59f77b223f26e8e
        command: ['/bin/bash']
        args:
          - '-c'
          - |-
            echo {\"resultStatus\": \"SUCCEEDED\"} > results.json
            gcloud storage cp results.json $CLOUD_DEPLOY_OUTPUT_GCS_PATH/results.json
    

    ההגדרה של סוג היעד בהתאמה אישית כוללת את tasks הפסקה, שמגדירה משימת עיבוד ומשימת פריסה. כל אחת מהמשימות האלה מתייחסת לקובץ אימג' של קונטיינר להרצה, ולפקודות להרצה בקונטיינר הזה.

  4. רושמים את צינור עיבוד הנתונים ואת היעדים בשירות Cloud Deploy:

    gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
    

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

  5. מאשרים את הצנרת ואת היעדים:

    במסוף Google Cloud , נכנסים לדף Delivery pipelines של Cloud Deploy כדי לראות רשימה של צינורות העברת הנתונים שזמינים לכם.

    פתיחת הדף Delivery pipelines

    צינור העברת הנתונים שיצרתם מוצג, עם יעד אחד שמופיע בעמודה יעדים.

    דף צינור העברת הנתונים במסוף Google Cloud , שבו מוצג צינור העברת הנתונים

יצירת קובץ התצורה של Skaffold

הגרסה במדריך למתחילים הזה דורשת קובץ הגדרות של Skaffold, אבל לא צריך להגדיר בו הגדרות משמעותיות.

  1. יוצרים קובץ בשם skaffold.yaml עם התוכן הבא:

    apiVersion: skaffold/v4beta7
    kind: Config
    

יצירת גרסה

הפצה היא המשאב המרכזי ב-Cloud Deploy שמייצג את השינויים שנפרסים. צינור העברת התוכן מגדיר את מחזור החיים של הגרסה הזו. פרטים על מחזור החיים הזה מופיעים במאמר ארכיטקטורת שירות Cloud Deploy.

מריצים את הפקודה הבאה מהספרייה custom-target-quickstart כדי ליצור משאב release שמייצג את הפעולה בהתאמה אישית שרוצים לפרוס:

gcloud deploy releases create test-release-001 \
  --project=PROJECT_ID \
  --region=us-central1 \
  --delivery-pipeline=custom-targets-pipeline

בדומה לכל פריטי התוכן (אלא אם הם כוללים --disable-initial-rollout), גם Cloud Deploy יוצר באופן אוטומטי משאב פריסת גרסה. וכל השלבים של ההשקה הזו מבוצעים, כולל עיבוד ופריסה.

הצגת התוצאות במסוף Google Cloud

אחרי כמה דקות, הפריסה תושלם. במקרה הזה, מכיוון ששתי הפעולות המותאמות אישית הן פקודות להדפסת מחרוזות לקובץ ולהעלאת הקובץ ל-Cloud Storage, לא מתבצע פריסה לזמן ריצה של יעד כלשהו.

עם זאת, אתם יכולים לראות את הקובץ ואת המחרוזות שבו:

  1. במסוף Google Cloud , עוברים לדף Delivery pipelines של Cloud Deploy כדי לראות את צינור העברת השינויים (custom-targets-pipeline).

    פתיחת הדף Delivery pipelines

  2. לוחצים על השם של צינור העברת הנתונים (custom-targets-pipeline).

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

    הדמיה של צינור העברת נתונים שמראה הצלחה

    פריט התוכן יופיע בכרטיסייה פריטי תוכן בקטע פרטים על צינור ההפצה.

  3. לוחצים על שם הגרסה.

    יוצג הדף פרטי פריט התוכן.

  4. לוחצים על הכרטיסייה פריטי מידע.

  5. בקטע Target artifacts (פריטי מידע על היעד), לוחצים על הקישור VIEW ARTIFACTS (הצגת פריטי מידע).

    קובץ המניפסט שעבר רינדור מוצג. במקרה הזה, הקובץ הוא הפלט של פעולת העיבוד בהתאמה אישית שהגדרתם בהגדרות של סוג היעד בהתאמה אישית, והוא מכיל את המחרוזת Sample manifest rendered content.

    פלט של פעולת עיבוד בהתאמה אישית

  6. מוצאים את הקטגוריות של Cloud Storage שנוצרו על ידי הגרסה הזו.

    פתיחת הדף Cloud Storage browser

    מוצג הדף Buckets (קטגוריות), שבו מוצגות שתי קטגוריות שנוצרו לגרסה הזו. קטגוריה אחת מכילה את קובץ התצורה של צינור העברת הנתונים ואת skaffold.yaml שעבר רינדור. הקובץ השני כולל את קובץ הפלט שהפעולה המותאמת אישית מוגדרת ליצור.

  7. לוחצים על הקטגוריה שהשם שלה מתחיל ב-us-central1.deploy-artifacts...

    רשימה של קטגוריות של Cloud Storage

  8. לוחצים על התיקייה שהשם שלה מתחיל ב-custom-targets-pipeline- ואז לוחצים על התיקייה test-release-001.

  9. לוחצים על התיקייה שהשם שלה הוא שם ההשקה, שצריך להיות test-release-001-to-sample-env-0001.

  10. לוחצים על התיקייה שמוצגת, שהיא UUID, ואז לוחצים על התיקייה custom-output.

  11. לוחצים על results.json ואז על כתובת ה-URL עם ההיפר-קישור בשדה כתובת URL מאומתת.

    הקובץ הזה מכיל את המחרוזת שהגדרתם כפלט מהפעולה custom-deploy בהגדרת סוג היעד המותאם אישית:

    פלט מפריסת פעולה מותאמת אישית

הסרת המשאבים

כדי לא לצבור חיובים לחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה:

  1. מחיקת צינור העברת התוכן, היעד, הגרסה וההשקה:

    gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
    
  2. מוחקים את שתי קטגוריות האחסון ב-Cloud Storage שנוצרו על ידי Cloud Deploy.

    פתיחת הדף Cloud Storage browser

סיימתם את המדריך למתחילים.

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