פריסת אפליקציה ב-Cloud Run באמצעות Cloud Deploy

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

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

  1. יצירת הגדרה של Skaffold

  2. יוצרים קובצי הגדרות לשני שירותים של Cloud Run, לשתי משימות או לשני מאגרי עובדים.

    הקבצים האלה מגדירים את השירותים או המשימות, ומציינים את תמונות המאגר (שנוצרו מראש) לפריסה.

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

  4. יוצרים מהדורת הפצה כדי ליצור מופע של צינור ההפצה. המהדורה הזו נפרסת אוטומטית ליעד הראשון.

  5. מקדמים את הגרסה ליעד השני.

  6. אפשר לראות את שתי ההשקות במסוף Google Cloud .

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. 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

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

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

  5. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  6. התקינו את ה-CLI של Google Cloud.

  7. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  8. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  9. 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

  10. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

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

  12. Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  13. התקינו את ה-CLI של Google Cloud.

  14. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  15. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

התפקידים הנדרשים

כדי לוודא שלחשבון השירות של Cloud Deploy יש את ההרשאות הנדרשות להפעלת פעולות של Cloud Deploy ולפריסה ב-Cloud Run, צריך לבקש מהאדמין להקצות לחשבון השירות של Cloud Deploy את תפקידי ה-IAM הבאים בפרויקט:

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

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

הכנת הגדרות Skaffold

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

במדריך למתחילים הזה יוצרים קובץ skaffold.yaml שמזהה את שירות Cloud Run או את הגדרת המשימה שבהם יש להשתמש כדי לפרוס את האפליקציה לדוגמה.

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

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

    mkdir deploy-run-quickstart
    cd deploy-run-quickstart
    
  3. יוצרים קובץ בשם skaffold.yaml עם התוכן הבא:

    שירותים

    apiVersion: skaffold/v4beta7
    kind: Config
    metadata: 
      name: deploy-run-quickstart
    profiles:
    - name: dev
      manifests:
        rawYaml:
        - run-service-dev.yaml
    - name: prod
      manifests:
        rawYaml:
        - run-service-prod.yaml
    deploy:
      cloudrun: {}
    

    תעסוקה

    apiVersion: skaffold/v4beta7
    kind: Config
    metadata: 
      name: deploy-run-quickstart
    profiles:
    - name: dev
      manifests:
        rawYaml:
        - run-job-dev.yaml
    - name: prod
      manifests:
        rawYaml:
        - run-job-prod.yaml
    deploy:
      cloudrun: {}
    

    מאגרי עובדים

    apiVersion: skaffold/v4beta7
    kind: Config
    metadata:
      name: deploy-run-quickstart
    profiles:
    - name: dev
      manifests:
        rawYaml:
        - run-worker-pool-dev.yaml
    - name: prod
      manifests:
        rawYaml:
        - run-worker-pool-prod.yaml
    deploy:
      cloudrun: {}
    

    הקובץ הזה הוא קובץ תצורה מינימלי של Skaffold, שמזהה את שירותי Cloud Run, את המשימות או את מאגרי העובדים. מידע נוסף על הקובץ הזה מופיע בskaffold.yamlמאמרי העזרה.

הכנת שירותים, משימות או מאגרי עובדים ב-Cloud Run

במדריך הזה למתחילים תצטרכו ליצור שני שירותים שונים של Cloud Run, שתי משימות Cloud Run או שני מאגרי עובדים של Cloud Run, באותו פרויקט. ‫Cloud Deploy תומך גם בפריסה בכמה פרויקטים. בנוסף, אנחנו משתמשים בפרופילים של Skaffold כדי לאפשר לכם להגדיר שני שירותים, שני ג'ובים או שני מאגרי עובדים באותו פרויקט. כשמשתמשים בפרויקטים שונים, יכול להיות שלא צריך להשתמש בפרופילים של Skaffold.

