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

1. परिचय

6a5cf23c8e20491f.png

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 के लिए इवेंट की सुविधा, पैकेज किए गए या ऐप्लिकेशन से बनाए गए इवेंट सोर्स से, क्लस्टर पर और क्लस्टर से बाहर के उपभोक्ताओं को भरोसेमंद, सुरक्षित, और बड़े पैमाने पर एसिंक्रोनस इवेंट डिलीवर करने की सुविधा देती है.

ce389bcafba6d669.png

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. मौजूदा स्थिति

यह झलक, पहला वर्शन है. इसमें लंबे समय तक काम करने वाली सुविधाओं का शुरुआती सेट उपलब्ध कराया गया है.

b1dd0d8a73185b95.png

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

  1. 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 से इवेंट इस्तेमाल करने के लिए, बेहतरीन सहायता उपलब्ध है. हम इस नेटवर्क में और भी बेहतर सोर्स जोड़ते रहेंगे. इसके लिए, हम लोगों के अनुभव और उनके सुझाव/राय या शिकायत से मिली जानकारी का इस्तेमाल करेंगे.
  1. एंड-यूज़र ऐप्लिकेशन और सेवाओं को, नेमस्पेस के स्कोप वाले क्लस्टर-लोकल ब्रोकर यूआरएल पर पब्लिश करके कस्टम इवेंट भेजने की अनुमति देता है.

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

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

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

हम GA और इसके बाद भी, आपको बेहतर सुविधाएं देते रहेंगे.

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 Console में, सबसे ऊपर दाईं ओर मौजूद टूलबार पर मौजूद Cloud Shell आइकॉन पर क्लिक करें:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 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 इंस्टेंस के लॉग सेक्शन में देखा जा सकता है:

9526909a06c6d4f4.png

ध्यान दें कि 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 देखें:

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

aff3b2e7ad05c75d.png

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

अगर आपको ट्रिगर की टेस्टिंग नहीं करनी है, तो उसे मिटाया जा सकता है:

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 के लिए इवेंट ट्रिगर बनाना
  • कस्टम इवेंट जनरेट करना और उनका इस्तेमाल करना