Eventarc etkinlikleriyle Kubernetes hizmetlerini tetikleme

1. Giriş

cb762f29e9183a3f.png

Eventarc, çeşitli hizmetleri (Cloud Run, Kubernetes, Workflows) çeşitli kaynaklardaki etkinliklere bağlamayı kolaylaştırır. Mikro hizmetlerin serbest bağlantılı olduğu ve dağıtıldığı etkinlik odaklı mimariler oluşturmanıza olanak tanır. Ayrıca, etkinlik alımı, teslimatı, güvenliği, yetkilendirme ve hata işleme gibi işlemleri sizin için gerçekleştirerek geliştiricilerin çevikliğini ve uygulamaların esnekliğini artırır. Eventarc'a giriş yapmak için Eventarc ile Cloud Run'ı etkinliklerle tetikleme codelab'ini inceleyin.

Bu codelab'de, Pub/Sub, Cloud Storage ve Cloud Denetleme Günlükleri'nden etkinlikleri okumak ve bunları Google Kubernetes Engine'de (GKE) çalışan bir Kubernetes hizmetine iletmek için Eventarc'ı kullanacaksınız.

Neler öğreneceksiniz?

  • GKE kümesi oluşturun.
  • Etkinlik hedefi olarak bir GKE hizmeti oluşturun.
  • Pub/Sub tetikleyicisi oluşturun.
  • Cloud Storage tetikleyicisi oluşturma
  • Cloud Audit Logs tetikleyicisi oluşturun.

2. Kurulum ve şartlar

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Dilediğiniz zaman bunu güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projenin tamamını silebilirsiniz. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Google Cloud Console'da sağ üstteki araç çubuğunda Cloud Shell simgesini tıklayın:

55efc1aaa7a4d3ad.png

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

7ffe5cbb04455448.png

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki tüm çalışmalarınızı tarayıcıda yapabilirsiniz. Herhangi bir şey yüklemeniz gerekmez.

Başlamadan önce

Cloud Shell'de proje kimliğinizin ayarlandığından emin olun:

PROJECT_ID=your-project-id
gcloud config set project $PROJECT_ID

3. GKE kümesi oluşturma

Öncelikle GKE için gerekli hizmetleri etkinleştirin:

gcloud services enable container.googleapis.com

Autopilot GKE kümesi oluşturun:

CLUSTER_NAME=eventarc-cluster
REGION=us-central1

gcloud container clusters create-auto $CLUSTER_NAME --region $REGION

Sonraki adıma geçmeden önce küme oluşturma işleminin tamamlandığından emin olun.

4. GKE hizmeti dağıtma

Bir hizmeti dağıtmadan önce kubectl ile kümeyle etkileşime geçmek için kimlik doğrulama kimlik bilgilerini alın:

gcloud container clusters get-credentials $CLUSTER_NAME \
    --region $REGION

Ardından, Cloud Run'ın hello container öğesini GKE'de Kubernetes dağıtımı olarak dağıtın. Bu hizmet, alınan HTTP isteklerini ve CloudEvent'leri günlüğe kaydeder:

SERVICE_NAME=hello-gke

kubectl create deployment $SERVICE_NAME \
    --image=gcr.io/cloudrun/hello

Dağıtımı dahili bir Kubernetes hizmeti olarak kullanıma sunun. Bu işlem, küme içinde erişilebilen sabit bir IP'ye sahip bir hizmet oluşturur:

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

Bir sonraki adıma geçmeden önce pod'un çalıştığından emin olun:

kubectl get pods

NAME                        READY   STATUS
hello-gke-df6469d4b-5vv22   1/1     Running

Ayrıca hizmeti şu şekilde de görebilirsiniz:

kubectl get svc

NAME         TYPE           CLUSTER-IP    EXTERNAL-IP
hello-gke    LoadBalancer   10.51.1.26    <none>

5. Eventarc'ı ayarlama

Bu adımda, Eventarc'ı ayarlamak ve Eventarc GKE hedeflerini başlatmak için adımları çalıştıracaksınız.

Öncelikle Eventarc ve Eventarc GKE hedefleri için gerekli hizmetleri etkinleştirin:

gcloud services enable eventarc.googleapis.com \
  cloudresourcemanager.googleapis.com

Ardından, GKE kümelerini yönetmek için Eventarc'ı etkinleştirin:

gcloud eventarc gke-destinations init

Eventarc, bir GKE hizmetini hedefleyen her tetikleyici için ayrı bir Event Forwarder pod'u oluşturur ve kümede değişiklik yapmak için açık izinler gerektirir. Bu işlem, kümedeki kaynakları yönetmek için özel bir hizmet hesabına izin verilerek yapılır. Bu işlemin Google Cloud projesi başına bir kez yapılması gerekir.

6. Etkinlik keşfi

Tetikleyiciler oluşturmadan önce etkinlik kaynaklarının ne olduğunu, hangi etkinlik türlerini yayınlayabileceklerini ve bunları kullanmak için tetikleyicilerin nasıl yapılandırılacağını öğrenebilirsiniz.

Eventarc tarafından desteklenen etkinlikler hakkında dokümanlar sayfasını inceleyebilirsiniz.Ayrıca, gcloud kullanarak etkinlikleri keşfedebilirsiniz.

Farklı etkinlik türlerinin listesini görmek için:

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.

Her etkinlik türü hakkında daha fazla bilgi edinmek için:

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

Belirli bir etkinlik türü yayan hizmetlerin listesini görmek için:

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

Her hizmetin yayınlayabileceği yöntem adlarının (alt etkinlikler) listesini görmek için:

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 tetikleyicisi oluşturma

