১. ভূমিকা

ক্লাউড রান আপনাকে একটি সম্পূর্ণ পরিচালিত পরিবেশে স্টেটলেস কন্টেইনার চালানোর সুযোগ দেয়। এটি ওপেন-সোর্স Knative থেকে তৈরি, যা আপনাকে আপনার কন্টেইনারগুলো হয় ক্লাউড রানের মাধ্যমে সম্পূর্ণ পরিচালিতভাবে, অথবা ক্লাউড রান ফর অ্যানথোস ব্যবহার করে আপনার গুগল কুবারনেটিস ইঞ্জিন ক্লাস্টারে চালানোর বিকল্প দেয়।
ক্লাউড রান ফর অ্যানথোস-এর ইভেন্টস বিভিন্ন উৎস থেকে আসা ইভেন্টের সাথে ক্লাউড রান সার্ভিসগুলোকে সংযুক্ত করা সহজ করে তোলে। এটি আপনাকে ইভেন্ট-চালিত আর্কিটেকচার তৈরি করতে দেয়, যেখানে মাইক্রোসার্ভিসগুলো শিথিলভাবে সংযুক্ত এবং বিতরণকৃত থাকে। এটি আপনার জন্য ইভেন্ট গ্রহণ, বিতরণ, নিরাপত্তা, অনুমোদন এবং ত্রুটি-পরিচালনার দায়িত্বও পালন করে, যা ডেভেলপারদের কর্মদক্ষতা এবং অ্যাপ্লিকেশনের স্থিতিস্থাপকতা বৃদ্ধি করে।
এই কোডল্যাবে, আপনি ক্লাউড রান ফর অ্যানথোস-এর ইভেন্ট সম্পর্কে শিখবেন। আরও নির্দিষ্টভাবে বললে, আপনি ক্লাউড পাব/সাব, অডিট লগ, ক্লাউড স্টোরেজ, ক্লাউড শিডিউলার থেকে ইভেন্ট শুনবেন এবং কীভাবে কাস্টম ইভেন্ট তৈরি ও ব্যবহার করতে হয় তা শিখবেন।
আপনি যা শিখবেন
- ক্লাউড রান ফর অ্যানথোস-এর ইভেন্টগুলোর দীর্ঘমেয়াদী রূপকল্প
- ক্লাউড রান ফর অ্যানথোস-এর ঘটনাবলীর বর্তমান অবস্থা
- একটি ক্লাউড রান সিঙ্ক তৈরি করুন
- ক্লাউড পাব/সাব-এর জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- ক্লাউড স্টোরেজের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- ক্লাউড শিডিউলারের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- কাস্টম ইভেন্ট তৈরি এবং ব্যবহার করুন
২. দীর্ঘমেয়াদী দৃষ্টিভঙ্গি
আমরা যখন সার্ভারলেস আর্কিটেকচার গ্রহণ করি, তখন ডিকাপলড মাইক্রোসার্ভিসগুলোর যোগাযোগের একটি অবিচ্ছেদ্য অংশ হয়ে ওঠে ইভেন্ট । ক্লাউড রান ফর অ্যানথোস-এর জন্য ইভেন্টস ফিচারটি ইভেন্টকে এই অফারের একটি প্রধান অংশ করে তোলে, যার ফলে ইভেন্ট-চালিত সার্ভারলেস অ্যাপ্লিকেশন তৈরি করা সহজ হয়।
ক্লাউড রান ফর অ্যানথোস-এর ইভেন্টস, প্যাকেজড বা অ্যাপ-নির্মিত ইভেন্ট সোর্স থেকে অন-ক্লাস্টার এবং অফ-ক্লাস্টার কনজিউমারদের কাছে নির্ভরযোগ্য, সুরক্ষিত এবং স্কেলেবল অ্যাসিঙ্ক্রোনাস ইভেন্ট ডেলিভারি সক্ষম করে।

