1. مقدمه
Cloud Run به شما امکان می دهد کانتینرهای بدون حالت را در یک محیط کاملاً مدیریت شده اجرا کنید. این برنامه از منبع باز Knative ساخته شده است و به شما امکان می دهد کانتینرهای خود را به طور کامل با Cloud Run یا در خوشه Google Kubernetes Engine خود با Cloud Run برای Anthos اجرا کنید.
Eventarc اتصال سرویس های مختلف (Cloud Run، Cloud Functions، Workfklows) را با رویدادها از منابع مختلف آسان می کند. این به شما امکان میدهد معماریهای رویداد محور بسازید که در آن ریزسرویسها بهطور سست کوپل شده و توزیع میشوند. همچنین از انتقال رویداد، تحویل، امنیت، مجوز، و مدیریت خطا برای شما مراقبت می کند که چابکی توسعه دهنده و انعطاف پذیری برنامه را بهبود می بخشد.
در این کدلب با Eventarc آشنا خواهید شد. به طور خاص، شما به رویدادهای Pub/Sub، Cloud Storage و Cloud Audit Logs با Eventarc گوش می دهید و آنها را به یک سرویس Cloud Run منتقل می کنید.
چیزی که یاد خواهید گرفت
- Vision of Eventarc
- رویدادها را در Eventarc کشف کنید
- یک سینک Cloud Run ایجاد کنید
- یک ماشه برای Pub/Sub ایجاد کنید
- یک ماشه برای فضای ذخیره سازی ابری ایجاد کنید
- یک ماشه برای گزارش های حسابرسی ابری ایجاد کنید
- رابط کاربری Eventarc را کاوش کنید
2. Vision of Eventarc
Eventarc قصد دارد رویدادها را از منابع مختلف Google، Google Cloud و شخص ثالث به مقصدهای رویداد Google Cloud ارائه دهد.
منابع Google Cloud | منابع رویداد که محصولات متعلق به Google Cloud هستند |
منابع گوگل | منابع رویداد که محصولات متعلق به Google هستند مانند Gmail، Hangouts، مدیریت Android و غیره |
منابع سفارشی | منابع رویدادی که محصولات متعلق به Google نیستند و توسط خود کاربران نهایی ایجاد میشوند |
منابع شخص ثالث | منابع رویدادی که نه متعلق به گوگل هستند و نه تولید مشتری. این شامل منابع رویداد محبوب مانند Check Point CloudGuard، Datadog، ForgeRock، Lacework، و غیره است که متعلق به ارائهدهندگان و شرکای شخص ثالث است و نگهداری میشوند. |
رویدادها به فرمت CloudEvents v1.0 برای قابلیت همکاری متقابل سرویس عادی شده اند. CloudEvents یک مشخصات باز خنثی از فروشنده است که دادههای رویداد را در قالبهای رایج توصیف میکند و قابلیت همکاری بین سرویسها، پلتفرمها و سیستمها را ممکن میسازد.
3. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود. - یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعملهای «پاکسازی» را که در انتهای Codelab یافت میشود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.
قبل از شروع
در داخل Cloud Shell، مطمئن شوید که ID پروژه شما تنظیم شده است:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. یک سرویس Cloud Run را مستقر کنید
یک سرویس Cloud Run برای دریافت رویدادها مستقر کنید. شما محتویات CloudEvents را در Cloud Run مستقر خواهید کرد.
ابتدا خدمات مورد نیاز را برای Cloud Run فعال کنید:
gcloud services enable run.googleapis.com
کانتینر hello را در Cloud Run مستقر کنید:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
در صورت موفقیت، خط فرمان URL سرویس را نمایش می دهد. میتوانید URL سرویس را در هر پنجره مرورگر باز کنید تا دوباره بررسی کنید که سرویس در حال حاضر مستقر است.
5. کشف رویداد
قبل از ایجاد تریگرها در Eventarc، میتوانید کشف کنید که منابع رویداد چیست، انواع رویدادهایی که میتوانند منتشر کنند و نحوه پیکربندی تریگرها برای مصرف آنها.
برای مشاهده لیست انواع مختلف رویدادها:
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
6. یک Pub/Sub trigger ایجاد کنید
یکی از راه های دریافت رویدادها از طریق Cloud Pub/Sub است. هر برنامه ای می تواند پیام ها را در Pub/Sub منتشر کند و این پیام ها را می توان از طریق Eventarc به Cloud Run تحویل داد.
راه اندازی
قبل از ایجاد هر گونه محرک، خدمات مورد نیاز را برای Eventarc فعال کنید:
gcloud services enable eventarc.googleapis.com
شما همچنین به یک حساب سرویس نیاز دارید تا توسط تریگرها استفاده شود. ایجاد یک حساب خدمات:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
ایجاد کنید
یک ماشه برای فیلتر کردن رویدادهای منتشر شده در موضوع Pub/Sub در سرویس Cloud Run ما ایجاد کنید:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
تست کنید
ماشه Pub/Sub یک موضوع را در زیر جلد ایجاد می کند. بیایید آن را پیدا کنیم و به یک متغیر اختصاص دهیم:
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"
سرویس Cloud Run متن پیام دریافتی را ثبت می کند. میتوانید این را در بخش گزارشهای نمونه Cloud Run خود مشاهده کنید:
با یک موضوع Pub/Sub موجود ایجاد کنید
بهطور پیشفرض، وقتی یک راهانداز Pub/Sub ایجاد میکنید، Eventarc موضوعی را در زیر جلد ایجاد میکند تا شما از آن به عنوان موضوع انتقال بین برنامهتان و سرویس Cloud Run استفاده کنید. این برای ایجاد آسان و سریع یک راهانداز با پشتوانه Pub/Sub مفید است، اما گاهی اوقات میخواهید از یک موضوع موجود استفاده کنید. Eventarc به شما امکان می دهد یک موضوع Pub/Sub موجود را در همان پروژه با پرچم --transport-topic
gcloud مشخص کنید.
برای مشاهده نحوه عملکرد، یک موضوع Pub/Sub برای استفاده به عنوان موضوع حمل و نقل ایجاد کنید:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
ایجاد یک ماشه:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
می توانید با ارسال پیام به موضوع، ماشه را آزمایش کنید:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. یک تریگر Cloud Storage ایجاد کنید
در این مرحله، یک ماشه برای گوش دادن به رویدادها از فضای ذخیرهسازی ابری ایجاد میکنید.
راه اندازی
ابتدا یک سطل برای دریافت رویدادها ایجاد کنید:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
نقش eventarc.eventReceiver
را اعطا کنید، تا حساب سرویس را بتوان در راهاندازی Cloud Storage استفاده کرد:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
همچنین باید نقش pubsub.publisher
را به حساب سرویس Cloud Storage برای محرکهای Cloud Storage اضافه کنید:
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 gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --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
یک فایل را در سطل فضای ذخیره سازی ابری آپلود کنید:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
اگر گزارش های سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید:
8. یک محرک Cloud Audit Logs ایجاد کنید
اگرچه راهانداز Cloud Storage بهترین راه برای گوش دادن به رویدادهای Cloud Storage است، در این مرحله، شما یک راهانداز Cloud Audit Log ایجاد میکنید تا همین کار را انجام دهید.
راه اندازی
برای دریافت رویدادها از یک سرویس، باید Cloud Audit Logs را فعال کنید. از Cloud Console، IAM & Admin
and Audit Logs
از منوی سمت چپ بالا انتخاب کنید. در لیست خدمات، Google Cloud Storage
بررسی کنید:
در سمت راست، مطمئن شوید که Admin
، Read
و Write
انتخاب شده اند و روی Save
کلیک کنید:
ایجاد کنید
یک ماشه برای مسیریابی رویدادهای ایجاد فایل جدید از سطل به سرویس خود ایجاد کنید:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --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 google.cloud.audit.log.v1.written Cloud Run service: hello Yes
همان فایلی را که قبلا انجام دادید در سطل فضای ذخیره سازی ابری آپلود کنید:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
اگر گزارش های سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید:
9. رابط کاربری Eventarc را کاوش کنید
در این مرحله، رابط کاربری Eventarc را در Google Cloud Console بررسی خواهید کرد. در رابط کاربری Eventarc، میتوانید یک نمای کلی از همه محرکها دریافت کنید، آنها را ویرایش و حذف کنید، و محرکهای جدیدی را از Google Cloud Console ایجاد کنید.
به بخش Eventarc Google Cloud بروید:
لیستی از محرک هایی که قبلا ایجاد کرده اید را مشاهده خواهید کرد:
اگر روی یک ماشه کلیک کنید، می توانید جزئیات محرک را ببینید، آن را ویرایش یا حذف کنید:
همچنین میتوانید با انتخاب Create trigger
و پر کردن جزئیات ماشه، یک ماشه جدید ایجاد کنید:
10. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- Vision of Eventarc
- رویدادها را در Eventarc کشف کنید
- یک سینک Cloud Run ایجاد کنید
- یک ماشه برای Pub/Sub ایجاد کنید
- یک ماشه برای فضای ذخیره سازی ابری ایجاد کنید
- یک ماشه برای گزارش های حسابرسی ابری ایجاد کنید
- رابط کاربری Eventarc را کاوش کنید