1. परिचय

Cloud Run की मदद से, पूरी तरह से मैनेज किए गए एनवायरमेंट में स्टेटलेस कंटेनर चलाए जा सकते हैं. इसे ओपन सोर्स Knative से बनाया गया है. इससे आपको अपने कंटेनर को Cloud Run के साथ पूरी तरह से मैनेज करने या Cloud Run for Anthos के साथ अपने Google Kubernetes Engine क्लस्टर में चलाने का विकल्प मिलता है.
Cloud Run for Anthos के लिए इवेंट की मदद से, Cloud Run सेवाओं को अलग-अलग सोर्स से मिले इवेंट के साथ आसानी से कनेक्ट किया जा सकता है. इससे इवेंट-ड्रिवन आर्किटेक्चर बनाए जा सकते हैं. इनमें माइक्रोसेवाएं, एक-दूसरे से कम जुड़ी होती हैं और डिस्ट्रिब्यूट की जाती हैं. यह इवेंट के डेटा को इकट्ठा करने, उसे डिलीवर करने, उसकी सुरक्षा करने, उसे ऐक्सेस करने की अनुमति देने, और गड़बड़ियों को ठीक करने का काम भी करता है. इससे डेवलपर को तेज़ी से काम करने में मदद मिलती है और ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर होती है.
इस कोडलैब में, आपको Cloud Run for Anthos के लिए इवेंट के बारे में जानकारी मिलेगी. खास तौर पर, आपको Cloud Pub/Sub, ऑडिट लॉग, Cloud Storage, Cloud Scheduler से इवेंट सुनने के बारे में जानकारी मिलेगी. साथ ही, कस्टम इवेंट बनाने/इस्तेमाल करने का तरीका भी बताया जाएगा.
आपको क्या सीखने को मिलेगा
- Cloud Run for Anthos के लिए इवेंट का लॉन्ग टर्म विज़न
- Cloud Run for Anthos के लिए इवेंट की मौजूदा स्थिति
- Cloud Run सिंक बनाना
- Cloud Pub/Sub के लिए इवेंट ट्रिगर बनाना
- ऑडिट लॉग के लिए इवेंट ट्रिगर बनाना
- Cloud Storage के लिए इवेंट ट्रिगर बनाना
- Cloud Scheduler के लिए इवेंट ट्रिगर बनाना
- कस्टम इवेंट जनरेट करना और उनका इस्तेमाल करना
2. लंबी अवधि का विज़न
सर्वरलेस आर्किटेक्चर को अपनाने के बाद, इवेंट, डी-कपल्ड माइक्रोसेवाओं के कम्यूनिकेट करने के तरीके का अहम हिस्सा बन जाते हैं. Cloud Run for Anthos के लिए इवेंट, इवेंट को Cloud Run for Anthos की सुविधा का अहम हिस्सा बनाता है. इससे इवेंट पर आधारित, बिना सर्वर के काम करने वाले ऐप्लिकेशन बनाना आसान हो जाता है.
Cloud Run for Anthos के लिए इवेंट की सुविधा, पैकेज किए गए या ऐप्लिकेशन से बनाए गए इवेंट सोर्स से, क्लस्टर पर और क्लस्टर से बाहर के उपभोक्ताओं को भरोसेमंद, सुरक्षित, और बड़े पैमाने पर एसिंक्रोनस इवेंट डिलीवर करने की सुविधा देती है.

