Eventarc इवेंट के साथ Cloud Run ट्रिगर करें

1. परिचय

894762ebb681671c.png

Cloud Run की मदद से, पूरी तरह से मैनेज किए गए एनवायरमेंट में स्टेटलेस कंटेनर चलाए जा सकते हैं. इसे ओपन सोर्स Knative से बनाया गया है. इससे आपको अपने कंटेनर को Cloud Run के साथ पूरी तरह से मैनेज करने या Cloud Run for Anthos के साथ अपने Google Kubernetes Engine क्लस्टर में चलाने का विकल्प मिलता है.

cb762f29e9183a3f.png

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

इस कोडलैब में, आपको Eventarc के बारे में जानकारी मिलेगी. खास तौर पर, Eventarc की मदद से Pub/Sub, Cloud Storage, और Cloud Audit Logs से इवेंट सुने जाएंगे. इसके बाद, उन्हें Cloud Run सेवा को पास किया जाएगा.

आपको क्या सीखने को मिलेगा

  • Eventarc का विज़न
  • Eventarc में इवेंट खोजना
  • Cloud Run सिंक बनाना
  • Pub/Sub के लिए ट्रिगर बनाना
  • Cloud Storage के लिए ट्रिगर बनाना
  • Cloud Audit Logs के लिए ट्रिगर बनाना
  • Eventarc के यूज़र इंटरफ़ेस (यूआई) के बारे में जानकारी

2. Eventarc का विज़न

Eventarc का मकसद, Google, Google Cloud, और तीसरे पक्ष के इवेंट सोर्स से इवेंट को Google Cloud के इवेंट डेस्टिनेशन तक पहुंचाना है.

59b147dc030b2b0b.png

Google Cloud के सोर्स

Google Cloud के मालिकाना हक वाले प्रॉडक्ट से जुड़े इवेंट सोर्स

Google के सोर्स

इवेंट के ऐसे सोर्स जो Google के मालिकाना हक वाले प्रॉडक्ट हैं. जैसे, Gmail, Hangouts, Android Management वगैरह

कस्टम सोर्स

ऐसे इवेंट सोर्स जो Google के मालिकाना हक वाले प्रॉडक्ट नहीं हैं और जिन्हें असली उपयोगकर्ताओं ने खुद बनाया है

तीसरे पक्ष के सोर्स

ऐसे इवेंट सोर्स जो न तो Google के मालिकाना हक वाले हैं और न ही ग्राहक के बनाए हुए हैं. इसमें तीसरे पक्ष के प्रोवाइडर और पार्टनर के मालिकाना हक वाले और उनके ज़रिए मैनेज किए जाने वाले लोकप्रिय इवेंट सोर्स शामिल हैं. जैसे, Check Point CloudGuard, Datadog, ForgeRock, Lacework वगैरह.

अलग-अलग सेवाओं के बीच इंटरऑपरेबिलिटी के लिए, इवेंट को CloudEvents v1.0 फ़ॉर्मैट में बदला जाता है. CloudEvents, वेंडर से अलग एक ओपन स्पेसिफ़िकेशन है. इसमें इवेंट के डेटा को सामान्य फ़ॉर्मैट में दिखाया जाता है. इससे अलग-अलग सेवाओं, प्लैटफ़ॉर्म, और सिस्टम के बीच इंटरऑपरेबिलिटी को बढ़ावा मिलता है.

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

Cloud Shell शुरू करें

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

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

55efc1aaa7a4d3ad.png

इसे चालू करने और एनवायरमेंट से कनेक्ट करने में सिर्फ़ कुछ सेकंड लगेंगे. यह प्रोसेस पूरी होने के बाद, आपको कुछ ऐसा दिखेगा:

7ffe5cbb04455448.png

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

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

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

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

4. Cloud Run सेवा डिप्लॉय करना

