Eventarc इवेंट की मदद से, Kubernetes की सेवाएं ट्रिगर करें

1. परिचय

cb762f29e9183a3f.png

Eventarc की मदद से, अलग-अलग सेवाओं (Cloud Run, Kubernetes, Workflows) को अलग-अलग सोर्स के इवेंट से आसानी से कनेक्ट किया जा सकता है. इसकी मदद से, इवेंट के आधार पर काम करने वाले ऐसे आर्किटेक्चर बनाए जा सकते हैं जिनमें माइक्रोसेवाओं को शिफ़्ट किया जाता है और डिस्ट्रिब्यूट किया जाता है. यह सुविधा, इवेंट का डेटा डालने, डिलीवरी, सुरक्षा, अनुमति देने, और गड़बड़ियों को ठीक करने का भी ध्यान रखती है. इससे, डेवलपर को ऐप्लिकेशन के हिसाब से अपने ऐप्लिकेशन को टेस्ट करने में आसानी होती है. Eventarc के बारे में जानने के लिए, Eventarc codelab के इवेंट के साथ ट्रिगर Cloud Run देखें.

इस कोडलैब में, Pub/Sub, Cloud Storage, और क्लाउड ऑडिट लॉग के इवेंट पढ़ने के लिए Eventarc का इस्तेमाल किया जा सकता है. साथ ही, उन्हें Google Kubernetes Engine (GKE) पर चल रही Kubernetes सेवा को पास किया है.

आप इन चीज़ों के बारे में जानेंगे

  • GKE (जीकेई) क्लस्टर बनाएं.
  • इवेंट सिंक के तौर पर GKE (जीकेई) सेवा बनाएं.
  • कोई Pub/Sub ट्रिगर बनाएं.
  • Cloud Storage ट्रिगर बनाएं
  • क्लाउड ऑडिट लॉग ट्रिगर बनाएं.

2. सेटअप और ज़रूरी शर्तें

अपने हिसाब से एनवायरमेंट सेटअप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से Gmail या Google Workspace खाता नहीं है, तो आपको नया खाता बनाना होगा.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों का डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करता. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है; आम तौर पर, आपको उसके होने की कोई परवाह नहीं होती. ज़्यादातर कोडलैब में, आपको प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे PROJECT_ID के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो किसी भी क्रम में एक और आईडी जनरेट किया जा सकता है. इसके अलावा, खुद भी आज़माया जा सकता है और देखें कि वह उपलब्ध है या नहीं. इस चरण के बाद इसे बदला नहीं जा सकता और प्रोजेक्ट के कुल समय तक बना रहेगा.
  • आपकी जानकारी के लिए, एक तीसरी वैल्यू यानी प्रोजेक्ट नंबर है. इसका इस्तेमाल कुछ एपीआई करते हैं. दस्तावेज़ में इन तीनों वैल्यू के बारे में ज़्यादा जानें.
  1. इसके बाद, आपको क्लाउड संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, संसाधनों को बंद करने के लिए कि आपको बिलिंग न करनी पड़े. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या पूरा प्रोजेक्ट मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Google Cloud Shell का इस्तेमाल किया जा रहा है. यह क्लाउड में चलने वाला कमांड लाइन एनवायरमेंट है.

Google Cloud Console में जाकर, सबसे ऊपर दाईं ओर मौजूद टूलबार पर क्लाउड शेल आइकॉन पर क्लिक करें:

55efc1aaa7a4d3ad.png

प्रावधान करने और एनवायरमेंट से कनेक्ट होने में कुछ ही समय लगेगा. उसके पूरा हो जाने पर, आपको कुछ ऐसा दिखाई देगा:

7ffe5cbb04455448.png

इस वर्चुअल मशीन में ऐसे सभी डेवलपमेंट टूल मौजूद हैं जिनकी आपको ज़रूरत पड़ेगी. यह पांच जीबी की स्थायी होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud पर चलता है. यह नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रक्रिया को बेहतर बनाता है. इस कोडलैब (कोड बनाना सीखना) में आपका सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.

शुरू करने से पहले

Cloud Shell में, पक्का करें कि आपका प्रोजेक्ट आईडी सेट अप हो:

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 के हैलो कंटेनर को GKE (जीकेई) पर Kubernetes डिप्लॉयमेंट के तौर पर डिप्लॉय करें. इस सेवा लॉग को एचटीटीपी अनुरोध और CloudEvents मिले:

SERVICE_NAME=hello-gke

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

डिप्लॉयमेंट को अंदरूनी Kubernetes सेवा के तौर पर पेश करें. इससे क्लस्टर में एक स्थायी आईपी ऐक्सेस वाली सेवा बन जाती है:

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

इसके बाद, GKE (जीकेई) क्लस्टर को मैनेज करने के लिए, Eventarc को चालू करें:

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 Storage के इवेंट को सुनने के लिए Cloud Storage ट्रिगर बेहतर तरीका है, फिर भी इस चरण में ऐसा करने के लिए, Cloud ऑडिट लॉग ट्रिगर बनाया जाता है.

सेट अप

किसी सेवा से इवेंट पाने के लिए, आपको ऑडिट लॉग चालू करने होंगे. Google Cloud Console में, ऊपर बाईं ओर मौजूद मेन्यू से IAM & Admin और Audit Logs चुनें. सेवाओं की सूची में, Google Cloud Storage की जांच करें:

91d1bcef8f953fe3.png

दाईं ओर, पक्का करें कि Admin, Read, और Write को चुना गया हो. इसके बाद, Save पर क्लिक करें:

ccb31db1e55fd2e3.png

आपको क्लाउड ऑडिट लॉग ट्रिगर के लिए, ट्रिगर सेवा खाते में 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. बधाई हो!

कोडलैब पूरा करने के लिए बधाई.

हमने इन विषयों के बारे में बताया

  • GKE (जीकेई) क्लस्टर बनाएं.
  • इवेंट सिंक के तौर पर GKE (जीकेई) सेवा बनाएं.
  • कोई Pub/Sub ट्रिगर बनाएं.
  • Cloud Storage ट्रिगर बनाएं.
  • क्लाउड ऑडिट लॉग ट्रिगर बनाएं.