অ্যান্থোস কোডল্যাবের জন্য ক্লাউড রানের ইভেন্ট

1. ভূমিকা

6a5cf23c8e20491f.png

ক্লাউড রান আপনাকে সম্পূর্ণরূপে পরিচালিত পরিবেশে স্টেটলেস কন্টেইনার চালানোর অনুমতি দেয়। এটি ওপেন-সোর্স Knative থেকে তৈরি করা হয়েছে, যা আপনাকে ক্লাউড রানের মাধ্যমে সম্পূর্ণরূপে পরিচালিত বা আপনার Google কুবারনেটস ইঞ্জিন ক্লাস্টারে ক্লাউড রান ফর অ্যান্থোস-এর সাথে আপনার কন্টেনারগুলি চালানোর জন্য বেছে নিতে দেয়।

অ্যান্থোসের জন্য ক্লাউড রানের ইভেন্টগুলি বিভিন্ন উত্স থেকে ইভেন্টগুলির সাথে ক্লাউড রান পরিষেবাগুলিকে সংযুক্ত করা সহজ করে তোলে৷ এটি আপনাকে ইভেন্ট-চালিত আর্কিটেকচার তৈরি করতে দেয় যেখানে মাইক্রোসার্ভিসগুলি শিথিলভাবে সংযুক্ত এবং বিতরণ করা হয়। এটি আপনার জন্য ইভেন্ট ইনজেশন, ডেলিভারি, নিরাপত্তা, অনুমোদন, এবং ত্রুটি-হ্যান্ডলিং এর যত্ন নেয় যা বিকাশকারীর তত্পরতা এবং অ্যাপ্লিকেশন স্থিতিস্থাপকতা উন্নত করে।

এই কোডল্যাবে, আপনি অ্যান্থোসের জন্য ক্লাউড রানের জন্য ইভেন্টস সম্পর্কে শিখবেন। আরও নির্দিষ্টভাবে, আপনি ক্লাউড পাব/সাব, অডিট লগ, ক্লাউড স্টোরেজ, ক্লাউড শিডিউলার এবং কাস্টম ইভেন্টগুলি কীভাবে উত্পাদন/ব্যবহার করবেন তা থেকে ইভেন্টগুলি শুনবেন।

আপনি কি শিখবেন

  • অ্যান্থোসের জন্য ক্লাউড রানের জন্য ইভেন্টগুলির দীর্ঘমেয়াদী দৃষ্টিভঙ্গি
  • অ্যান্থোসের জন্য ক্লাউড রানের ইভেন্টের বর্তমান অবস্থা
  • একটি ক্লাউড রান সিঙ্ক তৈরি করুন
  • ক্লাউড পাব/সাবের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • ক্লাউড স্টোরেজের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • ক্লাউড শিডিউলারের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • কাস্টম ইভেন্টগুলি উত্পাদন এবং গ্রাস করুন

2. দীর্ঘমেয়াদী দৃষ্টি

যেহেতু আমরা সার্ভারহীন আর্কিটেকচার গ্রহণ করি, ইভেন্টগুলি কীভাবে ডি-কাপল্ড মাইক্রোসার্ভিস যোগাযোগ করে তার একটি অবিচ্ছেদ্য অংশ হয়ে ওঠে। ক্লাউড রান ফর অ্যান্থোসের জন্য ইভেন্টগুলি ইভেন্টগুলিকে ক্লাউড রান ফর অ্যান্থোস অফার করার প্রথম-শ্রেণীর নাগরিক করে তোলে, যাতে ইভেন্ট-চালিত সার্ভারহীন অ্যাপ্লিকেশন তৈরি করা সহজ হয়।

অ্যান্থোসের জন্য ক্লাউড রানের ইভেন্টগুলি প্যাকেজ করা বা অ্যাপ-তৈরি ইভেন্ট উত্স থেকে অন-ক্লাস্টার এবং অফ-ক্লাস্টার গ্রাহকদের কাছে নির্ভরযোগ্য, সুরক্ষিত এবং মাপযোগ্য অ্যাসিঙ্ক্রোনাস ইভেন্ট ডেলিভারি সক্ষম করে।