इवेंट पाने के लिए, Cloud Run सेवा डिप्लॉय करें. आपको Cloud Run के Hello कंटेनर को डिप्लॉय करना होगा. यह कंटेनर, CloudEvents के कॉन्टेंट को लॉग करता है.

सबसे पहले, Cloud Run के लिए ज़रूरी सेवाएं चालू करें:

gcloud services enable run.googleapis.com

hello कंटेनर को Cloud Run पर डिप्लॉय करें:

REGION=us-central1
SERVICE_NAME=hello

gcloud run deploy $SERVICE_NAME \
  --allow-unauthenticated \
  --image=gcr.io/cloudrun/hello \
  --region=$REGION

सफल होने पर, कमांड लाइन में सेवा का यूआरएल दिखता है. सेवा के यूआरएल को किसी भी ब्राउज़र विंडो में खोलकर, यह पुष्टि की जा सकती है कि सेवा अब डिप्लॉय हो गई है.

5. इवेंट खोजना

Eventarc में ट्रिगर बनाने से पहले, यह पता लगाया जा सकता है कि इवेंट के सोर्स क्या हैं, वे किस तरह के इवेंट भेज सकते हैं, और उन्हें इस्तेमाल करने के लिए ट्रिगर को कैसे कॉन्फ़िगर किया जाए.

अलग-अलग तरह के इवेंट की सूची देखने के लिए:

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

6. Pub/Sub ट्रिगर बनाना

इवेंट पाने का एक तरीका Cloud Pub/Sub है. कोई भी ऐप्लिकेशन, Pub/Sub पर मैसेज पब्लिश कर सकता है. इन मैसेज को Eventarc के ज़रिए Cloud Run पर डिलीवर किया जा सकता है.

सेटअप

कोई भी ट्रिगर बनाने से पहले, Eventarc के लिए ज़रूरी सेवाएं चालू करें:

gcloud services enable eventarc.googleapis.com

आपको एक सेवा खाते की भी ज़रूरत होगी, जिसका इस्तेमाल ट्रिगर करेंगे. सेवा खाता बनाएं:

SERVICE_ACCOUNT=eventarc-trigger-sa

gcloud iam service-accounts create $SERVICE_ACCOUNT

बनाएं

Pub/Sub विषय पर पब्लिश किए गए इवेंट को हमारी डिप्लॉय की गई Cloud Run सेवा में फ़िल्टर करने के लिए, ट्रिगर बनाएं:

TRIGGER_NAME=trigger-pubsub

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --location=$REGION \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

टेस्ट

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"

Cloud Run सेवा, आने वाले मैसेज के मुख्य हिस्से को लॉग करती है. इसे Cloud Run इंस्टेंस के लॉग सेक्शन में देखा जा सकता है:

69e0177e04a0d1af.png

मौजूदा Pub/Sub विषय का इस्तेमाल करके बनाना

डिफ़ॉल्ट रूप से, Pub/Sub ट्रिगर बनाने पर Eventarc आपके लिए एक विषय बनाता है. इसका इस्तेमाल, आपके ऐप्लिकेशन और Cloud Run सेवा के बीच ट्रांसपोर्ट विषय के तौर पर किया जा सकता है. इससे Pub/Sub की मदद से ट्रिगर को आसानी से और जल्दी बनाया जा सकता है. हालांकि, कभी-कभी आपको किसी मौजूदा विषय का इस्तेमाल करना पड़ सकता है. Eventarc की मदद से, --transport-topic gcloud फ़्लैग का इस्तेमाल करके, उसी प्रोजेक्ट में मौजूद Pub/Sub विषय के बारे में बताया जा सकता है.

यह सुविधा कैसे काम करती है, यह देखने के लिए, ट्रांसपोर्ट विषय के तौर पर इस्तेमाल करने के लिए Pub/Sub विषय बनाएं:

TOPIC_ID=eventarc-topic

gcloud pubsub topics create $TOPIC_ID

ट्रिगर बनाना:

TRIGGER_NAME=trigger-pubsub-existing

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
  --location=$REGION \
  --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

