Cloud Run for Anthos Codelab Etkinlikleri

1. Giriş

6a5cf23c8e20491f.png

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.

ce389bcafba6d669.png

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.

b1dd0d8a73185b95.png

Kullanıcıların etkinlik odaklı sunucusuz uygulamalar derlemesine olanak tanımak için ilk odak noktamız iki yönlüdür:

  1. 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.
  1. 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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

Ortamı sağlamak ve bağlamak yalnızca birkaç dakika sürer. Tamamlandığında şuna benzer bir sonuç görmeniz gerekir:

f6ef2b5f13479f3a.png

İ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:

9526909a06c6d4f4.png

"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:

97bd4b57c6a05fcc.png

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

bec31b4f35fbcea.png

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:

f5c634057e935bc6.png

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:

b083cce219773d24.png

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:

aff3b2e7ad05c75d.png

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:

aff3b2e7ad05c75d.png

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