গুগল ক্লাউড উৎস | ইভেন্টের উৎস যা গুগল ক্লাউডের মালিকানাধীন পণ্য |
গুগল সূত্র | ইভেন্টের উৎসগুলো হলো গুগলের মালিকানাধীন পণ্য, যেমন জিমেইল, হ্যাংআউটস, অ্যান্ড্রয়েড ম্যানেজমেন্ট এবং আরও অনেক কিছু। |
কাস্টম উৎস | ইভেন্টের উৎসগুলো গুগলের নিজস্ব পণ্য নয় এবং ব্যবহারকারীরা নিজেরাই তৈরি করেন। এগুলো হতে পারে ব্যবহারকারী-নির্মিত Knative Sources অথবা ক্লাস্টারে চলমান অন্য যেকোনো অ্যাপ যা একটি ক্লাউড ইভেন্ট তৈরি করতে পারে। |
তৃতীয় পক্ষের উৎস | যেসব ইভেন্ট সোর্স গুগলের মালিকানাধীন নয় বা ব্যবহারকারীর মালিকানাধীনও নয়। এর মধ্যে গিটহাব, এসএপি, ডেটাডগ, পেজারডিউটি ইত্যাদির মতো জনপ্রিয় ইভেন্ট সোর্সগুলো অন্তর্ভুক্ত, যেগুলো তৃতীয় পক্ষের সরবরাহকারী, অংশীদার বা ওপেন সোর্স সফটওয়্যার কমিউনিটি দ্বারা পরিচালিত ও রক্ষণাবেক্ষণ করা হয়। |
বিভিন্ন পরিষেবার মধ্যে আন্তঃকার্যক্ষমতা নিশ্চিত করার জন্য ইভেন্টগুলোকে ক্লাউডইভেন্টস ভি১.০ ফরম্যাটে স্বাভাবিক করা হয়। ক্লাউডইভেন্টস হলো একটি বিক্রেতা-নিরপেক্ষ উন্মুক্ত স্পেসিফিকেশন, যা সাধারণ ফরম্যাটে ইভেন্ট ডেটা বর্ণনা করে এবং বিভিন্ন পরিষেবা, প্ল্যাটফর্ম ও সিস্টেমের মধ্যে আন্তঃকার্যক্ষমতা সক্ষম করে।
Events for Cloud Run , Knative Eventing-এর সাথে সঙ্গতিপূর্ণ এবং অন্যান্য Knative-ভিত্তিক ইমপ্লিমেন্টেশন থেকে ও সেগুলোতে কন্টেইনারের বহনযোগ্যতা অনুমোদন করে। এটি ডিক্লারেটিভভাবে ইভেন্ট প্রডিউসারদের সাথে ইভেন্ট কনজিউমারদের সংযুক্ত করার জন্য একটি সামঞ্জস্যপূর্ণ, ক্লাউড-অ্যাগনস্টিক ফ্রেমওয়ার্ক প্রদান করে।
৩. বর্তমান অবস্থা
এই প্রিভিউটি হলো প্রথম সংস্করণ, যা দীর্ঘমেয়াদী কার্যকারিতার একটি প্রাথমিক সেট প্রদান করে।

