1. مقدمه
Cloud Run به شما امکان می دهد کانتینرهای بدون حالت را در یک محیط کاملاً مدیریت شده اجرا کنید. این برنامه از منبع باز Knative ساخته شده است و به شما امکان می دهد کانتینرهای خود را به طور کامل با Cloud Run یا در خوشه Google Kubernetes Engine خود با Cloud Run برای Anthos اجرا کنید.
رویدادهای Cloud Run برای Anthos اتصال سرویسهای Cloud Run را با رویدادها از منابع مختلف آسان میکند. این به شما امکان میدهد معماریهای رویداد محور بسازید که در آن ریزسرویسها بهطور سست کوپل شده و توزیع میشوند. همچنین از انتقال رویداد، تحویل، امنیت، مجوز، و مدیریت خطا برای شما مراقبت می کند که چابکی توسعه دهنده و انعطاف پذیری برنامه را بهبود می بخشد.
در این کد لبه با رویدادهای Cloud Run برای Anthos آشنا خواهید شد. به طور خاص، به رویدادهای Cloud Pub/Sub، Audit Logs، Cloud Storage، Cloud Scheduler و نحوه تولید/مصرف رویدادهای سفارشی گوش خواهید داد.
چیزی که یاد خواهید گرفت
- چشم انداز بلند مدت رویدادها برای Cloud Run برای Anthos
- وضعیت فعلی رویدادها برای Cloud Run برای Anthos
- یک سینک Cloud Run ایجاد کنید
- یک راهانداز رویداد برای Cloud Pub/Sub ایجاد کنید
- یک راهانداز رویداد برای گزارشهای حسابرسی ایجاد کنید
- یک راهانداز رویداد برای فضای ذخیرهسازی ابری ایجاد کنید
- یک راهانداز رویداد برای Cloud Scheduler ایجاد کنید
- رویدادهای سفارشی را تولید و مصرف کنید
2. چشم انداز بلند مدت
همانطور که ما معماری بدون سرور را اتخاذ می کنیم، رویدادها به بخشی جدایی ناپذیر از نحوه ارتباط میکروسرویس های جداشده تبدیل می شوند. رویدادها برای Cloud Run برای Anthos رویدادها را به شهروند درجه یک پیشنهاد Cloud Run برای Anthos تبدیل میکند، به طوری که ساخت برنامههای بدون سرور مبتنی بر رویداد آسان است.
رویدادها برای Cloud Run برای Anthos تحویل رویداد ناهمزمان قابل اعتماد، ایمن و مقیاسپذیر را از منابع رویداد بستهبندی شده یا ایجاد شده توسط برنامه به مصرفکنندگان درون خوشهای و خارج از خوشه امکانپذیر میسازد.
منابع Google Cloud | منابع رویداد که محصولات متعلق به Google Cloud هستند |
منابع گوگل | منابع رویداد که محصولات متعلق به Google هستند مانند Gmail، Hangouts، مدیریت Android و غیره |
منابع سفارشی | منابع رویدادی که محصولات متعلق به Google نیستند و توسط خود کاربران نهایی ایجاد میشوند. اینها می توانند منابع Knative توسعه یافته توسط کاربر یا هر برنامه دیگری که روی خوشه اجرا می شود و می تواند یک رویداد Cloud ایجاد کند باشد. |
منابع شخص ثالث | منابع رویدادی که نه متعلق به Google است و نه متعلق به کاربر نهایی است. این شامل منابع رویداد محبوب مانند Github، SAP، Datadog، Pagerduty، و غیره میشود که توسط ارائهدهندگان شخص ثالث، شرکا یا جوامع OSS تحت مالکیت و نگهداری هستند. |
رویدادها به فرمت CloudEvents v1.0 برای قابلیت همکاری متقابل سرویس عادی شده اند. CloudEvents یک مشخصات باز خنثی از فروشنده است که دادههای رویداد را در قالبهای رایج توصیف میکند و قابلیت همکاری بین سرویسها، پلتفرمها و سیستمها را ممکن میسازد.
Events for Cloud Run با Knative Eventing مطابقت دارد و امکان حمل کانتینرها را به و از دیگر پیادهسازیهای مبتنی بر Knative میدهد. این یک چارچوب سازگار و مبتنی بر ابر را برای تولیدکنندگان رویداد به صورت اعلامی با مصرف کنندگان رویداد فراهم می کند.
3. وضعیت فعلی
این پیش نمایش اولین نسخه ای است که مجموعه اولیه ای از عملکردهای بلند مدت را ارائه می دهد.
برای اینکه کاربران بتوانند برنامههای بدون سرور مبتنی بر رویداد بسازند، تمرکز اولیه ما دو دسته است:
- اکوسیستم گسترده ای از منابع Google Cloud را ارائه دهید که خدمات Cloud Run را در خوشه Anthos قادر می سازد تا به رویدادهای سرویس های Google Cloud واکنش نشان دهند.
- در ابتدا، رویدادها از منابع Google Cloud از طریق گزارشهای حسابرسی ابری (CAL) ارائه میشوند، که گستردگی منابع رویداد را فعال میکند. تأخیر و در دسترس بودن تحویل رویداد از این منابع به گزارشهای حسابرسی ابری مرتبط است. هر زمان که رویدادی از یک منبع Google Cloud منتشر می شود، یک ورودی گزارش حسابرسی ابری مربوطه ایجاد می شود.
- همراه با Cloud Audit Logs، پشتیبانی درجه یک برای مصرف رویدادها از Cloud Storage، Cloud Pub/Sub، و Cloud Scheduler وجود دارد. همانطور که از سفرها و بازخوردهای کاربران بیشتر می آموزیم، این اکوسیستم منابع را با منابع درجه یک بیشتری گسترش خواهیم داد.
- برنامهها و سرویسهای کاربر نهایی را فعال کنید تا رویدادهای سفارشی را با انتشار در یک نشانی وب کارگزار محلی با محدوده فضای نام منتشر کنند.
مکانیسم تحویل اساسی از موضوعات و اشتراکهای Cloud Pub/Sub استفاده میکند که در پروژههای مشتریان قابل مشاهده است. از این رو این ویژگی همان ضمانت های تحویل را مانند Cloud Pub/Sub ارائه می دهد.
Event Trigger راهی برای اشتراک رویدادها فراهم می کند تا رویدادهای مطابق با فیلتر ماشه به مقصد (یا سینک) که Trigger به آن اشاره می کند تحویل داده شود.
همه رویدادها در قالب Cloud Events v1.0 برای قابلیت همکاری متقابل سرویس ارائه می شوند.
ما به ارائه ارزش بیشتر به روشی تکراری تا GA و فراتر از آن ادامه خواهیم داد.
4. راه اندازی و الزامات
تنظیم محیط خود به خود
- به کنسول Cloud وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی شما برای این پروژه است. تا زمانی که از قراردادهای نامگذاری آن پیروی کنید، می توانید از هر چیزی که می خواهید استفاده کنید و می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه باید در تمام پروژههای Google Cloud منحصربهفرد باشد و تغییرناپذیر باشد (پس از تنظیم نمیتوان آن را تغییر داد). کنسول Cloud به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (و معمولاً به عنوان
PROJECT_ID
شناخته میشود)، بنابراین اگر آن را دوست ندارید، یک نمونه تصادفی دیگر ایجاد کنید، یا میتوانید شناسه پروژه را امتحان کنید و ببینید در دسترس است. سپس پس از ایجاد پروژه "یخ زده" می شود.
- در مرحله بعد، برای استفاده از منابع Google Cloud، باید صورتحساب را در Cloud Console فعال کنید .
اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. حتماً دستورالعملهای موجود در بخش «تمیز کردن» را دنبال کنید که به شما توصیه میکند چگونه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از کنسول GCP روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این آزمایشگاه به سادگی با یک مرورگر قابل انجام است.
5. API ها را فعال کنید، ناحیه و پلتفرم را تنظیم کنید
شناسه پروژه را راه اندازی کنید و اجزای آلفا را نصب کنید
در داخل Cloud Shell، GOOGLE_CLOUD_PROJECT باید قبلاً روی شناسه پروژه شما تنظیم شده باشد. اگر نه، مطمئن شوید که تنظیم شده است و gcloud شما با آن شناسه پروژه پیکربندی شده است:
export GOOGLE_CLOUD_PROJECT=your-project-id gcloud config set project ${GOOGLE_CLOUD_PROJECT}
مطمئن شوید که جزء gcloud برای آلفا نصب شده است:
gcloud components install alpha
API ها را فعال کنید
فعال کردن تمام خدمات لازم:
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 با رویدادهای Cloud Run، نام، منطقه و پلتفرم خوشه را تنظیم کنید. به عنوان مثال، در اینجا نام و منطقه را روی events-cluster
و europe-west1-b
قرار می دهیم و پلتفرم gke,
در Cloud Shell:
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 با رویدادهای Cloud Run ایجاد کنید
یک کلاستر GKE با Kubernetes >= 1.15.9-gke.26
با فعال کردن افزونه های زیر ایجاد کنید: 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. راه اندازی رویدادهای اجرای ابر (صفحه کنترل)
رویدادهای Cloud Run یک Control Plane و یک Data Plane دارند که باید جداگانه تنظیم شوند. برای راه اندازی صفحه کنترل:
در Cloud Shell:
gcloud beta events init
این رویداد را مقداردهی اولیه می کند و همچنین تعدادی حساب خدمات مورد نیاز را ایجاد می کند. هنگامی که از شما برای ایجاد حساب سرویس خواسته شد، مطمئن شوید که "بله" را انتخاب کنید.
در این مرحله صفحه کنترل باید به درستی مقداردهی اولیه شود. شما باید چهار غلاف با یک را ببینید
وضعیت Running
، 2 ( controller-xxx-xxx
و webhook-xxx-xxx
) در فضای نام cloud-run-events
و 2 ( eventing-controller-xxx-xxx
and 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. تنظیم رویدادهای Cloud Run (Data Plane)
مرحله بعدی تنظیم صفحه داده در فضاهای نام کاربری است. این یک کارگزار با مجوزهای مناسب برای خواندن/نوشتن از/به Pub/Sub ایجاد می کند.
در داخل Cloud Shell، یک متغیر محیطی 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. یک سینک Cloud Run ایجاد کنید
به عنوان یک رویداد، یک سرویس Cloud Run را مستقر کنید که محتویات CloudEvent دریافتی را ثبت می کند.
می توانید از event_display Knative که قبلاً کامپایل شده و تصویر محفظه آن به عنوان بخشی از انتشار Knative ساخته شده است استفاده کنید. میتوانید جزئیات تصویر ظرف را در event-display.yaml ببینید:
... containers: - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27
در Cloud Run مستقر شوید
برنامه کانتینری خود را در Cloud Run مستقر کنید:
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. یک رویداد برای Cloud Pub/Sub ایجاد کنید
یکی از راه های دریافت رویدادها از طریق Cloud Pub/Sub است. برنامه های کاربردی سفارشی می توانند پیام ها را در Cloud Pub/Sub منتشر کنند و این پیام ها را می توان از طریق Events for Cloud Run به سینک های Google Cloud Run تحویل داد.
یک موضوع ایجاد کنید
ابتدا یک موضوع Cloud Pub/Sub ایجاد کنید. میتوانید TOPIC_ID
با نام موضوع منحصر به فردی که ترجیح میدهید جایگزین کنید:
export TOPIC_ID=cr-gke-topic gcloud pubsub topics create ${TOPIC_ID}
یک ماشه ایجاد کنید
قبل از ایجاد محرک، جزئیات بیشتری در مورد پارامترهایی که برای ایجاد یک ماشه برای رویدادها از Cloud Pub/Sub نیاز دارید، دریافت کنید:
gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished
یک ماشه برای فیلتر کردن رویدادهای منتشر شده در موضوع Cloud Pub/Sub در سرویس Cloud Run مستقر شده ما ایجاد کنید:
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
to برای اجرای یک رویداد استفاده کنید:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
سینک Cloud Run که ما ایجاد کردیم، بدنه پیام دریافتی را ثبت می کند. میتوانید این را در بخش گزارشهای نمونه Cloud Run خود مشاهده کنید:
توجه داشته باشید که "Hello there" همانگونه که توسط Pub/Sub ارسال شده است، با base64 رمزگذاری می شود و اگر می خواهید پیام اصلی ارسال شده را ببینید، باید آن را رمزگشایی کنید.
ماشه را حذف کنید
در صورت تمایل، می توانید پس از انجام آزمایش، ماشه را حذف کنید.
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
12. یک رویداد برای گزارش های حسابرسی ایجاد کنید
شما یک ماشه برای گوش دادن به رویدادها از گزارش حسابرسی تنظیم خواهید کرد. به طور خاص، شما به دنبال رویدادهای ایجاد موضوع Pub/Sub در گزارش حسابرسی خواهید بود.
گزارش های حسابرسی را فعال کنید
برای دریافت رویدادها از یک سرویس، باید گزارش های حسابرسی را فعال کنید. از Cloud Console، IAM & Admin > Audit Logs
از منوی سمت چپ بالا انتخاب کنید. در لیست خدمات، Google Cloud Pub/Sub را بررسی کنید:
در سمت راست، مطمئن شوید که Admin، Read و Write انتخاب شده اند. روی ذخیره کلیک کنید:
تست گزارش های حسابرسی
برای یادگیری نحوه شناسایی پارامترهایی که برای تنظیم یک ماشه واقعی نیاز دارید، یک عملیات واقعی را انجام دهید.
به عنوان مثال، یک موضوع Pub/Sub ایجاد کنید:
gcloud pubsub topics create cre-gke-topic1
حال، بیایید ببینیم این بهروزرسانی چه نوع گزارش حسابرسی ایجاد کرده است. از Cloud Console، Logging > Logs Viewer
از منوی سمت چپ بالا انتخاب کنید.
در بخش Query Builder,
Cloud Pub/Sub Topic
را انتخاب کنید و روی Add
کلیک کنید:
پس از اجرای پرس و جو، گزارشهای مربوط به موضوعات Pub/Sub را مشاهده خواهید کرد و یکی از آنها باید google.pubsub.v1.Publisher.CreateTopic
باشد:
به serviceName
، methodName
و resourceName
توجه کنید. ما از اینها در ایجاد ماشه استفاده خواهیم کرد.
یک ماشه ایجاد کنید
اکنون آماده ایجاد یک راهانداز رویداد برای گزارشهای حسابرسی هستید.
با اجرای دستور زیر میتوانید جزئیات بیشتری در مورد پارامترهایی که برای ایجاد یک ماشه برای رویدادها نیاز دارید از منابع Google Cloud دریافت کنید:
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 دقیقه صبر کنید تا ایجاد ماشه منتشر شود و رویدادها فیلتر شود. پس از آماده شدن، رویدادهای ایجاد شده را فیلتر کرده و آنها را به سرویس ارسال می کند. اکنون آماده هستید تا یک رویداد را فعال کنید.
یک موضوع Pub/Sub دیگری ایجاد کنید، همانطور که قبلا انجام دادید:
gcloud pubsub topics create cre-gke-topic2
اگر گزارش های سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید:
ماشه و موضوعات را حذف کنید
به صورت اختیاری، می توانید پس از انجام آزمایش، ماشه را حذف کنید:
gcloud beta events triggers delete trigger-auditlog
همچنین موضوعات را حذف کنید:
gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2
13. یک تریگر رویداد برای Cloud Storage ایجاد کنید
شما یک ماشه برای گوش دادن به رویدادها از فضای ذخیرهسازی ابری تنظیم خواهید کرد.
یک سطل ایجاد کنید
ابتدا یک سطل Cloud Storage در همان ناحیه ای که سرویس Cloud Run مستقر شده ایجاد کنید. میتوانید 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/
مجوزهای Cloud Storage را تنظیم کنید
قبل از ایجاد یک ماشه، باید به حساب سرویس پیشفرض برای فضای ذخیرهسازی ابری اجازه انتشار در Pub/Sub بدهید.
ابتدا، باید حساب سرویسی را که Cloud Storage برای انتشار در Pub/Sub استفاده میکند، پیدا کنید. می توانید از مراحل ذکر شده در دریافت حساب سرویس Cloud Storage برای دریافت حساب سرویس استفاده کنید یا از دستور زیر استفاده کنید:
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
سپس، حقوقی را به آن حساب سرویس اعطا کنید تا در Pub/Sub منتشر شود:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \ --member=serviceAccount:${GCS_SERVICE_ACCOUNT} \ --role roles/pubsub.publisher
یک ماشه ایجاد کنید
اکنون آماده ایجاد یک راهانداز رویداد برای رویدادهای Cloud Storage هستید.
میتوانید جزئیات بیشتری در مورد پارامترهایی که برای ساخت تریگر نیاز دارید دریافت کنید:
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
اگر گزارش های سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید:
ماشه را حذف کنید
به صورت اختیاری، می توانید پس از انجام آزمایش، ماشه را حذف کنید:
gcloud beta events triggers delete trigger-storage
14. یک راهانداز رویداد برای Cloud Scheduler ایجاد کنید
شما یک ماشه برای گوش دادن به رویدادها از Cloud Scheduler تنظیم خواهید کرد.
یک برنامه App Engine ایجاد کنید
Cloud Scheduler در حال حاضر به کاربران برای ایجاد یک برنامه App Engine نیاز دارد. یک مکان App Engine را انتخاب کنید و برنامه را ایجاد کنید:
export APP_ENGINE_LOCATION=europe-west gcloud app create --region=${APP_ENGINE_LOCATION}
یک ماشه ایجاد کنید
با اجرای دستور زیر میتوانید جزئیات بیشتری در مورد پارامترهایی که برای ایجاد یک ماشه برای رویدادها نیاز دارید از منابع Google Cloud دریافت کنید:
gcloud beta events types describe google.cloud.scheduler.job.v1.executed
یک مکان Cloud Scheduler را برای ایجاد زمانبندی انتخاب کنید:
export SCHEDULER_LOCATION=europe-west1
یک Trigger ایجاد کنید که هر دقیقه یک کار در Google Cloud Scheduler ایجاد می کند و با سرویس مورد نظر تماس بگیرید:
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 دقیقه صبر کنید تا ایجاد ماشه منتشر شود و رویدادها فیلتر شود. پس از آماده شدن، رویدادهای ایجاد شده را فیلتر کرده و آنها را به سرویس ارسال می کند.
اگر گزارش های سرویس Cloud Run را در Cloud Console بررسی کنید، باید رویداد دریافتی را مشاهده کنید.
ماشه را حذف کنید
به صورت اختیاری، می توانید پس از انجام آزمایش، ماشه را حذف کنید:
gcloud beta events triggers delete trigger-scheduler
15. رویدادهای سفارشی (نقطه پایان کارگزار)
در این قسمت از Codelab با استفاده از Broker رویدادهای سفارشی را تولید و مصرف خواهید کرد.
Curl Pod را برای تولید رویدادها ایجاد کنید
رویدادها معمولاً به صورت برنامه نویسی ایجاد می شوند. با این حال، در این مرحله curl
برای ارسال دستی رویدادهای فردی و مشاهده نحوه دریافت این رویدادها توسط مصرف کننده صحیح استفاده خواهید کرد.
برای ایجاد یک Pod که به عنوان تولید کننده رویداد عمل می کند، دستور زیر را اجرا کنید:
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
با Status=Running
ببینید:
kubectl get pod curl -n ${NAMESPACE}
یک ماشه ایجاد کنید
شما یک Trigger با یک فیلتر روی نوع خاص CloudEvents (در این مورد alpha-type
) که منتشر می کنید ایجاد خواهید کرد. توجه داشته باشید که فیلتر مطابقت دقیق در هر تعداد از ویژگیهای CloudEvents و همچنین برنامههای افزودنی پشتیبانی میشود. اگر فیلتر شما چندین ویژگی را تنظیم میکند، یک رویداد باید همه ویژگیها را داشته باشد تا Trigger آن را فیلتر کند. برعکس، اگر فیلتری را مشخص نکنید، همه رویدادها در سرویس شما دریافت خواهند شد.
ایجاد محرک:
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
SSH به غلاف curl
که قبلا ایجاد کردید:
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 خارج شوید
بررسی کنید که رویداد منتشر شده با مشاهده گزارشهای سرویس Cloud Run ارسال شده است:
kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \ -c user-container -n $NAMESPACE --tail=100
ماشه را حذف کنید
به صورت اختیاری، می توانید پس از انجام آزمایش، ماشه را حذف کنید:
gcloud beta events triggers delete trigger-custom
16. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- چشم انداز بلند مدت رویدادها برای Cloud Run برای Anthos
- وضعیت فعلی رویدادها برای Cloud Run برای Anthos
- یک سینک Cloud Run ایجاد کنید
- یک راهانداز رویداد برای Cloud Pub/Sub ایجاد کنید
- یک راهانداز رویداد برای گزارشهای حسابرسی ایجاد کنید
- یک راهانداز رویداد برای فضای ذخیرهسازی ابری ایجاد کنید
- یک راهانداز رویداد برای Cloud Scheduler ایجاد کنید
- رویدادهای سفارشی را تولید و مصرف کنید