1. Wprowadzenie
Cloud Run umożliwia uruchamianie bezstanowych kontenerów w środowisku w pełni zarządzanym. Zostało ono stworzone na podstawie oprogramowania open source Knative, co pozwala uruchamiać w pełni zarządzane kontenery w Cloud Run lub kontenery w klastrze Google Kubernetes Engine za pomocą Cloud Run for Anthos.
Eventarc ułatwia łączenie różnych usług (Cloud Run, Cloud Functions, Workfklows) ze zdarzeniami z różnych źródeł. Umożliwia tworzenie architektur opartych na zdarzeniach, w których mikroserwisy są luźno sprzężone i rozproszone. Zajmuje się też pozyskiwaniem, dostarczaniem, bezpieczeństwem, autoryzacją i obsługą błędów, co zwiększa elastyczność programistów oraz odporność aplikacji.
Z tego ćwiczenia w Codelabs dowiesz się więcej o Eventarc. Dokładniej rzecz ujmując, będziesz nasłuchiwać zdarzeń z logów kontrolnych Pub/Sub, Cloud Storage i Cloud Audit przy użyciu Eventarc, a potem przekazywać je do usługi Cloud Run.
Czego się nauczysz
- Wizja Eventarc
- Odkrywanie zdarzeń w Eventarc
- Tworzenie ujścia w Cloud Run
- Tworzenie aktywatora dla Pub/Sub
- Tworzenie aktywatora dla Cloud Storage
- Tworzenie aktywatora logów kontrolnych Cloud
- Poznaj interfejs Eventarc
2. Wizja Eventarc
Celem Eventarc jest dostarczanie zdarzeń z różnych źródeł Google, Google Cloud i zewnętrznych źródeł do miejsc docelowych zdarzeń Google Cloud.
Źródła Google Cloud | Źródła zdarzeń będące usługami należącymi do Google Cloud |
Źródła Google | Źródła zdarzeń będące usługami Google, np. Gmail, Hangouts czy Zarządzanie urządzeniami z Androidem |
Źródła niestandardowe | źródła zdarzeń, które nie są usługami Google i są tworzone przez użytkowników; |
Źródła zewnętrzne | Źródła zdarzeń, które nie są własnością Google ani nie są tworzone przez klientów. Obejmuje to popularne źródła zdarzeń, takie jak Check Point CloudGuard, Datadog, ForgeRock czy Lacework, które należą do zewnętrznych dostawców i partnerów oraz są przez nie obsługiwane. |
Zdarzenia są znormalizowane do formatu CloudEvents v1.0, aby zapewnić interoperacyjność między usługami. CloudEvents to otwarta specyfikacja otwarta przez dostawcę, która opisuje dane zdarzeń w typowych formatach, umożliwiając interoperacyjność między usługami, platformami i systemami.
3. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się
PROJECT_ID
), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy kod lub wypróbuj swój własny i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu. - Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.
W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.
Zanim zaczniesz
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Wdrażanie usługi Cloud Run
Wdróż usługę Cloud Run, aby odbierać zdarzenia. Wdrożysz kontener Hello w Cloud Run, który loguje zawartość CloudEvents.
Najpierw włącz wymagane usługi dla Cloud Run:
gcloud services enable run.googleapis.com
Wdróż kontener Hello w Cloud Run:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
Kiedy operacja zostanie wykonana, w wierszu poleceń wyświetli się URL usługi. Możesz otworzyć adres URL usługi w dowolnym oknie przeglądarki, aby sprawdzić, czy usługa została wdrożona.
5. Wykrywanie zdarzeń
Zanim utworzysz aktywatory w Eventarc, możesz dowiedzieć się, czym są źródła zdarzeń, jakie typy zdarzeń mogą generować i jak skonfigurować aktywatory w celu ich wykorzystania.
Aby wyświetlić listę różnych typów zdarzeń:
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.
Aby uzyskać więcej informacji o poszczególnych typach zdarzeń:
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
Aby zobaczyć listę usług, które emitują zdarzenia określonego typu:
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
Aby wyświetlić listę nazw metod (zdarzeń podrzędnych), które mogą generować poszczególne usługi:
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. Tworzenie aktywatora Pub/Sub
Jednym ze sposobów odbierania zdarzeń jest Cloud Pub/Sub. Każda aplikacja może publikować wiadomości w Pub/Sub, które mogą być dostarczane do Cloud Run przez Eventarc.
Konfiguracja
Zanim utworzysz jakiekolwiek aktywatory, włącz wymagane usługi dla Eventarc:
gcloud services enable eventarc.googleapis.com
Musisz też mieć konto usługi używane przez aktywatory. Utwórz konto usługi:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Utwórz
Utwórz aktywator do filtrowania zdarzeń opublikowanych w temacie Pub/Sub w naszej wdrożonej usłudze 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
Test
Aktywator Pub/Sub tworzy temat pod okładkami. Sprawdźmy to i przypiszmy do zmiennej:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Użyj polecenia gcloud
, aby opublikować wiadomość w tym temacie:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Usługa Cloud Run loguje treść wiadomości przychodzącej. Możesz to zobaczyć w sekcji Logi instancji Cloud Run:
Utwórz z istniejącym tematem Pub/Sub
Domyślnie, gdy tworzysz aktywator Pub/Sub, Eventarc tworzy temat pod okładkami, który możesz wykorzystać jako temat transportu między Twoją aplikacją a usługą Cloud Run. Jest to przydatne, gdy chcesz szybko i łatwo utworzyć aktywator oparty na Pub/Sub, ale czasami chcesz użyć istniejącego tematu. Eventarc pozwala określić istniejący temat Pub/Sub w tym samym projekcie za pomocą flagi gcloud --transport-topic
.
Aby zobaczyć, jak to działa, utwórz temat Pub/Sub, który będzie używany jako temat transportu:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Utwórz regułę:
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
Możesz przetestować regułę, wysyłając wiadomość w temacie:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Utwórz aktywator Cloud Storage
W tym kroku utworzysz aktywator do nasłuchiwania zdarzeń z Cloud Storage.
Konfiguracja
Najpierw utwórz zasobnik do odbierania zdarzeń:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Przypisz rolę eventarc.eventReceiver
, aby konto usługi mogło być używane w aktywatorze Cloud Storage:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Musisz też dodać do konta usługi Cloud Storage rolę pubsub.publisher
dla aktywatorów 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
Utwórz
Utwórz aktywator do kierowania zdarzeń tworzenia nowych plików z zasobnika do swojej usługi:
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
Test
Wyświetl wszystkie aktywatory, aby potwierdzić, że aktywator został utworzony:
gcloud eventarc triggers list
Przesyłanie pliku do zasobnika Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jeśli sprawdzisz logi usługi Cloud Run w konsoli Cloud, powinno być tam widoczne otrzymane zdarzenie:
8. Utwórz aktywator logów kontrolnych Cloud
Chociaż aktywator Cloud Storage to lepszy sposób nasłuchiwania zdarzeń Cloud Storage, w tym kroku utworzysz aktywator logu kontrolnego Cloud, aby zrobić to samo.
Konfiguracja
Aby otrzymywać zdarzenia z usługi, musisz włączyć logi kontrolne Cloud. W Cloud Console wybierz IAM & Admin
i Audit Logs
w menu w lewym górnym rogu. Na liście usług zaznacz Google Cloud Storage
:
Po prawej stronie sprawdź, czy Admin
, Read
i Write
są zaznaczone, i kliknij Save
:
Utwórz
Utwórz aktywator do kierowania zdarzeń tworzenia nowych plików z zasobnika do swojej usługi:
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
Test
Inicjowanie aktywatorów logów kontrolnych może trochę potrwać. Aby sprawdzić, czy reguła została utworzona, wyświetl listę wszystkich wyzwalaczy:
gcloud eventarc triggers list
Zobaczysz, że pole ACTIVE
zawiera wartość Yes
:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Prześlij ten sam plik do zasobnika Cloud Storage co wcześniej:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jeśli sprawdzisz logi usługi Cloud Run w konsoli Cloud, powinno być tam widoczne otrzymane zdarzenie:
9. Poznaj interfejs Eventarc
W tym kroku poznasz interfejs użytkownika Eventarc w konsoli Google Cloud. W interfejsie Eventarc możesz przeglądać wszystkie aktywatory, edytować je i usuwać, a także tworzyć nowe aktywatory w Google Cloud Console.
Otwórz sekcję Eventarc w Google Cloud:
Zobaczysz listę utworzonych wcześniej aktywatorów:
Po kliknięciu reguły możesz wyświetlić jej szczegóły, edytować ją lub usunąć:
Możesz też utworzyć nową regułę. W tym celu kliknij Create trigger
i podaj jej szczegóły:
10. Gratulacje!
Gratulujemy ukończenia ćwiczeń z programowania.
Omówione zagadnienia
- Wizja Eventarc
- Odkrywanie zdarzeń w Eventarc
- Tworzenie ujścia w Cloud Run
- Tworzenie aktywatora dla Pub/Sub
- Tworzenie aktywatora dla Cloud Storage
- Tworzenie aktywatora logów kontrolnych Cloud
- Poznaj interfejs Eventarc