ব্যবহারকারীদের ইভেন্ট-চালিত সার্ভারলেস অ্যাপ্লিকেশন তৈরি করতে সক্ষম করার জন্য, আমাদের প্রাথমিক লক্ষ্য দুটি:
- গুগল ক্লাউড সোর্সের একটি বিস্তৃত ইকোসিস্টেম প্রদান করুন, যা অ্যান্থোস ক্লাস্টারে ক্লাউড রান সার্ভিসগুলোকে গুগল ক্লাউড সার্ভিসগুলো থেকে আসা ইভেন্টগুলোতে সাড়া দিতে সক্ষম করে।
- প্রাথমিকভাবে, গুগল ক্লাউড সোর্স থেকে ইভেন্টগুলো ক্লাউড অডিট লগ (CAL)-এর মাধ্যমে সরবরাহ করা হয়, যা বিভিন্ন ধরনের ইভেন্ট সোর্সকে সক্ষম করে। এই সোর্সগুলো থেকে ইভেন্ট সরবরাহের ল্যাটেন্সি এবং অ্যাভেইলেবিলিটি ক্লাউড অডিট লগের সাথে সংযুক্ত থাকে। যখনই কোনো গুগল ক্লাউড সোর্স থেকে কোনো ইভেন্ট প্রকাশিত হয়, তখন একটি সংশ্লিষ্ট ক্লাউড অডিট লগ এন্ট্রি তৈরি করা হয়।
- ক্লাউড অডিট লগ-এর পাশাপাশি, ক্লাউড স্টোরেজ, ক্লাউড পাব/সাব এবং ক্লাউড শিডিউলার থেকে ইভেন্ট গ্রহণ করার জন্য প্রথম শ্রেণীর সাপোর্ট রয়েছে। ব্যবহারকারীদের অভিজ্ঞতা ও মতামত থেকে আমরা যত বেশি শিখব, ততই এই সোর্স ইকোসিস্টেমকে আরও প্রথম শ্রেণীর সোর্স দিয়ে প্রসারিত করতে থাকব।
- একটি নেমস্পেস-স্কোপড ক্লাস্টার-লোকাল ব্রোকার ইউআরএল-এ পাবলিশ করার মাধ্যমে এন্ড-ইউজার অ্যাপ্লিকেশন এবং সার্ভিসগুলোকে কাস্টম ইভেন্ট নির্গত করতে সক্ষম করুন।
এর অন্তর্নিহিত ডেলিভারি প্রক্রিয়াটি ক্লাউড পাব/সাব টপিক এবং সাবস্ক্রিপশন ব্যবহার করে, যা গ্রাহকদের প্রজেক্টে দৃশ্যমান থাকে। ফলে, এই ফিচারটি ক্লাউড পাব/সাব-এর মতোই ডেলিভারির নিশ্চয়তা প্রদান করে।
ইভেন্ট ট্রিগার ইভেন্ট সাবস্ক্রাইব করার একটি উপায় প্রদান করে, যার ফলে ট্রিগার ফিল্টারের সাথে মিলে যাওয়া ইভেন্টগুলো ট্রিগার দ্বারা নির্দেশিত গন্তব্যে (বা সিঙ্কে) পৌঁছে দেওয়া হয়।
বিভিন্ন পরিষেবার মধ্যে আন্তঃকার্যক্ষমতা নিশ্চিত করার জন্য সমস্ত ইভেন্ট ক্লাউড ইভেন্টস ভি১.০ ফরম্যাটে সরবরাহ করা হয়।
আমরা GA এবং তার পরেও পুনরাবৃত্তিমূলক পদ্ধতিতে আরও বেশি মূল্য প্রদান করতে থাকব।
৪. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিতে পরিবেশ সেটআপ
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে কোনো Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের জন্য আপনার প্রদর্শিত নাম। এর নামকরণের নিয়মাবলী অনুসরণ করলে, আপনি নিজের পছন্দমতো যেকোনো নাম ব্যবহার করতে পারেন এবং যেকোনো সময়ে তা হালনাগাদ করতে পারেন।
- সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে প্রজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং এটি অপরিবর্তনীয় (একবার সেট করা হলে পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়), তাই যদি এটি আপনার পছন্দ না হয়, তবে এলোমেলোভাবে অন্য একটি তৈরি করুন, অথবা, আপনি নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এরপর প্রজেক্ট তৈরি হয়ে গেলে এটি "স্থির" হয়ে যায়।
- এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।
এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল শুরু করুন
যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি গুগল ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।
GCP কনসোল থেকে উপরের ডানদিকের টুলবারে থাকা ক্লাউড শেল আইকনে ক্লিক করুন:

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার সমস্ত কাজ শুধুমাত্র একটি ব্রাউজার দিয়েই করা যাবে।
৫. এপিআই সক্রিয় করুন, জোন এবং প্ল্যাটফর্ম সেট করুন।
প্রজেক্ট আইডি সেটআপ করুন এবং আলফা কম্পোনেন্ট ইনস্টল করুন
ক্লাউড শেলের ভিতরে, 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,
ক্লাউড শেলে:
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
৬. ক্লাউড রান ইভেন্টস ব্যবহার করে একটি 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
৭. ক্লাউড রান ইভেন্ট সেটআপ করুন (কন্ট্রোল প্লেন)
ক্লাউড রান ইভেন্টসের একটি কন্ট্রোল প্লেন এবং একটি ডেটা প্লেন থাকে, যা আলাদাভাবে সেট আপ করতে হয়। কন্ট্রোল প্লেন সেট আপ করতে:
ক্লাউড শেলে:
gcloud beta events init
এটি ইভেন্টিং শুরু করবে এবং প্রয়োজনীয় কয়েকটি সার্ভিস অ্যাকাউন্টও তৈরি করবে। সার্ভিস অ্যাকাউন্ট তৈরির জন্য অনুরোধ করা হলে, 'হ্যাঁ' নির্বাচন করতে ভুলবেন না।
এই পর্যায়ে কন্ট্রোল প্লেনটি সঠিকভাবে ইনিশিয়ালাইজ হয়ে যাওয়ার কথা। আপনি চারটি পড দেখতে পাবেন, যেগুলোর সাথে একটি
cloud-run-events নেমস্পেসে ২টি ( controller-xxx-xxx এবং webhook-xxx-xxx ) এবং knative-eventing নেমস্পেসে ২টি ( eventing-controller-xxx-xxx এবং eventing-webhook-xxx-xxx ) Running । আপনি নিম্নলিখিত কমান্ডগুলো চালিয়ে তা যাচাই করতে পারেন:
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
৮. ক্লাউড রান ইভেন্ট সেটআপ করুন (ডেটা প্লেন)
এরপর ইউজার নেমস্পেসগুলিতে ডেটা প্লেন সেট আপ করতে হবে। এর মাধ্যমে পাব/সাব থেকে পড়া ও লেখার জন্য উপযুক্ত অনুমতিসহ একটি ব্রোকার তৈরি হয়।
ক্লাউড শেলের ভিতরে, আপনার অবজেক্টগুলোর জন্য যে নেমস্পেসটি ব্যবহার করতে চান, তার জন্য একটি 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
৯. ঘটনা আবিষ্কার
আপনি জানতে পারবেন নিবন্ধিত উৎসগুলো কী, সেগুলো কী ধরনের ইভেন্ট নির্গত করতে পারে এবং সেগুলো গ্রহণ করার জন্য কীভাবে ট্রিগার কনফিগার করতে হয়।
বিভিন্ন ধরনের ইভেন্টের তালিকা দেখতে:
gcloud beta events types list
প্রতিটি ইভেন্টের ধরণ সম্পর্কে আরও তথ্য পেতে:
gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished
১০. একটি ক্লাউড রান সিঙ্ক তৈরি করুন
ইভেন্ট সিঙ্ক হিসেবে একটি ক্লাউড রান সার্ভিস স্থাপন করুন, যা প্রাপ্ত ক্লাউডইভেন্টগুলোর বিষয়বস্তু লগ করে রাখে।
আপনি Knative-এর event_display ব্যবহার করতে পারেন, যা 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
সফল হলে, কমান্ড লাইনে সার্ভিস ইউআরএলটি প্রদর্শিত হয়। এখন আপনি যেকোনো ব্রাউজার উইন্ডোতে সার্ভিস ইউআরএলটি খুলে আপনার ডেপ্লয় করা কন্টেইনারটি ভিজিট করতে পারেন।
১১. ক্লাউড পাব/সাব-এর জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন।
ইভেন্ট গ্রহণ করার একটি উপায় হলো ক্লাউড পাব/সাব। কাস্টম অ্যাপ্লিকেশনগুলো ক্লাউড পাব/সাব-এ মেসেজ প্রকাশ করতে পারে এবং এই মেসেজগুলো ইভেন্টস ফর ক্লাউড রান-এর মাধ্যমে গুগল ক্লাউড রান সিঙ্কগুলোতে পৌঁছে দেওয়া যায়।
একটি বিষয় তৈরি করুন
প্রথমে, একটি ক্লাউড পাব/সাব টপিক তৈরি করুন। আপনি 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
ট্রিগার তৈরির প্রক্রিয়াটি কার্যকর হতে এবং ইভেন্ট ফিল্টার করা শুরু হতে আপনাকে ১০ মিনিট পর্যন্ত অপেক্ষা করতে হতে পারে।
একটি কাস্টম অ্যাপ্লিকেশন থেকে বার্তা পাঠানোর প্রক্রিয়া অনুকরণ করতে, আপনি gcloud ব্যবহার করে একটি ইভেন্ট ফায়ার করতে পারেন:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
আমাদের তৈরি করা ক্লাউড রান সিঙ্কটি আগত বার্তার মূল অংশ লগ করে রাখে। আপনি আপনার ক্লাউড রান ইনস্ট্যান্সের লগস বিভাগে এটি দেখতে পারেন:

