Anthos कोडलैब के लिए Cloud Run के इवेंट

1. परिचय

6a5cf23c8e20491f.png

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

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

इस कोडलैब में, आपको Anthos के लिए Cloud Run के लिए इवेंट के बारे में जानकारी मिलेगी. खास तौर पर, आपको Cloud Pub/Sub, ऑडिट लॉग, Cloud Storage, क्लाउड शेड्यूलर के इवेंट, और कस्टम इवेंट बनाने/इस्तेमाल करने के तरीके के बारे में जानकारी मिलेगी.

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

  • Anthos के लिए Cloud Run के लिए, इवेंट के लंबे समय के लिए विज़न
  • Anthos के लिए Cloud Run के इवेंट की मौजूदा स्थिति
  • Cloud Run सिंक बनाना
  • Cloud Pub/Sub के लिए कोई इवेंट ट्रिगर बनाएं
  • ऑडिट लॉग के लिए इवेंट ट्रिगर बनाएं
  • Cloud Storage के लिए इवेंट ट्रिगर बनाना
  • Cloud Scheduler के लिए इवेंट ट्रिगर बनाएं
  • कस्टम इवेंट बनाएं और उनका इस्तेमाल करें

2. लॉन्ग टर्म विज़न

जब हम बिना सर्वर वाले आर्किटेक्चर को अपनाते हैं, तब इवेंट, कपल की गई माइक्रोसेवाओं के कम्यूनिकेशन का ज़रूरी हिस्सा बन जाते हैं. Cloud Run for Anthos के लिए इवेंट, इवेंट को Cloud Run for Anthos के ऑफ़र का बेहतरीन सदस्य बनाता है. इससे बिना सर्वर वाले इवेंट-ड्रिवन ऐप्लिकेशन बनाना आसान हो जाता है.

Cloud Run for Anthos के इवेंट, पैकेज किए गए या ऐप्लिकेशन के बनाए गए इवेंट सोर्स से ऑन-क्लस्टर और ऑफ़-क्लस्टर उपभोक्ताओं तक भरोसेमंद, सुरक्षित, और बढ़ाने लायक एसिंक्रोनस इवेंट डिलीवरी की सुविधा देते हैं.

ce389bcafba6d669.png

Google Cloud के सोर्स

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

Google के सोर्स

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

कस्टम सोर्स

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

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

ऐसे इवेंट सोर्स जिनका मालिकाना हक Google के पास नहीं है और न ही असली उपयोगकर्ता के पास. इसमें GitHub, SAP, Datadogfood, Pagerduty जैसे लोकप्रिय इवेंट सोर्स शामिल हैं. इनका मालिकाना हक तीसरे पक्ष की कंपनियों, पार्टनर या ओएसएस कम्यूनिटी के पास है और वे ही उनका रखरखाव करते हैं.

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

Cloud Run के इवेंट, Knative Eventing के मुताबिक हैं. साथ ही, यह Knative पर आधारित अन्य तरीकों से कंटेनर को पोर्ट करने की सुविधा देता है. यह इवेंट प्रोड्यूसर के लिए, इवेंट के उपभोक्ताओं के साथ साफ़ तौर पर, क्लाउड-एग्नोस्टिक फ़्रेमवर्क उपलब्ध कराता है.

3. मौजूदा स्थिति

यह झलक पहला वर्शन है, जो लंबे समय तक चलने वाले फ़ंक्शन का शुरुआती सेट देता है.

b1dd0d8a73185b95.png

