使用 Eventarc 為 GKE 建構 BigQuery 處理管道

本教學課程說明如何使用 Eventarc 建構處理管道,排定對公開 BigQuery 資料集的查詢、根據資料生成圖表,以及透過電子郵件分享圖表連結。

目標

在本教學課程中,您將建構及部署三項 Google Kubernetes Engine (GKE) 服務,這些服務在 GKE 叢集中執行,並使用 Eventarc 接收事件:

  1. 查詢執行器:當 Cloud Scheduler 工作將訊息發布至 Pub/Sub 主題時,就會觸發這項服務。這項服務會使用 BigQuery API 從公開的 COVID-19 資料集擷取資料,並將結果儲存至新的 BigQuery 資料表。
  2. 圖表建立者:查詢執行器服務發布訊息至 Pub/Sub 主題時觸發;這項服務會使用 Python 繪圖程式庫 Matplotlib 生成圖表,並將圖表儲存至 Cloud Storage bucket。
  3. 通知器:當圖表建立工具服務將圖表儲存在 Cloud Storage bucket 時,由稽核記錄觸發。這項服務會使用電子郵件服務 SendGrid,將圖表的連結傳送至電子郵件地址。

下圖顯示高階架構:

BigQuery 處理管道的高階架構

費用

在本文件中,您會使用下列 Google Cloud計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator。

初次使用 Google Cloud 的使用者可能符合免費試用期資格。