মনে রাখবেন যে, পাব/সাব (Pub/Sub) দ্বারা পাঠানোর কারণে "Hello there" বার্তাটি বেস৬৪ (base64) এনকোড করা থাকবে এবং মূল বার্তাটি দেখতে চাইলে আপনাকে এটি ডিকোড করতে হবে।
ট্রিগারটি মুছে ফেলুন
ঐচ্ছিকভাবে, পরীক্ষা সম্পন্ন হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন।
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
১২. অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
আপনি অডিট লগ থেকে ইভেন্ট শোনার জন্য একটি ট্রিগার সেট আপ করবেন। আরও নির্দিষ্টভাবে বললে, আপনি অডিট লগে পাব/সাব টপিক তৈরির ইভেন্টগুলো খুঁজবেন।
অডিট লগ সক্রিয় করুন
কোনো পরিষেবা থেকে ইভেন্ট পেতে হলে, আপনাকে অডিট লগ চালু করতে হবে। ক্লাউড কনসোল থেকে, উপরের বাম দিকের মেনু থেকে IAM & Admin > Audit Logs নির্বাচন করুন। পরিষেবাগুলির তালিকায়, Google Cloud Pub/Sub চেক করুন:

ডানদিকে, অ্যাডমিন, রিড এবং রাইট নির্বাচিত আছে কিনা তা নিশ্চিত করুন। সেভ-এ ক্লিক করুন:

টেস্ট অডিট লগ
একটি প্রকৃত ট্রিগার সেট আপ করার জন্য প্রয়োজনীয় প্যারামিটারগুলো কীভাবে শনাক্ত করতে হয় তা শিখতে, একটি প্রকৃত অপারেশন সম্পাদন করুন।
উদাহরণস্বরূপ, একটি পাব/সাব টপিক তৈরি করুন:
gcloud pubsub topics create cre-gke-topic1
এখন, চলুন দেখি এই আপডেটটি কী ধরনের অডিট লগ তৈরি করেছে। ক্লাউড কনসোল থেকে, উপরের বাম দিকের মেনু থেকে Logging > Logs Viewer নির্বাচন করুন।
Query Builder, Cloud Pub/Sub Topic নির্বাচন করুন এবং Add ক্লিক করুন:

একবার কোয়েরিটি চালালে, আপনি পাব/সাব টপিকগুলোর লগ দেখতে পাবেন এবং সেগুলোর মধ্যে একটি হবে google.pubsub.v1.Publisher.CreateTopic :

serviceName , methodName এবং resourceName নোট করুন। ট্রিগার তৈরি করার সময় আমরা এগুলো ব্যবহার করব।
একটি ট্রিগার তৈরি করুন
আপনি এখন অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করতে প্রস্তুত।
গুগল ক্লাউড উৎস থেকে আসা ইভেন্টগুলোর জন্য ট্রিগার তৈরি করতে আপনার যে প্যারামিটারগুলোর প্রয়োজন হবে, সে সম্পর্কে আরও বিস্তারিত জানতে নিচের কমান্ডটি চালান:
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
ট্রিগার তৈরির প্রক্রিয়াটি কার্যকর হতে এবং ইভেন্ট ফিল্টার করা শুরু হতে ১০ মিনিট পর্যন্ত অপেক্ষা করুন। প্রস্তুত হয়ে গেলে, এটি ক্রিয়েট ইভেন্টগুলো ফিল্টার করে সার্ভিসে পাঠিয়ে দেবে। এখন আপনি একটি ইভেন্ট ফায়ার করার জন্য প্রস্তুত।
আগের মতোই আরেকটি পাব/সাব টপিক তৈরি করুন:
gcloud pubsub topics create cre-gke-topic2
আপনি যদি ক্লাউড কনসোলে ক্লাউড রান সার্ভিসের লগগুলি পরীক্ষা করেন, তাহলে আপনি এই প্রাপ্ত ইভেন্টটি দেখতে পাবেন:

ট্রিগার এবং টপিকগুলো মুছে ফেলুন
ঐচ্ছিকভাবে, পরীক্ষা সম্পন্ন হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:
gcloud beta events triggers delete trigger-auditlog
এছাড়াও বিষয়গুলো মুছে ফেলুন:
gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2
১৩. ক্লাউড স্টোরেজের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
আপনি ক্লাউড স্টোরেজ থেকে ইভেন্ট শোনার জন্য একটি ট্রিগার সেট আপ করবেন।
একটি বালতি তৈরি করুন
প্রথমে, ডেপ্লয় করা ক্লাউড রান সার্ভিসের একই অঞ্চলে একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন। আপনি 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
ট্রিগার তৈরির প্রক্রিয়াটি কার্যকর হতে এবং ইভেন্ট ফিল্টার করা শুরু হতে ১০ মিনিট পর্যন্ত অপেক্ষা করুন। প্রস্তুত হয়ে গেলে, এটি ক্রিয়েট ইভেন্টগুলো ফিল্টার করে সার্ভিসে পাঠিয়ে দেবে।
আপনি এখন একটি ইভেন্ট চালু করার জন্য প্রস্তুত।
ক্লাউড স্টোরেজ বাকেটে একটি র্যান্ডম ফাইল আপলোড করুন:
echo "Hello World" > random.txt
gsutil cp random.txt gs://${BUCKET_NAME}/random.txt
আপনি যদি ক্লাউড কনসোলে ক্লাউড রান সার্ভিসের লগগুলি পরীক্ষা করেন, তাহলে আপনি এই প্রাপ্ত ইভেন্টটি দেখতে পাবেন:

ট্রিগারটি মুছে ফেলুন
ঐচ্ছিকভাবে, পরীক্ষা সম্পন্ন হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:
gcloud beta events triggers delete trigger-storage
১৪. ক্লাউড শিডিউলারের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
আপনি ক্লাউড শিডিউলার থেকে ইভেন্ট শোনার জন্য একটি ট্রিগার সেট আপ করবেন।
একটি অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন তৈরি করুন
ক্লাউড শিডিউলার বর্তমানে ব্যবহারকারীদের একটি অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন তৈরি করতে বলছে। একটি অ্যাপ ইঞ্জিন লোকেশন বেছে নিন এবং অ্যাপটি তৈরি করুন:
export APP_ENGINE_LOCATION=europe-west
gcloud app create --region=${APP_ENGINE_LOCATION}
একটি ট্রিগার তৈরি করুন
গুগল ক্লাউড উৎস থেকে আসা ইভেন্টগুলোর জন্য ট্রিগার তৈরি করতে আপনার যে প্যারামিটারগুলোর প্রয়োজন হবে, সে সম্পর্কে আরও বিস্তারিত জানতে নিচের কমান্ডটি চালান:
gcloud beta events types describe google.cloud.scheduler.job.v1.executed
শিডিউলার তৈরি করতে একটি ক্লাউড শিডিউলারের অবস্থান বেছে নিন:
export SCHEDULER_LOCATION=europe-west1
একটি ট্রিগার তৈরি করুন যা গুগল ক্লাউড শিডিউলারে প্রতি মিনিটে এক্সিকিউট হওয়ার জন্য একটি জব তৈরি করবে এবং টার্গেট সার্ভিসটিকে কল করবে:
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
ট্রিগার তৈরির প্রক্রিয়াটি কার্যকর হতে এবং ইভেন্ট ফিল্টার করা শুরু হতে ১০ মিনিট পর্যন্ত অপেক্ষা করুন। প্রস্তুত হয়ে গেলে, এটি ক্রিয়েট ইভেন্টগুলো ফিল্টার করে সার্ভিসে পাঠিয়ে দেবে।
আপনি ক্লাউড কনসোলে ক্লাউড রান সার্ভিসের লগ চেক করলে, প্রাপ্ত ইভেন্টটি দেখতে পাবেন।
ট্রিগারটি মুছে ফেলুন
ঐচ্ছিকভাবে, পরীক্ষা সম্পন্ন হলে আপনি ট্রিগারটি মুছে ফেলতে পারেন:
gcloud beta events triggers delete trigger-scheduler
১৫. কাস্টম ইভেন্ট (ব্রোকার এন্ডপয়েন্ট)
কোডল্যাবের এই অংশে, আপনি ব্রোকার ব্যবহার করে কাস্টম ইভেন্ট তৈরি এবং গ্রহণ করবেন।
ইভেন্ট তৈরি করতে কার্ল পড তৈরি করুন
ইভেন্টগুলো সাধারণত প্রোগ্রাম্যাটিকভাবে তৈরি করা হয়। তবে, এই ধাপে আপনি 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
`curl` পডটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করুন। আপনি curl নামের একটি পড দেখতে পাবেন যার Status=Running ।
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
আপনি পডটিতে SSH-এর মাধ্যমে লগইন করেছেন এবং এখন একটি 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
১৬. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।
আমরা যা আলোচনা করেছি
- ক্লাউড রান ফর অ্যানথোস-এর ইভেন্টগুলোর দীর্ঘমেয়াদী রূপকল্প
- ক্লাউড রান ফর অ্যানথোস-এর ঘটনাবলীর বর্তমান অবস্থা
- একটি ক্লাউড রান সিঙ্ক তৈরি করুন
- ক্লাউড পাব/সাব-এর জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- অডিট লগের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- ক্লাউড স্টোরেজের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- ক্লাউড শিডিউলারের জন্য একটি ইভেন্ট ট্রিগার তৈরি করুন
- কাস্টম ইভেন্ট তৈরি এবং ব্যবহার করুন