उपयोगकर्ताओं को बिना सर्वर वाले इवेंट-ड्रिवन ऐप्लिकेशन बनाने में मदद करने के लिए, हमारा शुरुआती फ़ोकस दो हिस्सों में है:

  1. Google Cloud सोर्स का एक बड़ा नेटवर्क उपलब्ध कराएं. इसकी मदद से, Anthos के क्लस्टर पर Cloud Run सेवाएं, Google Cloud की सेवाओं के इवेंट पर प्रतिक्रिया दे सकें.
  • शुरुआत में, Google Cloud सोर्स के इवेंट, Cloud ऑडिट लॉग (CAL) के ज़रिए डिलीवर किए जाते हैं. इससे, इवेंट के कई सोर्स चालू हो जाते हैं. इन सोर्स से इवेंट डिलीवर होने में लगने वाला समय और इंतज़ार का समय, क्लाउड ऑडिट लॉग के डेटा से तय होता है. जब भी किसी Google Cloud सोर्स से कोई इवेंट पब्लिश होता है, तो उससे जुड़ा क्लाउड ऑडिट लॉग एंट्री बन जाती है.
  • Cloud ऑडिट लॉग के साथ-साथ, Cloud Storage, Cloud Pub/Sub, और Cloud शेड्यूलर के इवेंट का इस्तेमाल करने के लिए, फ़र्स्ट क्लास सहायता उपलब्ध है. जैसे-जैसे हम उपयोगकर्ताओं की गतिविधियों और उनके सुझावों, राय या शिकायतों के आधार पर कॉन्टेंट देखते जाएंगे वैसे-वैसे हम उन्हें सोर्स के इस नेटवर्क में सबसे पहले के सोर्स शामिल करते रहेंगे.
  1. नेमस्पेस के स्कोप वाले क्लस्टर-लोकल ब्रोकर यूआरएल पर पब्लिश करके, असली उपयोगकर्ता के ऐप्लिकेशन और सेवाओं को कस्टम इवेंट भेजने की सुविधा दें.

डिलीवरी का बुनियादी तरीका, Cloud Pub/Sub के उन विषयों और सदस्यताओं का इस्तेमाल करता है जो ग्राहकों को दिखती हैं प्रोजेक्ट. इसलिए, यह सुविधा डिलीवरी की वही गारंटी देती है जो Cloud Pub/Sub के लिए दी जाती है.

इवेंट ट्रिगर की सहायता से इवेंट की सदस्यता ली जा सकती है, ताकि ट्रिगर फ़िल्टर से मेल खाने वाले इवेंट उस गंतव्य (या सिंक) पर डिलीवर किए जाएं जिस पर ट्रिगर भेजता है.

क्रॉस सर्विस इंटरऑपरेबिलिटी के लिए, सभी इवेंट को Cloud इवेंट v1.0 फ़ॉर्मैट में डिलीवर किया जाता है.

हम एआई के साथ-साथ और भी कई जगहों पर बार-बार काम करते रहेंगे.

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

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

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

Cloud Shell शुरू करना

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

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

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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

5. एपीआई चालू करें, ज़ोन और प्लैटफ़ॉर्म सेट करें

प्रोजेक्ट आईडी सेटअप करें और ऐल्फ़ा कॉम्पोनेंट इंस्टॉल करें

क्लाउड शेल के अंदर, GOOGLE_cloud_PROJECT पहले से ही आपके प्रोजेक्ट आईडी पर सेट होना चाहिए. अगर ऐसा नहीं है, तो पक्का करें कि इसे सेट किया गया हो और आपका gcloud इस प्रोजेक्ट आईडी के साथ कॉन्फ़िगर किया गया हो:

export GOOGLE_CLOUD_PROJECT=your-project-id
gcloud config set project ${GOOGLE_CLOUD_PROJECT}

पक्का करें कि ऐल्फ़ा के लिए gcloud कॉम्पोनेंट इंस्टॉल किया गया हो:

gcloud components install alpha

एपीआई चालू करें

सभी ज़रूरी सेवाएं चालू करना:

gcloud services enable cloudapis.googleapis.com 
gcloud services enable container.googleapis.com 
gcloud services enable containerregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com

ज़ोन और प्लैटफ़ॉर्म सेट करें

Cloud Run इवेंट के साथ GKE (जीकेई) क्लस्टर बनाने से पहले, क्लस्टर का नाम, ज़ोन, और प्लैटफ़ॉर्म सेट करें. उदाहरण के लिए, यहां हमने नाम और ज़ोन को events-cluster और europe-west1-b पर सेट किया है. साथ ही, प्लैटफ़ॉर्म को gke, पर सेट किया है

Cloud Shell में:

export CLUSTER_NAME=events-cluster
export CLUSTER_ZONE=europe-west1-b

gcloud config set run/cluster ${CLUSTER_NAME}
gcloud config set run/cluster_location ${CLUSTER_ZONE}
gcloud config set run/platform gke

देखें कि कॉन्फ़िगरेशन सेट हो गया है या नहीं:

gcloud config list