שירותים

  1. יוצרים קובץ בשם run-service-dev.yaml עם התוכן הבא:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: deploy-run-service-dev
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    הקובץ הזה מגדיר שירות Cloud Run. כפי שאפשר להבין מהשם deploy-run-service-dev, זהו שירות dev, והוא תואם ליעד הראשון בתהליך ההתקדמות של צינור העברת הנתונים.

  2. יוצרים קובץ בשם run-service-prod.yaml עם התוכן הבא:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: deploy-run-service-prod
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    הקובץ הזה מגדיר שירות נוסף של Cloud Run, וכמו ששם השירות deploy-run-service-prod מרמז, זהו שירות prod, והוא תואם ליעד השני בהתקדמות של צינור העברת הנתונים.

הקבצים האלה הם הגדרות של שירות Cloud Run, שמשמשות לפריסת האפליקציה. קובץ האימג' של קונטיינר שרוצים לפרוס מוגדר כאן כפלייסהולדר, my-app-image, שמוחלף באימג' הספציפי כשיוצרים את הגרסה.

תעסוקה

  1. יוצרים קובץ בשם run-job-dev.yaml עם התוכן הבא:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: deploy-run-job-dev
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: my-app-image
    

    הקובץ הזה מגדיר משימה ב-Cloud Run. כפי שאפשר להבין מהשם deploy-run-job-dev, זהו התפקיד dev, והוא תואם ליעד הראשון בתהליך ההתקדמות של צינור ההפצה.

  2. יוצרים קובץ בשם run-job-prod.yaml עם התוכן הבא:

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: deploy-run-job-prod
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: my-app-image
    

    הקובץ הזה מגדיר עוד עבודת Cloud Run. כפי שאפשר להבין מהשם deploy-run-job-prod, זהו התפקיד שלכם prod, והוא תואם ליעד השני בתהליך ההתקדמות של צינור ההפצה.

הקבצים האלה הם הגדרות של משימות ב-Cloud Run, שמשמשות לפריסת האפליקציה. קובץ האימג' של הקונטיינר שרוצים לפרוס מוגדר כאן כפלייסהולדר, my-app-image, שמוחלף באימג' הספציפי כשיוצרים את הגרסה.

מאגרי עובדים

  1. יוצרים קובץ בשם run-worker-pool-dev.yaml עם התוכן הבא:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: deploy-run-worker-pool-dev
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    הקובץ הזה מגדיר מאגר עובדים של Cloud Run. כפי שהשם deploy-run-worker-pool-dev מרמז, זהו מאגר העובדים שלכם, והוא תואם ליעד הראשון בהתקדמות של צינור האספקה שלכם.dev

  2. יוצרים קובץ בשם run-worker-pool-prod.yaml עם התוכן הבא:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: deploy-run-worker-pool-prod
      annotations:
        run.googleapis.com/launch-stage: BETA
    spec:
      template:
        spec:
          containers:
          - image: my-app-image
    

    הקובץ הזה מגדיר מאגר נוסף של עובדים ב-Cloud Run. כפי שניתן להבין מהשם deploy-run-worker-pool-prod, זהו מאגר העובדים prod שלכם, והוא תואם ליעד השני בהתקדמות של צינור העברת הנתונים.

הקבצים האלה הם הגדרות של מאגר עובדים ב-Cloud Run, שמשמשות לפריסת האפליקציה. קובץ אימג' של קונטיינר לפריסה מוגדר כאן כפלייסהולדר, my-app-image, שמוחלף בקובץ האימג' הספציפי כשיוצרים את הגרסה.

יצירת פייפליין של משלוחים ויעדים

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

  1. בספרייה deploy-run-quickstart, יוצרים קובץ חדש: clouddeploy.yaml, עם התוכן הבא:

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: my-run-demo-app-1
    description: main application pipeline
    serialPipeline:
      stages:
      - targetId: run-qsdev
        profiles: [dev]
      - targetId: run-qsprod
        profiles: [prod]
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: run-qsdev
    description: Cloud Run development service
    run:
      location: projects/PROJECT_ID/locations/us-central1
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: run-qsprod
    description: Cloud Run production service
    run:
      location: projects/PROJECT_ID/locations/us-central1
    
  2. רושמים את צינור עיבוד הנתונים ואת היעדים בשירות Cloud Deploy:

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

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

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

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

    פתיחת הדף Delivery pipelines

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

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

