1. Ringkasan
Di lab ini, Anda akan men-deploy microservice dua tingkat dengan pod yang berjalan di GKE Autopilot dan menghubungkannya ke instance pribadi database AlloyDB. Aplikasi Layanan Pelanggan adalah bagian dari sistem Cymbal Eats dan menyediakan fungsi untuk mengelola pengguna terdaftar. Aplikasi Layanan Pelanggan 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 dasar tempat resource AlloyDB Anda (cluster dan instance) berada. Koneksi pribadi memungkinkan resource di jaringan VPC Anda berkomunikasi dengan resource AlloyDB yang mereka akses secara eksklusif menggunakan alamat IP internal. Resource di jaringan VPC Anda tidak memerlukan akses Internet atau alamat IP eksternal untuk mencapai resource AlloyDB.
Apa itu Autopilot GKE?
GKE Autopilot adalah mode operasi di GKE tempat 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 ini mengikuti praktik terbaik dan rekomendasi GKE untuk penyiapan cluster dan workload, skalabilitas, serta keamanan. Untuk mengetahui daftar setelan bawaan, lihat tabel perbandingan Autopilot dan Standar.
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, yaitu PostgreSQL, untuk performa, skala, dan ketersediaan yang unggul.
Yang akan Anda pelajari
Di lab ini, Anda akan mempelajari cara melakukan hal-hal berikut:
- Buat instance pribadi database AlloyDB
- Men-deploy aplikasi di cluster GKE Autopilot yang terhubung ke instance AlloyDB
Prasyarat
- Lab ini mengasumsikan Anda telah memahami lingkungan Cloud Console dan Cloud Shell.
- Pengalaman GKE dan AlloyDB sebelumnya 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
peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (biasanya diidentifikasi sebagai
PROJECT_ID
). Jika Anda tidak menyukai ID yang dihasilkan, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri dan lihat 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. Untuk 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 ini ke terminal, lalu tekan Enter.
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/customer-service
Men-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 Layanan Pelanggan
- Konektor Akses VPC untuk Cloud Run Job agar dapat berkomunikasi dengan database AlloyDB
- Cloud Run Job untuk membuat database AlloyDB
- Cluster GKE Autopilot
./gke-lab-setup.sh
Jika diminta untuk memberi otorisasi, klik "Authorize" untuk melanjutkan.
Penyiapan 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
Menjelajahi fitur yang tersedia(Query Insight, Monitoring) di konsol.
Meninjau cluster GKE Autopilot
Setel 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 ini (Anda tidak perlu menjalankan perintah ini):
gcloud container clusters create-auto $CLUSTER_NAME --region $REGION
Jalankan perintah untuk melihat cluster GKE Autopilot yang telah dibuat:
gcloud container clusters list
Contoh output:
Jalankan perintah untuk menyimpan kredensial cluster:
CLUSTER_NAME=rewards-cluster
REGION=us-central1
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
Men-deploy aplikasi
Berikutnya, Anda akan men-deploy aplikasi Layanan Pelanggan.
Aplikasi Layanan Pelanggan adalah microservice berbasis java yang menggunakan framework Quarkus.
Buka folder cymbal-eats/customer-service
dan 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 ini 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 di 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 bagi aplikasi untuk beralih ke status BERJALAN.
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
Setel variabel lingkungan di bawah menggunakan nilai External IP dari output sebelumnya.
CUSTOMER_SERVICE_URL=$(kubectl get svc customer-service -o=jsonpath='{.status.loadBalancer.ingress[0].ip}')
Jalankan perintah di bawah ini 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 menghasilkan pesan log yang akan Anda lihat di Logs Explorer nanti.
Tinjau Catatan Pelanggan
Jalankan perintah di bawah untuk melihat data 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 Workload dan Layanan yang dibuat.
Log Aplikasi
Buka Logs Explorer dan telusuri log yang berisi "Customer sudah ada" teks.
5. Selamat!
Selamat, Anda telah menyelesaikan codelab!
Yang telah kita bahas:
- Cara membuat instance pribadi dari 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
- Terhubung ke Private CloudSQL dari Cloud Run
- Terhubung ke Database yang Terkelola Sepenuhnya dari Cloud Run
- Aplikasi Serverless yang Aman dengan Identity-Aware Proxy (IAP)
- Memicu Tugas Cloud Run dengan Cloud Scheduler
- Men-deploy dengan Aman ke Cloud Run
- Mengamankan Traffic Masuk Cloud Run
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource, atau simpan project dan hapus resource satu per satu.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.