...
[run]
cluster = events-cluster
cluster_location = europe-west1-b
platform = gke

6. Cloud Run इवेंट की मदद से GKE (जीकेई) क्लस्टर बनाना

Kubernetes >= 1.15.9-gke.26 पर चलने वाले GKE (जीकेई) क्लस्टर में, इन ऐड-ऑन को चालू करें: CloudRun, HttpLoadBalancing, HorizontalPodAutoscaling:

gcloud beta container clusters create ${CLUSTER_NAME} \
  --addons=HttpLoadBalancing,HorizontalPodAutoscaling,CloudRun \
  --machine-type=n1-standard-4 \
  --enable-autoscaling --min-nodes=3 --max-nodes=10 \
  --no-issue-client-certificate --num-nodes=3 --image-type=cos \
  --enable-stackdriver-kubernetes \
  --scopes=cloud-platform,logging-write,monitoring-write,pubsub \
  --zone ${CLUSTER_ZONE} \
  --release-channel=rapid

7. Cloud Run इवेंट सेटअप करें (कंट्रोल प्लेन)

Cloud Run इवेंट में कंट्रोल प्लेन और डेटा प्लेन होते हैं, जिन्हें अलग-अलग सेट अप करना पड़ता है. कंट्रोल प्लेन सेट अप करने के लिए:

Cloud Shell में:

gcloud beta events init 

इससे इवेंट शुरू हो जाएगा और कई ज़रूरी सेवा खाते भी बन जाएंगे. पक्का करें कि आपने 'हां' चुना हो जब सेवा खाता बनाने के लिए पूछा जाए.

इस पॉइंट पर, कंट्रोल प्लेन को सही तरीके से शुरू किया जाना चाहिए. आपको चार पॉड दिखने चाहिए.

cloud-run-events नेमस्पेस में Running स्थिति, 2 (controller-xxx-xxx और webhook-xxx-xxx), और knative-eventing नेमस्पेस में 2 (eventing-controller-xxx-xxx और eventing-webhook-xxx-xxx). जांच करने के लिए, यहां दिए गए निर्देशों का पालन करें:

kubectl get pods -n cloud-run-events

NAME                         READY   STATUS    RESTARTS   AGE
controller-9cc679b67-2952n   1/1     Running   0          22s
webhook-8576c4cfcb-dhz82     1/1     Running   0          16m
kubectl get pods -n knative-eventing

NAME                                   READY   STATUS    RESTARTS   AGE
eventing-controller-77f46f6cf8-kj9ck   1/1     Running   0          17m
eventing-webhook-5bc787965f-hcmwg      1/1     Running   0          17m

8. Cloud Run इवेंट सेटअप करना (डेटा प्लेन)

इसके बाद, उपयोगकर्ता नेमस्पेस में डेटा प्लेन सेट अप किया जाता है. यह एक ब्रोकर बनाता है, जिसके पास Pub/Sub से पढ़ने/लिखने के लिए ज़रूरी अनुमतियां होती हैं.

क्लाउड शेल के अंदर, उस नेमस्पेस के लिए NAMESPACE एनवायरमेंट वैरिएबल सेट करें जिसे आपको अपने ऑब्जेक्ट के लिए इस्तेमाल करना है. अगर आपको डिफ़ॉल्ट नेमस्पेस का इस्तेमाल करना है, तो इसे default पर सेट करें, जैसा कि यहां दिखाया गया है:

export NAMESPACE=default

ध्यान दें कि अगर तय किया गया नेमस्पेस मौजूद नहीं है (यानी नेमस्पेस डिफ़ॉल्ट नहीं है), तो आपको उसे बनाना होगा:

kubectl create namespace ${NAMESPACE}

नेमस्पेस को डिफ़ॉल्ट सीक्रेट के साथ शुरू करें:

gcloud beta events namespaces init ${NAMESPACE} --copy-default-secret 

नेमस्पेस में एक डिफ़ॉल्ट ब्रोकर बनाएं:

gcloud beta events brokers create default --namespace ${NAMESPACE}

पक्का करें कि ब्रोकर बना दिया गया है. ध्यान दें कि ब्रोकर के तैयार होने में कुछ सेकंड लग सकते हैं:

kubectl get broker -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-brokercell-ingress.cloud-run-events.svc.cluster.local/default/default

