Menghubungkan ke instance AlloyDB Pribadi dari aplikasi yang berjalan dengan Autopilot GKE

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.

e8a5140b09521b7a.png

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.

44662d7a086358de.pngS

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

eb0157a992f16fa3.png

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 melakukan otorisasi, klik "Authorize" untuk melanjutkan.

6356559df3eccdda.pngS

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.

3b12b0fa1367fb42.pngS

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:

e8882c44fa0bb631.png

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.

49fd65309967ae47.pngS

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:

179a23bd33793924.png

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.

e1217216e003a839.png

d5c97fb5950c4db.png

Log Aplikasi

Buka Logs Explorer dan telusuri log yang berisi "Customer sudah ada" teks.

543c5ed97819f540.pngS

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:

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.