1. Giriş

Cloud Run, tümüyle yönetilen bir ortamda durum bilgisiz container'lar çalıştırmanıza olanak tanır. Açık kaynaklı Knative'den derlenen bu platform sayesinde, container'larınızı Cloud Run ile tümüyle yönetilecek şekilde veya Anthos için Cloud Run ile Google Kubernetes Engine kümenizde çalıştırmayı tercih edebilirsiniz.
Events for Cloud Run for Anthos, Cloud Run hizmetlerini çeşitli kaynaklardaki etkinliklere bağlamayı kolaylaştırır. Mikro hizmetlerin serbest bağlantılı olduğu ve dağıtıldığı etkinlik odaklı mimariler oluşturmanıza olanak tanır. Ayrıca, etkinlik alımı, teslimatı, güvenliği, yetkilendirme ve hata işleme gibi işlemleri sizin için gerçekleştirerek geliştiricilerin çevikliğini ve uygulamaların esnekliğini artırır.
Bu codelab'de, Events for Cloud Run for Anthos hakkında bilgi edineceksiniz. Daha spesifik olarak, Cloud Pub/Sub, Denetleme Günlükleri, Cloud Storage ve Cloud Scheduler'dan gelen etkinlikleri dinleyecek ve özel etkinlikleri nasıl oluşturup tüketeceğinizi öğreneceksiniz.
Neler öğreneceksiniz?
- Cloud Run for Anthos Etkinlikleri ile ilgili uzun vadeli vizyon
- Events for Cloud Run for Anthos'un mevcut durumu
- Cloud Run havuzu oluşturma
- Cloud Pub/Sub için etkinlik tetikleyici oluşturma
- Denetleme günlükleri için etkinlik tetikleyici oluşturma
- Cloud Storage için etkinlik tetikleyici oluşturma
- Cloud Scheduler için etkinlik tetikleyici oluşturma
- Özel etkinlikler oluşturma ve kullanma
2. Uzun Vadeli Vizyon
Sunucusuz mimariyi benimsedikçe etkinlikler, bağlantısı kaldırılmış mikro hizmetlerin iletişim kurma şeklinin ayrılmaz bir parçası haline gelir. Events for Cloud Run for Anthos, etkinlikleri Cloud Run for Anthos teklifinin birinci sınıf bir özelliği haline getirerek etkinlik odaklı sunucusuz uygulamalar oluşturmayı kolaylaştırır.
Events for Cloud Run for Anthos, paketlenmiş veya uygulama tarafından oluşturulan etkinlik kaynaklarından küme içi ve küme dışı tüketicilere güvenilir, güvenli ve ölçeklenebilir eşzamansız etkinlik teslimi sağlar.

Google Cloud kaynakları | Google Cloud'a ait ürünler olan etkinlik kaynakları |
Google kaynakları | Gmail, Hangouts ve Android Yönetimi gibi Google'a ait ürünler olan etkinlik kaynakları |
Özel kaynaklar | Google'a ait olmayan ve son kullanıcılar tarafından oluşturulan etkinlik kaynakları. Bunlar, kullanıcı tarafından geliştirilen Knative kaynakları veya kümede çalışan ve Cloud Event oluşturabilen diğer uygulamalar olabilir. |
Üçüncü taraf kaynakları | Ne Google'a ait olan ne de son kullanıcıya ait olan etkinlik kaynakları. Buna, üçüncü taraf sağlayıcılar, iş ortakları veya OSS toplulukları tarafından sahip olunan ve bakımı yapılan Github, SAP, Datadog, Pagerduty gibi popüler etkinlik kaynakları dahildir. |
Etkinlikler, hizmetler arası birlikte çalışabilirlik için CloudEvents v1.0 biçiminde normalleştirilir. CloudEvents, etkinlik verilerini ortak biçimlerde açıklayan, satıcıdan bağımsız açık bir spesifikasyondur. Hizmetler, platformlar ve sistemler arasında birlikte çalışabilirliği sağlar.
Cloud Run için Events, Knative Eventing ile uyumludur ve container'ların diğer Knative tabanlı uygulamalara ve bu uygulamalardan taşınmasına olanak tanır. Bu, etkinlik üreticilerini etkinlik tüketicileriyle bildirimli olarak bağlamak için tutarlı ve buluttan bağımsız bir çerçeve sağlar.
3. Geçerli durum
Bu önizleme, uzun vadeli işlevlerin ilk grubunu sunan ilk sürümdür.

