1. Ringkasan
Di lab ini, Anda akan membuat pemicu Eventarc yang menghubungkan topik Pub/Sub ke layanan Workflows. Eventarc memungkinkan Anda memisahkan komunikasi layanan ke layanan, sehingga solusi Anda lebih mudah diperluas dan berbasis peristiwa. Anda akan membuat alur kerja yang mencakup beberapa langkah untuk menjalankan proses bisnis guna menghitung poin reward pelanggan untuk pemesanan di Cymbal Eats. Workflow akan mengirim beberapa permintaan ke aplikasi yang berjalan di GKE Autopilot dan memublikasikan pesan ke topik Pub/Sub untuk memberi tahu aplikasi Order Service tentang poin reward yang dihitung.

Apa yang dimaksud dengan GKE Autopilot?
GKE Autopilot adalah mode operasi di GKE. Dalam mode ini, Google mengelola konfigurasi cluster Anda, termasuk node, penskalaan, keamanan, dan setelan lainnya yang telah dikonfigurasi sebelumnya. Cluster Autopilot dioptimalkan untuk menjalankan sebagian besar workload produksi, dan menyediakan resource komputasi berdasarkan manifes Kubernetes Anda. Konfigurasi yang disederhanakan mengikuti praktik terbaik GKE dan rekomendasi untuk penyiapan cluster dan workload, skalabilitas, serta keamanan. Untuk daftar setelan bawaan, lihat tabel perbandingan Autopilot dan Standard.
Dengan GKE Standard, pengguna bertanggung jawab untuk mengelola konfigurasi worker node dan node pool, sementara sisanya ditangani oleh GKE.
Tanggung jawab pelanggan vs. Google saat berjalan dalam mode GKE Standard

Dengan GKE Autopilot, konfigurasi dan pengelolaan node pool menjadi tanggung jawab Google. Dengan begitu, Anda dapat berfokus pada aplikasi dan layanan yang berjalan di atas cluster.
Apa itu Eventarc?
Eventarc memungkinkan Anda membangun arsitektur berbasis peristiwa tanpa harus menerapkan, menyesuaikan, atau memelihara infrastruktur yang mendasarinya. Eventarc menawarkan solusi standar untuk mengelola alur perubahan status, yang disebut peristiwa, antara microservice yang dipisahkan. Saat dipicu, Eventarc merutekan peristiwa ini melalui langganan Pub/Sub ke berbagai tujuan (mis. Workflows, Cloud Run) sambil mengelola pengiriman, keamanan, otorisasi, kemampuan observasi, dan penanganan error untuk Anda.
Penyedia Acara Google
- Lebih dari 90 penyedia Google Cloud. Penyedia ini mengirim peristiwa baik secara langsung dari sumber (misalnya, Cloud Storage) atau melalui entri Cloud Audit Logs.
- Penyedia Pub/Sub. Penyedia ini mengirimkan peristiwa ke Eventarc menggunakan pesan Pub/Sub.
Penyedia pihak ketiga
Penyedia pihak ketiga adalah entitas non-Google yang menawarkan sumber Eventarc.
Pemicu Eventarc
- Peristiwa Cloud Pub/Sub. Eventarc dapat dipicu oleh pesan yang dipublikasikan ke topik Pub/Sub.
- Peristiwa Cloud Audit Logs (CAL). Cloud Audit Logs menyediakan log audit Aktivitas Admin dan Akses Data untuk setiap project, folder, dan organisasi Cloud.
- Peristiwa langsung. Eventarc dapat dipicu oleh berbagai peristiwa langsung seperti update pada bucket Cloud Storage atau update pada template Firebase Remote Config.
Tujuan acara
- Workflows
- Cloud Run
- GKE
- Cloud Functions( generasi ke-2)