9. इवेंट डिस्कवरी

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

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

gcloud beta events types list

हर इवेंट टाइप के बारे में ज़्यादा जानकारी पाने के लिए:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

10. कोई क्लाउड रन सिंक बनाएं

इवेंट सिंक के तौर पर, Cloud Run की ऐसी सेवा डिप्लॉय करें जो मिलने वाले CloudEvent के कॉन्टेंट को लॉग करती हो.

पहले से कंपाइल किए गए KNative के event_display का इस्तेमाल किया जा सकता है. साथ ही, KNative रिलीज़ के हिस्से के तौर पर बनाई गई उसकी कंटेनर इमेज भी इस्तेमाल की जा सकती है. कंटेनर इमेज की जानकारी, event-display.yaml में देखी जा सकती है:

...
containers:
  - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

Cloud Run पर डिप्लॉय करें

अपने कंटेनर के मुताबिक बनाए गए ऐप्लिकेशन को Cloud Run पर डिप्लॉय करें:

export SERVICE_NAME=event-display
gcloud run deploy ${SERVICE_NAME} \
  --namespace=${NAMESPACE} \
  --image gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27

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

11. Cloud Pub/Sub के लिए कोई इवेंट ट्रिगर बनाएं

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

कोई विषय बनाएं

सबसे पहले, Cloud Pub/Sub विषय बनाएं. आप TOPIC_ID को अपनी पसंद के विषय के नाम से बदल सकते हैं:

export TOPIC_ID=cr-gke-topic
gcloud pubsub topics create ${TOPIC_ID}

ट्रिगर बनाना

ट्रिगर बनाने से पहले, Cloud Pub/Sub के इवेंट के लिए ट्रिगर बनाने के लिए ज़रूरी पैरामीटर के बारे में ज़्यादा जानकारी पाएं:

gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished

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

gcloud beta events triggers create trigger-pubsub \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type google.cloud.pubsub.topic.v1.messagePublished \
  --parameters topic=${TOPIC_ID}

ट्रिगर की जांच करना

सभी ट्रिगर की सूची बनाकर यह पता लगाया जा सकता है कि ट्रिगर बनाया गया है या नहीं:

gcloud beta events triggers list

ट्रिगर बनाने और इवेंट फ़िल्टर करने की प्रोसेस शुरू होने में, आपको 10 मिनट लग सकते हैं.

ऐप्लिकेशन भेजने वाले कस्टम मैसेज को सिम्युलेट करने के लिए, gcloud का इस्तेमाल करके इवेंट ट्रिगर किया जा सकता है:

gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"

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

9526909a06c6d4f4.png

ध्यान दें, "नमस्ते" base64 कोड को उसी तरह एन्कोड किया जाएगा जिस तरह यह Pub/Sub से भेजा गया था. अगर आपको भेजा गया ओरिजनल मैसेज देखना है, तो आपको उसे डिकोड करना होगा.

ट्रिगर मिटाना

इसके अलावा, जांच पूरी होने के बाद ट्रिगर को मिटाया जा सकता है.

gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}

12. ऑडिट लॉग के लिए इवेंट ट्रिगर बनाएं

आपको ऑडिट लॉग के इवेंट सुनने के लिए, एक ट्रिगर सेट अप करना होगा. खास तौर पर, ऑडिट लॉग में Pub/Sub के विषय बनाने वाले इवेंट देखे जा सकते हैं.

ऑडिट लॉग चालू करना

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

97bd4b57c6a05fcc.png

दाईं ओर, पक्का करें कि एडमिन, पढ़ें और लिखें, को चुना गया है. सेव करें पर क्लिक करें:

bec31b4f35fbcea.png

टेस्ट ऑडिट लॉग

असल ट्रिगर को सेट अप करने के लिए ज़रूरी पैरामीटर की पहचान करने का तरीका जानने के लिए, असल में कार्रवाई करें.

उदाहरण के लिए, Pub/Sub विषय बनाएं:

gcloud pubsub topics create cre-gke-topic1

अब देखते हैं कि इस अपडेट से किस तरह का ऑडिट लॉग जनरेट हुआ. Cloud Console से, ऊपर बाईं ओर मौजूद मेन्यू से Logging > Logs Viewer चुनें.

