1. ভূমিকা
Eventarc বিভিন্ন উৎস থেকে ইভেন্টের সাথে বিভিন্ন পরিষেবা (ক্লাউড রান, কুবারনেটস, ওয়ার্কফ্লো) সংযোগ করা সহজ করে তোলে। এটি আপনাকে ইভেন্ট-চালিত আর্কিটেকচার তৈরি করতে দেয় যেখানে মাইক্রোসার্ভিসগুলি শিথিলভাবে সংযুক্ত এবং বিতরণ করা হয়। এটি আপনার জন্য ইভেন্ট ইনজেশন, ডেলিভারি, নিরাপত্তা, অনুমোদন, এবং ত্রুটি-হ্যান্ডলিং এর যত্ন নেয় যা বিকাশকারীর তত্পরতা এবং অ্যাপ্লিকেশন স্থিতিস্থাপকতা উন্নত করে। Eventarc-এর পরিচিতির জন্য Eventarc কোডল্যাব থেকে ইভেন্ট সহ ট্রিগার ক্লাউড রান দেখুন।
এই কোডল্যাবে, আপনি পাব/সাব, ক্লাউড স্টোরেজ এবং ক্লাউড অডিট লগ থেকে ইভেন্টগুলি পড়তে Eventarc ব্যবহার করবেন এবং সেগুলিকে Google Kubernetes Engine (GKE) এ চলমান একটি Kubernetes পরিষেবাতে পাঠাবেন।
আপনি কি শিখবেন
- একটি GKE ক্লাস্টার তৈরি করুন।
- একটি ইভেন্ট সিঙ্ক হিসাবে একটি GKE পরিষেবা তৈরি করুন৷
- একটি পাব/সাব ট্রিগার তৈরি করুন।
- একটি ক্লাউড স্টোরেজ ট্রিগার তৈরি করুন
- একটি ক্লাউড অডিট লগ ট্রিগার তৈরি করুন।
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি যে কোনো সময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত করা হয়)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন এবং এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান রয়েছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে এই টিউটোরিয়ালের বাইরে আপনার বিলিং খরচ না হয়, আপনি আপনার তৈরি করা রিসোর্স মুছে ফেলতে পারেন বা পুরো প্রোজেক্ট মুছে ফেলতে পারেন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড শেল শুরু করুন
যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।
Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:
পরিবেশের ব্যবস্থা করতে এবং সংযোগ করতে এটি শুধুমাত্র কয়েক মুহূর্ত নিতে হবে। এটি সমাপ্ত হলে, আপনি এই মত কিছু দেখতে হবে:
এই ভার্চুয়াল মেশিনটি আপনার প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুল দিয়ে লোড করা হয়েছে। এটি একটি ক্রমাগত 5GB হোম ডিরেক্টরি অফার করে এবং Google ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার সমস্ত কাজ একটি ব্রাউজারে করা যেতে পারে। আপনার কিছু ইন্সটল করার দরকার নেই।
আপনি শুরু করার আগে
ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রকল্প আইডি সেটআপ করা আছে:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
3. একটি GKE ক্লাস্টার তৈরি করুন৷
প্রথমে, GKE-এর জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:
gcloud services enable container.googleapis.com
একটি অটোপাইলট GKE ক্লাস্টার তৈরি করুন:
CLUSTER_NAME=eventarc-cluster REGION=us-central1 gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
পরবর্তী ধাপে যাওয়ার আগে ক্লাস্টার তৈরি করা হয়েছে তা নিশ্চিত করুন।
4. একটি GKE পরিষেবা স্থাপন করুন৷
একটি পরিষেবা স্থাপন করার আগে, kubectl
এর সাথে ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করার জন্য প্রমাণীকরণের শংসাপত্রগুলি পান:
gcloud container clusters get-credentials $CLUSTER_NAME \ --region $REGION
এর পরে, ক্লাউড রানের হ্যালো কন্টেইনারটিকে জিকেই-তে কুবারনেটস স্থাপনার হিসাবে স্থাপন করুন। এই পরিষেবা লগগুলি HTTP অনুরোধ এবং CloudEvents পেয়েছে:
SERVICE_NAME=hello-gke kubectl create deployment $SERVICE_NAME \ --image=gcr.io/cloudrun/hello
একটি অভ্যন্তরীণ Kubernetes পরিষেবা হিসাবে স্থাপনার প্রকাশ করুন। এটি ক্লাস্টারের মধ্যে অ্যাক্সেসযোগ্য একটি স্থিতিশীল আইপি সহ একটি পরিষেবা তৈরি করে:
kubectl expose deployment $SERVICE_NAME \ --type ClusterIP --port 80 --target-port 8080
পরবর্তী ধাপে যাওয়ার আগে, নিশ্চিত করুন যে পড চলছে:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
আপনি পরিষেবাটিও দেখতে পারেন:
kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP hello-gke LoadBalancer 10.51.1.26 <none>
5. Eventarc সেটআপ করুন
এই ধাপে, আপনি Eventarc সেটআপ করার পদক্ষেপগুলি চালাবেন এবং Eventarc GKE গন্তব্যগুলি শুরু করবেন।
প্রথমে, Eventarc এবং Eventarc GKE গন্তব্যগুলির জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:
gcloud services enable eventarc.googleapis.com \ cloudresourcemanager.googleapis.com
এর পরে, GKE ক্লাস্টারগুলি পরিচালনা করতে Eventarc সক্ষম করুন:
gcloud eventarc gke-destinations init
Eventarc একটি GKE পরিষেবাকে লক্ষ্য করে প্রতিটি ট্রিগারের জন্য একটি পৃথক ইভেন্ট ফরওয়ার্ডার পড তৈরি করে এবং ক্লাস্টারে পরিবর্তন করার জন্য সুস্পষ্ট অনুমতির প্রয়োজন৷ ক্লাস্টারে সংস্থানগুলি পরিচালনা করার জন্য একটি বিশেষ পরিষেবা অ্যাকাউন্টকে অনুমতি দেওয়ার মাধ্যমে এটি করা হয়। এটি Google ক্লাউড প্রকল্প প্রতি একবার করা প্রয়োজন।
6. ঘটনা আবিষ্কার
ট্রিগার তৈরি করার আগে, আপনি ইভেন্টের উত্সগুলি কী কী, তারা যে ধরনের ইভেন্টগুলি নির্গত করতে পারে এবং কীভাবে সেগুলি ব্যবহার করার জন্য ট্রিগারগুলি কনফিগার করতে হয় তা আবিষ্কার করতে পারেন৷
আপনি Eventarc দ্বারা সমর্থিত ইভেন্টগুলিতে ডকুমেন্টেশন পৃষ্ঠাটি পরীক্ষা করতে পারেন। এছাড়াও আপনি gcloud
ব্যবহার করে ইভেন্টগুলি অন্বেষণ করতে পারেন।
বিভিন্ন ধরণের ইভেন্টের তালিকা দেখতে:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
প্রতিটি ইভেন্টের প্রকার সম্পর্কে আরও তথ্য পেতে:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
একটি নির্দিষ্ট ইভেন্ট প্রকার নির্গত পরিষেবাগুলির তালিকা দেখতে:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
পদ্ধতির নামের তালিকা দেখতে (উপ-ইভেন্ট) যা প্রতিটি পরিষেবা নির্গত করতে পারে:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
7. একটি পাব/সাব ট্রিগার তৈরি করুন৷
ইভেন্টগুলি পাওয়ার একটি উপায় হল পাব/সাবের মাধ্যমে। যেকোনো অ্যাপ্লিকেশন Pub/Sub-এ বার্তা প্রকাশ করতে পারে এবং এই বার্তাগুলি Eventarc-এর মাধ্যমে পরিষেবাগুলিতে বিতরণ করা যেতে পারে।
সেটআপ
কোনো ট্রিগার তৈরি করার আগে, ট্রিগার দ্বারা ব্যবহার করার জন্য আপনার একটি পরিষেবা অ্যাকাউন্ট প্রয়োজন।
একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন:
SERVICE_ACCOUNT=eventarc-gke-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
GKE গন্তব্যগুলির সাথে ট্রিগারগুলির জন্য পরিষেবা অ্যাকাউন্টকে অবশ্যই নিম্নলিখিত ভূমিকাগুলি প্রদান করতে হবে:
-
roles/pubsub.subscriber
-
roles/monitoring.metricWriter
-
roles/eventarc.eventReceiver
(শুধুমাত্র অডিটলগ ট্রিগারের জন্য। এটি পরবর্তী ধাপে যোগ করা হবে)
ভূমিকা প্রদান করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/pubsub.subscriber gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/monitoring.metricWriter
তৈরি করুন
আপনার পরিষেবাতে পাব/সাব বার্তাগুলি রুট করার জন্য একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-pubsub-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
পরীক্ষা
আপনি পরীক্ষা করতে পারেন যে সমস্ত ট্রিগার তালিকাবদ্ধ করে ট্রিগার তৈরি হয়েছে:
gcloud eventarc triggers list
পাব/সাব ট্রিগার কভারের অধীনে একটি পাব/সাব বিষয় তৈরি করে। আসুন এটি খুঁজে বের করি এবং একটি পরিবর্তনশীলকে বরাদ্দ করি:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
বিষয়ে একটি বার্তা প্রকাশ করতে gcloud
ব্যবহার করুন:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
ইভেন্টটি প্রাপ্ত হয়েছে কিনা তা পরীক্ষা করতে, প্রথমে পডের নামটি খুঁজুন:
kubectl get pods NAME READY STATUS hello-gke-df6469d4b-5vv22 1/1 Running
এবং এটি একটি পরিবর্তনশীল সংরক্ষণ করুন:
POD_NAME=hello-gke-df6469d4b-5vv22
প্রাপ্ত ইভেন্ট যাচাই করতে পডের লগগুলি পরীক্ষা করুন:
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.pubsub.topic.v1.messagePublished", "message": "Received event of type google.cloud.pubsub.topic.v1.messagePublished. Event data: Hello World", "event": { "data": { "subscription": "projects/atamel-eventarc-gke/subscriptions/eventarc-us-central1-trigger-pubsub-gke-sub-270", "message": { "data": "SGVsbG8gV29ybGQ=", "messageId": "6031025573654834", "publishTime": "2022-10-19T14:13:07.990Z" } }, "datacontenttype": "application/json", "id": "6031025573654834", "source": "//pubsub.googleapis.com/projects/atamel-eventarc-gke/topics/eventarc-us-central1-trigger-pubsub-gke-729", "specversion": "1.0", "time": "2022-10-19T14:13:07.99Z", "type": "google.cloud.pubsub.topic.v1.messagePublished" } }
8. একটি ক্লাউড স্টোরেজ ট্রিগার তৈরি করুন৷
ইভেন্টগুলি পাওয়ার আরেকটি উপায় হল ক্লাউড স্টোরেজের মাধ্যমে। উদাহরণস্বরূপ, একটি অ্যাপ্লিকেশন একটি বালতিতে একটি ফাইল আপলোড করতে পারে এবং সেই ইভেন্টটি Eventarc এর মাধ্যমে পরিষেবাগুলিতে বিতরণ করা যেতে পারে।
সেটআপ
একটি ক্লাউড স্টোরেজ ট্রিগার তৈরি করার আগে, এর থেকে ইভেন্টগুলি পেতে একটি বালতি তৈরি করুন:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
এছাড়াও আপনাকে ক্লাউড স্টোরেজ ট্রিগারের জন্য ক্লাউড স্টোরেজ পরিষেবা অ্যাকাউন্টে pubsub.publisher
ভূমিকা যোগ করতে হবে:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID) gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_STORAGE \ --role roles/pubsub.publisher
তৈরি করুন
বালতি থেকে আপনার পরিষেবাতে নতুন ফাইল তৈরির ইভেন্টগুলি রুট করার জন্য একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
পরীক্ষা
আপনি পরীক্ষা করতে পারেন যে সমস্ত ট্রিগার তালিকাবদ্ধ করে ট্রিগার তৈরি হয়েছে:
gcloud eventarc triggers list
একটি ফাইল তৈরি করুন এবং বালতিতে ফাইলটি আপলোড করতে gsutil
ব্যবহার করুন:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
প্রাপ্ত ইভেন্ট যাচাই করতে পডের লগগুলি পরীক্ষা করুন:
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.storage.object.v1.finalized", "message": "Received event of type google.cloud.storage.object.v1.finalized. Event data: {\n \"kind\": \"storage#object\",\n \"id\": \"eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022\",\n \"selfLink\": \"https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt\",\n \"name\": \"random.txt\",\n \"bucket\": \"eventarc-gcs-atamel-eventarc-gke\",\n \"generation\": \"1666190425669022\",\n \"metageneration\": \"1\",\n \"contentType\": \"text/plain\",\n \"timeCreated\": \"2022-10-19T14:40:25.678Z\",\n \"updated\": \"2022-10-19T14:40:25.678Z\",\n \"storageClass\": \"STANDARD\",\n \"timeStorageClassUpdated\": \"2022-10-19T14:40:25.678Z\",\n \"size\": \"12\",\n \"md5Hash\": \"5Z/5eUEET4XfUpfhwwLSYA==\",\n \"mediaLink\": \"https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media\",\n \"contentLanguage\": \"en\",\n \"crc32c\": \"R1jUOQ==\",\n \"etag\": \"CJ77zIPD7PoCEAE=\"\n}\n", "event": { "bucket": "eventarc-gcs-atamel-eventarc-gke", "data": { "kind": "storage#object", "id": "eventarc-gcs-atamel-eventarc-gke/random.txt/1666190425669022", "selfLink": "https://www.googleapis.com/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt", "name": "random.txt", "bucket": "eventarc-gcs-atamel-eventarc-gke", "generation": "1666190425669022", "metageneration": "1", "contentType": "text/plain", "timeCreated": "2022-10-19T14:40:25.678Z", "updated": "2022-10-19T14:40:25.678Z", "storageClass": "STANDARD", "timeStorageClassUpdated": "2022-10-19T14:40:25.678Z", "size": "12", "md5Hash": "5Z/5eUEET4XfUpfhwwLSYA==", "mediaLink": "https://storage.googleapis.com/download/storage/v1/b/eventarc-gcs-atamel-eventarc-gke/o/random.txt?generation=1666190425669022\u0026alt=media", "contentLanguage": "en", "crc32c": "R1jUOQ==", "etag": "CJ77zIPD7PoCEAE=" }, "datacontenttype": "application/json", "id": "6031255652220627", "source": "//storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke", "specversion": "1.0", "subject": "objects/random.txt", "time": "2022-10-19T14:40:25.678152Z", "type": "google.cloud.storage.object.v1.finalized" } }
9. একটি ক্লাউড অডিট লগ ট্রিগার তৈরি করুন৷
যদিও ক্লাউড স্টোরেজ ট্রিগার হল ক্লাউড স্টোরেজ ইভেন্টগুলি শোনার আরও ভাল উপায়, এই ধাপে, আপনি একই কাজ করার জন্য একটি ক্লাউড অডিট লগ ট্রিগার তৈরি করেন৷
সেটআপ
একটি পরিষেবা থেকে ইভেন্টগুলি পেতে, আপনাকে অডিট লগগুলি সক্ষম করতে হবে৷ Google ক্লাউড কনসোল থেকে, উপরের বামদিকের মেনু থেকে IAM & Admin
এবং Audit Logs
নির্বাচন করুন৷ পরিষেবার তালিকায়, Google Cloud Storage
চেক করুন:
ডানদিকে, নিশ্চিত করুন যে Admin
, Read
এবং Write
নির্বাচন করা হয়েছে এবং Save
ক্লিক করুন:
এছাড়াও আপনাকে ক্লাউড অডিট লগ ট্রিগারগুলির জন্য ট্রিগার পরিষেবা অ্যাকাউন্টে eventarc.eventReceiver
ভূমিকা যোগ করতে হবে:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/eventarc.eventReceiver
তৈরি করুন
বালতি থেকে আপনার পরিষেবাতে নতুন ফাইল তৈরির ইভেন্টগুলি রুট করার জন্য একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-auditlog-storage-gke gcloud eventarc triggers create $TRIGGER_NAME \ --destination-gke-cluster=$CLUSTER_NAME \ --destination-gke-location=$REGION \ --destination-gke-namespace=default \ --destination-gke-service=$SERVICE_NAME \ --destination-gke-path=/ \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
পরীক্ষা
অডিট লগ ট্রিগারগুলি শুরু হতে একটু সময় নেয়। আপনি পরীক্ষা করতে পারেন যে সমস্ত ট্রিগার তালিকাবদ্ধ করে ট্রিগার তৈরি হয়েছে:
gcloud eventarc triggers list
আপনার দেখতে হবে যে Active
ক্ষেত্রটি Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage-gke google.cloud.audit.log.v1.written GKE: hello-gke Yes
একটি ফাইল তৈরি করুন এবং বালতিতে ফাইলটি আপলোড করতে gsutil
ব্যবহার করুন:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
প্রাপ্ত ইভেন্ট যাচাই করতে পডের লগগুলি পরীক্ষা করুন:
kubectl logs $POD_NAME { "severity": "INFO", "eventType": "google.cloud.audit.log.v1.written", "message": "Received event of type google.cloud.audit.log.v1.written. Event data: {\"protoPayload\":{\"status\":{},\"authenticationInfo\":{\"principalEmail\":\"atameldev@gmail.com\"},\"requestMetadata\":{\"callerIp\":\"149.71.143.227\",\"callerSuppliedUserAgent\":\"apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)\",\"requestAttributes\":{\"time\":\"2022-10-19T15:05:54.144615670Z\",\"auth\":{}},\"destinationAttributes\":{}},\"serviceName\":\"storage.googleapis.com\",\"methodName\":\"storage.objects.create\",\"authorizationInfo\":[{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.delete\",\"granted\":true,\"resourceAttributes\":{}},{\"resource\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"permission\":\"storage.objects.create\",\"granted\":true,\"resourceAttributes\":{}}],\"resourceName\":\"projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt\",\"serviceData\":{\"@type\":\"type.googleapis.com/google.iam.v1.logging.AuditData\",\"policyDelta\":{\"bindingDeltas\":[{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectOwner:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"projectEditor:atamel-eventarc-gke\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectOwner\",\"member\":\"user:atameldev@gmail.com\"},{\"action\":\"ADD\",\"role\":\"roles/storage.legacyObjectReader\",\"member\":\"projectViewer:atamel-eventarc-gke\"}]}},\"resourceLocation\":{\"currentLocations\":[\"us-central1\"]}},\"insertId\":\"-8vmrbve7pol2\",\"resource\":{\"type\":\"gcs_bucket\",\"labels\":{\"project_id\":\"atamel-eventarc-gke\",\"bucket_name\":\"eventarc-gcs-atamel-eventarc-gke\",\"location\":\"us-central1\"}},\"timestamp\":\"2022-10-19T15:05:54.138732321Z\",\"severity\":\"INFO\",\"logName\":\"projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access\",\"receiveTimestamp\":\"2022-10-19T15:05:54.839604461Z\"}", "event": { "data": { "protoPayload": { "status": { }, "authenticationInfo": { "principalEmail": "atameldev@gmail.com" }, "requestMetadata": { "callerIp": "149.71.143.227", "callerSuppliedUserAgent": "apitools Python/3.10.4 gsutil/5.14 (darwin) analytics/disabled interactive/True command/cp google-cloud-sdk/405.0.1,gzip(gfe)", "requestAttributes": { "time": "2022-10-19T15:05:54.144615670Z", "auth": { } }, "destinationAttributes": { } }, "serviceName": "storage.googleapis.com", "methodName": "storage.objects.create", "authorizationInfo": [ { "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "permission": "storage.objects.delete", "granted": true, "resourceAttributes": { } }, { "resource": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "permission": "storage.objects.create", "granted": true, "resourceAttributes": { } } ], "resourceName": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "serviceData": { "@type": "type.googleapis.com/google.iam.v1.logging.AuditData", "policyDelta": { "bindingDeltas": [ { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "projectOwner:atamel-eventarc-gke" }, { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "projectEditor:atamel-eventarc-gke" }, { "action": "ADD", "role": "roles/storage.legacyObjectOwner", "member": "user:atameldev@gmail.com" }, { "action": "ADD", "role": "roles/storage.legacyObjectReader", "member": "projectViewer:atamel-eventarc-gke" } ] } }, "resourceLocation": { "currentLocations": [ "us-central1" ] } }, "insertId": "-8vmrbve7pol2", "resource": { "type": "gcs_bucket", "labels": { "project_id": "atamel-eventarc-gke", "bucket_name": "eventarc-gcs-atamel-eventarc-gke", "location": "us-central1" } }, "timestamp": "2022-10-19T15:05:54.138732321Z", "severity": "INFO", "logName": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access", "receiveTimestamp": "2022-10-19T15:05:54.839604461Z" }, "datacontenttype": "application/json; charset=utf-8", "dataschema": "https://googleapis.github.io/google-cloudevents/jsonschema/google/events/cloud/audit/v1/LogEntryData.json", "id": "projects/atamel-eventarc-gke/logs/cloudaudit.googleapis.com%2Fdata_access-8vmrbve7pol21666191954138732", "methodname": "storage.objects.create", "recordedtime": "2022-10-19T15:05:54.138732321Z", "resourcename": "projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "servicename": "storage.googleapis.com", "source": "//cloudaudit.googleapis.com/projects/atamel-eventarc-gke/logs/data_access", "specversion": "1.0", "subject": "storage.googleapis.com/projects/_/buckets/eventarc-gcs-atamel-eventarc-gke/objects/random.txt", "time": "2022-10-19T15:05:54.839604461Z", "type": "google.cloud.audit.log.v1.written" } }
10. অভিনন্দন!
কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন।
আমরা কভার করেছি কি
- একটি GKE ক্লাস্টার তৈরি করুন।
- একটি ইভেন্ট সিঙ্ক হিসাবে একটি GKE পরিষেবা তৈরি করুন৷
- একটি পাব/সাব ট্রিগার তৈরি করুন।
- একটি ক্লাউড স্টোরেজ ট্রিগার তৈরি করুন।
- একটি ক্লাউড অডিট লগ ট্রিগার তৈরি করুন।