Apa itu Workflows?
Workflows adalah layanan terkelola sepenuhnya yang memungkinkan Anda mengintegrasikan microservice, tugas, dan API. Workflows adalah layanan serverless dan akan diskalakan untuk memenuhi permintaan Anda.
Kasus penggunaan alur kerja:
- Alur kerja berbasis peristiwa dijalankan pada pemicu yang ditentukan. Misalnya, saat pesanan baru dikirimkan dan Anda ingin menghitung poin loyalitas pelanggan. Atau, saat pesanan dibatalkan, peristiwa dapat dipublikasikan dan semua layanan yang berminat akan memproses peristiwa tersebut.
- Alur kerja tugas batch menjalankan tugas secara rutin menggunakan Cloud Scheduler. Misalnya, tugas malam untuk memeriksa item menu dalam status gagal dan menghapusnya.
Workflows sangat cocok untuk alur kerja yang mengorkestrasi layanan. Anda dapat mengotomatiskan proses yang meliputi aktivitas menunggu dan percobaan ulang hingga satu tahun.
Manfaat Workflows:
- Konfigurasi melalui kode: Kurangi utang teknis dengan memindahkan logika ke konfigurasi, bukan menulis kode.
- Sederhanakan arsitektur Anda. Dengan Workflows stateful, Anda dapat memvisualisasikan dan memantau integrasi layanan yang kompleks tanpa dependensi tambahan.
- Menggabungkan keandalan dan fault tolerance. Kegagalan dapat dikontrol dengan penanganan error dan logika percobaan ulang kustom atau default, bahkan saat sistem lain gagal. Setiap langkah ke Cloud Spanner diperiksa untuk membantu Anda melacak progres.
- Tanpa pemeliharaan. Skalakan sesuai kebutuhan: Tidak ada yang perlu di-patch atau dipertahankan. Hanya bayar saat alur kerja Anda berjalan. Biaya tidak akan dikenakan saat alur kerja dalam status menunggu atau tidak aktif.
Di lab ini, Anda akan mengonfigurasi alur kerja berbasis peristiwa.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari cara melakukan hal-hal berikut:
- Mengonfigurasi topik Pub/Sub dan Eventarc untuk memicu Workflows
- Mengonfigurasi Workflow untuk melakukan panggilan API ke aplikasi yang berjalan di GKE Autopilot
- Mengonfigurasi Alur Kerja untuk memublikasikan pesan ke Pub/Sub
- Cara mengkueri log terstruktur Workflows di Cloud Logging dan menggunakan gcloud CLI
Prasyarat
- Di lab ini, Anda dianggap telah memahami Konsol Cloud dan lingkungan Cloud Shell.
- Pengalaman GKE dan Cloud Pub/Sub sebelumnya akan sangat membantu, tetapi tidak wajib.
2. Penyiapan dan Persyaratan
Penyiapan Project Cloud
- Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
- Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (biasanya diidentifikasi sebagai
PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan melihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan akan tetap ada selama durasi project. - Sebagai informasi, ada nilai ketiga, Project Number yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
- Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus seluruh project. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.
Penyiapan Lingkungan
Aktifkan Cloud Shell dengan mengklik ikon di sebelah kanan kotak penelusuran.

Clone repositori dan buka direktori, salin dan tempel perintah di bawah ke terminal, lalu tekan Enter:
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Deploy dependensi yang diperlukan dengan menjalankan gke-lab-setup.sh
Resource berikut akan dibuat:
- Cluster dan instance AlloyDB
- Cluster GKE Autopilot
./gke-lab-setup.sh
Jika diminta untuk memberikan otorisasi, klik "Beri otorisasi" untuk melanjutkan.

Penyiapan akan memerlukan waktu sekitar 10 menit.
Tunggu hingga skrip selesai dan Anda melihat output di bawah sebelum menjalankan langkah-langkah lainnya.
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. Cluster GKE Autopilot
Meninjau cluster GKE Autopilot
Tetapkan variabel lingkungan Project:
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)')
Sebagai bagian dari penyiapan awal, cluster dibuat menggunakan perintah di bawah (Anda tidak perlu menjalankan perintah ini):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Jalankan perintah untuk melihat cluster GKE Autopilot yang dibuat:
gcloud container clusters list
Contoh output:

Jalankan perintah untuk menyimpan kredensial untuk cluster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Men-deploy aplikasi
Selanjutnya, Anda akan men-deploy aplikasi Customer Service. Ini adalah microservice berbasis java yang menggunakan framework Quarkus.
Buka folder cymbal-eats/customer-service, lalu jalankan perintah di bawah untuk membangun dan mengupload image container:
./mvnw clean package -DskipTests
export CUSTOMER_SERVICE_IMAGE=gcr.io/$PROJECT_ID/customer-service:1.0.0
gcloud builds submit --tag $CUSTOMER_SERVICE_IMAGE .
Tetapkan alamat IP Pribadi AlloyDB:
export DB_HOST=$(gcloud beta alloydb instances describe customer-instance \
--cluster=customer-cluster \
--region=$REGION \
--format=json | jq \
--raw-output ".ipAddress")
echo $DB_HOST
Jalankan perintah di bawah untuk membuat objek secret Kubernetes guna menyimpan kredensial database yang akan digunakan oleh aplikasi Customer Service untuk terhubung ke database:
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
Jalankan perintah untuk mengganti CUSTOMER_SERVICE_IMAGE dalam file deployment.yaml:
sed "s@CUSTOMER_SERVICE_IMAGE@$CUSTOMER_SERVICE_IMAGE@g" deployment.yaml.tmpl > customer-service-deployment.yaml
Jalankan perintah untuk men-deploy aplikasi:
kubectl apply -f customer-service-deployment.yaml
Diperlukan waktu beberapa saat agar aplikasi bertransisi ke status RUNNING.
Tinjau file spesifikasi deployment:
deployment.yaml.tmpl
Berikut bagian konfigurasi yang menentukan resource yang diperlukan untuk menjalankan aplikasi ini.
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
Jalankan perintah untuk membuat IP eksternal yang akan digunakan dalam alur kerja:
SERVICE_NAME=customer-service
kubectl expose deployment $SERVICE_NAME \
--type LoadBalancer --port 80 --target-port 8080
Jalankan perintah untuk memverifikasi resource yang dibuat:
kubectl get all
Contoh output:

4. Alur Kerja Peninjauan
Konsep Inti Workflows
Alur kerja terdiri dari serangkaian langkah yang dijelaskan menggunakan sintaksis Workflows( YAML atau JSON).
Setelah alur kerja dibuat, alur kerja tersebut akan di-deploy, sehingga siap untuk dieksekusi.
Eksekusi adalah satu eksekusi logika yang terkandung dalam definisi alur kerja. Alur kerja yang belum dieksekusi tidak menimbulkan biaya. Semua eksekusi alur kerja bersifat independen, dan penskalaan produk yang cepat memungkinkan banyak eksekusi serentak.
Kontrol eksekusi
- Langkah-langkah - Untuk membuat alur kerja, Anda menentukan
stepsdan urutan eksekusi yang diinginkan menggunakan sintaksis Workflows. Setiap alur kerja harus memiliki minimal satu langkah. - Kondisi - Anda dapat menggunakan blok
switchsebagai mekanisme pemilihan yang memungkinkan nilai ekspresi mengontrol alur eksekusi alur kerja. - Iterasi - Anda dapat menggunakan loop
foruntuk melakukan iterasi pada urutan angka atau melalui kumpulan data, seperti daftar atau peta. - Sub-alur kerja - Sub-alur kerja berfungsi mirip dengan rutin atau fungsi dalam bahasa pemrograman, sehingga Anda dapat mengapsulasi langkah atau serangkaian langkah yang akan diulang beberapa kali oleh alur kerja.
Memicu eksekusi
- Manual - Anda dapat mengelola alur kerja dari Konsol Google Cloud atau dari command line menggunakan Google Cloud CLI.
- Terprogram - Library Klien Cloud untuk Workflows API, atau REST API, dapat digunakan untuk mengelola alur kerja.
- Dijadwalkan - Anda dapat menggunakan Cloud Scheduler untuk menjalankan alur kerja sesuai jadwal tertentu.
Argumen Runtime
Data yang diteruskan saat runtime dapat diakses dengan menambahkan kolom params ke alur kerja utama Anda (ditempatkan di blok utama). Blok utama menerima satu argumen yang merupakan jenis data JSON yang valid. Kolom params memberi nama variabel yang digunakan alur kerja untuk menyimpan data yang Anda teruskan.
Logika Alur Kerja
Jika pelanggan tidak ada, alur kerja akan melakukan panggilan API untuk membuat pelanggan terlebih dahulu, lalu memperbarui poin reward. Berdasarkan jumlah total pesanan, alur kerja akan memilih pengganda untuk menghitung poin reward bagi pelanggan. Lihat contoh di bawah untuk mengetahui detailnya.
- 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. Mengonfigurasi dan men-deploy Workflow
Jalankan perintah untuk melihat alamat IP Eksternal untuk layanan:
kubectl get svc
Contoh output:

Tetapkan variabel lingkungan di bawah menggunakan nilai IP Eksternal dari output sebelumnya.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Ganti URL aplikasi Layanan Pelanggan di template alur kerja:
sed "s@CUSTOMER_SERVICE_URL@$CUSTOMER_SERVICE_URL@g" gkeRewardsWorkflow.yaml.tmpl > gkeRewardsWorkflow.yaml
Tetapkan lokasi untuk variabel lingkungan project dan layanan Workflows:
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)')
Buat akun layanan kustom untuk alur kerja dengan izin berikut:
- Memanggil Logging API
- Memublikasikan pesan ke topik PubSub
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"
Deploy alur kerja. Alur kerja dikonfigurasi untuk menggunakan akun layanan yang dibuat pada langkah sebelumnya:
export WORKFLOW_NAME=rewardsWorkflow
gcloud workflows deploy ${WORKFLOW_NAME} \
--source=gkeRewardsWorkflow.yaml \
--service-account=${WORKFLOW_SERVICE_ACCOUNT}@$PROJECT_ID.iam.gserviceaccount.com
Tinjau sumber alur kerja dan detail lainnya(tab Pemicu). Saat ini tidak ada pemicu yang dikonfigurasi untuk menjalankan alur kerja ini. Anda akan menyiapkannya di langkah berikutnya.

6. Mengonfigurasi topik Pub/Sub dan pemicu Eventarc
Selanjutnya, Anda akan membuat dua topik Pub/Sub dan mengonfigurasi satu pemicu Eventarc.
Aplikasi Order Service akan memublikasikan pesan ke order-topic dengan informasi tentang pesanan baru.
Alur kerja akan memublikasikan pesan ke order-points-topic dengan informasi tentang poin reward pesanan dan jumlah total. Order Service(tidak di-deploy sebagai bagian dari lab ini) mengekspos endpoint yang digunakan oleh langganan Push untuk order-points-topic, guna memperbarui poin reward dan total jumlah per pesanan.
Buat topik Pub/Sub baru:
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
Tetapkan lokasi untuk layanan Eventarc:
gcloud config set eventarc/location ${REGION}
Buat akun layanan kustom yang akan digunakan oleh pemicu Eventarc untuk menjalankan alur kerja.
export TRIGGER_SERVICE_ACCOUNT=eventarc-workflow-sa
gcloud iam service-accounts create ${TRIGGER_SERVICE_ACCOUNT}
Memberikan akses ke akun layanan untuk menjalankan alur kerja.
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member="serviceAccount:${TRIGGER_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role="roles/workflows.invoker"
Buat pemicu Eventarc untuk memproses pesan Pub/Sub dan mengirimkannya ke Workflows.
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
Contoh output:
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.
Tinjau pemicu Eventarc yang dibuat.