事前準備

  1. 登入 Google Cloud 帳戶。如果您未曾使用過 Google Cloud,歡迎 建立帳戶,親自體驗實際使用我們產品的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
  2. 安裝 Google Cloud CLI。

  3. 若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  4. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  5. 建立或選取 Google Cloud 專案。

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
    • 建立專案:如要建立專案,您需要專案建立者角色 (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. 如果尚未啟用 Artifact Registry、BigQuery、Cloud Build、Cloud Logging、Cloud Scheduler、Eventarc、GKE、Pub/Sub 和 Resource Manager API,請啟用這些 API:

    啟用 API 所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過服務使用情形管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    gcloud services enable artifactregistry.googleapis.com bigquery.googleapis.com cloudbuild.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com container.googleapis.com eventarc.googleapis.com pubsub.googleapis.com logging.googleapis.com
  8. 安裝 Google Cloud CLI。

  9. 若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。

  10. 執行下列指令,初始化 gcloud CLI:

    gcloud init
  11. 建立或選取 Google Cloud 專案。

    選取或建立專案所需的角色

    • 選取專案:選取專案時,不需要具備特定 IAM 角色,只要您在專案中獲派角色,即可選取該專案。
    • 建立專案:如要建立專案,您需要專案建立者角色 (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. 如果尚未啟用 Artifact Registry、BigQuery、Cloud Build、Cloud Logging、Cloud Scheduler、Eventarc、GKE、Pub/Sub 和 Resource Manager API,請啟用這些 API:

    啟用 API 所需的角色

    如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過擁有者角色 (roles/owner) 取得這項權限。否則,您可以透過服務使用情形管理員角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。

    gcloud services enable artifactregistry.googleapis.com bigquery.googleapis.com cloudbuild.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com container.googleapis.com eventarc.googleapis.com pubsub.googleapis.com logging.googleapis.com
  14. 如果是 Cloud Storage,請為 ADMIN_READ、DATA_WRITE 和 DATA_READ 資料存取類型啟用稽核記錄。

    1. 讀取與 Google Cloud 專案、資料夾或組織相關聯的身分與存取權管理 (IAM) 政策,並儲存在暫存檔案中:
      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 eventarc/location $CLUSTER_LOCATION

    將 PROJECT_ID 替換為您的專案 ID。

建立 SendGrid API 金鑰

SendGrid 是一項雲端電子郵件服務供應商,可讓您傳送電子郵件,不必維護電子郵件伺服器。

  1. 登入 SendGrid,然後依序前往「Settings」>「API 金鑰」。
  2. 按一下「建立 API 金鑰」。
  3. 選取金鑰的權限。金鑰至少必須具備傳送郵件權限,才能傳送電子郵件。
  4. 按一下 [Save] 建立金鑰。
  5. SendGrid 會產生一個新金鑰。這是金鑰的唯一副本,請務必複製並儲存金鑰,以備日後使用。

建立 GKE 叢集

建立已啟用 Workload Identity Federation for GKE 的叢集,以便從 GKE 內執行的應用程式存取 Google Cloud 服務。您也需要 Workload Identity Federation for GKE,才能使用 Eventarc 轉送事件。

  1. 建立 GKE 叢集,並啟用 HttpLoadBalancing 和 HorizontalPodAutoscaling 外掛程式:

    gcloud container clusters create $CLUSTER_NAME \
        --addons=HttpLoadBalancing,HorizontalPodAutoscaling \
        --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 \
        --region=$CLUSTER_LOCATION \
        --release-channel=rapid \
        --workload-pool=$PROJECT_ID.svc.id.goog
    
  2. 請稍候幾分鐘,等待叢集建立完成。過程中可能會看到警告,請放心忽略。叢集建立完成後,輸出內容會與下列內容相似:

    Creating cluster ...done.
    Created [https://container.googleapis.com/v1/projects/my-project/zones/us-central1/clusters/events-cluster].
    
  3. 使用憑證和端點資訊更新 kubeconfig 檔案,將 kubectl 指向 GKE 叢集:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --region=$CLUSTER_LOCATION
  4. 建立 Artifact Registry 標準存放區,用於儲存 Docker 容器映像檔:

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

    將 REPOSITORY 替換為存放區的專屬名稱。

設定服務帳戶

  1. 如要允許 GKE 節點從 Artifact Registry 提取容器映像檔,請將專案的 Artifact Registry 讀取者 (roles/artifactregistry.reader) 角色授予叢集節點使用的 Compute Engine 預設服務帳戶:

    PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
      --condition=None \
      --role "roles/artifactregistry.reader"
  2. 如要允許 GKE 服務查詢及寫入 BigQuery、發布至 Pub/Sub,以及將圖表上傳至 Cloud Storage,請將專案的 BigQuery 資料編輯者 (roles/bigquery.dataEditor)、BigQuery 工作使用者 (roles/bigquery.jobUser)、Pub/Sub 發布者 (roles/pubsub.publisher) 和 Storage 物件管理員 (roles/storage.objectAdmin) 角色授予 default 命名空間中的 default Kubernetes ServiceAccount:

    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/default/sa/default" \
      --condition=None \
      --role "roles/bigquery.dataEditor"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/default/sa/default" \
      --condition=None \
      --role "roles/bigquery.jobUser"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/default/sa/default" \
      --condition=None \
      --role "roles/pubsub.publisher"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member "principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/$PROJECT_ID.svc.id.goog/subject/ns/default/sa/default" \
      --condition=None \
      --role "roles/storage.objectAdmin"

啟用 GKE 目的地

如要允許 Eventarc 管理 GKE 叢集中的資源,請啟用 GKE 目的地,並將 Eventarc 服務帳戶繫結至必要角色。

  1. 啟用 Eventarc 的 GKE 目的地:

    gcloud eventarc gke-destinations init
  2. 系統提示繫結必要角色時,請輸入 y。

    繫結的角色如下:

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

建立 Cloud Storage bucket

在 GKE 服務所在的區域建立 Cloud Storage bucket,用於儲存圖表,並授予帳戶讀取權限 (roles/storage.objectViewer),以便查看生成的圖表:

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

複製存放區

複製 GitHub 存放區。

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

建立服務帳戶並繫結存取權角色

建立 Eventarc 觸發條件前,請先設定使用者管理的服務帳戶,並授予特定角色,讓 Eventarc 可以轉送 Pub/Sub 事件。

  1. 建立名為 eventarc-triggers-test-sa 的服務帳戶:

    TRIGGER_GSA=eventarc-triggers-test-sa
    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" \
        --condition=None \
        --role "roles/pubsub.subscriber"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
        --condition=None \
        --role "roles/monitoring.metricWriter"
    
    gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member "serviceAccount:$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com" \
        --condition=None \
        --role "roles/eventarc.eventReceiver"

部署通知器服務

從 bigquery/notifier/python 目錄部署 GKE 服務,接收圖表建立者事件,並使用 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. 為容器映像檔建立 Kubernetes 部署作業,並設定必要的環境變數,包括要傳送電子郵件的地址和 SendGrid API 金鑰:

    export TO_EMAILS=EMAIL_ADDRESS
    export SENDGRID_API_KEY=YOUR_SENDGRID_API_KEY
    kubectl create deployment ${SERVICE_NAME} \
        --image=$CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1
    kubectl set env deployment/${SERVICE_NAME} \
        TO_EMAILS=${TO_EMAILS} \
        SENDGRID_API_KEY=${SENDGRID_API_KEY} \
        BUCKET=${BUCKET}

    更改下列內容:

    • EMAIL_ADDRESS:電子郵件地址,用於傳送生成圖表的連結
    • YOUR_SENDGRID_API_KEY:先前記下的 SendGrid API 金鑰
    • REPOSITORY:Artifact Registry 存放區的名稱
  3. 將 Deployment 公開為 Kubernetes 服務:

    kubectl expose deployment ${SERVICE_NAME} \
        --type=ClusterIP --port=80 --target-port=8080

為通知程式服務建立觸發條件

為部署在 GKE 上的通知器服務建立 Eventarc 觸發條件,篩選指定 Cloud Storage bucket 的 Cloud Storage 稽核記錄,其中 methodName 為 storage.objects.create:

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" \
      --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET/objects/*" \
      --service-account=$TRIGGER_GSA@$PROJECT_ID.iam.gserviceaccount.com

這項操作會建立名為 trigger-notifier-gke 的觸發條件。

部署圖表建立工具服務

從 bigquery/chart-creator/python 目錄部署 GKE 服務,接收查詢執行器事件、從特定國家/地區的 BigQuery 資料表擷取資料,然後使用 Matplotlib 根據資料產生圖表。圖表會上傳至 Cloud Storage bucket。

  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. 為容器映像檔建立 Kubernetes 部署作業,並設定 BUCKET 環境變數:

    kubectl create deployment ${SERVICE_NAME} \
        --image=$CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1
    kubectl set env deployment/${SERVICE_NAME} \
        BUCKET=${BUCKET}
  3. 將 Deployment 公開為 Kubernetes Service:

    kubectl expose deployment ${SERVICE_NAME} \
        --type=ClusterIP --port=80 --target-port=8080

為圖表建立工具服務建立觸發條件

為部署在 GKE 的圖表建立工具服務建立 Eventarc 觸發條件,篩選發布至 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 目錄部署 GKE 服務,接收 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. 為容器映像檔建立 Kubernetes 部署作業,並設定 PROJECT_ID 和 TOPIC_ID 環境變數:

    kubectl create deployment ${SERVICE_NAME} \
        --image=$CLUSTER_LOCATION-docker.pkg.dev/$(gcloud config get-value project)/REPOSITORY/${SERVICE_NAME}:v1
    kubectl set env deployment/${SERVICE_NAME} \
        PROJECT_ID=$(gcloud config get-value project) \
        TOPIC_ID=${TOPIC_QUERY_COMPLETED}
  3. 將 Deployment 公開為 Kubernetes Service:

    kubectl expose deployment ${SERVICE_NAME} \
        --type=ClusterIP --port=80 --target-port=8080

為查詢執行器服務建立觸發條件

為部署在 GKE 的查詢執行工具服務建立 Eventarc 觸發條件,篩選發布至 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=$(basename $(gcloud eventarc triggers describe trigger-${SERVICE_NAME}-gke --format='value(transport.pubsub.topic)'))

排定工作

處理管道是由兩項 Cloud Scheduler 工作觸發。 建立兩個 Cloud Scheduler 工作,每天發布至 Pub/Sub 主題一次:

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

排程以 unix-cron 格式指定。 舉例來說,0 16 * * * 表示工作每天會在 UTC 時間 16:00 (下午 4 點) 執行。

執行管道

  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 工作 ID:

    gcloud scheduler jobs list --location=$CLUSTER_LOCATION

    畫面會顯示如下的輸出內容:

    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. 雖然工作已排定在每天下午 4 點和 5 點執行,但您也可以手動執行 Cloud Scheduler 工作:

    gcloud scheduler jobs run cre-scheduler-cy --location=$CLUSTER_LOCATION
    gcloud scheduler jobs run cre-scheduler-uk --location=$CLUSTER_LOCATION
  4. 幾分鐘後,確認 Cloud Storage bucket 中有兩個圖表:

    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. 刪除您在本教學課程中部署的 Kubernetes 服務和部署項目,並刪除 GKE 叢集:

    kubectl delete service notifier chart-creator query-runner
    kubectl delete deployment notifier chart-creator query-runner
    gcloud container clusters delete $CLUSTER_NAME --region=$CLUSTER_LOCATION
  2. 刪除您在本教學課程中建立的 Eventarc 觸發條件:

    gcloud eventarc triggers delete TRIGGER_NAME
    

    將 TRIGGER_NAME 替換為觸發條件的名稱。

  3. 從 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
  4. 刪除 Artifact Registry 存放區:

    gcloud artifacts repositories delete REPOSITORY \
        --location=$CLUSTER_LOCATION
  5. 刪除 bucket 和當中的所有物件:

    gcloud storage rm --recursive gs://${BUCKET}/
  6. 刪除 Cloud Scheduler 工作:

    gcloud scheduler jobs delete cre-scheduler-cy --location=$CLUSTER_LOCATION
    gcloud scheduler jobs delete cre-scheduler-uk --location=$CLUSTER_LOCATION
  7. 移除您在教學課程設定期間新增的 Google Cloud CLI 預設設定:

    gcloud config unset project
    gcloud config unset eventarc/location

後續步驟