ce389bcafba6d669.png

গুগল ক্লাউড উত্স

ইভেন্ট সোর্স যা Google ক্লাউডের মালিকানাধীন পণ্য

গুগল সূত্র

ইভেন্ট উত্সগুলি যেগুলি Google-এর মালিকানাধীন পণ্য যেমন Gmail, Hangouts, Android ব্যবস্থাপনা এবং আরও অনেক কিছু৷

কাস্টম সূত্র

ইভেন্ট উত্সগুলি যেগুলি Google-এর মালিকানাধীন পণ্য নয় এবং শেষ ব্যবহারকারীরা নিজেরাই তৈরি করেছেন৷ এগুলি হতে পারে ব্যবহারকারী-উন্নত Knative উত্স বা ক্লাস্টারে চলমান অন্য কোনও অ্যাপ যা একটি ক্লাউড ইভেন্ট তৈরি করতে পারে।

তৃতীয় পক্ষের সূত্র

ইভেন্ট সোর্স যা Google-এর মালিকানাধীন বা শেষ-ব্যবহারকারীর মালিকানাধীন নয়। এর মধ্যে রয়েছে জনপ্রিয় ইভেন্ট উত্স যেমন Github, SAP, Datadog, Pagerduty, ইত্যাদি যেগুলি তৃতীয় পক্ষের প্রদানকারী, অংশীদার বা OSS সম্প্রদায়ের মালিকানাধীন এবং রক্ষণাবেক্ষণ করে।

ক্রস-সার্ভিস ইন্টারঅপারেবিলিটির জন্য ইভেন্টগুলিকে CloudEvents v1.0 ফর্ম্যাটে স্বাভাবিক করা হয়। CloudEvents হল একটি বিক্রেতা-নিরপেক্ষ ওপেন স্পেক যা সাধারণ ফরম্যাটে ইভেন্ট ডেটা বর্ণনা করে, যা পরিষেবা, প্ল্যাটফর্ম এবং সিস্টেম জুড়ে আন্তঃঅপারেবিলিটি সক্ষম করে।

ক্লাউড রানের জন্য ইভেন্টগুলি Knative ইভেন্টিংয়ের সাথে সামঞ্জস্যপূর্ণ এবং অন্যান্য Knative-ভিত্তিক বাস্তবায়নে এবং থেকে পাত্রে বহনযোগ্যতার অনুমতি দেয়। ইভেন্ট ভোক্তাদের সাথে ইভেন্ট প্রযোজকদের ঘোষণামূলকভাবে ওয়্যারিং করার জন্য এটি একটি সামঞ্জস্যপূর্ণ, ক্লাউড-অজ্ঞেয়মূলক কাঠামো প্রদান করে।

3. বর্তমান অবস্থা

এই পূর্বরূপ হল প্রথম সংস্করণ যা দীর্ঘমেয়াদী কার্যকারিতার একটি প্রাথমিক সেট সরবরাহ করে।

b1dd0d8a73185b95.png