Google Cloud के सोर्स | Google Cloud के मालिकाना हक वाले प्रॉडक्ट से जुड़े इवेंट सोर्स |
Google के सोर्स | इवेंट के ऐसे सोर्स जो Google के मालिकाना हक वाले प्रॉडक्ट हैं. जैसे, Gmail, Hangouts, Android Management वगैरह |
कस्टम सोर्स | ऐसे इवेंट सोर्स जो Google के मालिकाना हक वाले प्रॉडक्ट नहीं हैं और जिन्हें असली उपयोगकर्ताओं ने खुद बनाया है. ये उपयोगकर्ता के बनाए गए Knative सोर्स या क्लस्टर पर चलने वाला कोई भी ऐसा ऐप्लिकेशन हो सकता है जो Cloud इवेंट जनरेट कर सकता है. |
तीसरे पक्ष के सोर्स | ऐसे इवेंट सोर्स जिनका मालिकाना हक न तो Google के पास है और न ही एंड-यूज़र के पास. इसमें लोकप्रिय इवेंट सोर्स शामिल हैं. जैसे, Github, SAP, Datadog, Pagerduty वगैरह. इनका मालिकाना हक तीसरे पक्ष के प्रोवाइडर, पार्टनर या ओएसएस कम्यूनिटी के पास होता है. साथ ही, ये इन्हीं के ज़रिए मैनेज किए जाते हैं. |
अलग-अलग सेवाओं के बीच इंटरऑपरेबिलिटी के लिए, इवेंट को CloudEvents v1.0 फ़ॉर्मैट में बदला जाता है. CloudEvents, वेंडर से अलग एक ओपन स्पेसिफ़िकेशन है. इसमें इवेंट के डेटा को सामान्य फ़ॉर्मैट में दिखाया जाता है. इससे अलग-अलग सेवाओं, प्लैटफ़ॉर्म, और सिस्टम के बीच इंटरऑपरेबिलिटी को बढ़ावा मिलता है.
Cloud Run के इवेंट, Knative Eventing के मुताबिक होते हैं. साथ ही, कंटेनर को Knative पर आधारित अन्य सुविधाओं से और उनमें ले जाने की अनुमति देते हैं. इससे इवेंट प्रोड्यूसर को इवेंट कंज्यूमर के साथ जोड़ने के लिए, एक जैसा और क्लाउड-अग्नोस्टिक फ़्रेमवर्क मिलता है.
3. मौजूदा स्थिति
यह झलक, पहला वर्शन है. इसमें लंबे समय तक काम करने वाली सुविधाओं का शुरुआती सेट उपलब्ध कराया गया है.

हमारा मुख्य फ़ोकस इन दो बातों पर है, ताकि उपयोगकर्ता इवेंट-ड्रिवन सर्वरलेस ऐप्लिकेशन बना सकें:
- Google Cloud के सोर्स का एक बड़ा नेटवर्क उपलब्ध कराता है. इससे Anthos क्लस्टर पर Cloud Run की सेवाएं, Google Cloud की सेवाओं से मिलने वाले इवेंट पर प्रतिक्रिया दे पाती हैं.
- शुरुआत में, Google Cloud Sources से इवेंट, Cloud Audit Logs (CAL) के ज़रिए डिलीवर किए जाते हैं. इससे इवेंट के कई सोर्स इस्तेमाल किए जा सकते हैं. इन सोर्स से इवेंट डिलीवरी की लेटेन्सी और उपलब्धता, Cloud Audit Logs की लेटेन्सी और उपलब्धता से जुड़ी होती है. जब भी Google Cloud सोर्स से कोई इवेंट पब्लिश किया जाता है, तब उससे जुड़ी Cloud Audit Log एंट्री बन जाती है.
- Cloud Audit Logs के साथ-साथ, Cloud Storage, Cloud Pub/Sub, और Cloud Scheduler से इवेंट इस्तेमाल करने के लिए, बेहतरीन सहायता उपलब्ध है. हम इस नेटवर्क में और भी बेहतर सोर्स जोड़ते रहेंगे. इसके लिए, हम लोगों के अनुभव और उनके सुझाव/राय या शिकायत से मिली जानकारी का इस्तेमाल करेंगे.
- एंड-यूज़र ऐप्लिकेशन और सेवाओं को, नेमस्पेस के स्कोप वाले क्लस्टर-लोकल ब्रोकर यूआरएल पर पब्लिश करके कस्टम इवेंट भेजने की अनुमति देता है.
डेटा डिलीवर करने के लिए, Cloud Pub/Sub के विषयों और सदस्यताओं का इस्तेमाल किया जाता है. ये विषय और सदस्यताएं, खरीदारों के प्रोजेक्ट में दिखती हैं. इसलिए, यह सुविधा Cloud Pub/Sub की तरह ही डिलीवरी की गारंटी देती है.
इवेंट ट्रिगर, इवेंट की सदस्यता लेने का तरीका उपलब्ध कराता है. इससे ट्रिगर फ़िल्टर से मेल खाने वाले इवेंट, उस डेस्टिनेशन (या सिंक) को डिलीवर किए जाते हैं जिस पर ट्रिगर पॉइंट करता है.
सभी इवेंट, क्रॉस सर्विस इंटरऑपरेबिलिटी के लिए Cloud Events v1.0 फ़ॉर्मैट में डिलीवर किए जाते हैं.
हम GA और इसके बाद भी, आपको बेहतर सुविधाएं देते रहेंगे.
4. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.



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

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

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. साथ ही, यह Google Cloud पर काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस लैब में मौजूद सभी टास्क को सिर्फ़ ब्राउज़र की मदद से पूरा किया जा सकता है.
5. एपीआई चालू करना, ज़ोन और प्लैटफ़ॉर्म सेट करना
प्रोजेक्ट आईडी सेट अप करना और ऐल्फ़ा कॉम्पोनेंट इंस्टॉल करना
Cloud Shell में, 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 Events की मदद से 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 Events की मदद से 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 Events (Control Plane) सेट अप करना
Cloud Run Events में एक कंट्रोल प्लेन और एक डेटा प्लेन होता है. इन्हें अलग-अलग सेट अप करना होता है. कंट्रोल प्लेन सेट अप करने के लिए:
Cloud Shell में:
gcloud beta events init
इससे इवेंटिंग की सुविधा शुरू हो जाएगी. साथ ही, ज़रूरी सेवा खाते भी बन जाएंगे. पक्का करें कि सेवा खाता बनाने के लिए कहा जाने पर, आपने ‘हां' चुना हो.
इस समय तक कंट्रोल प्लेन को सही तरीके से शुरू हो जाना चाहिए. आपको चार पॉड दिखेंगे.
Running स्टेटस, cloud-run-events नेमस्पेस में 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 Events (डेटा प्लेन) सेटअप करना
इसके बाद, उपयोगकर्ता के नेमस्पेस में डेटा प्लेन सेट अप करना होता है. इससे एक ऐसा ब्रोकर बनता है जिसके पास Pub/Sub से डेटा पढ़ने/लिखने की ज़रूरी अनुमतियां होती हैं.
Cloud Shell में, उस नेमस्पेस के लिए 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 सिंक बनाना
इवेंट सिंक के तौर पर, 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 Pub/Sub विषय पर पब्लिश किए गए इवेंट को हमारी डिप्लॉय की गई Cloud Run सेवा में फ़िल्टर करने के लिए, ट्रिगर बनाएं:
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 इंस्टेंस के लॉग सेक्शन में देखा जा सकता है:

