יצירת צינור עיבוד נתונים ב-BigQuery ל-Knative Serving באמצעות Eventarc

במדריך הזה נסביר איך להשתמש ב-Eventarc כדי לבנות צינור לעיבוד נתונים שמתזמן שאילתות למערך נתונים ציבורי של BigQuery, יוצר תרשימים על סמך הנתונים ומשתף קישורים לתרשימים באימייל.

מטרות

במדריך הזה נבנה ונפרוס שלושה שירותי Knative Serving שפועלים באשכול Google Kubernetes Engine ‏ (GKE) ומקבלים אירועים באמצעות Eventarc:

  1. Query runner – מופעל כשמשימות של Cloud Scheduler מפרסמות הודעה בנושא Pub/Sub. השירות הזה משתמש ב-BigQuery API כדי לאחזר נתונים ממערך נתונים ציבורי של COVID-19, ושומר את התוצאות בטבלה חדשה ב-BigQuery.
  2. Chart creator (יוצר תרשימים) – מופעל כששירות ההרצה של השאילתות מפרסם הודעה בנושא Pub/Sub. השירות הזה יוצר תרשימים באמצעות ספריית התרשימים של Python‏, Matplotlib, ושומר את התרשימים בקטגוריה של Cloud Storage.
  3. Notifier – מופעל על ידי יומני ביקורת כשיוצר התרשים מאחסן תרשים בקטגוריה של Cloud Storage. השירות הזה משתמש בשירות האימייל SendGrid כדי לשלוח קישורים של התרשימים לכתובת אימייל.

הדיאגרמה הבאה מציגה את הארכיטקטורה ברמה גבוהה:

צינור עיבוד נתונים ב-BigQuery

עלויות

במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:

כדי להעריך את ההוצאות בהתאם לתחזית השימוש שלכם, אתם יכולים להיעזר במחשבון העלויות.

משתמשים חדשים של Google Cloud ? יכול להיות שאתם זכאים לתקופת ניסיון בחינם.

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

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

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

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

    gcloud init
  5. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. מפעילים את ממשקי ה-API של Artifact Registry,‏ Cloud Build,‏ Cloud Logging,‏ Cloud Scheduler,‏ Eventarc,‏ GKE,‏ Pub/Sub ומנהל המשאבים:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com container.googleapis.com eventarc.googleapis.com pubsub.googleapis.com run.googleapis.com logging.googleapis.com
  8. התקינו את ה-CLI של Google Cloud.

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

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

    gcloud init
  11. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  12. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  13. מפעילים את ממשקי ה-API של Artifact Registry,‏ Cloud Build,‏ Cloud Logging,‏ Cloud Scheduler,‏ Eventarc,‏ GKE,‏ Pub/Sub ומנהל המשאבים:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com container.googleapis.com eventarc.googleapis.com pubsub.googleapis.com run.googleapis.com logging.googleapis.com
  14. ב-Cloud Storage, מפעילים את יומני הביקורת עבור סוגי הגישה לנתונים ADMIN_READ, ‏DATA_WRITE ו-DATA_READ.

    1. קוראים את מדיניות ניהול הזהויות והרשאות הגישה (IAM) שמשויכת ל Google Cloud פרויקט, לתיקייה או לארגון ומאחסנים אותה בקובץ זמני:
      gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
    2. פותחים את הקובץ /tmp/policy.yaml בעורך טקסט ומוסיפים או משנים רק את ההגדרה של יומן הביקורת בקטע auditConfigs:

      
        auditConfigs:
        - auditLogConfigs:
          - logType: ADMIN_READ
          - logType: DATA_WRITE
          - logType: DATA_READ
          service: storage.googleapis.com
        bindings:
        - members:
        [...]
        etag: BwW_bHKTV5U=
        version: 1
    3. כותבים את מדיניות ה-IAM החדשה:

      gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml

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

  15. מגדירים את ברירות המחדל שמשמשות במדריך הזה:
    CLUSTER_NAME=events-cluster
    CLUSTER_LOCATION=us-central1
    PROJECT_ID=PROJECT_ID
    gcloud config set project $PROJECT_ID
    gcloud config set run/region $CLUSTER_LOCATION
    gcloud config set run/cluster $CLUSTER_NAME
    gcloud config set run/cluster_location $CLUSTER_LOCATION
    gcloud config set run/platform gke
    gcloud config set eventarc/location $CLUSTER_LOCATION

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