ব্যবহারকারীদের ইভেন্ট-চালিত সার্ভারহীন অ্যাপ্লিকেশন তৈরি করতে সক্ষম করার জন্য, আমাদের প্রাথমিক ফোকাস হল দুটি ভাঁজ:

  1. Google ক্লাউড উত্সগুলির একটি বিস্তৃত ইকোসিস্টেম প্রদান করুন যা অ্যান্থোস ক্লাস্টারে ক্লাউড রান পরিষেবাগুলিকে Google ক্লাউড পরিষেবাগুলির ইভেন্টগুলিতে প্রতিক্রিয়া জানাতে সক্ষম করে৷
  • শুরুতে, Google ক্লাউড সোর্স থেকে ইভেন্টগুলি ক্লাউড অডিট লগ (CAL) এর মাধ্যমে বিতরণ করা হয়, যা ইভেন্ট উত্সগুলির বিস্তৃতি সক্ষম করে৷ এই উত্সগুলি থেকে ইভেন্ট ডেলিভারির বিলম্ব এবং প্রাপ্যতা ক্লাউড অডিট লগগুলির সাথে আবদ্ধ৷ যখনই একটি Google ক্লাউড উত্স থেকে একটি ইভেন্ট প্রকাশিত হয়, একটি সংশ্লিষ্ট ক্লাউড অডিট লগ এন্ট্রি তৈরি করা হয়৷
  • ক্লাউড অডিট লগের পাশাপাশি, ক্লাউড স্টোরেজ, ক্লাউড পাব/সাব, এবং ক্লাউড শিডিউলার থেকে ইভেন্টগুলি গ্রহণ করার জন্য প্রথম শ্রেণীর সমর্থন রয়েছে৷ আমরা ব্যবহারকারীর ভ্রমণ এবং প্রতিক্রিয়া থেকে আরও শিখতে পারার সাথে সাথে আরও প্রথম-শ্রেণীর উত্স সহ উত্সগুলির এই ইকোসিস্টেমটি প্রসারিত করতে থাকব৷
  1. একটি নেমস্পেস-স্কোপড ক্লাস্টার-লোকাল ব্রোকার url-এ প্রকাশ করে কাস্টম ইভেন্টগুলি নির্গত করতে শেষ-ব্যবহারকারী অ্যাপ্লিকেশন এবং পরিষেবাগুলিকে সক্ষম করুন৷

অন্তর্নিহিত ডেলিভারি মেকানিজম ক্লাউড পাব/সাব বিষয় এবং গ্রাহকদের প্রকল্পে দৃশ্যমান সদস্যতা ব্যবহার করে। তাই বৈশিষ্ট্যটি ক্লাউড পাব/সাবের মতো একই ডেলিভারি গ্যারান্টি প্রদান করে।

ইভেন্ট ট্রিগার ইভেন্টগুলিতে সদস্যতা নেওয়ার একটি উপায় সরবরাহ করে যাতে ট্রিগার ফিল্টারের সাথে মিলে যাওয়া ইভেন্টগুলি গন্তব্যে (বা সিঙ্ক) পৌঁছে দেওয়া হয় যেটি ট্রিগার নির্দেশ করে।

ক্রস সার্ভিস ইন্টারঅপারেবিলিটির জন্য সমস্ত ইভেন্ট ক্লাউড ইভেন্ট v1.0 ফর্ম্যাটে বিতরণ করা হয়।

আমরা GA এবং তার পরেও সমস্ত উপায়ে পুনরাবৃত্তিমূলক পদ্ধতিতে আরও মূল্য সরবরাহ করতে থাকব।

4. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • প্রকল্পের নাম এই প্রকল্পের জন্য আপনার প্রদর্শন নাম. যতক্ষণ না আপনি এটির নামকরণের নিয়মগুলি অনুসরণ করেন, আপনি যা চান তা ব্যবহার করতে পারেন এবং যেকোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রকল্পে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং অপরিবর্তনীয় (একবার সেট করা হলে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই আপনি যদি এটি পছন্দ না করেন তবে অন্য একটি এলোমেলো তৈরি করুন, অথবা, আপনি নিজের চেষ্টা করে দেখতে পারেন এটি উপলব্ধ কিনা। প্রকল্পটি তৈরি হয়ে গেলে এটি "হিমায়িত" হয়ে যায়।
  1. এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷

এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

GCP কনসোল থেকে উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

bce75f34b2c53987.png

পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:

f6ef2b5f13479f3a.png

এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার সমস্ত কাজ কেবল একটি ব্রাউজার দিয়ে করা যেতে পারে।

5. API সক্রিয় করুন, জোন এবং প্ল্যাটফর্ম সেট করুন

প্রজেক্ট আইডি সেটআপ করুন এবং আলফা উপাদান ইনস্টল করুন

ক্লাউড শেলের ভিতরে, 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

জোন এবং প্ল্যাটফর্ম সেট করুন

ক্লাউড রান ইভেন্ট সহ একটি GKE ক্লাস্টার তৈরি করার আগে, ক্লাস্টারের নাম, জোন এবং প্ল্যাটফর্ম সেট করুন। উদাহরণ হিসাবে, এখানে আমরা নাম এবং অঞ্চলটি events-cluster এবং europe-west1-b এ সেট করি এবং প্ল্যাটফর্ম হল gke,

ক্লাউড শেলে:

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. ক্লাউড রান ইভেন্ট সহ একটি 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. ক্লাউড রান ইভেন্ট সেটআপ করুন (কন্ট্রোল প্লেন)

ক্লাউড রান ইভেন্টগুলির একটি কন্ট্রোল প্লেন এবং একটি ডেটা প্লেন রয়েছে যা আলাদাভাবে সেট আপ করতে হবে৷ কন্ট্রোল প্লেন সেট আপ করতে:

ক্লাউড শেলে:

gcloud beta events init 

এটি ইভেন্টিং শুরু করবে এবং প্রয়োজনীয় অনেক পরিষেবা অ্যাকাউন্টও তৈরি করবে। পরিষেবা অ্যাকাউন্ট তৈরির জন্য অনুরোধ করা হলে আপনি 'হ্যাঁ' নির্বাচন করুন তা নিশ্চিত করুন৷

এই মুহুর্তে নিয়ন্ত্রণ সমতল সঠিকভাবে শুরু করা উচিত। আপনি একটি সঙ্গে চারটি শুঁটি দেখতে হবে

Running অবস্থা, cloud-run-events নেমস্পেসে 2 ( controller-xxx-xxx এবং webhook-xxx-xxx ) এবং 2 ( eventing-controller-xxx-xxx এবং eventing-webhook-xxx-xxx ) knative-eventing নামস্থানে . আপনি নিম্নলিখিত কমান্ডগুলি সম্পাদন করে চেক করতে পারেন:

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. ক্লাউড রান ইভেন্ট সেটআপ করুন (ডেটা প্লেন)

পরবর্তী ব্যবহারকারীর নামস্থানে ডেটা প্লেন সেট আপ করতে হয়। এটি পাব/সাব থেকে/এ পড়তে/লিখতে উপযুক্ত অনুমতি সহ একটি ব্রোকার তৈরি করে।

ক্লাউড শেলের ভিতরে, আপনি আপনার বস্তুর জন্য যে নামস্থান ব্যবহার করতে চান তার জন্য একটি 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. একটি ক্লাউড রান সিঙ্ক তৈরি করুন

একটি ইভেন্ট সিঙ্ক হিসাবে, একটি ক্লাউড রান পরিষেবা স্থাপন করুন যা এটি প্রাপ্ত ক্লাউড ইভেন্টের সামগ্রীগুলি লগ করে৷

আপনি Knative এর ইভেন্ট_ডিসপ্লে ব্যবহার করতে পারেন যা ইতিমধ্যেই কম্পাইল করা হয়েছে এবং এর কন্টেইনার ইমেজটি Knative রিলিজের অংশ হিসেবে তৈরি করা হয়েছে। আপনি event-display.yaml- এ কন্টেইনার ছবির বিশদ বিবরণ দেখতে পারেন:

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

ক্লাউড রানে স্থাপন করুন

ক্লাউড রানে আপনার কন্টেইনারাইজড অ্যাপ্লিকেশন স্থাপন করুন:

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

সফল হলে, কমান্ড লাইন পরিষেবা URL প্রদর্শন করে। আপনি এখন যেকোনো ব্রাউজার উইন্ডোতে পরিষেবা URLটি খুলে আপনার নিয়োজিত কন্টেইনারটি দেখতে পারেন৷

11. ক্লাউড পাব/সাবের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন৷

ইভেন্টগুলি পাওয়ার একটি উপায় হল ক্লাউড পাব/সাবের মাধ্যমে। কাস্টম অ্যাপ্লিকেশনগুলি ক্লাউড পাব/সাব-এ বার্তা প্রকাশ করতে পারে এবং এই বার্তাগুলি ক্লাউড রানের জন্য ইভেন্টগুলির মাধ্যমে Google ক্লাউড রান সিঙ্কগুলিতে বিতরণ করা যেতে পারে৷

একটি বিষয় তৈরি করুন

প্রথমে, একটি ক্লাউড পাব/সাব বিষয় তৈরি করুন। আপনি TOPIC_ID আপনার পছন্দের একটি অনন্য নাম দিয়ে প্রতিস্থাপন করতে পারেন:

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

একটি ট্রিগার তৈরি করুন

ট্রিগার তৈরি করার আগে, ক্লাউড পাব/সাব থেকে ইভেন্টগুলির জন্য একটি ট্রিগার তৈরি করতে আপনাকে যে প্যারামিটারগুলির প্রয়োজন হবে সে সম্পর্কে আরও বিস্তারিত জানুন:

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

ক্লাউড পাব/সাব বিষয়ে প্রকাশিত ইভেন্ট ফিল্টার করার জন্য একটি ট্রিগার তৈরি করুন আমাদের স্থাপন করা ক্লাউড রান পরিষেবাতে:

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"

আমরা যে ক্লাউড রান সিঙ্ক তৈরি করেছি তা ইনকামিং মেসেজের বডিতে লগ করে। আপনি এটি আপনার ক্লাউড রান উদাহরণের লগ বিভাগে দেখতে পারেন:

9526909a06c6d4f4.png

মনে রাখবেন যে "হ্যালো সেখানে" বেস64 এনকোড করা হবে কারণ এটি Pub/Sub দ্বারা পাঠানো হয়েছে এবং আপনি যদি পাঠানো আসল বার্তাটি দেখতে চান তবে আপনাকে এটি ডিকোড করতে হবে।

ট্রিগার মুছুন

ঐচ্ছিকভাবে, একবার পরীক্ষা করা হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন।

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

12. অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন৷

অডিট লগ থেকে ইভেন্ট শোনার জন্য আপনি একটি ট্রিগার সেট আপ করবেন। আরও নির্দিষ্টভাবে, আপনি অডিট লগগুলিতে পাব/সাব বিষয় তৈরির ইভেন্টগুলি সন্ধান করবেন।

অডিট লগ সক্রিয় করুন

একটি পরিষেবা থেকে ইভেন্টগুলি পেতে, আপনাকে অডিট লগগুলি সক্ষম করতে হবে৷ ক্লাউড কনসোল থেকে, উপরের বামদিকের মেনু থেকে IAM & Admin > Audit Logs নির্বাচন করুন। পরিষেবার তালিকায়, Google Cloud Pub/Sub চেক করুন:

97bd4b57c6a05fcc.png

ডানদিকে, নিশ্চিত করুন যে অ্যাডমিন, পড়ুন এবং লিখুন নির্বাচন করা হয়েছে। সংরক্ষণ ক্লিক করুন:

bec31b4f35fbcea.png

পরীক্ষা নিরীক্ষা লগ

কীভাবে প্যারামিটারগুলি সনাক্ত করতে হয় তা শিখতে আপনাকে একটি প্রকৃত ট্রিগার সেট আপ করতে হবে, একটি প্রকৃত অপারেশন সম্পাদন করুন৷

উদাহরণস্বরূপ, একটি পাব/সাব বিষয় তৈরি করুন:

gcloud pubsub topics create cre-gke-topic1

এখন, দেখা যাক এই আপডেটটি কী ধরনের অডিট লগ তৈরি করেছে। ক্লাউড কনসোল থেকে, উপরের বামদিকের মেনু থেকে 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 ক্লাউড উত্স থেকে ইভেন্টগুলির জন্য একটি ট্রিগার তৈরি করতে প্রয়োজনীয় প্যারামিটারগুলি সম্পর্কে আরও বিশদ পেতে পারেন:

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 মিনিট পর্যন্ত অপেক্ষা করুন৷ একবার প্রস্তুত হলে, এটি ফিল্টার করে ইভেন্ট তৈরি করবে এবং সেগুলিকে পরিষেবাতে পাঠাবে। আপনি এখন একটি ইভেন্ট ফায়ার করার জন্য প্রস্তুত৷

অন্য পাব/সাব টপিক তৈরি করুন, যেমন আপনি আগে করেছিলেন:

gcloud pubsub topics create cre-gke-topic2

আপনি যদি ক্লাউড কনসোলে ক্লাউড রান পরিষেবার লগগুলি পরীক্ষা করেন, আপনার প্রাপ্ত ইভেন্টটি দেখতে হবে:

aff3b2e7ad05c75d.png

ট্রিগার এবং বিষয় মুছুন

ঐচ্ছিকভাবে, একবার পরীক্ষা করা হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:

gcloud beta events triggers delete trigger-auditlog

এছাড়াও বিষয় মুছে দিন:

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

13. ক্লাউড স্টোরেজের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন

ক্লাউড স্টোরেজ থেকে ইভেন্ট শোনার জন্য আপনি একটি ট্রিগার সেট আপ করবেন।

একটি বালতি তৈরি করুন

প্রথমে, ক্লাউড রান পরিষেবার মতো একই অঞ্চলে একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন৷ আপনি আপনার পছন্দের একটি অনন্য নাম দিয়ে 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/

ক্লাউড স্টোরেজ অনুমতি সেটআপ করুন

একটি ট্রিগার তৈরি করার আগে, আপনাকে পাব/সাব-এ প্রকাশ করার জন্য ক্লাউড স্টোরেজ অনুমতির জন্য ডিফল্ট পরিষেবা অ্যাকাউন্ট দিতে হবে।

প্রথমে, আপনাকে সেই পরিষেবা অ্যাকাউন্টটি খুঁজে বের করতে হবে যা ক্লাউড স্টোরেজ পাব/সাব-এ প্রকাশ করতে ব্যবহার করে। আপনি পরিষেবা অ্যাকাউন্ট পেতে ক্লাউড স্টোরেজ পরিষেবা অ্যাকাউন্ট পাওয়ার ক্ষেত্রে বর্ণিত পদক্ষেপগুলি ব্যবহার করতে পারেন বা নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

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

তারপর, পাব/সাব-এ প্রকাশ করার জন্য সেই পরিষেবা অ্যাকাউন্টের অধিকার প্রদান করুন:

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

একটি ট্রিগার তৈরি করুন

আপনি এখন ক্লাউড স্টোরেজ ইভেন্টগুলির জন্য একটি ইভেন্ট ট্রিগার তৈরি করতে প্রস্তুত৷

ট্রিগারটি তৈরি করার জন্য আপনাকে যে প্যারামিটারগুলির প্রয়োজন হবে সে সম্পর্কে আপনি আরও বিশদ পেতে পারেন:

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 মিনিট পর্যন্ত অপেক্ষা করুন৷ একবার প্রস্তুত হলে, এটি ফিল্টার করে ইভেন্ট তৈরি করবে এবং সেগুলিকে পরিষেবাতে পাঠাবে।

আপনি এখন একটি ইভেন্ট ফায়ার করার জন্য প্রস্তুত৷

ক্লাউড স্টোরেজ বালতিতে একটি এলোমেলো ফাইল আপলোড করুন:

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

আপনি যদি ক্লাউড কনসোলে ক্লাউড রান পরিষেবার লগগুলি পরীক্ষা করেন, আপনার প্রাপ্ত ইভেন্টটি দেখতে হবে:

aff3b2e7ad05c75d.png

ট্রিগার মুছুন

ঐচ্ছিকভাবে, একবার পরীক্ষা করা হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:

gcloud beta events triggers delete trigger-storage

14. ক্লাউড শিডিউলারের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন

ক্লাউড শিডিউলার থেকে ইভেন্ট শোনার জন্য আপনি একটি ট্রিগার সেট আপ করবেন।

একটি অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন তৈরি করুন

ক্লাউড শিডিউলারের বর্তমানে একটি অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন তৈরি করতে ব্যবহারকারীদের প্রয়োজন৷ একটি অ্যাপ ইঞ্জিন অবস্থান চয়ন করুন এবং অ্যাপ তৈরি করুন:

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

একটি ট্রিগার তৈরি করুন

নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে আপনি Google ক্লাউড উত্স থেকে ইভেন্টগুলির জন্য একটি ট্রিগার তৈরি করতে প্রয়োজনীয় প্যারামিটারগুলি সম্পর্কে আরও বিশদ পেতে পারেন:

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

সময়সূচী তৈরি করতে একটি ক্লাউড শিডিউলার অবস্থান চয়ন করুন:

export SCHEDULER_LOCATION=europe-west1

একটি ট্রিগার তৈরি করুন যা Google ক্লাউড শিডিউলারে প্রতি মিনিটে কার্যকর করার জন্য একটি কাজ তৈরি করবে এবং লক্ষ্য পরিষেবাতে কল করবে:

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 মিনিট পর্যন্ত অপেক্ষা করুন৷ একবার প্রস্তুত হলে, এটি ফিল্টার করে ইভেন্ট তৈরি করবে এবং সেগুলিকে পরিষেবাতে পাঠাবে।

আপনি যদি ক্লাউড কনসোলে ক্লাউড রান পরিষেবার লগগুলি পরীক্ষা করেন তবে আপনার প্রাপ্ত ইভেন্টটি দেখতে হবে।

ট্রিগার মুছুন

ঐচ্ছিকভাবে, একবার পরীক্ষা করা হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:

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}