ध्यान दें कि Pub/Sub से भेजे गए "Hello there" को base64 में कोड किया जाएगा. अगर आपको भेजा गया ओरिजनल मैसेज देखना है, तो आपको इसे डिकोड करना होगा.
ट्रिगर मिटाना
अगर आपको ट्रिगर की टेस्टिंग नहीं करनी है, तो उसे मिटाया जा सकता है.
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
12. ऑडिट लॉग के लिए इवेंट ट्रिगर बनाना
ऑडिट लॉग से इवेंट सुनने के लिए, ट्रिगर सेट अप करें. खास तौर पर, आपको ऑडिट लॉग में Pub/Sub विषय बनाने से जुड़े इवेंट ढूंढने होंगे.
ऑडिट लॉग चालू करना
किसी सेवा से इवेंट पाने के लिए, आपको ऑडिट लॉग चालू करने होंगे. Cloud Console में, सबसे ऊपर बाईं ओर मौजूद मेन्यू से IAM & Admin > Audit Logs चुनें. सेवाओं की सूची में, Google Cloud Pub/Sub देखें:

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

ऑडिट लॉग की जांच करना
ट्रिगर सेट अप करने के लिए ज़रूरी पैरामीटर की पहचान करने का तरीका जानने के लिए, कोई कार्रवाई करें.
उदाहरण के लिए, Pub/Sub विषय बनाएं:
gcloud pubsub topics create cre-gke-topic1
अब देखते हैं कि इस अपडेट से किस तरह का ऑडिट लॉग जनरेट हुआ. Cloud Console में, सबसे ऊपर बाईं ओर मौजूद मेन्यू से Logging > Logs Viewer चुनें.
Query Builder, में जाकर, Cloud Pub/Sub Topic को चुनें और Add पर क्लिक करें:

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

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 सेवा के लॉग देखे जाते हैं, तो आपको मिला हुआ इवेंट दिखेगा:

