Bu codelab hakkında
1. Genel Bakış
Bu laboratuvarda, Pub/Sub konusunu iş akışları hizmetine bağlayan bir Eventarc tetikleyicisi oluşturacaksınız. Eventarc, hizmetleri birbirinden ayırıp hizmet iletişimi sağlamanıza olanak tanıyarak çözümünüzü daha genişletilebilir ve olay odaklı hale getirir. Cymbal Eats'te verdiğiniz siparişler için müşteri ödül puanlarını hesaplamak amacıyla bir iş süreci yürütmek için birden fazla adımdan oluşan bir iş akışı oluşturacaksınız. İş akışı, GKE Autopilot'ta çalışan bir uygulamaya birden fazla istek gönderir ve sipariş hizmeti uygulamasına hesaplanan ödül puanları hakkında bilgi vermek için Pub/Sub konusuna bir mesaj yayınlar.
GKE Autopilot nedir?
GKE Autopilot, GKE'de Google'ın düğümleriniz, ölçeklendirme, güvenlik ve önceden yapılandırılmış diğer ayarlar dahil küme yapılandırmanızı yönettiği bir çalışma modudur. Autopilot kümeleri, çoğu üretim iş yükünü çalıştırmak ve Kubernetes manifest'lerinize göre işlem kaynakları sağlamak için optimize edilmiştir. Geliştirilmiş yapılandırma; küme ve iş yükü kurulumu, ölçeklenebilirlik ve güvenlikle ilgili GKE en iyi uygulamalarını ve önerilerini izler. Yerleşik ayarların listesi için Autopilot ve Standart karşılaştırma tablosuna bakın.
GKE Standard ile çalışma düğümlerini ve düğüm havuzu yapılandırmasını yönetmekten kullanıcılar sorumludur. Geri kalan her şey ise GKE tarafından halledilir.
GKE Standard modunda çalışırken müşterilerin ve Google'ın sorumlulukları
GKE Autopilot ile düğüm havuzu yapılandırması ve yönetimi Google'ın sorumluluğundadır. Bu sayede, kümenin üzerinde çalışan uygulamalara ve hizmetlere odaklanabilirsiniz.
Eventarc nedir?
Eventarc temel altyapıyı uygulamak, özelleştirmek veya sürdürmek zorunda kalmadan etkinliğe dayalı mimariler oluşturmanıza olanak tanır. Eventarc, ayrıştırılan mikro hizmetler arasındaki durum değişikliklerinin (etkinlik adı verilen) akışını yönetmek amacıyla standartlaştırılmış bir çözüm sunar. Eventarc, tetiklendiğinde bu etkinlikleri Pub/Sub abonelikleri üzerinden çeşitli hedeflere (ör. (iş akışları, Cloud Run) sizin için teslimat, güvenlik, yetkilendirme, gözlemlenebilirlik ve hata işlemeyi yönetecek.
Google etkinlik sağlayıcıları
- 90'dan fazla Google Cloud sağlayıcısı. Bu sağlayıcılar, etkinlikleri doğrudan kaynaktan (ör. Cloud Storage) veya Cloud Denetleme Günlükleri girişleri aracılığıyla gönderir.
- Pub/Sub sağlayıcıları. Bu sağlayıcılar, Pub/Sub mesajlarını kullanarak Eventarc'a etkinlik gönderir.
Üçüncü taraf sağlayıcılar
Üçüncü taraf sağlayıcılar, Eventarc kaynağı sunan ve Google harici sağlayıcılardır.
Eventarc tetikleyicileri
- Cloud Pub/Sub etkinlikleri. Eventarc, Pub/Sub konularına yayınlanan mesajlar tarafından tetiklenebilir.
- Cloud Denetleme Günlükleri (CAL) etkinlikleri. Cloud Denetleme Günlükleri, her bir Cloud projesi, klasörü ve kuruluş için Yönetici Etkinliği ve Veri Erişimi denetleme günlükleri sağlar.
- Doğrudan etkinlikler. Eventarc, bir Cloud Storage paketi güncellemesi veya Firebase Remote Config şablonu güncellemesi gibi çeşitli doğrudan etkinlikler tarafından tetiklenebilir.
Etkinlik hedefleri
- İş akışları
- Cloud Run
- GKE
- Cloud Functions( 2. nesil)
Workflows nedir?
İş akışları; mikro hizmetleri, görevleri ve API'leri entegre etmenizi sağlayan, tümüyle yönetilen bir hizmettir. İş akışları, sunucusuz bir hizmettir ve isteğinizi karşılayacak şekilde ölçeklendirilir.
İş akışlarının kullanım alanları:
- Etkinlik odaklı iş akışları, tanımlanmış tetikleyicilere göre yürütülür. Örneğin, yeni bir sipariş gönderildiğinde ve müşteri bağlılık puanlarını hesaplamak istediğinizde bu durumla karşılaşabilirsiniz. Alternatif olarak, bir sipariş iptal edildiğinde etkinlik yayınlanabilir ve ilgili tüm hizmetler etkinliği işler.
- Toplu iş iş akışları, Cloud Scheduler'ı kullanarak işleri düzenli olarak çalıştırır. Örneğin, başarısız durumunda olan menü öğelerinin kontrol edilmesi ve silinmeleri için gecelik bir iş.
İş akışları, hizmetleri düzenleyen iş akışları için idealdir. Bekleme ve yeniden deneme süreçlerini bir yıla kadar otomatik hale getirebilirsiniz.
İş akışlarının avantajları:
- Kod üzerinden yapılandırma: Kod yazmak yerine mantığı yapılandırmaya taşıyarak teknik borçu azaltın.
- Mimarınızı basitleştirin. Durum bilgili iş akışları, karmaşık hizmet entegrasyonlarını ek bağımlılıklar olmadan görselleştirmenize ve izlemenize olanak tanır.
- Güvenilirlik ve hata toleransı özelliklerini bir araya getirin. Varsayılan veya özel yeniden deneme mantığı ve diğer sistemler başarısız olduğunda bile hata işlemeyle hataları kontrol edin. İlerleme durumunu takip etmenize yardımcı olmak için her adım için Cloud Spanner'ı kontrol edin.
- Sıfır bakım. Gerektiğinde ölçeklendirin: Düzeltmeniz veya bakım yapmanız gereken bir şey yoktur. Yalnızca iş akışlarınız çalıştığında, beklerken veya etkin değilken ücretsiz olarak ödeme yapın.
Bu laboratuvarda, etkinliğe dayalı bir iş akışı yapılandıracaksınız.
Öğrenecekleriniz
Bu laboratuvarda aşağıdakileri nasıl yapacağınızı öğreneceksiniz:
- İş akışlarını tetiklemek için Pub/Sub konusunu ve Eventarc'ı yapılandırma
- GKE Autopilot'ta çalışan uygulamaya API çağrıları yapmak için İş Akışını yapılandırın
- Mesajları Pub/Sub'da yayınlamak için İş Akışını yapılandırma
- Cloud Logging'de Workflows yapılandırılmış günlüklerini sorgulama ve gcloud CLI'ı kullanma
Ön koşullar
- Bu laboratuvarda, Cloud Console ve Cloud Shell ortamlarıyla ilgili bilgi sahibi olmanız gerekir.
- Önceki GKE ve Cloud Pub/Sub deneyimi faydalıdır ancak zorunlu değildir.
2. Kurulum ve Gereksinimler
Cloud projesi 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. İstediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersizdir 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ğini (genellikle
PROJECT_ID
olarak tanımlanır) referans almanız gerekir. Oluşturulan kimliği beğenmezseniz rastgele bir kimlik daha oluşturabilirsiniz. Alternatif olarak, kendi ölçümünüzü deneyip mevcut olup olmadığına bakabilirsiniz. Bu adımdan sonra değiştirilemez ve proje süresince kalır. - Bilginiz için bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Sonraki adımda, 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ırma yapılmaması için kaynakları kapatmak isterseniz oluşturduğunuz kaynakları silebilir veya projenin tamamını silebilirsiniz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Ortam Kurulumu
Arama çubuğunun sağındaki simgeyi tıklayarak Cloud Shell'i etkinleştirin.
Depoyu klonlayın ve dizine gidin, aşağıdaki komutu kopyalayıp terminale yapıştırın ve Enter tuşuna basın:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
gke-lab-setup.sh
komutunu çalıştırarak gerekli bağımlılıkları dağıtın
Aşağıdaki kaynaklar oluşturulacak:
- AlloyDB kümesi ve örneği
- GKE Autopilot kümesi
./gke-lab-setup.sh
Yetki vermeniz istenirse "Yetkilendir"i tıklayın seçeneğini tıklayın.
Kurulum yaklaşık 10 dakika sürer.
Komut dosyası tamamlanana kadar bekleyin ve diğer adımları çalıştırmadan önce aşağıdaki çıkışı görün.
NAME: client-instance ZONE: us-central1-c MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.9 EXTERNAL_IP: 35.232.109.233 STATUS: RUNNING
3. GKE Autopilot Kümesi
GKE Autopilot kümesini inceleme
Proje ortamı değişkenlerini ayarlayın:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
İlk kurulumun bir parçası olan küme aşağıdaki komut kullanılarak oluşturulmuştur (Bu komutu çalıştırmanız gerekmez):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Oluşturulan GKE Autopilot kümesini görüntülemek için komutu çalıştırın:
gcloud container clusters list
Örnek çıktı:
Kümenin kimlik bilgilerini depolamak için şu komutu çalıştırın:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Uygulama dağıtma
Şimdi bir Müşteri Hizmetleri uygulaması dağıtacaksınız. Bu, Quarkus çerçevesini kullanan Java tabanlı bir mikro hizmettir.
cymbal-eats/customer-service
klasörüne gidin ve kapsayıcı görüntüsü derleyip yüklemek için aşağıdaki komutları çalıştırın:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
AlloyDB Özel IP adresini ayarlayın:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Müşteri Hizmetleri uygulaması tarafından veritabanına bağlanmak için kullanılacak veritabanı kimlik bilgilerini depolamak üzere Kubernetes gizli anahtar nesnesi oluşturmak için aşağıdaki komutları çalıştırın:
DB_NAME=customers
DB_USER=postgres
DB_PASSWORD=password123
kubectl create secret generic gke-alloydb-secrets \
--from-literal=database=$DB_NAME \
--from-literal=username=$DB_USER \
--from-literal=password=$DB_PASSWORD \
--from-literal=db_host=$DB_HOST
delivery.yaml dosyasındaki CUSTOMER_SERVICE_IMAGE öğesini değiştirmek için şu komutu çalıştırın:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Uygulamayı dağıtmak için şu komutu çalıştırın:
kubectl apply -f customer-service-deployment.yaml
Uygulamanın RUNNING (ÇALIŞIYOR) durumuna geçmesi birkaç dakika sürer.
Dağıtım spesifikasyonu dosyasını inceleyin:
deployment.yaml.tmpl
Yapılandırmanın bu uygulamayı çalıştırmak için gereken kaynakları belirten kısmını burada bulabilirsiniz.
spec: containers: - name: customer-service image: CUSTOMER_SERVICE_IMAGE resources: requests: cpu: 250m memory: 512Mi ephemeral-storage: 512Mi limits: cpu: 500m memory: 1024Mi ephemeral-storage: 1Gi
İş akışında kullanılacak harici IP'yi oluşturmak için şu komutu çalıştırın:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Oluşturulan kaynakları doğrulamak için komutu çalıştırın:
kubectl get all
Örnek çıktı:
4. İş Akışını Gözden Geçirme
İş Akışıyla İlgili Temel Kavramlar
İş akışı, iş akışları söz dizimi( YAML veya JSON) kullanılarak açıklanan bir dizi adımdan oluşur.
İş akışı oluşturulduktan sonra dağıtılır. Böylece iş akışı yürütmeye hazır hale gelir.
Yürütme, iş akışının tanımında yer alan mantığın tek bir çalıştırılmasıdır. Yürütülmeyen bir iş akışı, ücret oluşturmaz. Tüm iş akışı yürütmeleri bağımsızdır ve ürünün hızlı ölçeklendirmesi, çok sayıda eşzamanlı yürütmeye olanak tanır.
Yürütme kontrolleri
- Adımlar: Bir iş akışı oluşturmak için Workflows söz dizimini kullanarak istediğiniz
steps
ve yürütme sırasını tanımlarsınız. Her iş akışında en az bir adım olmalıdır. - Koşullar: Bir ifadenin değerinin iş akışının yürütme akışını kontrol etmesine olanak tanıyan bir seçim mekanizması olarak
switch
bloğunu kullanabilirsiniz. - Yinelemeler: Bir sayı dizisi üzerinde veya liste ya da harita gibi bir veri koleksiyonunda yineleme yapmak için
for
döngüsünü kullanabilirsiniz. - Alt iş akışları: Alt iş akışı, programlama dilindeki bir rutine veya işleve benzer şekilde çalışır. Bu sayede, iş akışınızın birden çok kez tekrar edeceği bir adımı veya adım kümesini kapsamanıza olanak tanır.
Yürütmeleri tetikleme
- Manuel: İş akışlarını Google Cloud Console'dan veya Google Cloud KSA'yı kullanarak komut satırından yönetebilirsiniz.
- Programatik: İş akışlarını yönetmek için Workflows API veya REST API için Cloud İstemci Kitaplıkları kullanılabilir.
- Planlandı: Belirli bir zaman planı üzerinde iş akışı çalıştırmak için Cloud Scheduler'ı kullanabilirsiniz.
Çalışma Zamanı Bağımsız Değişkenleri
Çalışma zamanında iletilen verilere ana iş akışınıza (ana bloka yerleştirilmiş) bir params
alanı eklenerek erişilebilir. Ana blok, herhangi bir geçerli JSON veri türü olan tek bir bağımsız değişkeni kabul eder. Parametreler alanı, iş akışının girdiğiniz verileri depolamak için kullandığı değişkeni adlandırır.
İş Akışı Mantığı
Bir müşteri yoksa iş akışı, önce müşteri oluşturmak ve ardından ödül puanlarını güncellemek için bir API çağrısı yapar. İş akışı, toplam sipariş tutarına göre müşterinin ödül puanlarını hesaplamak için bir çarpan seçer. Ayrıntılar için aşağıdaki örneğe bakın.
- calculate_multiplier: switch: - condition: ${totalAmount < 10} steps: - set_multiplier1: assign: - multiplier: 2 - condition: ${totalAmount >= 10 and totalAmount < 25} steps: - set_multiplier2: assign: - multiplier: 3 - condition: ${totalAmount >= 25} steps: - set_multiplier3: assign: - multiplier: 5 - calculate_rewards: assign: - rewardPoints: ${customerRecord.rewardPoints + multiplier}
5. İş Akışını yapılandırma ve dağıtma
Hizmetin harici IP adresini görüntülemek için şu komutu çalıştırın:
kubectl get svc
Örnek çıktı:
Önceki çıkıştaki Harici IP değerini kullanarak aşağıdaki ortam değişkenini ayarlayın.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
İş akışı şablonundaki Müşteri Hizmetleri uygulama URL'sini değiştirin:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Workflows hizmeti ve proje ortamı değişkenlerinin konumunu ayarlayın:
gcloud config set workflows/location ${REGION}
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
İş akışı için aşağıdaki izinlere sahip özel bir hizmet hesabı oluşturun:
- Çağrı Kaydı API'leri
- PubSub konusuna mesaj yayınlama
export WORKFLOW_SERVICE_ACCOUNT=workflows-sa
gcloud iam service-accounts create ${WORKFLOW_SERVICE_ACCOUNT}
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com" \
--role "roles/pubsub.publisher"
İş akışını dağıtma. İş akışı, önceki adımda oluşturulan hizmet hesabını kullanacak şekilde yapılandırılır:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
İş akışı kaynağını ve diğer ayrıntıları(Tetikleyiciler sekmesi) inceleyin. Şu anda bu iş akışını yürütmek üzere yapılandırılmış tetikleyici yok. Bir sonraki adımda kuracaksınız.
6. Pub/Sub konularını ve Eventarc tetikleyicisini yapılandırma
Ardından, iki Pub/Sub konusu oluşturacak ve bir Eventarc tetikleyicisi yapılandıracaksınız.
Sipariş Hizmeti uygulaması, order-topic
uygulamasında yeni siparişlerle ilgili bilgilerin yer aldığı mesajları yayınlar.
İş akışı, sipariş ödül puanları ve toplam tutarla ilgili bilgilerin yer aldığı mesajları order-points-topic
üzerinde yayınlar. Sipariş Hizmeti(bu laboratuvarın dağıtılmayan bölümünde), ödül puanlarını ve sipariş başına toplam tutarı güncellemek amacıyla order-points-topic,
için Push aboneliği tarafından kullanılan bir uç nokta sunar.
Yeni Pub/Sub konuları oluşturma:
export TOPIC_ID=order-topic
export ORDER_POINTS_TOPIC_ID=order-points-topic
gcloud pubsub topics create $TOPIC_ID --project=$PROJECT_ID
gcloud pubsub topics create $ORDER_POINTS_TOPIC_ID --project=$PROJECT_ID
Eventarc hizmeti için konum ayarlayın:
gcloud config set eventarc/location ${REGION}
İş akışlarını yürütmek için Eventarc tetikleyicisi tarafından kullanılacak bir özel hizmet hesabı oluşturun.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
İş akışlarını yürütmek için hizmet hesabına erişim verin.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Pub/Sub mesajlarını dinlemek ve bunları iş akışlarına teslim etmek için bir Eventarc tetikleyicisi oluşturun.
gcloud eventarc triggers create new-orders-trigger \
--destination-workflow=${WORKFLOW_NAME} \
--destination-workflow-location=${REGION} \
--event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
--service-account="${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--transport-topic=$TOPIC_ID
Örnek çıktı:
Creating trigger [new-orders-trigger] in project [qwiklabs-gcp-01-1a990bfcadb3], location [us-east1]...done. Publish to Pub/Sub topic [projects/qwiklabs-gcp-01-1a990bfcadb3/topics/order-topic] to receive events in Workflow [rewardsWorkflow]. WARNING: It may take up to 2 minutes for the new trigger to become active.
Oluşturulan Eventarc tetikleyicisini inceleyin.
Tetikleyici için oluşturulan aboneliği inceleyin.
İş akışı tarafındaki değişiklikleri inceleyin. Yeni bir tetikleyici eklendi.
7. Test iş akışı
Sipariş Hizmeti'ni simüle etmek için Cloud Shell'den Pub/Sub konusuna mesaj gönderecek ve Cloud Console'da Müşteri Hizmetleri günlüklerini doğrulayacaksınız.
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
Örnek çıktı:
messageIds: - '5063709859203105'
İş akışı yürütme ayrıntılarını ve günlükleri inceleyin.
8. İş Akışı Yapılandırılmış Günlük Kaydı
İş akışı, yapılandırılmış günlükleri JSON biçiminde yazacak şekilde yapılandırılmıştır. Günlükler, Cloud Logging API, workflows.googleapis.com/Workflow
kaynağı kullanılarak ve projects/${PROJECT_ID}/logs/Workflows
günlük adı altına yazılır.
Aşağıdaki günlük kaydı yapılandırmasını inceleyin.
- log_totalAmount: call: sys.log args: json: orderNumber: ${order.orderNumber} totalAmount: ${totalAmount} multiplier: ${multiplier} totalRewardPoints: ${rewardPoints} orderRewardPoints: ${orderRewardPoints} severity: INFO
Cloud Console'da Günlük Gezgini'ni açın ve toplamı 2 ABD dolarından fazla olan işlenmiş siparişleri bulmak için bir sorgu çalıştırın.
Arama sorgusu alanını göstermek için "Sorguyu göster"i tıklayın.
resource.type="workflows.googleapis.com/Workflow" AND
jsonPayload.totalAmount > 2 AND
timestamp >= "2023-01-01T00:00:00Z" AND
timestamp <= "2024-12-31T23:59:59Z"
Örnek çıktı:
Cloud Shell'i açın ve aşağıdaki komutlarla gcloud KSA'yı kullanarak günlükleri okuyun.
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
table
biçimini kullanan örnek çıkış:
Günlükleri JSON biçiminde döndürmek için aşağıdaki komutu çalıştırın:
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format=json | jq
json
biçimini kullanan örnek çıkış:
9. Müşteri Kayıtlarını İnceleme
(İsteğe bağlı adımlar)
Müşteri Hizmetleri URL'si ortam değişkenini ayarlamak için aşağıdaki komutları çalıştırın.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
Örnek çıktı:
[ { "address": "1845 Denise St", "city": "Mountain View", "createDateTime": "2023-01-31T17:22:08.853644", "email": "ajensen9090+eats@gmail.com", "id": "id1", "name": "Angela Jensen", "rewardPoints": 4, "state": "CA", "updateDateTime": "2023-01-31T17:22:09.652117", "zip": "94043" } ]
Yeni bir siparişi birden çok kez yayınlamak için komut çalıştırın ve curl komutuyla müşteri ödül puanlarını doğrulayın.
Yeni sipariş mesajı yayınla:
export TOPIC_ID=order-topic
gcloud pubsub topics publish $TOPIC_ID --message '{"userId":"id1","orderNumber":123456,"name":"Angela Jensen","email":"ajensen9090+eats@gmail.com","address":"1845 Denise St","city":"Mountain View","state":"CA","zip":"94043","orderItems":[{"id":7,"createDateTime":"2022-03-17T21:51:44.968584","itemImageURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","itemName":"Curry Plate","itemPrice":12.5,"itemThumbnailURL":"https://images.unsplash.com/photo-1618449840665-9ed506d73a34?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=687&q=80","spiceLevel":0,"status":"Ready","tagLine":"Spicy touch for your taste buds","updateDateTime":"2022-03-18T01:30:29.340584","inventory":8,"quantity":1}]}'
Müşteri ödül puanlarını doğrulama:
curl $CUSTOMER_SERVICE_URL/customer | jq
En son günlükleri kontrol etmek için aşağıdaki komutu çalıştırın:
gcloud logging read 'resource.type="workflows.googleapis.com/Workflow" AND jsonPayload.totalAmount > 2 AND timestamp >= "2023-01-01T00:00:00Z" AND timestamp <= "2023-12-31T23:59:59Z"' --limit 10 --format="table(jsonPayload.orderNumber,jsonPayload.totalAmount,jsonPayload.orderRewardPoints,jsonPayload.totalRewardPoints,jsonPayload.multiplier)"
10. Tebrikler!
Tebrikler, codelab'i tamamladınız.
İşlediğimiz konular:
- İş akışlarını tetiklemek için Pub/Sub konusunu ve Eventarc'ı yapılandırma
- GKE Autopilot'ta çalışan uygulamaya API çağrıları yapmak için Workflow'u yapılandırma
- Pub/Sub'da mesaj yayınlamak için iş akışını yapılandırma
- Cloud Logging'de Workflows yapılandırılmış günlüklerini sorgulama ve gcloud CLI'ı kullanma
Sıradaki adım:
Diğer Cymbal Eats codelab'lerini keşfedin:
- Eventarc ile Cloud Workflows'u tetikleme
- Cloud Storage'dan Etkinlik İşlemeyi Tetikleme
- Cloud Run'dan Private CloudSQL'e bağlanma
- Cloud Run'dan Tümüyle Yönetilen Veritabanlarına Bağlanma
- Identity Aware Proxy (IAP) ile Güvenli Sunucusuz Uygulama
- Cloud Scheduler ile Cloud Run İşlerini Tetikleme
- Cloud Run'a Güvenli Şekilde Dağıtma
- Cloud Run Giriş Trafiğinin Güvenliğini Sağlama
Temizleme
Bu eğiticide kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız kaynakları içeren projeyi silin veya projeyi tutup tek tek kaynakları silin.
Projeyi silme
Faturalandırmayı ortadan kaldırmanın en kolay yolu, eğitim için oluşturduğunuz projeyi silmektir.