이 튜토리얼에서는 Eventarc를 사용하여 공개 BigQuery 데이터 세트에 대한 쿼리를 예약하고 데이터를 기반으로 차트를 생성하고 이메일을 통해 차트에 대한 링크를 공유하는 처리 파이프라인을 빌드하는 방법을 보여줍니다.
목표
이 튜토리얼에서는 GKE 클러스터에서 실행되고 Eventarc를 사용하여 이벤트를 수신하는 세 가지 Google Kubernetes Engine (GKE) 서비스를 빌드하고 배포합니다.
- Query Runner—Cloud Scheduler 작업에서 Pub/Sub 주제에 메시지를 게시하면 트리거되며 이 서비스는 BigQuery API를 사용하여 공개 코로나19 데이터 세트에서 데이터를 검색하고 결과를 새 BigQuery 테이블에 저장합니다.
- Chart Creator—Query Runner 서비스가 Pub/Sub 주제에 메시지를 게시할 때 트리거되며, 이 서비스는 Python 표시 라이브러리인 Matplotlib을 사용하여 차트를 Cloud Storage 버킷에 저장합니다.
- Notifier—Chart Creator 서비스가 Cloud Storage 버킷에 차트를 저장할 때 감사 로그에 의해 트리거되는 이 서비스는 이메일 서비스인 SendGrid를 사용하여 차트의 링크를 이메일 주소로 보냅니다.
다음 다이어그램은 대략적인 아키텍처를 보여줍니다.
비용
이 문서에서는 비용이 청구될 수 있는 Google Cloud구성요소를 사용합니다.
- Artifact Registry
- BigQuery
- Cloud Build
- Cloud Scheduler
- Cloud Storage
- Eventarc
- Google Kubernetes Engine
- Pub/Sub
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
시작하기 전에
- Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
-
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체 (IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init -
Google Cloud 프로젝트를 만들거나 선택합니다.
프로젝트를 선택하거나 만드는 데 필요한 역할
- 프로젝트 선택: 프로젝트를 선택하는 데는 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택하면 됩니다.
-
프로젝트 만들기: 프로젝트를 만들려면
resourcemanager.projects.create권한이 포함된 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기
-
Google Cloud 프로젝트를 만듭니다.
gcloud projects create PROJECT_ID
PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다. -
만든 Google Cloud 프로젝트를 선택합니다.
gcloud config set project PROJECT_ID
PROJECT_ID을 Google Cloud 프로젝트 이름으로 바꿉니다.
Artifact Registry, BigQuery, Cloud Build, Cloud Logging, Cloud Scheduler, Eventarc, GKE, Pub/Sub, Resource Manager 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 -
Google Cloud CLI를 설치합니다.
-
외부 ID 공급업체 (IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
gcloud CLI를 초기화하려면, 다음 명령어를 실행합니다.
gcloud init -
Google Cloud 프로젝트를 만들거나 선택합니다.
프로젝트를 선택하거나 만드는 데 필요한 역할
- 프로젝트 선택: 프로젝트를 선택하는 데는 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택하면 됩니다.
-
프로젝트 만들기: 프로젝트를 만들려면
resourcemanager.projects.create권한이 포함된 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기
-
Google Cloud 프로젝트를 만듭니다.
gcloud projects create PROJECT_ID
PROJECT_ID를 만들려는 Google Cloud 프로젝트의 이름으로 바꿉니다. -
만든 Google Cloud 프로젝트를 선택합니다.
gcloud config set project PROJECT_ID
PROJECT_ID을 Google Cloud 프로젝트 이름으로 바꿉니다.
Artifact Registry, BigQuery, Cloud Build, Cloud Logging, Cloud Scheduler, Eventarc, GKE, Pub/Sub, Resource Manager 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 - Cloud Storage의 경우
ADMIN_READ,DATA_WRITE,DATA_READ데이터 액세스 유형에 감사 로깅을 사용 설정합니다.- Google Cloud 프로젝트, 폴더 또는 조직과 관련된 Identity and Access Management (IAM) 정책을 읽고 임시 파일에 저장합니다.
gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
- 텍스트 편집기에서
/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
- 다음과 같이 새 IAM 정책을 씁니다.
gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
앞의 명령어가 다른 변경사항과의 충돌을 보고할 경우 이 단계를 반복하면서 IAM 정책 읽기를 시작합니다. 자세한 내용은 API로 데이터 액세스 감사 로그 구성을 참조하세요.
- Google Cloud 프로젝트, 폴더 또는 조직과 관련된 Identity and Access Management (IAM) 정책을 읽고 임시 파일에 저장합니다.
- 이 튜토리얼에서 사용되는 기본값을 설정합니다.
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는 이메일 서버를 유지관리하지 않고도 이메일을 전송할 수 있는 클라우드 기반 이메일 제공업체입니다.
- SendGrid에 로그인하고 Settings(설정) > API Keys(API 키)로 이동합니다.
- API 키 만들기를 클릭합니다.
- 키의 권한을 선택합니다. 키에는 최소한 이메일을 전송할 수 있는 Mail send 권한이 필요합니다.
- Save(저장)를 클릭하여 키를 만듭니다.
- SendGrid에서 새로운 키가 생성됩니다. 이 키는 키의 유일한 사본이므로 나중을 위해 키를 복사하여 저장해 두세요.
GKE 클러스터 만들기
GKE 내에서 실행 중인 애플리케이션에서 Google Cloud 서비스에 액세스할 수 있도록 GKE용 워크로드 아이덴티티 제휴를 사용 설정하여 클러스터를 만듭니다. 또한 Eventarc를 사용해서 이벤트를 전달하려면 GKE용 워크로드 아이덴티티 제휴가 필요합니다.
HttpLoadBalancing및HorizontalPodAutoscaling부가기능이 사용 설정된 GKE 클러스터를 만듭니다.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클러스터 만들기가 완료될 때까지 몇 분 정도 기다립니다. 만드는 과정에서 무시해도 안전한 경고가 표시될 수 있습니다. 클러스터가 만들어지면 다음과 유사한 출력이 표시됩니다.
Creating cluster ...done. Created [https://container.googleapis.com/v1/projects/my-project/zones/us-central1/clusters/events-cluster].
GKE 클러스터에서
kubectl을 가리키도록 사용자 인증 정보와 엔드포인트 정보로kubeconfig파일을 업데이트합니다.gcloud container clusters get-credentials $CLUSTER_NAME \ --region=$CLUSTER_LOCATION
Docker 컨테이너 이미지를 저장할 Artifact Registry 표준 저장소를 만듭니다.
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$CLUSTER_LOCATION
REPOSITORY를 저장소의 고유한 이름으로 바꿉니다.
서비스 계정 구성
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"
GKE 서비스가 BigQuery를 쿼리하고 쓰고, Pub/Sub에 게시하고, 차트를 Cloud Storage에 업로드할 수 있도록 하려면 프로젝트의 BigQuery 데이터 편집자(
roles/bigquery.dataEditor), BigQuery 작업 사용자(roles/bigquery.jobUser), Pub/Sub 게시자(roles/pubsub.publisher), 스토리지 객체 관리자(roles/storage.objectAdmin) 역할을default네임스페이스의defaultKubernetes 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 서비스 계정을 필요한 역할과 결합합니다.
Eventarc에 GKE 대상을 사용 설정합니다.
gcloud eventarc gke-destinations init
필요한 역할을 결합하라는 메시지가 표시되면
y를 입력합니다.다음 역할이 결합됩니다.
roles/compute.viewerroles/container.developerroles/iam.serviceAccountAdmin
Cloud Storage 버킷 만들기
GKE 서비스와 동일한 리전에 Cloud Storage 버킷을 만들어 차트를 저장하고 생성된 차트를 볼 수 있도록 계정에 읽기 액세스 권한 (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 이벤트를 전달할 수 있도록 사용자 관리 서비스 계정을 설정하고 특정 역할을 부여합니다.
eventarc-triggers-test-sa라는 서비스 계정을 만듭니다.TRIGGER_GSA=eventarc-triggers-test-sa gcloud iam service-accounts create $TRIGGER_GSA
서비스 계정에
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"
Notifier 서비스 배포
bigquery/notifier/python 디렉터리에서 차트 생성자 이벤트를 수신하고 SendGrid를 사용하여 생성된 차트의 링크를 이메일로 보내는 GKE 서비스를 배포합니다.
컨테이너 이미지 빌드 및 푸시:
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
컨테이너 이미지의 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 저장소의 이름입니다.
배포를 Kubernetes 서비스로 노출합니다.
kubectl expose deployment ${SERVICE_NAME} \ --type=ClusterIP --port=80 --target-port=8080
Notifier 서비스의 트리거 만들기
지정된 Cloud Storage 버킷의 Cloud Storage 감사 로그를 필터링하고 methodName이 storage.objects.create인 GKE에 배포된 Notifier 서비스의 Eventarc 트리거를 만듭니다.
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라는 트리거가 생성됩니다.
Chart Creator 서비스 배포
bigquery/chart-creator/python 디렉터리에서 쿼리 실행자 이벤트를 수신하고 특정 국가의 BigQuery 테이블에서 데이터를 검색한 후 해당 데이터로 Matplotlib을 사용하여 차트를 생성하는 GKE 서비스를 배포합니다. 차트는 Cloud Storage 버킷에 업로드됩니다.
컨테이너 이미지 빌드 및 푸시:
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
컨테이너 이미지의 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}
배포를 Kubernetes 서비스로 노출합니다.
kubectl expose deployment ${SERVICE_NAME} \ --type=ClusterIP --port=80 --target-port=8080
Chart Creator 서비스의 트리거 만들기
GKE에 배포된 Chart Creator 서비스에 대해 Pub/Sub 주제에 게시된 메시지를 필터링하는 Eventarc 트리거를 만듭니다.
트리거를 만듭니다.
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라는 트리거가 생성됩니다.Pub/Sub 주제 환경 변수를 설정합니다.
export TOPIC_QUERY_COMPLETED=$(basename $(gcloud eventarc triggers describe trigger-${SERVICE_NAME}-gke --format='value(transport.pubsub.topic)'))
Query Runner 서비스 배포
processing-pipelines 디렉터리에서 Cloud Scheduler 이벤트를 수신하고, 공개 코로나19 데이터 세트에서 데이터를 검색하고, 결과를 새 BigQuery 테이블에 저장하는 GKE 서비스를 배포합니다.
컨테이너 이미지 빌드 및 푸시:
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
컨테이너 이미지의 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}
배포를 Kubernetes 서비스로 노출합니다.
kubectl expose deployment ${SERVICE_NAME} \ --type=ClusterIP --port=80 --target-port=8080
Query Runner 서비스의 트리거 만들기
GKE에 배포된 Query Runner 서비스에 대해 Pub/Sub 주제에 게시된 메시지를 필터링하는 Eventarc 트리거를 만듭니다.
트리거를 만듭니다.
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라는 트리거가 생성됩니다.Pub/Sub 주제의 환경 변수를 설정합니다.
export TOPIC_QUERY_SCHEDULED=$(basename $(gcloud eventarc triggers describe trigger-${SERVICE_NAME}-gke --format='value(transport.pubsub.topic)'))
작업 예약
처리 파이프라인은 두 개의 Cloud Scheduler 작업에 의해 트리거됩니다. Pub/Sub 주제에 하루에 한 번 게시하는 Cloud Scheduler 작업 두 개를 만듭니다.
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시)에 실행됨을 의미합니다.
파이프라인 실행
모든 트리거가 성공적으로 생성되었는지 확인합니다.
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-central1Cloud 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작업이 매일 오후 4시, 5시에 실행되도록 예약되어 있지만 Cloud Scheduler 작업을 수동으로 실행할 수도 있습니다.
gcloud scheduler jobs run cre-scheduler-cy --location=$CLUSTER_LOCATION
gcloud scheduler jobs run cre-scheduler-uk --location=$CLUSTER_LOCATION
몇 분 후 Cloud Storage 버킷에 차트가 두 개 있는지 확인합니다.
gcloud storage ls gs://${BUCKET}
출력은 다음과 비슷하게 표시됩니다.
gs://PROJECT_ID-charts/chart-cyprus.png gs://PROJECT_ID-charts/chart-unitedkingdom.png
수고하셨습니다. 차트 링크가 포함된 2개의 이메일도 받게 됩니다.
삭제
이 튜토리얼용으로 새 프로젝트를 만든 경우 이 프로젝트를 삭제합니다. 기존 프로젝트를 사용한 경우 이 튜토리얼에 추가된 변경사항은 제외하고 보존하려면 튜토리얼용으로 만든 리소스를 삭제합니다.
Google Cloud 프로젝트 삭제:
gcloud projects delete PROJECT_ID
튜토리얼 리소스 삭제
이 튜토리얼에서 배포한 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
이 튜토리얼에서 만든 Eventarc 트리거를 삭제합니다.
gcloud eventarc triggers delete TRIGGER_NAME
TRIGGER_NAME을 버킷의 이름으로 바꿉니다.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
Artifact Registry 저장소를 삭제합니다.
gcloud artifacts repositories delete REPOSITORY \ --location=$CLUSTER_LOCATION
버킷 내에 있는 모든 객체와 함께 버킷을 삭제합니다.
gcloud storage rm --recursive gs://${BUCKET}/Cloud Scheduler 작업을 삭제합니다.
gcloud scheduler jobs delete cre-scheduler-cy --location=$CLUSTER_LOCATION gcloud scheduler jobs delete cre-scheduler-uk --location=$CLUSTER_LOCATION
튜토리얼 설정 중에 추가한 Google Cloud CLI 기본 구성을 삭제합니다.
gcloud config unset project gcloud config unset eventarc/location