Tinjau langganan yang dibuat untuk pemicu.

Tinjau perubahan di sisi alur kerja. Pemicu baru telah ditambahkan.

7. Alur kerja pengujian

Untuk menyimulasikan Order Service, Anda akan mengirim pesan ke topik Pub/Sub dari Cloud Shell dan memverifikasi log Customer Service di Cloud Console.
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}]}'
Contoh output:
messageIds: - '5063709859203105'
Tinjau detail eksekusi alur kerja dan log.


8. Logging Terstruktur Alur Kerja
Alur kerja dikonfigurasi untuk menulis log terstruktur dalam format JSON. Log ditulis menggunakan Cloud Logging API, resource workflows.googleapis.com/Workflow, dan dengan nama log projects/${PROJECT_ID}/logs/Workflows.
Tinjau konfigurasi logging di bawah.
- log_totalAmount:
call: sys.log
args:
json:
orderNumber: ${order.orderNumber}
totalAmount: ${totalAmount}
multiplier: ${multiplier}
totalRewardPoints: ${rewardPoints}
orderRewardPoints: ${orderRewardPoints}
severity: INFO
Buka Logs Explorer di Konsol Cloud dan jalankan kueri untuk menemukan pesanan yang diproses dengan jumlah total lebih dari $2.
Untuk menampilkan kolom kueri penelusuran, klik "Tampilkan kueri".

resource.type="workflows.googleapis.com/Workflow" AND
jsonPayload.totalAmount > 2 AND
timestamp >= "2023-01-01T00:00:00Z" AND
timestamp <= "2024-12-31T23:59:59Z"
Contoh output:

Buka Cloud Shell dan gunakan gcloud CLI untuk membaca log dengan perintah di bawah.
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)"
Contoh output menggunakan format table:

Jalankan perintah di bawah untuk menampilkan log dalam format JSON:
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
Contoh output menggunakan format json:

9. Meninjau Catatan Pelanggan
(Langkah opsional)
Jalankan perintah di bawah untuk menetapkan variabel lingkungan URL Layanan Pelanggan.
CUSTOMER_SERVICE_URL=http://$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
curl $CUSTOMER_SERVICE_URL/customer | jq
Contoh output:
[
{
"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"
}
]
Jalankan perintah untuk memublikasikan pesanan baru beberapa kali dan verifikasi poin reward pelanggan dengan perintah curl.
Publikasikan pesan pesanan baru:
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}]}'
Verifikasi poin reward pelanggan:
curl $CUSTOMER_SERVICE_URL/customer | jq
Jalankan perintah di bawah untuk memeriksa log terbaru:
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. Selamat!
Selamat, Anda telah menyelesaikan codelab!
Yang telah kita bahas:
- Cara mengonfigurasi topik Pub/Sub dan Eventarc untuk memicu Workflows
- Cara mengonfigurasi Workflow untuk melakukan panggilan API ke aplikasi yang berjalan di GKE Autopilot
- Cara mengonfigurasi Workflow untuk memublikasikan pesan ke Pub/Sub
- Cara mengkueri log terstruktur Workflows di Cloud Logging dan menggunakan gcloud CLI
Langkah berikutnya:
Pelajari codelab Cymbal Eats lainnya:
- Memicu Cloud Workflows dengan Eventarc
- Memicu Pemrosesan Peristiwa dari Cloud Storage
- Menghubungkan ke CloudSQL Pribadi dari Cloud Run
- Menghubungkan ke Database Terkelola Sepenuhnya dari Cloud Run
- Mengamankan Aplikasi Serverless dengan Identity-Aware Proxy (IAP)
- Memicu Tugas Cloud Run dengan Cloud Scheduler
- Men-deploy ke Cloud Run dengan Aman
- Mengamankan Traffic Ingress Cloud Run
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.