ट्रिगर और विषयों को मिटाना
अगर आपको ट्रिगर की टेस्टिंग नहीं करनी है, तो उसे मिटाया जा सकता है:
gcloud beta events triggers delete trigger-auditlog
इन विषयों को भी मिटाएं:
gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2
13. Cloud Storage के लिए इवेंट ट्रिगर बनाना
Cloud Storage से इवेंट सुनने के लिए, ट्रिगर सेट अप करें.
बकेट बनाना
सबसे पहले, Cloud Run सेवा के लिए डिप्लॉय किए गए क्षेत्र में ही Cloud Storage बकेट बनाएं. 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 सेवा के लॉग देखे जाते हैं, तो आपको मिला हुआ इवेंट दिखेगा:

ट्रिगर मिटाना
अगर आपको ट्रिगर की टेस्टिंग नहीं करनी है, तो उसे मिटाया जा सकता है:
gcloud beta events triggers delete trigger-storage
14. Cloud Scheduler के लिए इवेंट ट्रिगर बनाना
Cloud Scheduler से इवेंट सुनने के लिए, ट्रिगर सेट अप करें.
App Engine ऐप्लिकेशन बनाना
फ़िलहाल, Cloud Scheduler का इस्तेमाल करने के लिए उपयोगकर्ताओं को 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
शेड्यूलर बनाने के लिए, Cloud Scheduler की कोई जगह चुनें:
export SCHEDULER_LOCATION=europe-west1
एक ऐसा ट्रिगर बनाएं जो Google Cloud Scheduler में हर मिनट में एक जॉब बनाएगा और टारगेट सेवा को कॉल करेगा:
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. कस्टम इवेंट (ब्रोकर एंडपॉइंट)
कोडलैब के इस हिस्से में, Broker का इस्तेमाल करके कस्टम इवेंट बनाए और इस्तेमाल किए जाएंगे.
इवेंट जनरेट करने के लिए, कर्ल पॉड बनाना
इवेंट आम तौर पर प्रोग्राम के ज़रिए बनाए जाते हैं. हालांकि, इस चरण में आपको 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 नाम का पॉड दिखेगा. इसमें Status=Running होगा:curl
kubectl get pod curl -n ${NAMESPACE}
ट्रिगर बनाना
आपको किसी खास CloudEvents टाइप (इस मामले में alpha-type) के लिए फ़िल्टर के साथ ट्रिगर बनाना होगा. ध्यान दें कि CloudEvents एट्रिब्यूट और एक्सटेंशन की किसी भी संख्या पर, सटीक मिलान फ़िल्टर करने की सुविधा काम करती है. अगर आपके फ़िल्टर में कई एट्रिब्यूट सेट किए गए हैं, तो ट्रिगर को फ़िल्टर करने के लिए, इवेंट में सभी एट्रिब्यूट होने चाहिए. इसके उलट, अगर आपने कोई फ़िल्टर नहीं चुना है, तो आपकी सेवा को सभी इवेंट मिलेंगे.
ट्रिगर बनाएं:
gcloud beta events triggers create trigger-custom \
--namespace ${NAMESPACE} \
--target-service ${SERVICE_NAME} \
--type=alpha-type \
--custom-type
ट्रिगर की जांच करना
सभी ट्रिगर की सूची बनाएं, ताकि यह पुष्टि की जा सके कि ट्रिगर सही तरीके से बनाया गया है:
gcloud beta events triggers list
ब्रोकर को एचटीटीपी अनुरोध भेजकर, एक इवेंट बनाएं. नीचे दिए गए कमांड को चलाकर, ब्रोकर यूआरएल को याद रखें:
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
आपने पॉड में SSH किया है. अब आपके पास एचटीटीपी अनुरोध करने का विकल्प है. आपको नीचे दी गई सूचना दिखेगी:
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 की मदद से SSH सेशन से बाहर निकलना
पुष्टि करें कि पब्लिश किया गया इवेंट भेजा गया है. इसके लिए, 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. बधाई हो!
कोडलैब पूरा करने के लिए बधाई.
हमने क्या-क्या कवर किया है
- Cloud Run for Anthos के लिए इवेंट का लॉन्ग टर्म विज़न
- Cloud Run for Anthos के लिए इवेंट की मौजूदा स्थिति
- Cloud Run सिंक बनाना
- Cloud Pub/Sub के लिए इवेंट ट्रिगर बनाना
- ऑडिट लॉग के लिए इवेंट ट्रिगर बनाना
- Cloud Storage के लिए इवेंट ट्रिगर बनाना
- Cloud Scheduler के लिए इवेंट ट्रिगर बनाना
- कस्टम इवेंट जनरेट करना और उनका इस्तेमाल करना