1. Giới thiệu
Cloud Run cho phép bạn chạy các vùng chứa không có trạng thái trong môi trường được quản lý hoàn toàn. Giải pháp này được xây dựng dựa trên nguồn mở Knative, cho phép bạn chọn chạy các vùng chứa được quản lý hoàn toàn bằng Cloud Run, hoặc trong cụm Google Kubernetes Engine bằng Cloud Run for Anthos.
Eventarc giúp bạn dễ dàng kết nối nhiều dịch vụ (Cloud Run, Cloud Functions, Workfklows) với các sự kiện từ nhiều nguồn. API này cho phép bạn xây dựng các kiến trúc dựa trên sự kiện, trong đó các dịch vụ vi mô được kết nối và phân phối lỏng lẻo. Phiên bản này cũng đảm nhận việc nhập, phân phối, bảo mật, uỷ quyền và xử lý lỗi sự kiện cho bạn, từ đó cải thiện tính linh hoạt của nhà phát triển cũng như khả năng phục hồi của ứng dụng.
Trong lớp học lập trình này, bạn sẽ tìm hiểu về Eventarc. Cụ thể hơn, bạn sẽ nghe các sự kiện từ Pub/Sub, Cloud Storage và Nhật ký kiểm tra đám mây bằng Eventarc, đồng thời chuyển các sự kiện đó sang một dịch vụ Cloud Run.
Kiến thức bạn sẽ học được
- Tầm nhìn của Eventarc
- Khám phá các sự kiện trong Eventarc
- Tạo bồn lưu trữ dữ liệu Cloud Run
- Tạo điều kiện kích hoạt cho Pub/Sub
- Tạo một điều kiện kích hoạt cho Cloud Storage
- Tạo điều kiện kích hoạt cho Nhật ký kiểm tra đám mây
- Khám phá giao diện người dùng Eventarc
2. Tầm nhìn của Eventarc
Mục tiêu của Eventarc là cung cấp các sự kiện từ nhiều nguồn sự kiện của Google, Google Cloud và bên thứ ba tới các điểm đến của sự kiện trên Google Cloud.
Nguồn Google Cloud | Nguồn sự kiện là sản phẩm do Google Cloud sở hữu |
Các nguồn trên Google | Nguồn sự kiện là các sản phẩm của Google, chẳng hạn như Gmail, Hangouts, Quản lý Android và nhiều sản phẩm khác |
Nguồn tuỳ chỉnh | Nguồn sự kiện không phải là sản phẩm của Google và do người dùng cuối tự tạo |
Nguồn của bên thứ ba | Những nguồn sự kiện không phải do Google sở hữu hoặc do khách hàng sản xuất. Trong đó bao gồm các nguồn sự kiện phổ biến như Check Point CloudGuard, Datadog, ForgeRock, Lacework, v.v. do các nhà cung cấp và đối tác bên thứ ba sở hữu và duy trì. |
Các sự kiện được chuẩn hoá thành định dạng CloudEvents v1.0 để có khả năng tương tác trên nhiều dịch vụ. CloudEvents là một thông số kỹ thuật mở trung lập với nhà cung cấp, mô tả dữ liệu sự kiện ở các định dạng phổ biến, cho phép khả năng tương tác trên các dịch vụ, nền tảng và hệ thống.
3. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng và bạn có thể cập nhật chuỗi này bất cứ lúc nào.
- Mã dự án phải là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (và mã này thường được xác định là
PROJECT_ID
). Vì vậy, nếu không thích, bạn có thể tạo một mã ngẫu nhiên khác hoặc bạn có thể thử mã của riêng mình để xem có mã này chưa. Sau đó, video sẽ được "đóng băng" sau khi tạo dự án. - Có giá trị thứ ba là Project Number (Số dự án) mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên/API trên Cloud. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này, hãy làm theo mọi thao tác "dọn dẹp" hướng dẫn ở cuối lớp học lập trình. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.
Trong Bảng điều khiển GCP, hãy nhấp vào biểu tượng Cloud Shell ở thanh công cụ trên cùng bên phải:
Sẽ chỉ mất một chút thời gian để cấp phép và kết nối với môi trường. Sau khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Phiên bản này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Bạn có thể thực hiện tất cả công việc trong phòng thí nghiệm này chỉ bằng một trình duyệt.
Trước khi bắt đầu
Bên trong Cloud Shell, hãy đảm bảo bạn đã thiết lập mã dự án:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Triển khai dịch vụ Cloud Run
Triển khai dịch vụ Cloud Run để nhận các sự kiện. Bạn sẽ triển khai vùng chứa Hello của Cloud Run để ghi lại nội dung của CloudEvents.
Trước tiên, hãy bật các dịch vụ bắt buộc cho Cloud Run:
gcloud services enable run.googleapis.com
Triển khai vùng chứa Hello vào Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Khi thành công, dòng lệnh sẽ hiển thị URL dịch vụ. Bạn có thể mở URL dịch vụ trong bất kỳ cửa sổ trình duyệt nào để kiểm tra kỹ xem dịch vụ hiện đã được triển khai hay chưa.
5. Khám phá sự kiện
Trước khi tạo điều kiện kích hoạt trong Eventarc, bạn có thể tìm hiểu nguồn sự kiện là gì, loại sự kiện mà chúng có thể phát và cách định cấu hình điều kiện kích hoạt để sử dụng chúng.
Cách xem danh sách các loại sự kiện:
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.
Cách biết thêm thông tin về từng loại sự kiện:
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
Cách xem danh sách các dịch vụ phát ra một loại sự kiện nhất định:
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
Cách xem danh sách tên phương thức (sự kiện phụ) mà mỗi dịch vụ có thể phát đi:
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. Tạo điều kiện kích hoạt Pub/Sub
Một cách để nhận thông tin sự kiện là thông qua Cloud Pub/Sub. Mọi ứng dụng đều có thể xuất bản thông báo lên Pub/Sub và các thông báo này có thể được gửi đến Cloud Run thông qua Eventarc.
Thiết lập
Trước khi tạo bất kỳ trình kích hoạt nào, hãy bật các dịch vụ bắt buộc cho Eventarc:
gcloud services enable eventarc.googleapis.com
Bạn cũng cần có một tài khoản dịch vụ để điều kiện kích hoạt sử dụng. Tạo tài khoản dịch vụ:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Tạo
Tạo một điều kiện kích hoạt để lọc các sự kiện được xuất bản theo chủ đề Pub/Sub thành dịch vụ Cloud Run mà chúng tôi đã triển khai:
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
Thử nghiệm
Trình kích hoạt Pub/Sub tạo một chủ đề theo bìa sách. Hãy cùng tìm hiểu và gán cho một biến:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Sử dụng gcloud
để đăng một thông báo về chủ đề:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Dịch vụ Cloud Run ghi lại nội dung của thư đến. Bạn có thể xem thông tin này trong phần Nhật ký của phiên bản Cloud Run:
Tạo bằng một chủ đề Pub/Sub hiện có
Theo mặc định, khi bạn tạo một điều kiện kích hoạt Pub/Sub, Eventarc sẽ tạo một chủ đề trong bìa sách để bạn dùng làm chủ đề truyền tải giữa ứng dụng và dịch vụ Cloud Run. Điều này rất hữu ích để dễ dàng và nhanh chóng tạo trình kích hoạt được Pub/Sub hỗ trợ nhưng đôi khi bạn có thể muốn sử dụng chủ đề hiện có. Eventarc cho phép bạn chỉ định một chủ đề Pub/Sub hiện có trong cùng một dự án bằng cờ gcloud --transport-topic
.
Để xem cách hoạt động của quy trình này, hãy tạo một chủ đề Pub/Sub để dùng làm chủ đề về phương tiện giao thông:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Tạo một điều kiện kích hoạt:
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
Bạn có thể kiểm tra điều kiện kích hoạt bằng cách gửi một tin nhắn đến chủ đề:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Tạo điều kiện kích hoạt Cloud Storage
Ở bước này, bạn sẽ tạo một điều kiện kích hoạt để theo dõi các sự kiện từ Cloud Storage.
Thiết lập
Trước tiên, hãy tạo một bộ chứa để nhận sự kiện từ:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Cấp vai trò eventarc.eventReceiver
để bạn có thể sử dụng tài khoản dịch vụ trong trình kích hoạt Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Bạn cũng cần thêm vai trò pubsub.publisher
vào tài khoản dịch vụ Cloud Storage cho các điều kiện kích hoạt trong 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
Tạo
Tạo một điều kiện kích hoạt để định tuyến sự kiện tạo tệp mới từ bộ chứa đến dịch vụ của bạn:
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
Thử nghiệm
Liệt kê tất cả điều kiện kích hoạt để xác nhận đã tạo điều kiện kích hoạt thành công:
gcloud eventarc triggers list
Tải tệp lên bộ chứa Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Nếu kiểm tra nhật ký của dịch vụ Cloud Run trong Cloud Console, bạn sẽ thấy sự kiện đã nhận:
8. Tạo điều kiện kích hoạt Nhật ký kiểm tra đám mây
Mặc dù điều kiện kích hoạt Cloud Storage là cách tốt hơn để theo dõi các sự kiện Cloud Storage, nhưng trong bước này, bạn sẽ tạo một điều kiện kích hoạt Nhật ký kiểm tra Cloud để thực hiện tương tự.
Thiết lập
Để nhận sự kiện từ một dịch vụ, bạn cần bật Nhật ký kiểm tra đám mây. Trong Cloud Console, hãy chọn IAM & Admin
và Audit Logs
trong trình đơn phía trên bên trái. Trong danh sách dịch vụ, hãy đánh dấu Google Cloud Storage
:
Ở phía bên phải, hãy nhớ chọn Admin
, Read
và Write
rồi nhấp vào Save
:
Tạo
Tạo một điều kiện kích hoạt để định tuyến sự kiện tạo tệp mới từ bộ chứa đến dịch vụ của bạn:
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
Thử nghiệm
Quá trình khởi chạy trình kích hoạt Nhật ký kiểm tra cần một chút thời gian. Bạn có thể kiểm tra xem trình kích hoạt có được tạo hay không bằng cách liệt kê tất cả các trình kích hoạt:
gcloud eventarc triggers list
Bạn sẽ thấy trường ACTIVE
là Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Tải cùng một tệp lên bộ chứa Cloud Storage như bạn đã làm trước đó:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Nếu kiểm tra nhật ký của dịch vụ Cloud Run trong Cloud Console, bạn sẽ thấy sự kiện đã nhận:
9. Khám phá giao diện người dùng Eventarc
Trong bước này, bạn sẽ khám phá giao diện người dùng Eventarc trong Google Cloud Console. Trong giao diện người dùng Eventarc, bạn có thể xem thông tin tổng quan về tất cả các điều kiện kích hoạt, chỉnh sửa và xoá các điều kiện kích hoạt đó, cũng như tạo các điều kiện kích hoạt mới trong Google Cloud Console.
Chuyển đến phần Eventarc của Google Cloud:
Bạn sẽ thấy danh sách các trình kích hoạt mà bạn đã tạo trước đó:
Nếu nhấp vào một điều kiện kích hoạt, bạn có thể xem thông tin chi tiết, chỉnh sửa hoặc xoá điều kiện kích hoạt đó:
Bạn cũng có thể tạo một điều kiện kích hoạt mới bằng cách chọn Create trigger
rồi điền thông tin chi tiết về điều kiện kích hoạt đó:
10. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình.
Nội dung đã đề cập
- Tầm nhìn của Eventarc
- Khám phá các sự kiện trong Eventarc
- Tạo bồn lưu trữ dữ liệu Cloud Run
- Tạo điều kiện kích hoạt cho Pub/Sub
- Tạo một điều kiện kích hoạt cho Cloud Storage
- Tạo điều kiện kích hoạt cho Nhật ký kiểm tra đám mây
- Khám phá giao diện người dùng Eventarc