विषय पर कोई मैसेज भेजकर, ट्रिगर की जांच की जा सकती है:

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

7. Cloud Storage ट्रिगर बनाना

इस चरण में, Cloud Storage से इवेंट सुनने के लिए एक ट्रिगर बनाया जाएगा.

सेटअप

सबसे पहले, इवेंट पाने के लिए एक बकेट बनाएं:

BUCKET_NAME=eventarc-gcs-$PROJECT_ID

gsutil mb -l $REGION gs://$BUCKET_NAME

eventarc.eventReceiver की भूमिका असाइन करें, ताकि सेवा खाते का इस्तेमाल Cloud Storage ट्रिगर में किया जा सके:

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

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

gcloud eventarc triggers create $TRIGGER_NAME \
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --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

Cloud Storage बकेट में कोई फ़ाइल अपलोड करें:

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

अगर Cloud Console में Cloud Run सेवा के लॉग देखे जाते हैं, तो आपको मिला हुआ इवेंट दिखेगा:

904cfc93bb8e8df1.png

8. Cloud Audit Logs ट्रिगर बनाना

Cloud Storage ट्रिगर, Cloud Storage इवेंट को सुनने का बेहतर तरीका है. हालांकि, इस चरण में, ऐसा करने के लिए Cloud Audit Log ट्रिगर बनाया जाता है.

सेटअप

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

3c654597faed237c.png

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

1deb3ad78f11dd5f.png

बनाएं

बकेट से आपकी सेवा में नई फ़ाइल बनाने के इवेंट को रूट करने के लिए, ट्रिगर बनाएं:

TRIGGER_NAME=trigger-auditlog-storage

gcloud eventarc triggers create $TRIGGER_NAME\
  --destination-run-service=$SERVICE_NAME \
  --destination-run-region=$REGION \
  --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  google.cloud.audit.log.v1.written              Cloud Run service: hello  Yes

उसी फ़ाइल को Cloud Storage बकेट में अपलोड करें जिसे आपने पहले अपलोड किया था:

gsutil cp random.txt gs://$BUCKET_NAME/random.txt

अगर Cloud Console में Cloud Run सेवा के लॉग देखे जाते हैं, तो आपको मिला हुआ इवेंट दिखेगा:

7be7859bcc8976f8.png

9. Eventarc के यूज़र इंटरफ़ेस (यूआई) के बारे में जानकारी

इस चरण में, Google Cloud Console में Eventarc के यूज़र इंटरफ़ेस (यूआई) के बारे में जानें. Eventarc के यूज़र इंटरफ़ेस (यूआई) में, सभी ट्रिगर की खास जानकारी देखी जा सकती है. साथ ही, उनमें बदलाव किया जा सकता है और उन्हें मिटाया जा सकता है. इसके अलावा, Google Cloud Console से नए ट्रिगर बनाए जा सकते हैं.

Google Cloud के Eventarc सेक्शन पर जाएं:

81e139f17e0d29bf.png

आपको पहले बनाए गए ट्रिगर की सूची दिखेगी:

3240c7c830398718.png

किसी ट्रिगर पर क्लिक करने से, उसकी जानकारी देखी जा सकती है. साथ ही, उसे बदला या मिटाया जा सकता है:

b4d8bbc6601a8b9e.png

Create trigger को चुनकर भी नया ट्रिगर बनाया जा सकता है. इसके लिए, ट्रिगर की जानकारी भरें:

3ee290ec72f130d5.png

10. बधाई हो!

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

हमने क्या-क्या कवर किया है

  • Eventarc का विज़न
  • Eventarc में इवेंट खोजना
  • Cloud Run सिंक बनाना
  • Pub/Sub के लिए ट्रिगर बनाना
  • Cloud Storage के लिए ट्रिगर बनाना
  • Cloud Audit Logs के लिए ट्रिगर बनाना
  • Eventarc के यूज़र इंटरफ़ेस (यूआई) के बारे में जानकारी