একটি ট্রিগার তৈরি করুন

আপনি নির্দিষ্ট ক্লাউড ইভেন্টস টাইপের (এই ক্ষেত্রে alpha-type ) আপনি নির্গত করবেন একটি ফিল্টার সহ একটি ট্রিগার তৈরি করবেন। মনে রাখবেন যে কোনো সংখ্যক ক্লাউড ইভেন্ট অ্যাট্রিবিউটের পাশাপাশি এক্সটেনশনে সঠিক মিল ফিল্টারিং সমর্থিত। যদি আপনার ফিল্টার একাধিক অ্যাট্রিবিউট সেট করে, তাহলে একটি ইভেন্টে ফিল্টার করার জন্য ট্রিগারের সমস্ত বৈশিষ্ট্য থাকতে হবে। বিপরীতভাবে, যদি আপনি একটি ফিল্টার নির্দিষ্ট না করেন তবে সমস্ত ইভেন্ট আপনার পরিষেবাতে প্রাপ্ত হবে।

ট্রিগার তৈরি করুন:

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

ট্রিগার পরীক্ষা করুন

ট্রিগার সফলভাবে তৈরি হয়েছে তা নিশ্চিত করতে সমস্ত ট্রিগারের তালিকা করুন:

gcloud beta events triggers list