יצירת מפתח API של SendGrid

‫SendGrid הוא ספק אימייל מבוסס-ענן שמאפשר לשלוח אימייל בלי צורך לתחזק שרתי אימייל.

  1. נכנסים ל-SendGrid ועוברים אל Settings (הגדרות) > API Keys (מפתחות API).
  2. לוחצים על Create API Key (יצירת מפתח API).
  3. בוחרים את ההרשאות של המפתח. כדי לשלוח אימייל, למפתח צריכות להיות לפחות הרשאות שליחת אימייל.
  4. לוחצים על שמירה כדי ליצור את המפתח.
  5. המערכת של SendGrid יוצרת מפתח חדש. זהו העותק היחיד של המפתח, לכן חשוב להעתיק אותו ולשמור אותו לשימוש מאוחר יותר.

יצירת אשכול GKE

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

  1. יוצרים אשכול GKE עבור Knative serving עם התוספים CloudRun, ‏ HttpLoadBalancing ו-HorizontalPodAutoscaling מופעלים:

    gcloud beta container clusters create $CLUSTER_NAME \
        --addons=HttpLoadBalancing,HorizontalPodAutoscaling,CloudRun \
        --machine-type=n1-standard-4 \
        --enable-autoscaling --min-nodes=2 --max-nodes=10 \
        --no-issue-client-certificate --num-nodes=2  \
        --logging=SYSTEM,WORKLOAD \
        --monitoring=SYSTEM \
        --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
        --zone us-central1 \
        --release-channel=rapid \
        --workload-pool=$PROJECT_ID.svc.id.goog
    
  2. מחכים כמה דקות עד ליצירת האשכול. במהלך התהליך, יכול להיות שיוצגו אזהרות שאפשר להתעלם מהן. אחרי שהאשכול נוצר, הפלט אמור להיראות כך:

    Creating cluster ...done.
    Created [https://container.googleapis.com/v1beta1/projects/my-project/zones/us-central1/clusters/events-cluster].
    
  3. יוצרים מאגר רגיל ב-Artifact Registry לאחסון קובץ אימג' של קונטיינר Docker:

    gcloud artifacts repositories create REPOSITORY \
        --repository-format=docker \
        --location=$CLUSTER_LOCATION

    מחליפים את REPOSITORY בשם ייחודי למאגר.

הגדרת חשבון השירות של GKE

הגדרת חשבון שירות של GKE שיפעל כחשבון שירות ברירת המחדל של Compute.

  1. יוצרים קשר בין חשבונות השירות באמצעות ניהול זהויות והרשאות גישה (IAM):

    PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
    
    gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:$PROJECT_ID.svc.id.goog[default/default]" \
        $PROJECT_NUMBER-compute@developer.gserviceaccount.com
  2. מוסיפים את ההערה iam.gke.io/gcp-service-account לחשבון השירות של GKE, באמצעות כתובת האימייל של חשבון השירות של Compute:

    kubectl annotate serviceaccount \
        --namespace default \
        default \
        iam.gke.io/gcp-service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com

הפעלת יעדי GKE

כדי לאפשר ל-Eventarc לנהל משאבים באשכול GKE, צריך להפעיל יעדי GKE ולקשר את חשבון השירות של Eventarc לתפקידים הנדרשים.

  1. הפעלת יעדי GKE ל-Eventarc:

    gcloud eventarc gke-destinations init
  2. בהנחיה לקשירת התפקידים הנדרשים, מזינים y.

    התפקידים הבאים מקושרים:

    • roles/compute.viewer
    • roles/container.developer
    • roles/iam.serviceAccountAdmin

יצירה של חשבון שירות וקישור של תפקידי גישה

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

  1. יוצרים חשבון שירות בשם TRIGGER_GSA:

    TRIGGER_GSA=eventarc-bigquery-triggers
    gcloud iam service-accounts create $TRIGGER_GSA
  2. מקצים לחשבון השירות את התפקידים pubsub.subscriber, ‏monitoring.metricWriter ו-eventarc.eventReceiver:

    PROJECT_ID=$(gcloud config get-value project)
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/eventarc.eventReceiver"

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

יוצרים קטגוריה של Cloud Storage כדי לשמור את התרשימים. מוודאים שהקטגוריה והתרשימים זמינים לציבור, ושנמצאים באותו אזור כמו שירות GKE:

export BUCKET="$(gcloud config get-value core/project)-charts"
gcloud storage buckets create gs://${BUCKET} --location=$(gcloud config get-value run/region)
gcloud storage buckets update gs://${BUCKET} --uniform-bucket-level-access
gcloud storage buckets add-iam-policy-binding gs://${BUCKET} --member=allUsers --role=roles/storage.objectViewer

שכפול המאגר

משכפלים את מאגר GitHub.

git clone https://github.com/GoogleCloudPlatform/eventarc-samples
cd eventarc-samples/processing-pipelines

פריסת שירות ההתראות

מהספרייה bigquery/notifier/python, פורסים שירות Knative serving שמקבל אירועים של יוצר תרשימים ומשתמש ב-SendGrid כדי לשלוח באימייל קישורים לתרשימים שנוצרו.

  1. יוצרים את קובץ האימג' של הקונטיינר ומעבירים אותו בדחיפה:

    pushd bigquery/notifier/python
    export SERVICE_NAME=notifier
    docker build -t $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1 .
    docker push $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1
    popd
  2. פורסים את קובץ אימג' של קונטיינר ב-Knative serving, ומעבירים כתובת לשליחת אימיילים ומפתח API של SendGrid:

    export TO_EMAILS=EMAIL_ADDRESS
    export SENDGRID_API_KEY=YOUR_SENDGRID_API_KEY
    gcloud run deploy ${SERVICE_NAME} \
        --image $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1 \
        --update-env-vars TO_EMAILS=${TO_EMAILS},SENDGRID_API_KEY=${SENDGRID_API_KEY},BUCKET=${BUCKET}

    מחליפים את מה שכתוב בשדות הבאים:

    • EMAIL_ADDRESS: כתובת אימייל לשליחת הקישורים לתרשימים שנוצרו
    • YOUR_SENDGRID_API_KEY: מפתח ה-API של SendGrid שרשמתם קודם

כשתראו את כתובת ה-URL של השירות, סימן שהפריסה הושלמה.

יצירת טריגר לשירות ההתראות

הטריגר של Eventarc לשירות ההתראות שנפרס ב-Knative serving מסנן את יומני הביקורת של Cloud Storage לפי methodName ‏storage.objects.create.

  1. יוצרים את הטריגר:

    gcloud eventarc triggers create trigger-${SERVICE_NAME}-gke \
        --destination-gke-cluster=$CLUSTER_NAME \
        --destination-gke-location=$CLUSTER_LOCATION \
        --destination-gke-namespace=default \
        --destination-gke-service=$SERVICE_NAME \
        --destination-gke-path=/ \
        --event-filters="type=google.cloud.audit.log.v1.written" \
        --event-filters="serviceName=storage.googleapis.com" \
        --event-filters="methodName=storage.objects.create" \
        --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com

    הפעולה הזו יוצרת טריגר בשם trigger-notifier-gke.

פריסת שירות ליצירת תרשימים

מהספרייה bigquery/chart-creator/python, פורסים שירות Knative serving שמקבל אירועים של כלי להרצת שאילתות, מאחזר נתונים מטבלה ב-BigQuery עבור מדינה ספציפית, ואז יוצר תרשים מהנתונים באמצעות Matplotlib. התרשים מועלה לקטגוריה של Cloud Storage.

  1. יוצרים את קובץ האימג' של הקונטיינר ומעבירים אותו בדחיפה:

    pushd bigquery/chart-creator/python
    export SERVICE_NAME=chart-creator
    docker build -t $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1 .
    docker push $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1
    popd
  2. פורסים את קובץ האימג' של הקונטיינר ל-Knative serving, ומעבירים את BUCKET:

    gcloud run deploy ${SERVICE_NAME} \
        --image $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1 \
        --update-env-vars BUCKET=${BUCKET}

כשתראו את כתובת ה-URL של השירות, סימן שהפריסה הושלמה.

יצירת טריגר לשירות ליצירת תרשימים

הטריגר של Eventarc לשירות ליצירת תרשימים שפריס ב-Knative serving מסנן הודעות שפורסמו בנושא ב-Pub/Sub.

  1. יוצרים את הטריגר:

    gcloud eventarc triggers create trigger-${SERVICE_NAME}-gke \
        --destination-gke-cluster=$CLUSTER_NAME \
        --destination-gke-location=$CLUSTER_LOCATION \
        --destination-gke-namespace=default \
        --destination-gke-service=$SERVICE_NAME \
        --destination-gke-path=/ \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com

    הפעולה הזו יוצרת טריגר בשם trigger-chart-creator-gke.

  2. מגדירים את משתנה הסביבה של נושא Pub/Sub.

    export TOPIC_QUERY_COMPLETED=$(basename $(gcloud eventarc triggers describe trigger-${SERVICE_NAME}-gke --format='value(transport.pubsub.topic)'))

פריסת שירות להרצת שאילתות

מהספרייה processing-pipelines, פורסים שירות Knative serving שמקבל אירועים מ-Cloud Scheduler, מאחזר נתונים ממערך נתונים ציבורי של COVID-19 ושומר את התוצאות בטבלה חדשה ב-BigQuery.

  1. יוצרים את קובץ האימג' של הקונטיינר ומעבירים אותו בדחיפה:

    export SERVICE_NAME=query-runner
    docker build -t $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1 -f Dockerfile .
    docker push $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1
  2. פורסים את קובץ האימג' של הקונטיינר ב-Knative serving, ומעבירים את הערכים PROJECT_ID ו-TOPIC_QUERY_COMPLETED:

    gcloud run deploy ${SERVICE_NAME} \
        --image $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1 \
        --update-env-vars PROJECT_ID=$(gcloud config get-value project),TOPIC_ID=${TOPIC_QUERY_COMPLETED}

כשתראו את כתובת ה-URL של השירות, סימן שהפריסה הושלמה.

יצירת טריגר לשירות להרצת שאילתות

הטריגר של Eventarc לשירות להרצת שאילתות שנפרס ב-Knative serving מסנן הודעות שפורסמו בנושא ב-Pub/Sub.

  1. יוצרים את הטריגר:

    gcloud eventarc triggers create trigger-${SERVICE_NAME}-gke \
        --destination-gke-cluster=$CLUSTER_NAME \
        --destination-gke-location=$CLUSTER_LOCATION \
        --destination-gke-namespace=default \
        --destination-gke-service=$SERVICE_NAME \
        --destination-gke-path=/ \
        --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
        --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com

    הפעולה הזו יוצרת טריגר בשם trigger-query-runner-gke.

  2. מגדירים משתנה סביבה לנושא Pub/Sub.

    export TOPIC_QUERY_SCHEDULED=$(gcloud eventarc triggers describe trigger-${SERVICE_NAME}-gke --format='value(transport.pubsub.topic)')

תזמון המשימות

הפייפליין לעיבוד מופעל על ידי שתי משימות של Cloud Scheduler.

  1. יוצרים אפליקציית App Engine שנדרשת על ידי Cloud Scheduler ומציינים מיקום מתאים (לדוגמה, europe-west):

    export APP_ENGINE_LOCATION=LOCATION
    gcloud app create --region=${APP_ENGINE_LOCATION}
  2. יוצרים שתי משימות של Cloud Scheduler שמפרסמות בנושא Pub/Sub פעם ביום:

    gcloud scheduler jobs create pubsub cre-scheduler-uk \
        --schedule="0 16 * * *" \
        --topic=${TOPIC_QUERY_SCHEDULED} \
        --message-body="United Kingdom"
    gcloud scheduler jobs create pubsub cre-scheduler-cy \
        --schedule="0 17 * * *" \
        --topic=${TOPIC_QUERY_SCHEDULED} \
        --message-body="Cyprus"

    התזמון מצוין בפורמט unix-cron. לדוגמה, 0 16 * * * אומר שהעבודות יפעלו בשעה 16:00 (4 אחה"צ) לפי שעון UTC בכל יום.

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

  1. מוודאים שכל הטריגרים נוצרו בהצלחה:

    gcloud eventarc triggers list

    הפלט אמור להיראות כך:

    NAME                       TYPE                                            DESTINATION         ACTIVE  LOCATION
    trigger-chart-creator-gke  google.cloud.pubsub.topic.v1.messagePublished   GKE:chart-creator   Yes     us-central1
    trigger-notifier-gke       google.cloud.audit.log.v1.written               GKE:notifier        Yes     us-central1
    trigger-query-runner-gke   google.cloud.pubsub.topic.v1.messagePublished   GKE:query-runner    Yes     us-central1
    
  2. מאחזרים את מזהי המשימות של Cloud Scheduler:

    gcloud scheduler jobs list

    הפלט אמור להיראות כך:

    ID                LOCATION      SCHEDULE (TZ)         TARGET_TYPE  STATE
    cre-scheduler-cy  us-central1   0 17 * * * (Etc/UTC)  Pub/Sub      ENABLED
    cre-scheduler-uk  us-central1   0 16 * * * (Etc/UTC)  Pub/Sub      ENABLED
    
  3. למרות שהמשימות מתוזמנות להרצה מדי יום בשעות 16:00 ו-17:00, אפשר גם להריץ את המשימות של Cloud Scheduler באופן ידני:

    gcloud scheduler jobs run cre-scheduler-cy
    gcloud scheduler jobs run cre-scheduler-uk
  4. אחרי כמה דקות, מוודאים שיש שני תרשימים בקטגוריית Cloud Storage:

    gcloud storage ls gs://${BUCKET}

    הפלט אמור להיראות כך:

    gs://PROJECT_ID-charts/chart-cyprus.png
    gs://PROJECT_ID-charts/chart-unitedkingdom.png
    

כל הכבוד! אתם אמורים לקבל גם שני אימיילים עם קישורים לתרשימים.

הסרת המשאבים

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

    כדי למחוק Google Cloud פרויקט:

    gcloud projects delete PROJECT_ID

מחיקת משאבי הדרכה

  1. מוחקים את כל שירותי Knative serving שפרסתם במדריך הזה:

    gcloud run services delete SERVICE_NAME

    כאשר SERVICE_NAME הוא שם השירות שבחרתם.

    אפשר גם למחוק שירותים של Knative Serving מGoogle Cloud מסוף.

  2. מוחקים את כל הטריגרים של Eventarc שיצרתם במדריך הזה:

    gcloud eventarc triggers delete TRIGGER_NAME
    

    מחליפים את TRIGGER_NAME בשם הטריגר.

  3. מסירים את כל הגדרות ברירת המחדל של Google Cloud CLI שהוספתם במהלך ההגדרה של המדריך.

    gcloud config unset project
    gcloud config unset run/cluster
    gcloud config unset run/cluster_location
    gcloud config unset run/platform
    gcloud config unset eventarc/location
    gcloud config unset compute/zone
  4. מוחקים את התמונות מ-Artifact Registry.

    gcloud artifacts docker images delete $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/notifier:v1
    gcloud artifacts docker images delete $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/chart-creator:v1
    gcloud artifacts docker images delete $CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/query-runner:v1
  5. מוחקים את הקטגוריה, יחד עם כל האובייקטים שבקטגוריה:

    gcloud storage rm --recursive gs://${BUCKET}/
  6. מחיקת המשימות ב-Cloud Scheduler:

    gcloud scheduler jobs delete cre-scheduler-cy
    gcloud scheduler jobs delete cre-scheduler-uk

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