1. Giriş
Cloud Run, tümüyle yönetilen bir ortamda durum bilgisiz container'lar çalıştırmanızı sağlar. Açık kaynaklı Knative'den derlenen bu platform, container'larınızı Cloud Run ile tümüyle yönetilecek şekilde veya Google Kubernetes Engine kümenizde Cloud Run for Anthos ile çalıştırmayı seçebilmenizi sağlar.
Eventarc, çeşitli hizmetleri (Cloud Run, Cloud Functions, Workfklows) çeşitli kaynaklardan gelen etkinliklere bağlamayı kolaylaştırır. Mikro hizmetlerin serbest bağlantılı olduğu ve dağıtıldığı etkinlik odaklı mimariler derlemenize olanak tanır. Ayrıca sizin için etkinlik kullanımı, teslim, güvenlik, yetkilendirme ve hata gidermeyle de ilgilenir. Bu da geliştiricilerin çevikliğini ve uygulama esnekliğini artırır.
Bu codelab'de Eventarc hakkında bilgi edineceksiniz. Daha açık belirtmek gerekirse Eventarc ile Pub/Sub, Cloud Storage ve Cloud Denetleme Günlüklerinden gelen etkinlikleri dinleyecek ve bir Cloud Run hizmetine ileteceksiniz.
Neler öğreneceksiniz?
- Eventarc'ın vizyonu
- Eventarc'taki etkinlikleri keşfedin
- Cloud Run havuzu oluşturma
- Pub/Sub için tetikleyici oluşturma
- Cloud Storage için tetikleyici oluşturma
- Cloud Denetleme Günlükleri için tetikleyici oluşturma
- Eventarc kullanıcı arayüzünü keşfetme
2. Eventarc'ın vizyonu
Eventarc; çeşitli Google, Google Cloud ve üçüncü taraf etkinlik kaynaklarından gelen etkinlikleri Google Cloud etkinlik hedeflerine ulaştırmayı amaçlar.
Google Cloud kaynakları | Google Cloud'a ait ürünler olan etkinlik kaynakları |
Google kaynakları | Gmail, Hangouts, Android Yönetimi gibi Google'a ait ürünler olan etkinlik kaynakları |
Özel kaynaklar | Google'a ait olmayan ve son kullanıcıların kendisi tarafından oluşturulan etkinlik kaynakları |
3. taraf kaynaklar | Google'a ait olmayan veya müşteriler tarafından üretilen etkinlik kaynakları. Buna, üçüncü taraf sağlayıcılar ve iş ortakları tarafından sahip olunan ve yönetilen Check Point CloudGuard, Datadog, ForgeRock, Lacework gibi popüler etkinlik kaynakları da dahildir. |
Etkinlikler, hizmetler arası birlikte çalışabilirlik için CloudEvents v1.0 biçimine göre normalleştirilir. CloudEvents, etkinlik verilerini ortak biçimlerde açıklayan ve hizmetler, platformlar ve sistemler genelinde birlikte çalışabilirlik sağlayan, tedarikçiden bağımsız bir açık spesifikasyondur.
3. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle
PROJECT_ID
olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir. - Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Cloud Shell'i başlatma
Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.
GCP Console'da, sağ üstteki araç çubuğunda yer alan Cloud Shell simgesini tıklayın:
Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:
İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu laboratuvardaki tüm çalışmalarınızı yalnızca bir tarayıcıyla yapabilirsiniz.
Başlamadan önce
Cloud Shell'de proje kimliğinizin ayarlandığından emin olun:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
4. Cloud Run hizmeti dağıtma
Etkinlikleri almak için bir Cloud Run hizmeti dağıtma CloudEvents içeriğini günlüğe kaydeden Cloud Run'ın Hello container'ını dağıtacaksınız.
İlk olarak, Cloud Run için gerekli hizmetleri etkinleştirin:
gcloud services enable run.googleapis.com
Hello container'ını Cloud Run'a dağıtın:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
İşlem başarılı olursa komut satırında hizmet URL'si gösterilir. Hizmetin dağıtılıp dağıtılmadığını tekrar kontrol etmek için hizmet URL'sini herhangi bir tarayıcı penceresinde açabilirsiniz.
5. Etkinlik Keşfi
Eventarc'ta tetikleyici oluşturmadan önce etkinlik kaynaklarının neler olduğunu, bunların yayınlayabilecekleri etkinlik türlerini ve tetikleyicileri kullanmak için tetikleyicileri nasıl yapılandıracağınızı keşfedebilirsiniz.
Farklı etkinlik türlerinin listesini görmek için:
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.
Her etkinlik türü hakkında daha fazla bilgi edinmek için:
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
Belirli bir etkinlik türünü yayınlayan hizmetlerin listesini görmek için:
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
Her bir hizmetin yayınlayabileceği yöntem adlarının (alt etkinlikler) listesini görmek için:
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 tetikleyicisi oluşturma
Etkinlik almanın bir yolu da Cloud Pub/Sub'dır. Tüm uygulamalar Pub/Sub'a mesaj yayınlayabilir ve bu mesajlar, Eventarc üzerinden Cloud Run'a teslim edilebilir.
Kurulum
Tetikleyici oluşturmadan önce Eventarc için gerekli hizmetleri etkinleştirin:
gcloud services enable eventarc.googleapis.com
Tetikleyiciler tarafından kullanılacak bir hizmet hesabı da olmalıdır. Bir hizmet hesabı oluşturun:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
Oluştur
Pub/Sub konusunda yayınlanan etkinlikleri, dağıtılan Cloud Run hizmetimize filtrelemek için bir tetikleyici oluşturun:
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
Pub/Sub tetikleyicisi, kapaklar altında bir konu oluşturur. Şimdi bunu bulalım ve bir değişkene atayalım:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
Konuda bir mesaj yayınlamak için gcloud
öğesini kullanın:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
Cloud Run hizmeti, gelen iletinin gövdesini günlüğe kaydeder. Bunu Cloud Run örneğinizin Günlükler bölümünde görebilirsiniz:
Mevcut bir Pub/Sub konusuyla oluşturma
Varsayılan olarak, bir Pub/Sub tetikleyicisi oluşturduğunuzda Eventarc, uygulamanız ile Cloud Run hizmeti arasında aktarım konusu olarak kullanmanız için kapakların altında bir konu oluşturur. Bu, kolayca ve hızlı bir şekilde Pub/Sub destekli bir tetikleyici oluşturmak için kullanışlıdır, ancak bazen mevcut bir konuyu kullanmak isteyebilirsiniz. Eventarc, --transport-topic
gcloud işareti ile aynı projede mevcut bir Pub/Sub konusu belirtmenize olanak tanır.
Bunun işleyiş şeklini öğrenmek için taşıma konusu olarak kullanılacak bir Pub/Sub konusu oluşturun:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
Tetikleyici oluşturun:
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
Konuya bir mesaj göndererek tetikleyiciyi test edebilirsiniz:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
7. Cloud Storage tetikleyicisi oluşturma
Bu adımda, Cloud Storage'daki etkinlikleri dinlemek için bir tetikleyici oluşturacaksınız.
Kurulum
Öncelikle, şunlardan etkinlik almak için bir paket oluşturun:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
Hizmet hesabının bir Cloud Storage tetikleyicisinde kullanılabilmesi için eventarc.eventReceiver
rolünü verin:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
Cloud Storage tetikleyicileri için Cloud Storage hizmet hesabına pubsub.publisher
rolünü de eklemeniz gerekir:
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
Oluştur
Yeni dosya oluşturma etkinliklerini paketten hizmetinize yönlendirmek için bir tetikleyici oluşturun:
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
Tetikleyicinin başarıyla oluşturulduğunu onaylamak için tüm tetikleyicileri listeleyin:
gcloud eventarc triggers list
Cloud Storage paketine bir dosya yükleyin:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz:
8. Cloud Denetleme Günlükleri tetikleyicisi oluşturma
Cloud Storage tetikleyicisi, Cloud Storage etkinliklerini dinlemenin daha iyi bir yolu olsa da bu adımda, aynı işlemi yapmak için bir Cloud Denetleme Günlüğü tetikleyicisi oluşturacaksınız.
Kurulum
Bir hizmetten etkinlik almak için Cloud Denetleme Günlükleri'ni etkinleştirmeniz gerekir. Cloud Console'da sol üstteki menüden IAM & Admin
ve Audit Logs
'yi seçin. Hizmetler listesinde Google Cloud Storage
'i işaretleyin:
Sağ tarafta Admin
, Read
ve Write
öğelerinin seçili olduğundan emin olun ve Save
'i tıklayın:
Oluştur
Yeni dosya oluşturma etkinliklerini paketten hizmetinize yönlendirmek için bir tetikleyici oluşturun:
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
Denetleme Günlükleri tetikleyicilerinin başlatılması biraz zaman alır. Tüm tetikleyicileri listeleyerek tetikleyicinin oluşturulup oluşturulmadığını kontrol edebilirsiniz:
gcloud eventarc triggers list
ACTIVE
alanının Yes
olduğunu göreceksiniz:
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
Daha önce yaptığınız gibi aynı dosyayı Cloud Storage paketine yükleyin:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz:
9. Eventarc kullanıcı arayüzünü keşfetme
Bu adımda, Google Cloud Console'daki Eventarc kullanıcı arayüzünü keşfedeceksiniz. Eventarc kullanıcı arayüzünde tüm tetikleyicilere genel bakış edinebilir, bunları düzenleyip silebilir ve Google Cloud Console'dan yeni tetikleyiciler oluşturabilirsiniz.
Google Cloud'un Eventarc bölümüne gidin:
Daha önce oluşturduğunuz tetikleyicilerin listesini görürsünüz:
Bir tetikleyiciyi tıklarsanız tetikleyicinin ayrıntılarını görebilir, düzenleyebilir veya silebilirsiniz:
Ayrıca Create trigger
öğesini seçip tetikleyicinin ayrıntılarını girerek yeni bir tetikleyici oluşturabilirsiniz:
10. Tebrikler!
Codelab'i tamamladığınız için tebrikler.
İşlediğimiz konular
- Eventarc'ın vizyonu
- Eventarc'taki etkinlikleri keşfedin
- Cloud Run havuzu oluşturma
- Pub/Sub için tetikleyici oluşturma
- Cloud Storage için tetikleyici oluşturma
- Cloud Denetleme Günlükleri için tetikleyici oluşturma
- Eventarc kullanıcı arayüzünü keşfetme