Query Builder, में जाकर, Cloud Pub/Sub Topic चुनें और Add पर क्लिक करें:

f5c634057e935bc6.png

क्वेरी चलाने के बाद, आपको Pub/Sub विषयों के लॉग दिखेंगे और उनमें से कोई एक google.pubsub.v1.Publisher.CreateTopic होना चाहिए:

b083cce219773d24.png

serviceName, methodName, और resourceName को नोट करें. हम ट्रिगर बनाने में इनका इस्तेमाल करेंगे.

ट्रिगर बनाना

अब आप ऑडिट लॉग के लिए इवेंट ट्रिगर बनाने के लिए तैयार हैं.

नीचे दिए गए कमांड की मदद से, Google Cloud सोर्स से इवेंट के लिए ट्रिगर बनाने के लिए ज़रूरी पैरामीटर के बारे में ज़्यादा जानकारी पाई जा सकती है:

gcloud beta events types describe google.cloud.audit.log.v1.written

सही फ़िल्टर का इस्तेमाल करके ट्रिगर बनाएं:

gcloud beta events triggers create trigger-auditlog \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.audit.log.v1.written \
  --parameters serviceName=pubsub.googleapis.com \
  --parameters methodName=google.pubsub.v1.Publisher.CreateTopic

ट्रिगर की जांच करना

सभी ट्रिगर की सूची बनाकर पुष्टि करें कि ट्रिगर सही तरीके से बना था:

gcloud beta events triggers list

ट्रिगर बनाने और इवेंट फ़िल्टर करने के लिए, 10 मिनट इंतज़ार करें. इवेंट तैयार होने के बाद, यह इवेंट को फ़िल्टर करके सेवा को भेजेगा. अब आप कोई इवेंट चलाने के लिए तैयार हैं.

जैसा कि आपने पहले किया था, एक और Pub/Sub विषय बनाएं:

gcloud pubsub topics create cre-gke-topic2

Cloud Console में Cloud Run सेवा के लॉग देखने पर, आपको मिला इवेंट दिखेगा:

aff3b2e7ad05c75d.png

ट्रिगर और विषय मिटाना

इसके अलावा, जांच के बाद ट्रिगर को मिटाया जा सकता है:

gcloud beta events triggers delete trigger-auditlog

इन विषयों को भी मिटाएं:

gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2

13. Cloud Storage के लिए इवेंट ट्रिगर बनाना

आपको Cloud Storage के इवेंट को सुनने के लिए एक ट्रिगर सेट अप करना होगा.

बकेट बनाना

सबसे पहले, उसी क्षेत्र में Cloud Storage बकेट बनाएं जहां डिप्लॉय की गई Cloud Run सेवा है. आप BUCKET_NAME को अपनी पसंद के मुताबिक अलग नाम से बदल सकते हैं:

export BUCKET_NAME=[new bucket name]
export REGION=europe-west1

gsutil mb -p $(gcloud config get-value project) \
  -l $REGION \
  gs://$BUCKET_NAME/

Cloud Storage की अनुमतियां सेटअप करना

ट्रिगर बनाने से पहले, आपको Cloud Storage के लिए डिफ़ॉल्ट सेवा खाते को अनुमति देनी होगी, ताकि उसे Pub/Sub पर पब्लिश करने की अनुमति मिल सके.

सबसे पहले, आपको वह सेवा खाता ढूंढना होगा जिसका इस्तेमाल Cloud Storage, Pub/Sub पर पब्लिश करने के लिए करता है. सेवा खाता पाने के लिए, Cloud Storage सेवा खाता पाने में दिया गया तरीका अपनाएं या यहां दिए गए निर्देश का इस्तेमाल करें:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/projects/$(gcloud config get-value project)/serviceAccount"

सेवा खाते को email_address में शामिल किया जाना चाहिए.

मान लें कि ऊपर से मिला सेवा खाता service-XYZ@gs-project-accounts.iam.gserviceaccount.com था. इसे एनवायरमेंट वैरिएबल पर सेट करें:

export GCS_SERVICE_ACCOUNT=service-XYZ@gs-project-accounts.iam.gserviceaccount.com

इसके बाद, उस सेवा खाते को Pub/Sub में कॉन्टेंट पब्लिश करने के अधिकार दें:

gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
  --member=serviceAccount:${GCS_SERVICE_ACCOUNT} \
  --role roles/pubsub.publisher

ट्रिगर बनाना

अब आप Cloud Storage इवेंट के लिए एक इवेंट ट्रिगर बनाने के लिए तैयार हैं.

ट्रिगर बनाने के लिए ज़रूरी पैरामीटर के बारे में ज़्यादा जानकारी यहां पाएं:

gcloud beta events types describe google.cloud.storage.object.v1.finalized

सही फ़िल्टर का इस्तेमाल करके ट्रिगर बनाएं:

gcloud beta events triggers create trigger-storage \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=google.cloud.storage.object.v1.finalized \
  --parameters bucket=${BUCKET_NAME}

ट्रिगर की जांच करना

सभी ट्रिगर की सूची बनाकर पुष्टि करें कि ट्रिगर सही तरीके से बना था:

gcloud beta events triggers list

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

अब आप कोई इवेंट चलाने के लिए तैयार हैं.

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

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

Cloud Console में Cloud Run सेवा के लॉग देखने पर, आपको मिला इवेंट दिखेगा:

aff3b2e7ad05c75d.png

ट्रिगर मिटाना

इसके अलावा, जांच के बाद ट्रिगर को मिटाया जा सकता है:

gcloud beta events triggers delete trigger-storage

14. Cloud Scheduler के लिए इवेंट ट्रिगर बनाएं

आपको Cloud शेड्यूलर के इवेंट को सुनने के लिए, एक ट्रिगर सेट अप करना होगा.

App Engine ऐप्लिकेशन बनाएं

फ़िलहाल, Cloud शेड्यूलर को उपयोगकर्ताओं के लिए App Engine ऐप्लिकेशन बनाना होगा. App Engine लोकेशन चुनें और ऐप बनाएं:

export APP_ENGINE_LOCATION=europe-west
gcloud app create --region=${APP_ENGINE_LOCATION}

ट्रिगर बनाएं

नीचे दिए गए कमांड की मदद से, Google Cloud सोर्स से इवेंट के लिए ट्रिगर बनाने के लिए ज़रूरी पैरामीटर के बारे में ज़्यादा जानकारी पाई जा सकती है:

gcloud beta events types describe google.cloud.scheduler.job.v1.executed

शेड्यूलर बनाने के लिए, क्लाउड शेड्यूलर की कोई जगह चुनें:

export SCHEDULER_LOCATION=europe-west1

एक ऐसा ट्रिगर बनाएं जो Google Cloud शेड्यूलर में हर मिनट काम करने के लिए काम करे. साथ ही, टारगेट सेवा को कॉल करें:

gcloud beta events triggers create trigger-scheduler \
  --namespace ${NAMESPACE} \
  --target-service=${SERVICE_NAME} \
  --type=google.cloud.scheduler.job.v1.executed \
  --parameters location=${SCHEDULER_LOCATION} \
  --parameters schedule="* * * * *" \
  --parameters data="trigger-scheduler-data"

ट्रिगर की जांच करना

सभी ट्रिगर की सूची बनाकर पुष्टि करें कि ट्रिगर सही तरीके से बना था:

gcloud beta events triggers list

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

Cloud Console में Cloud Run सेवा के लॉग देखने पर, आपको मिला इवेंट दिखेगा.

ट्रिगर मिटाना

इसके अलावा, जांच के बाद ट्रिगर को मिटाया जा सकता है:

gcloud beta events triggers delete trigger-scheduler

15. कस्टम इवेंट (ब्रोकर एंडपॉइंट)

कोडलैब के इस हिस्से में, ब्रोकर का इस्तेमाल करके कस्टम इवेंट बनाएं और उनका इस्तेमाल करें.

इवेंट बनाने के लिए कर्ल पॉड बनाना

आम तौर पर, इवेंट प्रोग्राम के हिसाब से बनाए जाते हैं. हालांकि, इस चरण में आपको अलग-अलग इवेंट को मैन्युअल तरीके से भेजने के लिए curl का इस्तेमाल करना होगा. साथ ही, यह जानकारी भी मिलेगी कि सही उपभोक्ता को ये इवेंट कैसे मिलते हैं.

