1. Wprowadzenie

Cloud Run umożliwia uruchamianie bezstanowych kontenerów w w pełni zarządzanym środowisku. Rozwiązanie to jest oparte na platformie open source Knative, co pozwala uruchamiać w pełni zarządzane kontenery w Cloud Run lub kontenery w klastrze Google Kubernetes Engine przy użyciu Cloud Run for Anthos.

Eventarc ułatwia łączenie różnych usług (Cloud Run, Cloud Functions, Workflows) 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, przesyłaniem, zabezpieczaniem, autoryzacją i obsługą błędów związanych ze zdarzeniami, co zwiększa elastyczność programistów i odporność aplikacji.
W tym module dowiesz się więcej o Eventarc. Dokładniej rzecz ujmując, będziesz nasłuchiwać zdarzeń z usług Pub/Sub, Cloud Storage i logów kontrolnych Cloud za pomocą Eventarc i przekazywać je do usługi Cloud Run.
Czego się nauczysz
- Wizja Eventarc
- Odkrywanie zdarzeń w Eventarc
- Tworzenie ujścia Cloud Run
- Tworzenie aktywatora Pub/Sub
- Tworzenie aktywatora Cloud Storage
- Tworzenie aktywatora dla logów kontrolnych Cloud
- Poznaj interfejs Eventarc
2. Wizja Eventarc
Eventarc ma na celu dostarczanie zdarzeń z różnych źródeł zdarzeń Google, Google Cloud i innych firm do miejsc docelowych zdarzeń Google Cloud.

Źródła Google Cloud | Źródła zdarzeń, które są usługami należącymi do Google Cloud |
Źródła Google | Źródła zdarzeń, które są usługami Google, takimi jak Gmail, Hangouts, Android Management i inne. |
Źródła niestandardowe | Źródła zdarzeń, które nie są produktami Google i są tworzone przez samych użytkowników. |
Źródła zewnętrzne | Źródła zdarzeń, które nie należą do Google ani nie są tworzone przez klientów. Obejmuje to popularne źródła zdarzeń, takie jak Check Point CloudGuard, Datadog, ForgeRock, Lacework itp., które są własnością dostawców i partnerów zewnętrznych i są przez nich utrzymywane. |
Zdarzenia są normalizowane do formatu CloudEvents v1.0, aby zapewnić interoperacyjność między usługami. CloudEvents to niezależna od dostawcy otwarta specyfikacja opisująca dane zdarzeń w popularnych formatach, która umożliwia 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 użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz go w dowolnym momencie zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości modułów z kodem musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”. - Istnieje też trzecia wartość, czyli numer projektu, którego używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczenia opłat po zakończeniu tego samouczka, postępuj zgodnie z instrukcjami „czyszczenia” na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. 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
wdrożyć usługę Cloud Run, która będzie odbierać zdarzenia, Wdrożysz kontener Hello w Cloud Run, który rejestruje 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. Aby sprawdzić, czy usługa została wdrożona, możesz otworzyć jej adres URL w dowolnym oknie przeglądarki.
5. Odkrywanie wydarzeń
Zanim utworzysz aktywatory w Eventarc, możesz sprawdzić, jakie są źródła zdarzeń, jakie rodzaje zdarzeń mogą one emitować i jak skonfigurować aktywatory, aby je wykorzystywać.
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 dowiedzieć się więcej 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 wyświetlić listę usług, które emitują określony typ zdarzenia:
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 może emitować każda usługa:
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 otrzymywania zdarzeń jest Cloud Pub/Sub. Każda aplikacja może publikować wiadomości w Pub/Sub, a te wiadomości mogą być dostarczane do Cloud Run za pomocą Eventarc.
Konfiguracja
Zanim utworzysz aktywatory, włącz wymagane usługi Eventarc:
gcloud services enable eventarc.googleapis.com
Potrzebujesz też konta usługi, które będzie 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, który będzie filtrować zdarzenia publikowane w temacie Pub/Sub wdrożonej usługi 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 w tle. Sprawdźmy to i przypiszmy do zmiennej:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Aby opublikować wiadomość w temacie, użyj gcloud:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Usługa Cloud Run rejestruje treść wiadomości przychodzącej. Możesz to sprawdzić w sekcji Logi instancji Cloud Run:

Tworzenie na podstawie istniejącego tematu Pub/Sub
Domyślnie podczas tworzenia aktywatora Pub/Sub Eventarc tworzy w tle temat, który możesz wykorzystać jako temat transportowy między aplikacją a usługą Cloud Run. Jest to przydatne, gdy chcesz łatwo i szybko utworzyć aktywator oparty na Pub/Sub, ale czasami możesz chcieć użyć istniejącego tematu. Eventarc umożliwia określenie istniejącego tematu Pub/Sub w tym samym projekcie za pomocą flagi --transport-topic gcloud.
Aby zobaczyć, jak to działa, utwórz temat Pub/Sub, który będzie używany jako temat transportowy:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Utwórz aktywator:
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ć wyzwalacz, wysyłając wiadomość do tematu:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Tworzenie aktywatora Cloud Storage
W tym kroku utworzysz aktywator, który będzie nasłuchiwać zdarzeń z Cloud Storage.
Konfiguracja
Najpierw utwórz zasobnik, z którego będziesz odbierać zdarzenia:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Przypisz rolę eventarc.eventReceiver, aby można było używać konta usługi 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
W przypadku aktywatorów Cloud Storage musisz też dodać rolę pubsub.publisher do konta usługi 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, aby kierować zdarzenia tworzenia nowych plików z zasobnika do 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 listę wszystkich aktywatorów, aby sprawdzić, czy aktywator został utworzony:
gcloud eventarc triggers list
Prześlij plik 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 Google Cloud, zobaczysz otrzymane zdarzenie:

8. Tworzenie aktywatora logów kontrolnych Cloud
Aktywator Cloud Storage to lepszy sposób na nasłuchiwanie zdarzeń Cloud Storage, ale w tym kroku utworzysz aktywator logów kontrolnych Cloud, aby zrobić to samo.
Konfiguracja
Aby otrzymywać zdarzenia z usługi, musisz włączyć logi kontrolne Cloud. W konsoli Cloud wybierz IAM & Admin i Audit Logs w menu u góry po lewej stronie. Na liście usług zaznacz Google Cloud Storage:

Po prawej stronie upewnij się, że wybrane są opcje Admin, Read i Write, a następnie kliknij Save:

Utwórz
Utwórz aktywator, aby kierować zdarzenia tworzenia nowych plików z zasobnika do 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 wyzwalaczy logów kontrolnych zajmuje trochę czasu. Aby sprawdzić, czy aktywator został utworzony, wyświetl listę wszystkich aktywatorów:
gcloud eventarc triggers list
Pole ACTIVE powinno mieć 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, tak jak wcześniej:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Jeśli sprawdzisz logi usługi Cloud Run w konsoli Google Cloud, zobaczysz otrzymane zdarzenie:

9. Poznaj interfejs Eventarc
W tym kroku zapoznasz się z interfejsem Eventarc w konsoli Google Cloud. W interfejsie Eventarc możesz wyświetlać wszystkie wyzwalacze, edytować i usuwać je oraz tworzyć nowe wyzwalacze w konsoli Google Cloud.
Otwórz sekcję Eventarc w Google Cloud:

Wyświetli się lista utworzonych wcześniej aktywatorów:

Jeśli klikniesz wyzwalacz, możesz wyświetlić jego szczegóły, edytować go lub usunąć:

Możesz też utworzyć nową regułę, klikając Create trigger i wypełniając szczegóły reguły:

10. Gratulacje!
Gratulujemy ukończenia ćwiczenia.
Omówione zagadnienia
- Wizja Eventarc
- Odkrywanie zdarzeń w Eventarc
- Tworzenie ujścia Cloud Run
- Tworzenie aktywatora Pub/Sub
- Tworzenie aktywatora Cloud Storage
- Tworzenie aktywatora dla logów kontrolnych Cloud
- Poznaj interfejs Eventarc