יצירת גרסה

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

מריצים את הפקודה הבאה מהספרייה deploy-run-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:

שירותים

 gcloud deploy releases create test-release-001 \
   --project=PROJECT_ID \
   --region=us-central1 \
   --delivery-pipeline=my-run-demo-app-1 \
   --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a

תעסוקה

 gcloud deploy releases create test-release-001 \
   --project=PROJECT_ID \
   --region=us-central1 \
   --delivery-pipeline=my-run-demo-app-1 \
   --images=my-app-image=us-docker.pkg.dev/cloudrun/container/job@sha256:8eb3f5e72586de6375abe95aa67511c57c61d35fb37d5670e4d68624a68ef916

מאגרי עובדים

 gcloud deploy releases create test-release-001 \
   --project=PROJECT_ID \
   --region=us-central1 \
   --delivery-pipeline=my-run-demo-app-1 \
   --skaffold-version=2.17.0 \
   --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a

שימו לב לדגל --images=, שמשמש להחלפת הפלייסהולדר (my-app-image) בהגדרה של השירות, המשימה או מאגר העובדים בתמונה ספציפית שעומדת בדרישות של SHA. ‫Google ממליצה ליצור תבניות של הגדרות השירות והמשימות בדרך הזו, ולהשתמש בשמות תמונות שעומדים בדרישות של SHA כשיוצרים גרסת הפצה.

הדגל --skaffold-version= מציין את גרסת Skaffold שבה יש להשתמש לפריסה. כדי להשתמש בתמיכה במאגר עובדים ב-Cloud Run, צריך להשתמש ב-Skaffold בגרסה 2.17 ואילך.

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

קידום הגרסה

  1. בדף צינורות העברת נתונים, לוחצים על צינור my-run-demo-app-1.

    פתיחת הדף Delivery pipelines

    בדף הפרטים של צינור ההפצה מוצג ייצוג גרפי של ההתקדמות בצינור ההפצה. במקרה הזה, רואים שהגרסה הופצה ליעד run-qsdev.

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

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

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

  3. לוחצים על קידום.

    הגרסה נמצאת עכשיו בתור לפריסה ב-run-qsprod. כשהפריסה מסתיימת, היא מוצגת כפריסה בתרשים של צינור העברת הנתונים:

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

צפייה בתוצאות במסוף Google Cloud

  1. במסוף Google Cloud , נכנסים לדף Delivery pipelines של Cloud Deploy כדי לראות את צינור העברת התוכן my-run-demo-app-1.

    פתיחת הדף Delivery pipelines

  2. לוחצים על השם של צינור העברת הנתונים 'my-run-demo-app-1'.

    הוויזואליזציה של צינור העיבוד מראה את ההתקדמות של האפליקציה בצינור העיבוד.

    הדמיה של תהליך השליחה במסוף Google Cloud

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

  3. לוחצים על שם הגרסה, test-release-001.

    ההשקות שלכם יופיעו בקטע השקות. אפשר ללחוץ על השקה כדי לראות את הפרטים שלה, כולל יומן הפריסה.

    השקות במסוף Google Cloud

גישה לשירות Cloud Run

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

הסרת המשאבים

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

  1. מוחקים את deploy-qs-dev שירות Cloud Run, המשימה או מאגר העובדים:

    שירותים

    gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_ID
    

    תעסוקה

    gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_ID
    

    מאגרי עובדים

    gcloud run worker-pools delete deploy-run-worker-pool-dev --region=us-central1 --project=PROJECT_ID
    
  2. כדי למחוק את השירות, המשימה או מאגר העובדים deploy-qs-prod:

    שירותים

    gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_ID
    

    תעסוקה

    gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_ID
    

    מאגרי עובדים

    gcloud run worker-pools delete deploy-run-worker-pool-prod --region=us-central1 --project=PROJECT_ID
    
  3. מחיקת צינור עיבוד הנתונים לפריסה, היעדים, הגרסה וההשקות:

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

    אחד מסתיים ב-_clouddeploy והשני הוא [region].deploy-artifacts.[project].appspot.com.

    פתיחת הדף Cloud Storage browser

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

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