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 Run सेवा पर भेजना होगा.

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

  • विज़न ऑफ़ इवेंटआर्क
  • Eventarc में इवेंट के बारे में जानें
  • Cloud Run सिंक बनाना
  • Pub/Sub के लिए ट्रिगर बनाना
  • Cloud Storage के लिए ट्रिगर बनाएं
  • क्लाउड ऑडिट लॉग के लिए ट्रिगर बनाएं
  • Eventarc यूज़र इंटरफ़ेस (यूआई) को एक्सप्लोर करें

2. विज़न ऑफ़ इवेंटआर्क

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

59b147dc030b2b0b.png

Google Cloud के सोर्स

ऐसे इवेंट सोर्स जो Google Cloud के प्रॉडक्ट हैं

Google के सोर्स

ऐसे इवेंट स्रोत जो Google के प्रॉडक्ट हैं, जैसे Gmail, Hangouts, Android Management वगैरह

कस्टम सोर्स

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

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

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

क्रॉस-सर्विस इंटरऑपरेबिलिटी के लिए, इवेंट को CloudEvents v1.0 फ़ॉर्मैट में नॉर्मलाइज़ किया जाता है. CloudEvent, वेंडर न्यूट्रल ओपन स्पेसिफ़िकेशन है. इसमें इवेंट डेटा को सामान्य फ़ॉर्मैट में बताया जाता है. इससे सभी सेवाओं, प्लैटफ़ॉर्म, और सिस्टम के बीच इंटरऑपरेबिलिटी (दूसरे सिस्टम के साथ काम करना) की सुविधा मिलती है.

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 में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. संसाधनों को बंद करने के लिए, इस ट्यूटोरियल के अलावा किसी और तरीके से बिलिंग न करें. इसके लिए, "साफ़-सफ़ाई" का इस्तेमाल करें कोडलैब के आखिर में दिए गए निर्देश देखें. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell शुरू करना

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

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

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

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

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

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

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

gcloud services enable run.googleapis.com

हैलो कंटेनर को 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

बनाएं

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

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

सेटअप

किसी सेवा से इवेंट पाने के लिए, आपको क्लाउड ऑडिट लॉग चालू करने होंगे. 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 में इवेंट के बारे में जानें
  • Cloud Run सिंक बनाना
  • Pub/Sub के लिए ट्रिगर बनाना
  • Cloud Storage के लिए ट्रिगर बनाएं
  • क्लाउड ऑडिट लॉग के लिए ट्रिगर बनाएं
  • Eventarc यूज़र इंटरफ़ेस (यूआई) को एक्सप्लोर करें