ব্রোকারকে একটি HTTP অনুরোধ পাঠিয়ে একটি ইভেন্ট তৈরি করুন। নিম্নলিখিতগুলি চালিয়ে নিজেকে ব্রোকার URL মনে করিয়ে দিন:

kubectl get brokers -n ${NAMESPACE}

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

আপনি আগে তৈরি curl পডে SSH:

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

আপনি পডে SSHed করেছেন, এবং এখন একটি HTTP অনুরোধ করতে পারেন। নীচের মত একটি প্রম্পট প্রদর্শিত হবে:

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 সেশন থেকে প্রস্থান করুন

ক্লাউড রান সার্ভিসের লগগুলি দেখে প্রকাশিত ইভেন্টটি পাঠানো হয়েছে তা যাচাই করুন:

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

ট্রিগার মুছুন

ঐচ্ছিকভাবে, একবার পরীক্ষা করা হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:

gcloud beta events triggers delete trigger-custom

16. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন।

আমরা কভার করেছি কি

  • অ্যান্থোসের জন্য ক্লাউড রানের জন্য ইভেন্টগুলির দীর্ঘমেয়াদী দৃষ্টিভঙ্গি
  • অ্যান্থোসের জন্য ক্লাউড রানের ইভেন্টের বর্তমান অবস্থা
  • একটি ক্লাউড রান সিঙ্ক তৈরি করুন
  • ক্লাউড পাব/সাবের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • ক্লাউড স্টোরেজের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • ক্লাউড শিডিউলারের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
  • কাস্টম ইভেন্টগুলি উত্পাদন এবং গ্রাস করুন