ऐसा पॉड बनाने के लिए जो इवेंट प्रोड्यूसर के तौर पर काम करता हो, यह कमांड चलाएं:

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  labels:
    run: curl
  name: curl
  namespace: $NAMESPACE
spec:
  containers:
  - image: radial/busyboxplus:curl
    imagePullPolicy: IfNotPresent
    name: curl
    resources: {}
    stdin: true
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    tty: true
EOF

पुष्टि करें कि कर्ल पॉड सही तरीके से काम कर रहा है. आपको Status=Running के साथ curl नाम का पॉड दिखेगा:

kubectl get pod curl -n ${NAMESPACE}

ट्रिगर बनाना

आपको ट्रिगर किए जाने वाले उस खास CloudEvents टाइप (इस मामले में alpha-type) पर फ़िल्टर के साथ एक ट्रिगर बनाना होगा. ध्यान दें कि किसी भी संख्या में CloudEvent एट्रिब्यूट और एक्सटेंशन के लिए एग्ज़ैक्ट मैच वाले फ़िल्टर काम करते हैं. अगर आपका फ़िल्टर एक से ज़्यादा एट्रिब्यूट सेट करता है, तो इवेंट में ट्रिगर को फ़िल्टर करने के लिए सभी एट्रिब्यूट होने चाहिए. इसके उलट, अगर आपने कोई फ़िल्टर तय नहीं किया है, तो आपकी सेवा में सभी इवेंट दिखेंगे.

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

gcloud beta events triggers create trigger-custom \
  --namespace ${NAMESPACE} \
  --target-service ${SERVICE_NAME} \
  --type=alpha-type \
  --custom-type

ट्रिगर की जांच करना

सभी ट्रिगर की सूची बनाकर पुष्टि करें कि ट्रिगर सही तरीके से बना था:

gcloud beta events triggers list

ब्रोकर को एक एचटीटीपी अनुरोध भेजकर, इवेंट बनाएं. निम्न चलाकर खुद को ब्रोकर URL याद दिलाएं:

kubectl get brokers -n ${NAMESPACE}

NAME      READY   REASON   URL
default   True             http://default-broker.<NAMESPACE>.svc.cluster.local

पहले बनाए गए curl पॉड में एसएसएच की सुविधा:

kubectl --namespace ${NAMESPACE} attach curl -it

आपने पॉड में एसएसएच का इस्तेमाल किया है और अब आप एचटीटीपी अनुरोध कर सकते हैं. नीचे दिए गए प्रॉम्प्ट से मिलता-जुलता एक प्रॉम्प्ट दिखेगा:

Defaulting container name to curl.
Use 'kubectl describe pod/curl -n default' to see all of the containers in this pod.
If you don't see a command prompt, try pressing enter.
[ root@curl:/ ]$

कोई इवेंट बनाएं:

curl -v "<BROKER-URL>" \
-X POST \
-H "Ce-Id: my-id" \
-H "Ce-Specversion: 1.0" \
-H "Ce-Type: alpha-type" \
-H "Ce-Source: my-source" \
-H "Content-Type: application/json" \
-d '{"msg":"send-cloudevents-to-broker"}'

अगर इवेंट मिल गया है, तो आपको HTTP 202 Accepted जवाब मिलेगा. Ctrl + D के साथ एसएसएच सेशन से बाहर निकलें

Cloud Run सेवा के लॉग देखकर पुष्टि करें कि प्रकाशित इवेंट भेजा गया था:

kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \
 -c user-container -n $NAMESPACE --tail=100

ट्रिगर मिटाना

इसके अलावा, जांच के बाद ट्रिगर को मिटाया जा सकता है:

gcloud beta events triggers delete trigger-custom

16. बधाई हो!

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

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

  • Anthos के लिए Cloud Run के लिए, इवेंट के लंबे समय के लिए विज़न
  • Anthos के लिए Cloud Run के इवेंट की मौजूदा स्थिति
  • Cloud Run सिंक बनाना
  • Cloud Pub/Sub के लिए कोई इवेंट ट्रिगर बनाएं
  • ऑडिट लॉग के लिए इवेंट ट्रिगर बनाएं
  • Cloud Storage के लिए इवेंट ट्रिगर बनाना
  • Cloud Scheduler के लिए इवेंट ट्रिगर बनाएं
  • कस्टम इवेंट बनाएं और उनका इस्तेमाल करें