ניתוח האפליקציה באמצעות מדדים

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

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

  1. יצירה ופריסה של שירות Cloud Run אחד.

    במקרה כזה, לא תשתמשו ב-Cloud Deploy כדי לפרוס אותו.

  2. יוצרים בדיקת זמני פעילות ב-Google Cloud Observability.

    הבדיקה הזו עוקבת אחרי שירות Cloud Run כדי לוודא שהוא פועל.

  3. יוצרים מדיניות התראות ב-Cloud Monitoring.

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

  4. יוצרים הגדרת Skaffold כדי לזהות את שירות Cloud Run.

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

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

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

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

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

  7. משנים את הגדרת השירות של Cloud Run כדי להגדיל את מספר המופעים של השירות, ויוצרים גרסה חדשה.

    הפעם, הפריסה של השירות תצליח וההשקה תסתיים בהצלחה.

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

  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 את ההרשאות שנדרשות באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש אחרים.

מידע נוסף על חשבון השירות של Cloud Deploy

פריסת שירות Cloud Run

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

מריצים את הפקודה הבאה כדי ליצור את השירות הראשוני:

gcloud run deploy my-analysis-run-service \
  --image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
  --project=PROJECT_ID \
  --region=us-central1 \
  --allow-unauthenticated

מחליפים את PROJECT_ID במזהה הפרויקט.

יצירת בדיקה של זמני פעילות ב-Google Cloud Observability

בדיקת הזמינות הזו עוקבת אחרי השירות הפעיל כדי לוודא שהוא פועל. בהמשך המאמר, תיצרו מדיניות התראות של Google Cloud Observability שתפיק התראה אם בשירות שלכם לא תהיה לפחות מופע אחד פעיל.

  1. כדי ליצור את בדיקת הזמינות, מריצים את הפקודה הבאה:

    gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \
      --resource-type=cloud-run-revision \
      --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \
      --project=PROJECT_ID \
      --protocol=https \
      --path="/" \
      --port=443 \
      --period=1 \
      --timeout=10 \
      --service-agent-auth="oidc-token" \
      --status-classes="2xx"
    
  2. מעתיקים את מזהה בדיקת זמני הפעילות.

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

הכנת הגדרות Skaffold והגדרת השירות

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

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

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

mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
  1. יוצרים קובץ בשם skaffold.yaml עם התוכן הבא:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
  rawYaml:
  - service.yaml
deploy:
  cloudrun: {}

מידע נוסף על קובץ ההגדרה הזה מופיע בskaffold.yamlמאמר בנושא הפניה.

  1. יוצרים קובץ בשם service.yaml עם התוכן הבא:
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: my-analysis-run-service
  annotations:
    run.googleapis.com/scalingMode: manual
    run.googleapis.com/manualInstanceCount: 0
spec:
  template:
    spec:
      containers:
      - image: my-app-image

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

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

יצירת מדיניות התראות

במדריך הזה למתחילים נשתמש במדיניות התראות של Google Cloud Observability. מדיניות ההתראה הזו יוצרת התראה אם שירות Cloud Run נכשל בבדיקת הזמינות שיצרתם קודם.

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

    displayName: Cloud Run service uptime check
    userLabels:
      policy-for: analysis-run-pipeline
    combiner: OR
    conditions:
    - displayName: Failure of uptime check UPTIME_ID
      conditionThreshold:
        filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision"
        aggregations:
        - alignmentPeriod: 60s
          crossSeriesReducer: REDUCE_COUNT_FALSE
          groupByFields:
          - resource.label.*
          perSeriesAligner: ALIGN_NEXT_OLDER
        comparison: COMPARISON_GT
        duration: 60s
        thresholdValue: 1.0
    

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

  2. מריצים את הפקודה הבאה כדי ליצור את המדיניות:

    gcloud monitoring policies create \
      --policy-from-file=policy.yaml\
      --project=PROJECT_ID
    

    מחליפים את PROJECT_ID במזהה הפרויקט.

  3. מעתיקים את מזהה המדיניות מהפלט של הפקודה שהפעלתם הרגע.

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

יצירת צינור העברת נתונים ויעד

לצינור הזה של העברת נתונים יש שלב אחד, ליעד אחד: analysis-staging.

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

    apiVersion: deploy.cloud.google.com/v1
    kind: DeliveryPipeline
    metadata:
      name: deploy-analysis-demo-app-run
    description: main application pipeline
    serialPipeline:
      stages:
      - targetId: analysis-staging
        profiles: []
        strategy:
          standard:
            analysis:
              duration: 300s
              googleCloud:
                alertPolicyChecks:
                - id: check-1
                  alertPolicies:
                  - ALERT_POLICY_ID
    ---
    
    apiVersion: deploy.cloud.google.com/v1
    kind: Target
    metadata:
      name: analysis-staging
    description: staging Run service
    run:
      location: projects/PROJECT_ID/locations/us-central1
    

    בקובץ ה-YAML הזה, מחליפים את ALERT_POLICY_ID בפלט של הפקודה gcloud monitoring policies list שהפעלתם קודם, ואת PROJECT_ID במזהה של הפרויקט שבו אתם משתמשים.

  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-analysis-run-quickstart כדי ליצור משאב release שמייצג את קובץ האימג' של הקונטיינר לפריסה:

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

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

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

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

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

  1. במסוף Google Cloud , עוברים לדף Delivery pipelines של Cloud Deploy כדי לראות את צינור אספקת התוכנה ("deploy-analysis-demo-app-run").

    פתיחת הדף Delivery pipelines

  2. לוחצים על השם של צינור העברת הנתונים ("deploy-analysis-demo-app-run").

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

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

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

  3. בקטע פרטים על צינור ההפצה, לוחצים על הכרטיסייה השקות.

  4. לוחצים על שם ההשקה כדי לראות את הפרטים שלה.

    ניתוח מופיע כמשימה.

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

ניתוח שנכשל

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

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

שינוי הגדרת השירות ויצירת גרסה חדשה

עכשיו, נשנה את מספר המכונות בהגדרת השירות, כך שתהיה מכונה פעילה של השירות, וההתראה לא תופעל.

  1. עורכים את קובץ ההגדרה של Cloud Run‏, service.yaml, כדי לשנות את הערך של run.googleapis.com/manualInstanceCount מ-0 ל-1.

  2. מריצים את הפקודה הבאה מאותה תיקיית deploy-analysis-run-quickstart כדי ליצור עוד release:

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

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

הסרת המשאבים

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

  1. מוחקים את שירות Cloud Run:

    gcloud run services delete my-analysis-run-service \
    --region=us-central1 \
    --project=PROJECT_ID
    
  2. כדי למחוק את צינור העברת התוכן, היעד, הגרסה וההפצה, מריצים את הפקודה הבאה מהספרייה שמכילה את ההגדרה של צינור העברת התוכן:

    gcloud deploy delete --file=clouddeploy.yaml \
    --force \
    --region=us-central1 \
    --project=PROJECT_ID
    
  3. מחיקת מדיניות ההתראות של Google Cloud Observability:

    gcloud monitoring policies delete  ALERT_POLICY_ID
    
  4. מוחקים את הקטגוריות של Cloud Storage שנוצרו על ידי Cloud Deploy.

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

    פתיחת הדף Cloud Storage browser

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

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