1. Ringkasan
Dalam lab ini, Anda akan men-deploy microservice dua tingkat dengan pod yang berjalan di GKE Autopilot dan menghubungkannya ke instance pribadi database AlloyDB. Aplikasi Customer Service adalah bagian dari sistem Cymbal Eats dan menyediakan fungsi untuk mengelola pengguna terdaftar. Aplikasi Customer Service adalah microservice berbasis Java yang menggunakan framework Quarkus.

AlloyDB mendukung konektivitas jaringan melalui alamat IP internal pribadi yang dikonfigurasi untuk akses layanan pribadi.
Akses layanan pribadi diterapkan sebagai koneksi peering VPC antara jaringan VPC Anda dan jaringan VPC Google Cloud yang mendasarinya tempat resource AlloyDB Anda (cluster dan instance) berada. Koneksi pribadi memungkinkan resource di jaringan VPC Anda berkomunikasi dengan resource AlloyDB yang diakses secara eksklusif menggunakan alamat IP internal. Resource di jaringan VPC Anda tidak memerlukan akses Internet atau alamat IP eksternal untuk menjangkau resource AlloyDB.

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.
Apa itu AlloyDB?
Layanan database yang kompatibel dengan PostgreSQL dan terkelola sepenuhnya untuk workload database perusahaan Anda yang memiliki tuntutan tinggi. AlloyDB menggabungkan fitur-fitur terbaik Google dengan salah satu mesin database open source terpopuler, PostgreSQL, untuk memberikan performa, skala, dan ketersediaan yang unggul.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari cara melakukan hal-hal berikut:
- Membuat instance pribadi database AlloyDB
- Men-deploy aplikasi di cluster GKE Autopilot yang terhubung ke instance AlloyDB
Prasyarat
- Di lab ini, Anda dianggap telah memahami Konsol Cloud dan lingkungan Cloud Shell.
- Pengalaman GKE dan AlloyDB 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
- Artifact Registry untuk menyimpan image container bagi Cloud Run Job dan Customer Service
- Konektor Akses VPC untuk Tugas Cloud Run agar dapat berkomunikasi dengan database AlloyDB
- Tugas Cloud Run untuk membuat database 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. Tinjau skrip penyiapan yang digunakan untuk membuat dependensi yang diperlukan.
gke-lab-setup.sh
Tunggu hingga skrip selesai dan Anda melihat output di bawah sebelum menjalankan langkah berikutnya.
Job [db-job] has successfully been created. To execute this job, use: gcloud beta run jobs execute db-job OK Creating execution... Done. OK Provisioning resources... Done. Execution [db-job-k94ps] has successfully started running.
3. Deployment Aplikasi
Tinjau cluster AlloyDB
Jalankan perintah di bawah untuk meninjau instance AlloyDB yang dibuat:
gcloud alloydb instances describe customer-instance --cluster=customer-cluster --region=us-central1
Contoh output:
createTime: '2023-01-06T14:40:07.213288293Z' instanceType: PRIMARY ipAddress: 10.77.176.2 machineConfig: cpuCount: 2 name: projects/cymbal-eats-20056-16671/locations/us-central1/clusters/customer-cluster/instances/customer-instance nodes: - zoneId: us-central1-f queryInsightsConfig: queryPlansPerMinute: 5 queryStringLength: 1024 recordApplicationTags: true recordClientAddress: true reconciling: false state: READY uid: df90d57d-88df-49be-a626-6dfec0513e64 updateTime: '2023-01-06T14:49:40.907977843Z' writableNode: zoneId: us-central1-b
Jelajahi fitur yang tersedia(Insight Kueri, Monitoring) di konsol.

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.
Aplikasi Customer Service adalah microservice berbasis java yang menggunakan framework Quarkus.
Buka folder cymbal-eats/customer-service, lalu jalankan perintah 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 .
Buka Cloud Build di konsol untuk meninjau detail build terbaru.

Tetapkan variabel lingkungan di bawah menggunakan nilai 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.
Jalankan perintah untuk membuat IP eksternal yang akan digunakan dalam langkah-langkah pengujian:
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. Aplikasi pengujian
Jalankan perintah di bawah untuk menyimpan URL Layanan Pelanggan.
kubectl get svc
Tetapkan variabel lingkungan di bawah menggunakan nilai IP Eksternal dari output sebelumnya.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Jalankan perintah di bawah untuk membuat catatan pelanggan baru:
curl -X POST $CUSTOMER_SERVICE_URL/customer \
-H 'Content-Type: application/json' \
-d '{"id": "id1","rewardPoints": 3,"address": "1845 Denise St","city": "Mountain View","createDateTime": "2022-11-11T15:56:45.487566","email": "ajensen9090+eats@gmail.com","name": "Angela Jensen","state": "CA","updateDateTime": "2022-11-11T15:56:45.866125","zip": "94043"}'
Jalankan perintah di atas beberapa kali untuk membuat pesan log yang akan Anda lihat di Logs Explorer nanti.
Meninjau Catatan Pelanggan
Jalankan perintah di bawah untuk melihat catatan pelanggan yang dibuat.
curl $CUSTOMER_SERVICE_URL/customer | jq
Contoh output:
[
{
"address": "1845 Denise St",
"city": "Mountain View",
"createDateTime": "2023-01-06T16:13:19.118744",
"email": "ajensen9090+eats@gmail.com",
"id": "id1",
"name": "Angela Jensen",
"rewardPoints": 3,
"state": "CA",
"updateDateTime": "2023-01-06T16:13:19.118896",
"zip": "94043"
}
]
Meninjau Workload dan Layanan GKE
Buka Kubernetes Engine di Konsol Cloud dan tinjau Workloads dan Services yang dibuat.


Log Aplikasi
Buka Logs Explorer dan telusuri log yang berisi teks "Customer already exists".

5. Selamat!
Selamat, Anda telah menyelesaikan codelab!
Yang telah kita bahas:
- Cara membuat instance pribadi database AlloyDB
- Cara men-deploy aplikasi di cluster GKE Autopilot yang terhubung ke instance AlloyDB
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 yang Dikelola 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.