اجرای Cloud Run با رویدادهای Eventarc را فعال کنید

1. مقدمه

894762ebb681671c.png

Cloud Run به شما امکان می دهد کانتینرهای بدون حالت را در یک محیط کاملاً مدیریت شده اجرا کنید. این برنامه از منبع باز Knative ساخته شده است و به شما امکان می دهد کانتینرهای خود را به طور کامل با Cloud Run یا در خوشه Google Kubernetes Engine خود با Cloud Run برای Anthos اجرا کنید.

cb762f29e9183a3f.png

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 ارائه دهد.

59b147dc030b2b0b.png

منابع Google Cloud

منابع رویداد که محصولات متعلق به Google Cloud هستند

منابع گوگل

منابع رویداد که محصولات متعلق به Google هستند مانند Gmail، Hangouts، مدیریت Android و غیره

منابع سفارشی

منابع رویدادی که محصولات متعلق به Google نیستند و توسط خود کاربران نهایی ایجاد می‌شوند

منابع شخص ثالث

منابع رویدادی که نه متعلق به گوگل هستند و نه تولید مشتری. این شامل منابع رویداد محبوب مانند Check Point CloudGuard، Datadog، ForgeRock، Lacework، و غیره است که متعلق به ارائه‌دهندگان و شرکای شخص ثالث است و نگهداری می‌شوند.

رویدادها به فرمت CloudEvents v1.0 برای قابلیت همکاری متقابل سرویس عادی شده اند. CloudEvents یک مشخصات باز خنثی از فروشنده است که داده‌های رویداد را در قالب‌های رایج توصیف می‌کند و قابلیت همکاری بین سرویس‌ها، پلتفرم‌ها و سیستم‌ها را ممکن می‌سازد.

3. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود و می توانید هر زمان که بخواهید آن را به روز کنید.
  • شناسه پروژه باید در تمام پروژه‌های Google Cloud منحصربه‌فرد باشد و تغییرناپذیر باشد (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان PROJECT_ID شناخته می‌شود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا می‌توانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
  • یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها، باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، دستورالعمل‌های «پاک‌سازی» را که در انتهای Codelab یافت می‌شود دنبال کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:

55efc1aaa7a4d3ad.png

تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:

7ffe5cbb04455448.png

این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 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 خود مشاهده کنید:

69e0177e04a0d1af.png

با یک موضوع 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 بررسی کنید، باید رویداد دریافتی را مشاهده کنید:

904cfc93bb8e8df1.png

8. یک محرک Cloud Audit Logs ایجاد کنید

اگرچه راه‌انداز Cloud Storage بهترین راه برای گوش دادن به رویدادهای Cloud Storage است، در این مرحله، شما یک راه‌انداز Cloud Audit Log ایجاد می‌کنید تا همین کار را انجام دهید.

راه اندازی

برای دریافت رویدادها از یک سرویس، باید Cloud Audit Logs را فعال کنید. از Cloud Console، IAM & Admin and Audit Logs از منوی سمت چپ بالا انتخاب کنید. در لیست خدمات، Google Cloud Storage بررسی کنید:

3c654597faed237c.png

در سمت راست، مطمئن شوید که Admin ، Read و Write انتخاب شده اند و روی Save کلیک کنید:

1deb3ad78f11dd5f.png

ایجاد کنید

یک ماشه برای مسیریابی رویدادهای ایجاد فایل جدید از سطل به سرویس خود ایجاد کنید:

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 بررسی کنید، باید رویداد دریافتی را مشاهده کنید:

7be7859bcc8976f8.png

9. رابط کاربری Eventarc را کاوش کنید

در این مرحله، رابط کاربری Eventarc را در Google Cloud Console بررسی خواهید کرد. در رابط کاربری Eventarc، می‌توانید یک نمای کلی از همه محرک‌ها دریافت کنید، آنها را ویرایش و حذف کنید، و محرک‌های جدیدی را از Google Cloud Console ایجاد کنید.

به بخش Eventarc Google Cloud بروید:

81e139f17e0d29bf.png

لیستی از محرک هایی که قبلا ایجاد کرده اید را مشاهده خواهید کرد:

3240c7c830398718.png

اگر روی یک ماشه کلیک کنید، می توانید جزئیات محرک را ببینید، آن را ویرایش یا حذف کنید:

b4d8bbc6601a8b9e.png

همچنین می‌توانید با انتخاب Create trigger و پر کردن جزئیات ماشه، یک ماشه جدید ایجاد کنید:

3ee290ec72f130d5.png

10. تبریک می گویم!

برای تکمیل کد لبه تبریک می گویم.

آنچه را پوشش داده ایم

  • Vision of Eventarc
  • رویدادها را در Eventarc کشف کنید
  • یک سینک Cloud Run ایجاد کنید
  • یک ماشه برای Pub/Sub ایجاد کنید
  • یک ماشه برای فضای ذخیره سازی ابری ایجاد کنید
  • یک ماشه برای گزارش های حسابرسی ابری ایجاد کنید
  • رابط کاربری Eventarc را کاوش کنید