1. 소개
Eventarc를 사용하면 다양한 소스 (Cloud Run, Kubernetes, Workflows)를 다양한 소스의 이벤트와 쉽게 연결할 수 있습니다. 마이크로서비스가 느슨하게 결합 및 분산된 이벤트 기반 아키텍처를 빌드할 수 있습니다. 또한 이벤트 수집, 전송, 보안, 승인, 오류 처리를 처리해 개발자 민첩성과 애플리케이션 복원력을 개선합니다. Eventarc 소개는 Eventarc의 이벤트로 Cloud Run 트리거 Codelab을 확인하세요.
이 Codelab에서는 Eventarc를 사용하여 Pub/Sub, Cloud Storage, Cloud 감사 로그에서 이벤트를 읽고 Google Kubernetes Engine (GKE)에서 실행되는 Kubernetes 서비스에 전달합니다.
학습할 내용
- GKE 클러스터 만들기
- GKE 서비스를 이벤트 싱크로 만듭니다.
- Pub/Sub 트리거를 만듭니다.
- Cloud Storage 트리거 만들기
- Cloud 감사 로그 트리거를 만듭니다.
2. 설정 및 요건
자습형 환경 설정
- Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.
- 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
- 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔이 고유한 문자열을 자동으로 생성합니다. 보통은 그게 뭔지 상관하지 않습니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로
PROJECT_ID
로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 무작위로 다른 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다. - 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
- 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스를 삭제하거나 전체 프로젝트를 삭제하면 됩니다. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.
Cloud Shell 시작
Google Cloud를 노트북에서 원격으로 실행할 수 있지만, 이 Codelab에서는 Cloud에서 실행되는 명령줄 환경인 Google Cloud Shell을 사용합니다.
Google Cloud Console의 오른쪽 상단 툴바에 있는 Cloud Shell 아이콘을 클릭합니다.
환경을 프로비저닝하고 연결하는 데 몇 분 정도 소요됩니다. 완료되면 다음과 같이 표시됩니다.
가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 Codelab의 모든 작업은 브라우저 내에서 수행할 수 있습니다. 아무것도 설치할 필요가 없습니다.
시작하기 전에
Cloud Shell 내에 프로젝트 ID가 설정되어 있는지 확인합니다.
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
3. GKE 클러스터 만들기
먼저 GKE에 필요한 서비스를 사용 설정합니다.
gcloud services enable container.googleapis.com
Autopilot GKE 클러스터를 만듭니다.
CLUSTER_NAME=eventarc-cluster REGION=us-central1 gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
다음 단계로 이동하기 전에 클러스터 생성이 완료되었는지 확인하세요.
4. GKE 서비스 배포
서비스를 배포하기 전에 kubectl
로 클러스터와 상호작용하기 위한 사용자 인증 정보를 가져옵니다.
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $REGION
다음으로 Cloud Run의 hello 컨테이너를 GKE에 Kubernetes 배포로 배포합니다. 이 서비스 로그는 수신된 HTTP 요청 및 CloudEvents입니다.
SERVICE_NAME=hello-gke kubectl create deployment $SERVICE_NAME \ --image=gcr.io/cloudrun/hello
배포를 내부 Kubernetes 서비스로 노출합니다. 이렇게 하면 클러스터 내에서 액세스할 수 있는 안정적인 IP로 서비스가 생성됩니다.
kubectl expose deployment $SERVICE_NAME \ --type ClusterIP --port 80 --target-port 8080
다음 단계로 이동하기 전에 포드가 실행 중인지 확인합니다.
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
다음 서비스도 확인할 수 있습니다.
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP hello-gke LoadBalancer 10.51.1.26 <none>
5. Eventarc 설정
이 단계에서는 Eventarc를 설정하고 Eventarc GKE 대상을 초기화하는 단계를 실행합니다.
먼저 Eventarc 및 Eventarc GKE 대상에 필요한 서비스를 사용 설정합니다.
gcloud services enable eventarc.googleapis.com \ cloudresourcemanager.googleapis.com
그런 다음 Eventarc를 사용 설정하여 GKE 클러스터를 관리합니다.
gcloud eventarc gke-destinations init
Eventarc는 GKE 서비스를 타겟팅하는 각 트리거에 별도의 이벤트 전달자 포드를 생성하며, 클러스터를 변경하려면 명시적 권한이 필요합니다. 이 작업은 특수 서비스 계정에 클러스터의 리소스를 관리할 수 있는 권한을 부여하여 수행됩니다. 이 작업은 Google Cloud 프로젝트당 한 번씩 수행해야 합니다.
6. 이벤트 검색
트리거를 만들기 전에 이벤트 소스, 트리거가 내보낼 수 있는 이벤트 유형, 트리거를 사용하기 위해 트리거를 구성하는 방법을 알아볼 수 있습니다.
Eventarc에서 지원하는 이벤트는 문서 페이지에서 확인할 수 있습니다.gcloud
를 사용하여 이벤트를 살펴볼 수도 있습니다.
다양한 이벤트 유형 목록을 보는 방법은 다음과 같습니다.
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
각 이벤트 유형에 대해 자세히 알아보려면 다음 단계를 따르세요.
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
특정 이벤트 유형을 내보내는 서비스 목록을 보려면 다음 안내를 따르세요.
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
각 서비스에서 내보낼 수 있는 메서드 이름 (하위 이벤트)의 목록을 보려면 다음 안내를 따르세요.
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
7. Pub/Sub 트리거 만들기
이벤트를 수신하는 한 가지 방법은 Pub/Sub를 사용하는 것입니다. 모든 애플리케이션은 Pub/Sub에 메시지를 게시할 수 있으며 이러한 메시지는 Eventarc를 통해 서비스에 전달될 수 있습니다.
설정
트리거를 만들려면 먼저 트리거에서 사용할 서비스 계정이 필요합니다.
서비스 계정을 만듭니다.
SERVICE_ACCOUNT=eventarc-gke-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
서비스 계정에 GKE 대상을 사용하는 트리거에 대해 다음 역할을 부여해야 합니다.
roles/pubsub.subscriber
roles/monitoring.metricWriter
roles/eventarc.eventReceiver
(감사Log 트리거에만 해당. 이 내용은 이후 단계에서 추가됨)
역할을 부여합니다.
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/pubsub.subscriber gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/monitoring.metricWriter
만들기
Pub/Sub 메시지를 서비스로 라우팅하는 트리거를 만듭니다.
TRIGGER_NAME=trigger-pubsub-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
테스트
모든 트리거를 나열하여 트리거가 생성되었는지 확인할 수 있습니다.
gcloud eventarc triggers list
Pub/Sub 트리거는 비공개로 Pub/Sub 주제를 생성합니다. 이를 찾아 변수에 할당해 보겠습니다.
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
gcloud
를 사용하여 주제에 메시지를 게시합니다.
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
이벤트가 수신되었는지 확인하려면 먼저 포드 이름을 찾습니다.
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
그런 다음 이를 변수에 저장합니다.
POD_NAME=hello-gke-df6469d4b-5vv22
포드의 로그를 확인하여 수신된 이벤트를 확인합니다.
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.pubsub.topic.v1.messagePublished", "message": "Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World", "event": { "data": { "subscription": "projects/atamel-eventarc-gke/subscriptions/eventarc-us-central1-trigger-pubsub-gke-sub-270", "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "6031025573654834", "publishTime": "2022-10-19T14:13:07.990Z" } }, "datacontenttype": "application/json", "id": "6031025573654834", "source": "//pubsub.googleapis.com/projects/atamel-eventarc-gke/topics/eventarc-us-central1-trigger-pubsub-gke-729", "specversion": "1.0", "time": "2022-10-19T14:13:07.99Z", "type": "google.cloud.pubsub.topic.v1.messagePublished" } }
8. Cloud Storage 트리거 만들기
이벤트를 수신하는 또 다른 방법은 Cloud Storage를 사용하는 것입니다. 예를 들어 애플리케이션은 파일을 버킷에 업로드할 수 있으며 해당 이벤트는 Eventarc를 통해 서비스에 전달될 수 있습니다.
설정
Cloud Storage 트리거를 만들기 전에 이벤트를 수신할 버킷을 만듭니다.
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
또한 Cloud Storage 트리거에 대한 Cloud Storage 서비스 계정에 pubsub.publisher
역할을 추가해야 합니다.
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
만들기
버킷에서 서비스로 새 파일 생성 이벤트를 라우팅하는 트리거를 만듭니다.
TRIGGER_NAME=trigger-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
테스트
모든 트리거를 나열하여 트리거가 생성되었는지 확인할 수 있습니다.
gcloud eventarc triggers list
파일을 만들고 gsutil
를 사용하여 파일을 버킷에 업로드합니다.
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
포드의 로그를 확인하여 수신된 이벤트를 확인합니다.
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.storage.object.v1.finalized", "message": "Received event of type google.cloud.storage.object.v1.finalized. Event data: {\n \"kind\": \"storage#object\",\n \"id\": \"eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt\",\n \"name\": \"random.txt\",\n \"bucket\": \"eventarc-gcs-atamel-eventarc-gke\",\n \"generation\": \"1666190425669022\",\n \"metageneration\": \"1\",\n \"contentType\": \"text/plain\",\n \"timeCreated\": \"2022-10-19T14:40:25.678Z\",\n \"updated\": \"2022-10-19T14:40:25.678Z\",\n \"storageClass\": \"STANDARD\",\n \"timeStorageClassUpdated\": \"2022-10-19T14:40:25.678Z\",\n \"size\": \"12\",\n \"md5Hash\": \"5Z/5eUEET4XfUpfhwwLSYA==\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media\",\n \"contentLanguage\": \"en\",\n \"crc32c\": \"R1jUOQ==\",\n \"etag\": \"CJ77zIPD7PoCEAE=\"\n}\n", "event": { "bucket": "eventarc-gcs-atamel-eventarc-gke", "data": { "kind": "storage#object", "id": "eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022", "selfLink": "https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt", "name": "random.txt", "bucket": "eventarc-gcs-atamel-eventarc-gke", "generation": "1666190425669022", "metageneration": "1", "contentType": "text/plain", "timeCreated": "2022-10-19T14:40:25.678Z", "updated": "2022-10-19T14:40:25.678Z", "storageClass": "STANDARD", "timeStorageClassUpdated": "2022-10-19T14:40:25.678Z", "size": "12", "md5Hash": "5Z/5eUEET4XfUpfhwwLSYA==", "mediaLink": "https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media", "contentLanguage": "en", "crc32c": "R1jUOQ==", "etag": "CJ77zIPD7PoCEAE=" }, "datacontenttype": "application/json", "id": "6031255652220627", "source": "//storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke", "specversion": "1.0", "subject": "objects/random.txt", "time": "2022-10-19T14:40:25.678152Z", "type": "google.cloud.storage.object.v1.finalized" } }
9. Cloud 감사 로그 트리거 만들기
Cloud Storage 트리거가 Cloud Storage 이벤트를 리슨하는 더 나은 방법이지만 이 단계에서는 Cloud 감사 로그 트리거를 만들어 동일한 작업을 수행합니다.
설정
서비스에서 이벤트를 수신하려면 감사 로그를 사용 설정해야 합니다. Google Cloud 콘솔의 왼쪽 상단 메뉴에서 IAM & Admin
및 Audit Logs
를 선택합니다. 서비스 목록에서 Google Cloud Storage
를 선택합니다.
오른쪽에서 Admin
, Read
, Write
가 선택되어 있는지 확인하고 Save
를 클릭합니다.
또한 Cloud 감사 로그 트리거의 트리거 서비스 계정에 eventarc.eventReceiver
역할을 추가해야 합니다.
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/eventarc.eventReceiver
만들기
버킷에서 서비스로 새 파일 생성 이벤트를 라우팅하는 트리거를 만듭니다.
TRIGGER_NAME=trigger-auditlog-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --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_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
테스트
감사 로그 트리거를 초기화하는 데 다소 시간이 걸립니다. 모든 트리거를 나열하여 트리거가 생성되었는지 확인할 수 있습니다.
gcloud eventarc triggers list
Active
필드가 Yes
인 것을 확인할 수 있습니다.
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage-gke google.cloud.audit.log.v1.written GKE: hello-gke Yes
파일을 만들고 gsutil
를 사용하여 파일을 버킷에 업로드합니다.
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
포드의 로그를 확인하여 수신된 이벤트를 확인합니다.
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.audit.log.v1.written", "message": "Received event of type google.cloud.audit.log.v1.written. Event data: {\"protoPayload\":{\"status\":{},\"authenticationInfo\":{\"principalEmail\":\"atameldev@gmail.com\"},\"requestMetadata\":{\"callerIp\":\"149.71.143.227\",\"callerSuppliedUserAgent\":\"apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)\",\"requestAttributes\":{\"time\":\"2022-10-19T15:05:54.144615670Z\",\"auth\":{}},\"destinationAttributes\":{}},\"serviceName\":\"storage.googleapis.com\",\"methodName\":\"storage.objects.create\",\"authorizationInfo\":[{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.delete\",\"granted\":true,\"resourceAttributes\":{}},{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.create\",\"granted\":true,\"resourceAttributes\":{}}],\"resourceName\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"serviceData\":{\"@type\":\"type.googleapis.com/google.iam.v1.logging.AuditData\",\"policyDelta\":{\"bindingDeltas\":[{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectOwner:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectEditor:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"user:atameldev@gmail.com\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectReader\",\"member\":\"projectViewer:atamel-eventarc-gke\"}]}},\"resourceLocation\":{\"currentLocations\":[\"us-central1\"]}},\"insertId\":\"-8vmrbve7pol2\",\"resource\":{\"type\":\"gcs_bucket\",\"labels\":{\"project_id\":\"atamel-eventarc-gke\",\"bucket_name\":\"eventarc-gcs-atamel-eventarc-gke\",\"location\":\"us-central1\"}},\"timestamp\":\"2022-10-19T15:05:54.138732321Z\",\"severity\":\"INFO\",\"logName\":\"projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access\",\"receiveTimestamp\":\"2022-10-19T15:05:54.839604461Z\"}", "event": { "data": { "protoPayload": { "status": { }, "authenticationInfo": { "principalEmail": "atameldev@gmail.com" }, "requestMetadata": { "callerIp": "149.71.143.227", "callerSuppliedUserAgent": "apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)", "requestAttributes": { "time": "2022-10-19T15:05:54.144615670Z", "auth": { } }, "destinationAttributes": { } }, "serviceName": "storage.googleapis.com", "methodName": "storage.objects.create", "authorizationInfo": [ { "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "permission": "storage.objects.delete", "granted": true, "resourceAttributes": { } }, { "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "permission": "storage.objects.create", "granted": true, "resourceAttributes": { } } ], "resourceName": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "serviceData": { "@type": "type.googleapis.com/google.iam.v1.logging.AuditData", "policyDelta": { "bindingDeltas": [ { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "projectOwner:atamel-eventarc-gke" }, { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "projectEditor:atamel-eventarc-gke" }, { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "user:atameldev@gmail.com" }, { "action": "ADD", "role": "roles/storage.legacyObjectReader", "member": "projectViewer:atamel-eventarc-gke" } ] } }, "resourceLocation": { "currentLocations": [ "us-central1" ] } }, "insertId": "-8vmrbve7pol2", "resource": { "type": "gcs_bucket", "labels": { "project_id": "atamel-eventarc-gke", "bucket_name": "eventarc-gcs-atamel-eventarc-gke", "location": "us-central1" } }, "timestamp": "2022-10-19T15:05:54.138732321Z", "severity": "INFO", "logName": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access", "receiveTimestamp": "2022-10-19T15:05:54.839604461Z" }, "datacontenttype": "application/json; charset=utf-8", "dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json", "id": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access-8vmrbve7pol21666191954138732", "methodname": "storage.objects.create", "recordedtime": "2022-10-19T15:05:54.138732321Z", "resourcename": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "servicename": "storage.googleapis.com", "source": "//cloudaudit.googleapis.com/projects/atamel-eventarc-gke/logs/data_access", "specversion": "1.0", "subject": "storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "time": "2022-10-19T15:05:54.839604461Z", "type": "google.cloud.audit.log.v1.written" } }
10. 축하합니다.
축하합니다. Codelab을 완료했습니다.
학습한 내용
- GKE 클러스터 만들기
- GKE 서비스를 이벤트 싱크로 만듭니다.
- Pub/Sub 트리거를 만듭니다.
- Cloud Storage 트리거를 만듭니다.
- Cloud 감사 로그 트리거를 만듭니다.