Kullanıcıların etkinliğe dayalı sunucusuz uygulamalar oluşturmasını sağlamak için başlangıçta iki noktaya odaklanıyoruz:
- Anthos kümesindeki Cloud Run hizmetlerinin Google Cloud hizmetlerinden gelen etkinliklere tepki vermesini sağlayan geniş bir Google Cloud Kaynakları ekosistemi sunar.
- Başlangıçta, Google Cloud kaynaklarındaki etkinlikler Cloud Audit Logs (CAL) aracılığıyla sağlanır ve çok çeşitli etkinlik kaynakları etkinleştirilir. Bu kaynaklardan etkinlik tesliminin gecikme süresi ve kullanılabilirliği, Cloud Denetleme Günlükleri'ninkine bağlıdır. Google Cloud kaynağındaki bir etkinlik her yayınlandığında ilgili bir Cloud Denetleme Günlüğü girişi oluşturulur.
- Cloud Denetleme Günlükleri'nin yanı sıra Cloud Storage, Cloud Pub/Sub ve Cloud Scheduler'dan etkinlik tüketmek için birinci sınıf destek sunulur. Kullanıcı yolculukları ve geri bildirimlerinden daha fazla şey öğrendikçe bu kaynak ekosistemini birinci sınıf kaynaklarla genişletmeye devam edeceğiz.
- Ad alanı kapsamlı küme yerel Broker URL'sine yayın yaparak son kullanıcı uygulamalarının ve hizmetlerinin özel etkinlikler yayınlamasını sağlayın.
Temel alınan teslimat mekanizması, müşterilerin projelerinde görünen Cloud Pub/Sub konularını ve aboneliklerini kullanır. Bu nedenle, özellik Cloud Pub/Sub ile aynı teslimat garantilerini sağlar.
Etkinlik Tetikleyicisi, tetikleyici filtresiyle eşleşen etkinliklerin, Tetikleyicinin işaret ettiği hedefe (veya havuzuna) teslim edilmesi için etkinliklere abone olmanın bir yolunu sunar.
Tüm etkinlikler, hizmetler arası birlikte çalışabilirlik için Cloud Events v1.0 biçiminde sunulur.
GA'ya kadar ve sonrasında yinelemeli bir şekilde daha fazla değer sunmaya devam edeceğiz.
4. Kurulum ve Gereksinimler
Yönlendirmesiz ortam kurulumu
- Cloud Console'da oturum açın ve 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 proje için görünen adınızdır. Adlandırma kurallarına uyduğunuz sürece istediğiniz her şeyi kullanabilir ve istediğiniz zaman güncelleyebilirsiniz.
- Proje kimliği, tüm Google Cloud projelerinde benzersiz olmalı ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğine (genellikle
PROJECT_IDolarak tanımlanır) başvurmanız gerekir. Bu nedenle, beğenmezseniz başka bir rastgele kimlik oluşturun veya kendi kimliğinizi deneyip kullanılabilir olup olmadığını kontrol edin. Proje oluşturulduktan sonra bu ayar "dondurulur".
- Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.
Cloud Shell'i başlatma
Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak 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 Cloud Shell simgesini tıklayın:

Ortamın temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır. İşlem tamamlandığında aşağıdakine benzer bir sonuç görürsünüz:

Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu laboratuvardaki çalışmalarınızın tamamını yalnızca bir tarayıcı kullanarak yapabilirsiniz.
5. API'leri etkinleştirme, bölge ve platform ayarlama
Proje kimliğini ayarlama ve alfa bileşenlerini yükleme
Cloud Shell'de GOOGLE_CLOUD_PROJECT, proje kimliğinize ayarlanmış olmalıdır. Aksi takdirde, bu kimliğin ayarlandığından ve gcloud'un bu proje kimliğiyle yapılandırıldığından emin olun:
export GOOGLE_CLOUD_PROJECT=your-project-id
gcloud config set project ${GOOGLE_CLOUD_PROJECT}
Alpha için gcloud bileşeninin yüklendiğinden emin olun:
gcloud components install alpha
API'leri etkinleştir
Gerekli tüm hizmetleri etkinleştirin:
gcloud services enable cloudapis.googleapis.com gcloud services enable container.googleapis.com gcloud services enable containerregistry.googleapis.com gcloud services enable cloudbuild.googleapis.com
Bölge ve platformu ayarlama
Cloud Run Events ile GKE kümesi oluşturmadan önce küme adını, bölgeyi ve platformu ayarlayın. Örneğin, burada adı ve alt bölgeyi events-cluster ve europe-west1-b olarak, platformu ise gke, olarak ayarlıyoruz.
Cloud Shell'de:
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
Yapılandırmanın ayarlandığını şu şekilde kontrol edebilirsiniz:
gcloud config list ... [run] cluster = events-cluster cluster_location = europe-west1-b platform = gke
6. Cloud Run Events ile GKE kümesi oluşturma
Aşağıdaki eklentilerin etkin olduğu, Kubernetes >= 1.15.9-gke.26 çalıştıran bir GKE kümesi oluşturun: 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 Events'i (kontrol düzlemi) ayarlama
Cloud Run Events'in ayrı ayrı ayarlanması gereken bir kontrol düzlemi ve bir veri düzlemi vardır. Denetim düzlemini ayarlamak için:
Cloud Shell'de:
gcloud beta events init
Bu işlem, etkinlikleri başlatır ve gerekli hizmet hesaplarını oluşturur. Hizmet hesabı oluşturmanız istendiğinde "Evet"i seçtiğinizden emin olun.
Bu noktada kontrol düzlemi düzgün şekilde başlatılmış olmalıdır. Şu bilgileri içeren dört kapsül görmelisiniz:
Running durumu, cloud-run-events ad alanında 2 (controller-xxx-xxx ve webhook-xxx-xxx) ve knative-eventing ad alanında 2 (eventing-controller-xxx-xxx ve eventing-webhook-xxx-xxx). Aşağıdaki komutları çalıştırarak kontrol edebilirsiniz:
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 etkinliklerini (veri düzlemi) ayarlama
Ardından, kullanıcı ad alanlarında veri düzlemini ayarlamanız gerekir. Bu işlem, Pub/Sub'dan okuma/yazma için uygun izinlere sahip bir aracı oluşturur.
Cloud Shell'de, nesneleriniz için kullanmak istediğiniz ad alanı için bir NAMESPACE ortam değişkeni ayarlayın. Aşağıda gösterildiği gibi varsayılan ad alanını kullanmak istiyorsanız default olarak ayarlayabilirsiniz:
export NAMESPACE=default
Belirtilen ad alanı yoksa (ör. ad alanı varsayılan değilse) oluşturmanız gerektiğini unutmayın:
kubectl create namespace ${NAMESPACE}
Ad alanını varsayılan gizli anahtarla başlatın:
gcloud beta events namespaces init ${NAMESPACE} --copy-default-secret
Ad alanında varsayılan bir aracı oluşturun:
gcloud beta events brokers create default --namespace ${NAMESPACE}
Aracının oluşturulduğunu kontrol edin. Aracının hazır hale gelmesinin birkaç saniye sürebileceğini unutmayın:
kubectl get broker -n ${NAMESPACE}
NAME READY REASON URL
default True http://default-brokercell-ingress.cloud-run-events.svc.cluster.local/default/default
9. Etkinlik Keşfi
Kayıtlı kaynakların neler olduğunu, hangi etkinlik türlerini yayınlayabileceklerini ve bunları kullanmak için tetikleyicileri nasıl yapılandıracağınızı öğrenebilirsiniz.
Farklı etkinlik türlerinin listesini görmek için:
gcloud beta events types list
Her etkinlik türü hakkında daha fazla bilgi edinmek için:
gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished
10. Cloud Run havuzu oluşturma
Etkinlik havuzu olarak, aldığı CloudEvent'in içeriğini günlüğe kaydeden bir Cloud Run hizmeti dağıtın.
Knative'in önceden derlenmiş event_display özelliğini ve Knative sürümünün bir parçası olarak oluşturulan kapsayıcı görüntüsünü kullanabilirsiniz. Container görüntüsü ayrıntılarını event-display.yaml dosyasında görebilirsiniz:
... containers: - image: gcr.io/knative-releases/knative.dev/eventing-contrib/cmd/event_display@sha256:8da2440b62a5c077d9882ed50397730e84d07037b1c8a3e40ff6b89c37332b27
Cloud Run'a dağıtma
Kapsayıcıya alınmış uygulamanızı Cloud Run'a dağıtın:
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
İşlem başarılı olursa komut satırında hizmet URL'si gösterilir. Artık hizmet URL'sini herhangi bir tarayıcı penceresinde açarak dağıtılan kapsayıcınızı ziyaret edebilirsiniz.
11. Cloud Pub/Sub için etkinlik tetikleyici oluşturma
Etkinlikleri almanın bir yolu Cloud Pub/Sub'ı kullanmaktır. Özel uygulamalar, Cloud Pub/Sub'a mesaj yayınlayabilir ve bu mesajlar, Cloud Run için Etkinlikler aracılığıyla Google Cloud Run hedeflerine teslim edilebilir.
Konu oluşturma
Öncelikle bir Cloud Pub/Sub konusu oluşturun. TOPIC_ID ifadesini tercih ettiğiniz benzersiz bir konu adıyla değiştirebilirsiniz:
export TOPIC_ID=cr-gke-topic
gcloud pubsub topics create ${TOPIC_ID}
Tetikleyici oluşturma
Tetikleyiciyi oluşturmadan önce Cloud Pub/Sub'daki etkinlikler için tetikleyici oluşturmak üzere kullanmanız gereken parametreler hakkında daha fazla bilgi edinin:
gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished
Cloud Pub/Sub konusuna yayınlanan etkinlikleri dağıtılan Cloud Run hizmetimize göre filtrelemek için bir tetikleyici oluşturun:
gcloud beta events triggers create trigger-pubsub \
--namespace ${NAMESPACE} \
--target-service ${SERVICE_NAME} \
--type google.cloud.pubsub.topic.v1.messagePublished \
--parameters topic=${TOPIC_ID}
Tetikleyiciyi test etme
Tüm tetikleyicileri listeleyerek tetikleyicinin oluşturulup oluşturulmadığını kontrol edebilirsiniz:
gcloud beta events triggers list
Tetikleyici oluşturma işleminin yayılması ve etkinlikleri filtrelemeye başlaması için 10 dakika kadar beklemeniz gerekebilir.
Mesaj gönderen özel bir uygulamayı simüle etmek için gcloud kullanarak bir etkinlik tetikleyebilirsiniz:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
Oluşturduğumuz Cloud Run hedefi, gelen iletinin gövdesini günlüğe kaydeder. Bunu Cloud Run örneğinizin Günlükler bölümünde görüntüleyebilirsiniz:

"Hello there" ifadesinin Pub/Sub tarafından gönderildiği için base64 ile kodlanacağını ve gönderilen orijinal mesajı görmek istiyorsanız kodu çözmeniz gerektiğini unutmayın.
Tetikleyiciyi silme
Dilerseniz test tamamlandıktan sonra tetikleyiciyi silebilirsiniz.
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
12. Denetleme günlükleri için etkinlik tetikleyici oluşturma
Denetleme günlüklerindeki etkinlikleri dinlemek için bir tetikleyici ayarlarsınız. Daha spesifik olarak, denetleme günlüklerinde Pub/Sub konusu oluşturma etkinliklerini arayacaksınız.
Denetleme Günlüklerini Etkinleştirme
Bir hizmetten etkinlik almak için denetleme günlüklerini etkinleştirmeniz gerekir. Cloud Console'da sol üstteki menüden IAM & Admin > Audit Logs simgesini seçin. Hizmet listesinde Google Cloud Pub/Sub'ı işaretleyin:

Sağ tarafta Yönetici, Okuma ve Yazma seçeneklerinin işaretli olduğundan emin olun. Kaydet'i tıklayın:

Denetleme Günlüklerini Test Etme
Gerçek bir tetikleyici oluşturmak için ayarlamanız gereken parametreleri nasıl belirleyeceğinizi öğrenmek için gerçek bir işlem gerçekleştirin.
Örneğin, bir Pub/Sub konusu oluşturun:
gcloud pubsub topics create cre-gke-topic1
Şimdi de bu güncellemenin ne tür bir denetleme günlüğü oluşturduğunu görelim. Cloud Console'da sol üstteki menüden Logging > Logs Viewer simgesini seçin.
Query Builder, bölümünde Cloud Pub/Sub Topic seçeneğini belirleyin ve Add seçeneğini tıklayın:

Sorguyu çalıştırdıktan sonra Pub/Sub konularıyla ilgili günlükleri görürsünüz. Bunlardan biri google.pubsub.v1.Publisher.CreateTopic olmalıdır:

serviceName, methodName ve resourceName hükümlerini inceleyin. Bunları tetikleyiciyi oluştururken kullanacağız.
Tetikleyici oluşturma
Artık denetleme günlükleri için bir etkinlik tetikleyici oluşturmaya hazırsınız.
Google Cloud kaynaklarından gelen etkinlikler için tetikleyici oluşturmak üzere kullanmanız gereken parametreler hakkında daha fazla bilgi edinmek için aşağıdaki komutu çalıştırabilirsiniz:
gcloud beta events types describe google.cloud.audit.log.v1.written
Tetikleyiciyi doğru filtrelerle oluşturun:
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
Tetikleyiciyi test etme
Tetikleyicinin başarıyla oluşturulduğunu onaylamak için tüm tetikleyicileri listeleyin:
gcloud beta events triggers list
Tetikleyici oluşturma işleminin yayılması ve etkinlikleri filtrelemeye başlaması için 10 dakika kadar bekleyin. Hazır olduğunda oluşturma etkinliklerini filtreleyip hizmete gönderir. Artık bir etkinlik tetiklemeye hazırsınız.
Daha önce yaptığınız gibi başka bir Pub/Sub konusu oluşturun:
gcloud pubsub topics create cre-gke-topic2
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz:

