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.
Events for Cloud Run for Anthos, Cloud Run hizmetlerini ç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, Events for Cloud Run for Anthos hakkında bilgi edineceksiniz. Açıkça belirtmek gerekirse Cloud Pub/Sub, Denetim Günlükleri, Cloud Storage, Cloud Scheduler ve özel etkinliklerin nasıl üretileceği/kullanılacağı ile ilgili etkinlikleri dinleyeceksiniz.
Neler öğreneceksiniz?
- Anthos için Cloud Run Etkinlikleri'nin uzun vadeli vizyonu
- Events for Cloud Run for Anthos'un mevcut durumu
- Cloud Run havuzu oluşturma
- Cloud Pub/Sub için Etkinlik tetikleyicisi oluşturma
- Denetleme Günlükleri için Etkinlik tetikleyicisi oluşturma
- Cloud Storage için Etkinlik tetikleyicisi oluşturma
- Cloud Scheduler için Etkinlik tetikleyicisi oluşturma
- Özel etkinlikler oluşturma ve kullanma
2. Uzun Vadeli Vizyon
Sunucusuz mimariyi benimsediğimiz için etkinlikler, bağlantısız mikro hizmetlerin iletişim kurma sürecinin ayrılmaz bir parçası haline gelir. Events for Cloud Run for Anthos, etkinlikleri Anthos için Cloud Run teklifinin birinci sınıf vatandaşı yapar; böylece etkinliğe dayalı sunucusuz uygulamalar kolayca derlenir.
Events for Cloud Run for Anthos, paketlenmiş veya uygulama tarafından oluşturulan etkinlik kaynaklarından kümedeki 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, Android Yönetimi gibi Google'a ait ürünler olan etkinlik kaynakları |
Özel kaynaklar | Google'a ait olmayan ve son kullanıcıların kendileri tarafından oluşturulan etkinlik kaynakları. Bunlar, kullanıcı tarafından geliştirilmiş Knative Kaynakları veya kümede çalıştırılan ve Bulut Etkinliği oluşturabilen başka bir uygulama olabilir. |
3. taraf kaynaklar | Google'a veya son kullanıcıya ait olmayan etkinlik kaynakları. Buna GitHub, SAP, Datadog ve Pagerduty gibi üçüncü taraf sağlayıcılar, iş ortakları veya OSS toplulukları tarafından sahip olunan ve yönetilen popüler etkinlik kaynakları 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.
Cloud Run'a yönelik etkinlikler Knative Eventing ile uyumludur. Bu özellik, container'ların Knative tabanlı diğer uygulamalara taşınmasını ve bunlardan taşınabilmesini sağlar. Bu, etkinlik üreticileri ile etkinlik tüketicileri arasında bildirimli şekilde kablo bağlantısı kurmak için tutarlı, buluttan bağımsız bir çerçeve sağlar.
3. Geçerli durum
Bu önizleme, uzun vadeli işlevlerin başlangıçtaki özelliklerini sunan ilk sürümdür.
Kullanıcıların etkinlik odaklı sunucusuz uygulamalar derlemesine olanak tanımak için ilk odak noktamız iki yönlüdür:
- Anthos kümesindeki Cloud Run hizmetlerinin, Google Cloud hizmetlerinden gelen etkinliklere tepki vermesini sağlayan geniş bir Google Cloud Kaynakları ekosistemi sunun.
- Başlangıçta, Google Cloud Kaynakları'ndan gelen etkinlikler, Cloud Denetleme Günlükleri (CAL) yoluyla sunulur. Böylece, çok çeşitli etkinlik kaynakları sağlanır. Bu kaynaklardan gelen olay yayınındaki gecikme ve kullanılabilirlik, Cloud Denetleme Günlüklerine bağlıdır. Bir Google Cloud kaynağından etkinlik yayınlandığında ilgili Cloud Denetleme Günlüğü girişi oluşturulur.
- Cloud Denetleme Günlükleri ile birlikte Cloud Storage, Cloud Pub/Sub ve Cloud Scheduler'daki etkinlikleri kullanmak için birinci sınıf destek sunulur. Kullanıcı yolculukları ve geri bildirimler doğrultusunda daha fazla birinci sınıf kaynakla bu kaynak ekosistemini genişletmeye devam edeceğiz.
- Ad alanı kapsamlı bir küme-yerel Aracı URL'sinde yayınlayarak son kullanıcı uygulamalarının ve hizmetlerinin özel etkinlik yayınlamasını etkinleştirin.
Temel teslim mekanizması, müşterilerin web sayfalarında görünen Cloud Pub/Sub konularını ve aboneliklerini kullanır. bilgi edinmenizi sağlar. Dolayısıyla bu özellik, Cloud Pub/Sub ile aynı teslimat garantilerini sağlar.
Etkinlik Tetikleyici, tetikleyici filtresiyle eşleşen etkinliklerin Tetikleyicinin işaret ettiği hedefe (veya havuza) gönderilmesi için etkinliklere abone olunmasını sağlar.
Hizmetler arası birlikte çalışabilirlik için tüm etkinlikler, Cloud Etkinlikleri v1.0 biçiminde sağlanır.
GA'da ve sonrasında, yinelemeli bir şekilde daha fazla değer sunmaya devam edeceğiz.
4. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- 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 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ıdır ve değiştirilemez (bir kez ayarlandıktan 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" bazı önemli belgeler vardır.
- Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. 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.
5. API'leri etkinleştirin, alt bölgeyi ve platformu ayarlayın
Proje kimliğini ayarlama ve alfa bileşenleri yükleme
Cloud Shell'in içinde GOOGLE_CLOUD_PROJECT proje kimliğinize önceden ayarlanmış olmalıdır. Değilse, ayarlandığından ve gcloud'unuzun şu proje kimliğiyle yapılandırıldığından emin olun:
export GOOGLE_CLOUD_PROJECT=your-project-id gcloud config set project ${GOOGLE_CLOUD_PROJECT}
Alfa için gcloud bileşeninin şu anda yüklü olduğundan 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
Alt bölgeyi ve platformu ayarlama
Cloud Run Etkinlikleri ile GKE kümesi oluşturmadan önce küme adını, alt bölgeyi ve platformu ayarlayın. Örneğin, burada adı ve alt bölgeyi events-cluster
ve europe-west1-b
, platform ise gke,
olarak ayarladık.
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 ayarlanıp ayarlanmadığını kontrol edebilirsiniz:
gcloud config list ... [run] cluster = events-cluster cluster_location = europe-west1-b platform = gke
6. Cloud Run Etkinlikleri ile GKE kümesi oluşturma
Şu eklentilerin etkinleştirildiği, 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 Etkinliklerini Ayarlama (Kontrol Düzlemi)
Cloud Run Etkinlikleri'nde ayrı olarak ayarlanması gereken bir kontrol düzlemi ve veri düzlemi bulunur. Kontrol Düzlemi'ni ayarlamak için:
Cloud Shell'de:
gcloud beta events init
Bu işlem, etkinlik oluşturma işlemini başlatır ve ayrıca gereken bir dizi hizmet hesabı oluşturur. "Evet"i seçtiğinizden emin olun hizmet hesabı oluşturması istendiğinde.
Bu noktada kontrol düzlemi doğru şekilde başlatılmış olmalıdır. İçinde
Running
durumu, cloud-run-events
ad alanında 2 (controller-xxx-xxx
ve webhook-xxx-xxx
), knative-eventing
ad alanında ise 2 (eventing-controller-xxx-xxx
ve eventing-webhook-xxx-xxx
). Bunu, şu 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
Sırada, kullanıcı ad alanlarında veri düzlemi bulunuyor. Bu işlem, Pub/Sub'dan okuma/yazma işlemleri için uygun izinlere sahip bir Aracı oluşturur.
Cloud Shell'in içinde, nesnelerinizde 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 bunu default
olarak ayarlayabilirsiniz:
export NAMESPACE=default
Belirtilen ad alanı mevcut değilse (ör. ad alanı varsayılan değilse) bunu 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ğundan emin olun. Acentenin 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 ne olduğunu, yayınlayabilecekleri etkinlik türlerini ve bunları kullanmak için tetikleyicileri nasıl yapılandıracağınızı keşfedebilirsiniz.
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
Bir etkinlik havuzu olarak, aldığı CloudEvent'in içeriğini günlüğe kaydeden bir Cloud Run hizmetini dağıtın.
Knative'in halihazırda derlenmiş olan event_display özelliğini ve Knative sürümünün bir parçası olarak derlenen kapsayıcı görüntüsünü kullanabilirsiniz. Kapsayıcı 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
Container mimarisine 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 herhangi bir tarayıcı penceresinde hizmet URL'sini açarak dağıtılan kapsayıcınızı ziyaret edebilirsiniz.
11. Cloud Pub/Sub için Etkinlik tetikleyicisi oluşturma
Etkinlik almanın bir yolu da Cloud Pub/Sub'dır. Özel uygulamalar Cloud Pub/Sub'a mesaj yayınlayabilir. Bu mesajlar, Cloud Run için Etkinlikler aracılığıyla Google Cloud Run havuzlarına teslim edilebilir.
Konu oluşturma
Öncelikle bir Cloud Pub/Sub konusu oluşturun. TOPIC_ID
yerine, tercih ettiğiniz benzersiz bir konu adını girebilirsiniz:
export TOPIC_ID=cr-gke-topic gcloud pubsub topics create ${TOPIC_ID}
Tetikleyici oluşturma
Tetikleyici oluşturmadan önce, Cloud Pub/Sub'dan etkinlikler için tetikleyici oluşturmak isterseniz parametreler hakkında daha ayrıntılı bilgi edinin:
gcloud beta events types describe google.cloud.pubsub.topic.v1.messagePublished
Cloud Pub/Sub konusunda yayınlanan etkinlikleri, dağıtılan Cloud Run hizmetimize 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 uygulanması ve etkinlikleri filtrelemeye başlaması için 10 dakika kadar beklemeniz gerekebilir.
Özel bir uygulama gönderen mesajı simüle etmek için gcloud
kullanarak bir etkinlik tetikleyebilirsiniz:
gcloud pubsub topics publish ${TOPIC_ID} --message="Hello there"
Oluşturduğumuz Cloud Run havuzu, gelen iletinin gövdesini günlüğe kaydeder. Bunu Cloud Run örneğinizin Günlükler bölümünde görebilirsiniz:
"Merhaba," Pub/Sub tarafından gönderildiği şekilde base64 olarak kodlanır. Gönderilen orijinal iletiyi görmek istiyorsanız bu kodu çözmeniz gerekir.
Tetikleyiciyi silme
Dilerseniz testi tamamladıktan sonra tetikleyiciyi silebilirsiniz.
gcloud beta events triggers delete trigger-pubsub --namespace ${NAMESPACE}
12. Denetleme Günlükleri için Etkinlik tetikleyicisi oluşturma
Denetleme Günlüklerindeki etkinlikleri dinlemek için bir tetikleyici oluşturacaksınız. Daha net ifade etmek gerekirse Pub/Sub konusu oluşturma etkinliklerini Denetleme Günlüklerinde ararsınız.
Denetleme Günlüklerini Etkinleştir
Bir hizmetten etkinlik almak için denetleme günlüklerini etkinleştirmeniz gerekir. Cloud Console'da, sol üstteki menüden IAM & Admin > Audit Logs
'yi seçin. Hizmetler listesinde Google Cloud Pub/Sub'ı kontrol edin:
Sağ tarafta Yönetici, Okuma ve Yazma'nın seçili olduğundan emin olun. Kaydet'i tıklayın:
Test Denetleme Günlükleri
Parametreleri tanımlamayı öğrenmek için gerçek bir tetikleyici oluşturmanız gerekir. Ardından gerçek bir işlem gerçekleştirin.
Örneğin, bir Pub/Sub konusu oluşturun:
gcloud pubsub topics create cre-gke-topic1
Şimdi, 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
'yi seçin.
Query Builder,
altında Cloud Pub/Sub Topic
öğesini seçin ve Add
öğesini tıklayın:
Sorguyu çalıştırdıktan sonra, Pub/Sub konularıyla ilgili günlükleri görürsünüz. Bunlardan birinin google.pubsub.v1.Publisher.CreateTopic
olması gerekir:
serviceName
, methodName
ve resourceName
konularına dikkat edin. Tetikleyiciyi oluştururken bunları kullanacağız.
Tetikleyici oluşturma
Artık Denetleme Günlükleri için bir etkinlik tetikleyicisi oluşturmaya hazırsınız.
Aşağıdaki komutu çalıştırarak Google Cloud kaynaklarından gelen etkinlikler için tetikleyici oluşturmak isterseniz parametreler hakkında daha ayrıntılı bilgi edinebilirsiniz:
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 uygulanması ve etkinlikleri filtrelemeye başlaması için 10 dakika bekleyin. Hazır olduğunda etkinlikler filtrelenir ve hizmete gönderilir. Artık bir etkinliği 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
İsteğe bağlı olarak, testi tamamladıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-auditlog
Konuları da sil:
gcloud pubsub topics delete cre-gke-topic1 cre-gke-topic2
13. Cloud Storage için Etkinlik tetikleyicisi oluşturma
Cloud Storage'daki etkinlikleri dinlemek için bir tetikleyici oluşturacaksınız.
Paket oluşturma
İlk olarak, dağıtılan Cloud Run hizmetiyle aynı bölgede bir Cloud Storage paketi oluşturun. BUCKET_NAME
yerine istediğiniz benzersiz bir ad girebilirsiniz:
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ın yapmak 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 açıklanan adımları 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 varsayın ve bunu bir ortam değişkeni olarak ayarlayın:
export GCS_SERVICE_ACCOUNT=service-XYZ@gs-project-accounts.iam.gserviceaccount.com
Ardından, ilgili Hizmet Hesabına Pub/Sub'da yayınlama haklarını 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 tetikleyicisi oluşturmaya hazırsınız.
Tetikleyiciyi oluşturmak için ihtiyaç duyacağınız parametreler hakkında daha ayrıntılı 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 uygulanması ve etkinlikleri filtrelemeye başlaması için 10 dakika bekleyin. Hazır olduğunda etkinlikler filtrelenir ve hizmete gönderilir.
Artık bir etkinliği 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
İsteğe bağlı olarak, testi tamamladıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-storage
14. Cloud Scheduler için Etkinlik tetikleyicisi oluşturma
Cloud Scheduler'daki etkinlikleri dinlemek için bir tetikleyici oluşturacaksınız.
App Engine uygulaması oluşturma
Cloud Scheduler için şu anda kullanıcıların App Engine uygulaması oluşturması gerekmektedir. 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
Aşağıdaki komutu çalıştırarak Google Cloud kaynaklarından gelen etkinlikler için tetikleyici oluşturmak isterseniz parametreler hakkında daha ayrıntılı bilgi edinebilirsiniz:
gcloud beta events types describe google.cloud.scheduler.job.v1.executed
Planlayıcıyı oluşturmak için bir Cloud Scheduler konumu seçin:
export SCHEDULER_LOCATION=europe-west1
Google Cloud Scheduler'da dakikada bir 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 uygulanması ve etkinlikleri filtrelemeye başlaması için 10 dakika bekleyin. Hazır olduğunda etkinlikler filtrelenir ve hizmete gönderilir.
Cloud Console'da Cloud Run hizmetinin günlüklerini kontrol ederseniz alınan etkinliği görürsünüz.
Tetikleyiciyi silme
İsteğe bağlı olarak, testi tamamladıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-scheduler
15. Özel Etkinlikler (Aracı Uç Noktası)
Codelab'in bu bölümünde Aracı'yı kullanarak özel etkinlikler üretecek ve bunları kullanacaksınız.
Etkinlik Oluşturmak için Curl Kapsülü Oluşturma
Etkinlikler genellikle programatik olarak oluşturulur. Ancak bu adımda, etkinlikleri manuel olarak tek tek göndermek ve bu etkinliklerin doğru tüketiciye nasıl ulaştığını görmek için curl
aracını kullanacaksınız.
Etkinlik üreticisi olarak çalışan 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 kapsülünün düzgün çalıştığını doğrulayın. Status=Running
içeren curl
adında bir kapsül göreceksiniz:
kubectl get pod curl -n ${NAMESPACE}
Tetikleyici oluşturma
Filtreyle, yayımlayacağınız belirli CloudEvents türünde (bu örnekte alpha-type
) bir tetikleyici oluşturacaksınız. Tam eşleme filtrelemenin, dilediğiniz sayıda CloudEvents özelliği ve uzantıların desteklendiğini unutmayın. Filtreniz birden çok özellik ayarlıyorsa tetikleyicinin etkinliği filtrelemesi için etkinliğin tüm özelliklere sahip olması gerekir. Buna karşılık, bir 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
Aracıya HTTP isteği göndererek bir etkinlik oluşturun. Aşağıdaki komutu çalıştırarak Acente 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
kapsülüne SSH uygulayın:
kubectl --namespace ${NAMESPACE} attach curl -it
Kapsüle SSH uyguladınız ve artık HTTP isteğinde bulunabilirsiniz. Aşağıdakine benzer bir istem görünür:
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şturun:
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
Cloud Run Hizmeti'nin günlüklerine bakarak yayınlanan etkinliğin gönderildiğini doğrulayın:
kubectl logs --selector serving.knative.dev/service=$SERVICE_NAME \ -c user-container -n $NAMESPACE --tail=100
Tetikleyiciyi silme
İsteğe bağlı olarak, testi tamamladıktan sonra tetikleyiciyi silebilirsiniz:
gcloud beta events triggers delete trigger-custom
16. Tebrikler!
Codelab'i tamamladığınız için tebrikler.
İşlediğimiz konular
- Anthos için Cloud Run Etkinlikleri'nin uzun vadeli vizyonu
- Events for Cloud Run for Anthos'un mevcut durumu
- Cloud Run havuzu oluşturma
- Cloud Pub/Sub için Etkinlik tetikleyicisi oluşturma
- Denetleme Günlükleri için Etkinlik tetikleyicisi oluşturma
- Cloud Storage için Etkinlik tetikleyicisi oluşturma
- Cloud Scheduler için Etkinlik tetikleyicisi oluşturma
- Özel etkinlikler oluşturma ve kullanma