Etkinlikleri almanın bir yolu Pub/Sub'dır. Herhangi bir uygulama, Pub/Sub'a mesaj yayınlayabilir ve bu mesajlar Eventarc aracılığıyla hizmetlere iletilebilir.

Ayarlar

Tetikleyici oluşturmadan önce tetikleyiciler tarafından kullanılacak bir hizmet hesabına ihtiyacınız vardır.

Hizmet hesabı oluşturun:

SERVICE_ACCOUNT=eventarc-gke-trigger-sa

gcloud iam service-accounts create $SERVICE_ACCOUNT

Hizmet hesabına, GKE hedefleri olan tetikleyiciler için aşağıdaki roller verilmelidir:

  • roles/pubsub.subscriber
  • roles/monitoring.metricWriter
  • roles/eventarc.eventReceiver (Yalnızca AuditLog tetikleyicileri için geçerlidir. Bu, sonraki bir adımda eklenecektir.)

Rolleri verin:

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

Oluştur

Pub/Sub mesajlarını hizmetinize yönlendirmek için bir tetikleyici oluşturun:

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

Test etme

Tüm tetikleyicileri listeleyerek tetikleyicinin oluşturulup oluşturulmadığını kontrol edebilirsiniz:

gcloud eventarc triggers list

Pub/Sub tetikleyicisi, arka planda bir Pub/Sub konusu oluşturur. Bu değeri bulup bir değişkene atayalım:

TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')

Konuda mesaj yayınlamak için gcloud simgesini kullanın:

gcloud pubsub topics publish $TOPIC_ID --message="Hello World"

Etkinliğin alınıp alınmadığını kontrol etmek için önce pod adını bulun:

kubectl get pods

NAME                        READY   STATUS
hello-gke-df6469d4b-5vv22   1/1     Running

Ve bunu bir değişkende saklayın:

POD_NAME=hello-gke-df6469d4b-5vv22 

Alınan etkinliği doğrulamak için kapsülün günlüklerini kontrol edin:

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 tetikleyicisi oluşturma

Etkinlikleri almanın bir diğer yolu da Cloud Storage'dır. Örneğin, bir uygulama bir pakete dosya yükleyebilir ve bu etkinlik Eventarc aracılığıyla hizmetlere iletilebilir.

Ayarlar

Cloud Storage tetikleyicisi oluşturmadan önce, aşağıdaki kaynaklardan etkinlik almak için bir paket oluşturun:

BUCKET_NAME=eventarc-gcs-$PROJECT_ID
gcloud storage buckets update gs://$BUCKET_NAME --location=$REGION

Ayrıca, Cloud Storage tetikleyicileri için Cloud Storage hizmet hesabına pubsub.publisher rolünü de eklemeniz gerekir:

SERVICE_ACCOUNT_STORAGE=$(gcloud storage service-agent --project=$PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
    --role roles/pubsub.publisher

Oluştur

Yeni dosya oluşturma etkinliklerini paketten hizmetinize yönlendirmek için bir tetikleyici oluşturun:

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

Test etme

Tüm tetikleyicileri listeleyerek tetikleyicinin oluşturulup oluşturulmadığını kontrol edebilirsiniz:

gcloud eventarc triggers list

Bir dosya oluşturun ve dosyayı pakete yüklemek için gcloud storage komutunu kullanın:

echo "Hello World" > random.txt
gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt

Alınan etkinliği doğrulamak için kapsülün günlüklerini kontrol edin:

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 Audit Logs tetikleyicisi oluşturma

Cloud Storage tetikleyicisi, Cloud Storage etkinliklerini dinlemenin daha iyi bir yolu olsa da bu adımda aynı işlemi yapmak için bir Cloud Audit Log tetikleyicisi oluşturursunuz.

Ayarlar

Bir hizmetten etkinlik almak için denetleme günlüklerini etkinleştirmeniz gerekir. Google Cloud Console'da sol üstteki menüden IAM & Admin ve Audit Logs simgelerini seçin. Hizmetler listesinde Google Cloud Storage işaretini kaldırın:

91d1bcef8f953fe3.png

Sağ tarafta Admin, Read ve Write seçeneklerinin işaretli olduğundan emin olun ve Save simgesini tıklayın:

ccb31db1e55fd2e3.png

Ayrıca, Cloud Denetleme Günlükleri tetikleyicileri için tetikleyici hizmet hesabına eventarc.eventReceiver rolünü de eklemeniz gerekir:

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \
  --role roles/eventarc.eventReceiver

Oluştur

Yeni dosya oluşturma etkinliklerini paketten hizmetinize yönlendirmek için bir tetikleyici oluşturun:

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

Test etme

Denetim günlükleri tetikleyicilerinin başlatılması biraz zaman alır. Tüm tetikleyicileri listeleyerek tetikleyicinin oluşturulup oluşturulmadığını kontrol edebilirsiniz:

gcloud eventarc triggers list

Active alanının Yes olduğunu görürsünüz:

NAME                          TYPE                                           DESTINATION     ACTIVE
trigger-auditlog-storage-gke  google.cloud.audit.log.v1.written              GKE: hello-gke  Yes

Bir dosya oluşturun ve dosyayı pakete yüklemek için gcloud storage komutunu kullanın:

echo "Hello World" > random.txt
gcloud storage cp random.txt gs://$BUCKET_NAME/random.txt

Alınan etkinliği doğrulamak için kapsülün günlüklerini kontrol edin:

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. Tebrikler!

Codelab'i tamamladığınız için tebrik ederiz.

İşlediğimiz konular

  • GKE kümesi oluşturun.
  • Etkinlik hedefi olarak bir GKE hizmeti oluşturun.
  • Pub/Sub tetikleyicisi oluşturun.
  • Cloud Storage tetikleyicisi oluşturun.
  • Cloud Audit Logs tetikleyicisi oluşturun.