Tetikleyiciyi ve konuları silme
Dilerseniz test tamamlandıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-auditlog
Ayrıca aşağıdaki konuları da silin:
gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2
13. Cloud Storage için etkinlik tetikleyici oluşturma
Cloud Storage'daki etkinlikleri dinlemek için bir tetikleyici ayarlayacaksınız.
Paket oluşturma
Öncelikle, dağıtılan Cloud Run hizmetiyle aynı bölgede bir Cloud Storage paketi oluşturun. BUCKET_NAME ifadesini tercih ettiğiniz benzersiz bir adla değiştirebilirsiniz:
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 izinlerini ayarlama
Tetikleyici oluşturmadan önce Cloud Storage için varsayılan hizmet hesabına Pub/Sub'a yayınlama izni vermeniz gerekir.
Öncelikle Cloud Storage'ın Pub/Sub'a yayınlamak için kullandığı hizmet hesabını bulmanız gerekir. Hizmet hesabını almak için Cloud Storage hizmet hesabını alma bölümünde belirtilen adımları uygulayabilir veya aşağıdaki komutu kullanabilirsiniz:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/projects/$(gcloud config get-value project)/serviceAccount"
Hizmet hesabı, email_address altında listelenmelidir.
Yukarıda bulduğunuz hizmet hesabının service-XYZ@gs-project-accounts.iam.gserviceaccount.com olduğunu varsayarak bunu bir ortam değişkenine ayarlayın:
export GCS_SERVICE_ACCOUNT=service-XYZ@gs-project-accounts.iam.gserviceaccount.com
Ardından, bu hizmet hesabına Pub/Sub'a yayın yapma hakkı verin:
gcloud projects add-iam-policy-binding ${GOOGLE_CLOUD_PROJECT} \
--member=serviceAccount:${GCS_SERVICE_ACCOUNT} \
--role roles/pubsub.publisher
Tetikleyici oluşturma
Artık Cloud Storage etkinlikleri için bir etkinlik tetikleyici oluşturmaya hazırsınız.
Tetikleyiciyi oluşturmak için gereken parametreler hakkında daha fazla bilgi edinebilirsiniz:
gcloud beta events types describe google.cloud.storage.object.v1.finalized
Tetikleyiciyi doğru filtrelerle oluşturun:
gcloud beta events triggers create trigger-storage \
--namespace ${NAMESPACE} \
--target-service ${SERVICE_NAME} \
--type=google.cloud.storage.object.v1.finalized \
--parameters bucket=${BUCKET_NAME}
Tetikleyiciyi test etme
Tetikleyicinin başarıyla oluşturulduğunu onaylamak için tüm tetikleyicileri listeleyin:
gcloud beta events triggers list
Tetikleyici oluşturma işleminin yayılması ve etkinlikleri filtrelemeye başlaması için 10 dakika kadar bekleyin. Hazır olduğunda oluşturma etkinliklerini filtreleyip hizmete gönderir.
Artık bir etkinlik tetiklemeye hazırsınız.
Cloud Storage paketine rastgele 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:

Tetikleyiciyi silme
Dilerseniz test tamamlandıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-storage
14. Cloud Scheduler için etkinlik tetikleyici oluşturma
Cloud Scheduler'dan gelen etkinlikleri dinlemek için bir tetikleyici ayarlayacaksınız.
App Engine uygulaması oluşturma
Cloud Scheduler'ı kullanmak için App Engine uygulaması oluşturmanız gerekir. Bir App Engine Konumu seçin ve uygulamayı oluşturun:
export APP_ENGINE_LOCATION=europe-west
gcloud app create --region=${APP_ENGINE_LOCATION}
Tetikleyici oluştur
Google Cloud kaynaklarından gelen etkinlikler için tetikleyici oluşturmak üzere kullanmanız gereken parametreler hakkında daha fazla bilgi edinmek için aşağıdaki komutu çalıştırabilirsiniz:
gcloud beta events types describe google.cloud.scheduler.job.v1.executed
Zamanlayıcıyı oluşturmak için bir Cloud Scheduler konumu seçin:
export SCHEDULER_LOCATION=europe-west1
Google Cloud Scheduler'da her dakika yürütülecek bir iş oluşturacak ve hedef hizmeti çağıracak bir tetikleyici oluşturun:
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"
Tetikleyiciyi test etme
Tetikleyicinin başarıyla oluşturulduğunu onaylamak için tüm tetikleyicileri listeleyin:
gcloud beta events triggers list
Tetikleyici oluşturma işleminin yayılması ve etkinlikleri filtrelemeye başlaması için 10 dakika kadar bekleyin. Hazır olduğunda oluşturma etkinliklerini filtreleyip hizmete gönderir.
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz.
Tetikleyiciyi silme
Dilerseniz test tamamlandıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-scheduler
15. Özel Etkinlikler (Aracı Uç Noktası)
Bu codelab'in bu bölümünde, Broker'ı kullanarak özel etkinlikler oluşturacak ve tüketeceksiniz.
Etkinlikler Üretmek İçin Curl Pod Oluşturma
Etkinlikler genellikle programlı şekilde oluşturulur. Ancak bu adımda, bağımsız etkinlikleri manuel olarak göndermek ve bu etkinliklerin doğru tüketici tarafından nasıl alındığını görmek için curl simgesini kullanacaksınız.
Etkinlik üreticisi olarak işlev gören bir kapsül oluşturmak için aşağıdaki komutu çalıştırın:
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 Pod'unun düzgün çalıştığını doğrulayın. curl adlı bir kapsül görmeniz gerekir. Bu kapsülde Status=Running bulunur:
kubectl get pod curl -n ${NAMESPACE}
Tetikleyici oluşturma
Yayınlayacağınız belirli CloudEvents türü (bu örnekte alpha-type) üzerinde filtre içeren bir tetikleyici oluşturursunuz. Herhangi bir sayıda CloudEvents özelliği ve uzantı üzerinde tam eşleşme filtrelemenin desteklendiğini unutmayın. Filtreniz birden fazla özellik ayarlarsa tetikleyicinin filtreleyebilmesi için etkinlikte tüm özellikler bulunmalıdır. Aksine, filtre belirtmezseniz tüm etkinlikler hizmetinizde alınır.
Tetikleyiciyi oluşturun:
gcloud beta events triggers create trigger-custom \
--namespace ${NAMESPACE} \
--target-service ${SERVICE_NAME} \
--type=alpha-type \
--custom-type
Tetikleyiciyi test etme
Tetikleyicinin başarıyla oluşturulduğunu onaylamak için tüm tetikleyicileri listeleyin:
gcloud beta events triggers list
Broker'a bir HTTP isteği göndererek etkinlik oluşturun. Aşağıdaki komutu çalıştırarak Broker URL'sini kendinize hatırlatın:
kubectl get brokers -n ${NAMESPACE}
NAME READY REASON URL
default True http://default-broker.<NAMESPACE>.svc.cluster.local
Daha önce oluşturduğunuz curl pod'una SSH ile bağlanın:
kubectl --namespace ${NAMESPACE} attach curl -it
Pod'a SSH ile bağlandınız ve artık HTTP isteği gönderebilirsiniz. Aşağıdakine benzer bir istem görüntülenir:
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:/ ]$
Etkinlik oluşturma:
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"}'
Etkinlik alındıysa HTTP 202 Accepted yanıtı alırsınız. Ctrl + D ile SSH oturumundan çıkın.
Yayınlanan etkinliğin gönderildiğini doğrulamak için Cloud Run hizmetinin günlüklerine bakın:
kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \ -c user-container -n $NAMESPACE --tail=100
Tetikleyiciyi silme
Dilerseniz test tamamlandıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-custom
16. Tebrikler!
Codelab'i tamamladığınız için tebrik ederiz.
İşlediğimiz konular
- Cloud Run for Anthos Etkinlikleri ile ilgili uzun vadeli vizyon
- Events for Cloud Run for Anthos'un mevcut durumu
- Cloud Run havuzu oluşturma
- Cloud Pub/Sub için etkinlik tetikleyici oluşturma
- Denetleme günlükleri için etkinlik tetikleyici oluşturma
- Cloud Storage için etkinlik tetikleyici oluşturma
- Cloud Scheduler için etkinlik tetikleyici oluşturma
- Özel etkinlikler oluşturma ve kullanma