Serangkaian tutorial ini ditujukan untuk administrator dan Operator IT yang ingin men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan di Google Kubernetes Engine (GKE). Seiring kemajuan Anda dalam rangkaian tutorial ini, Anda akan mempelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan menyimulasikan kegagalan, semuanya menggunakan aplikasi microservice contoh Cymbal Bank:
- Membuat cluster dan men-deploy aplikasi contoh (tutorial ini)
- Memantau dengan Google Cloud Managed Service for Prometheus
- Menskalakan beban kerja
- Menyimulasikan kegagalan
Ringkasan dan tujuan
Cymbal Bank menggunakan Python dan Java untuk menjalankan berbagai layanan, dan menyertakan backend PostgreSQL. Anda tidak memerlukan pengalaman dengan bahasa atau platform database ini untuk menyelesaikan rangkaian tutorial, karena Cymbal Bank hanyalah contoh aplikasi untuk menunjukkan cara GKE dapat mendukung kebutuhan bisnis Anda.
Dalam tutorial ini, Anda akan mempelajari cara membuat satu cluster GKE dan men-deploy aplikasi berbasis microservice contoh bernama Cymbal Bank ke cluster GKE. Anda akan mempelajari cara menyelesaikan tugas berikut:
Buat cluster GKE yang menggunakan Autopilot.
Deploy aplikasi berbasis microservice contoh bernama Cymbal Bank.
Gunakan konsol Google Cloud untuk menjelajahi resource GKE yang digunakan oleh aplikasi contoh Cymbal Bank.
Biaya
Mengaktifkan GKE dan men-deploy aplikasi sampel Cymbal Bank untuk rangkaian tutorial ini berarti Anda akan dikenai biaya per cluster untuk GKE di Google Cloud seperti yang tercantum di halaman Harga kami hingga Anda menonaktifkan GKE atau menghapus project.
Anda juga bertanggung jawab atas biaya lain yang timbul saat menjalankan aplikasi contoh Cymbal Bank, seperti biaya untuk VM Compute Engine dan load balancer. Google Cloud
Sebelum memulai
Dalam tutorial pertama dalam seri ini, selesaikan semua langkah penyiapan "Mulai dari awal" berikut sebelum Anda memulai. Anda hanya perlu menyelesaikan langkah-langkah "Sebelum memulai" berikut satu kali.
Mengonfigurasi shell dan alat Anda
Dalam rangkaian tutorial ini, Anda akan menggunakan alat berikut untuk men-deploy dan mengelola lingkungan:
- gcloud CLI: membuat dan mengelola cluster dan fleet GKE, beserta layanan Google Cloud lainnya.
kubectl
: mengelola Kubernetes, sistem orkestrasi cluster yang digunakan oleh GKE.
Untuk menjalankan perintah di halaman ini, siapkan Google Cloud CLI dan kubectl
di salah satu lingkungan pengembangan berikut:
Cloud Shell
Untuk menggunakan terminal online dengan gcloud CLI dan kubectl
yang sudah
disiapkan, aktifkan Cloud Shell:
Di bagian bawah halaman ini, sesi Cloud Shell akan dimulai dan menampilkan perintah command line. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.
Shell lokal
Untuk menggunakan lingkungan pengembangan lokal, ikuti langkah-langkah berikut:
- Instal gcloud CLI.
- Lakukan inisialisasi gcloud CLI.
Instal
kubectl
gcloud CLI:gcloud components install kubectl
Menyiapkan project
Lakukan langkah-langkah berikut untuk menyiapkan project Google Cloud , termasuk mengaktifkan layanan GKE dan penagihan. Ini adalah project tempat Anda akan mengaktifkan GKE.
Anda mungkin memerlukan Google Cloud administrator di organisasi Anda untuk memberi Anda akses untuk membuat atau menggunakan project dan mengaktifkan API.
Di konsol Google Cloud , buka halaman Google Kubernetes Engine:
Buat atau pilih project. Ini adalah project tempat Anda mengaktifkan GKE.
Jika diminta, Aktifkan GKE API.
Tunggu hingga API dan layanan terkait diaktifkan. Proses ini dapat memerlukan waktu beberapa menit.
Make sure that billing is enabled for your Google Cloud project.
Memberikan peran IAM
Jika Anda adalah pemilik project (misalnya, jika Anda membuat project sendiri), Anda sudah memiliki semua izin yang diperlukan untuk menyelesaikan tutorial ini. Jika Anda bukan pemilik, pastikan akun Google Cloud Anda memiliki peran IAM yang diperlukan untuk project yang dipilih dalam serangkaian tutorial ini. Sekali lagi, Anda mungkin memerlukan Google Cloud administrator di organisasi Anda untuk membantu memberikan peran yang diperlukan.
Dalam perintah berikut, ganti PROJECT_ID
dengan ID project yang dibuat secara otomatis yang Anda buat atau pilih di bagian sebelumnya. ID project sering kali berbeda dengan nama project. Misalnya, project Anda mungkin bernama scalable-apps, tetapi project ID Anda mungkin scalable-apps-567123.
Grant roles to your user account. Run the following command once for each of the following
IAM roles:
roles/resourcemanager.projectIamAdmin, roles/iam.serviceAccountAdmin, roles/iam.serviceAccountUser, roles/iam.securityAdmin, roles/serviceusage.serviceUsageAdmin, roles/container.admin, roles/logging.logWriter, roles/gkehub.admin, roles/viewer, roles/monitoring.viewer
gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
- Replace
PROJECT_ID
with your project ID. -
Replace
USER_IDENTIFIER
with the identifier for your user account. For example,user:myemail@example.com
. - Replace
ROLE
with each individual role.
Meng-clone aplikasi contoh
Clone repositori Git yang mencakup semua manifes contoh untuk Cymbal Bank:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos
cd bank-of-anthos/
Membuat cluster
Setelah semua langkah prasyarat di bagian sebelumnya selesai, Anda kini dapat mulai membuat cluster GKE dan men-deploy aplikasi contoh.
GKE adalah layanan Kubernetes terkelola yang dapat Anda gunakan untuk men-deploy dan mengoperasikan aplikasi dalam container. Lingkungan GKE terdiri dari node, yang merupakan virtual machine (VM) Compute Engine, yang dikelompokkan bersama untuk membentuk cluster.
Buat cluster GKE yang akan Anda gunakan dalam tutorial lainnya dalam seri ini:
gcloud container clusters create-auto scalable-apps \ --project=PROJECT_ID \ --region=REGION
Ganti kode berikut:
PROJECT_ID
dengan ID project yang dibuat secara otomatis yang Anda buat di bagian sebelumnya. ID project sering kali berbeda dengan nama project. Misalnya, project Anda mungkin bernama scalable-apps, tetapi project ID Anda mungkin scalable-apps-567123.REGION
dengan region tempat Anda ingin membuat cluster, sepertius-central1
.
Perlu waktu beberapa menit untuk membuat cluster dan memverifikasi bahwa semuanya berfungsi dengan benar.
Dalam rangkaian tutorial ini, Anda menggunakan cluster mode Autopilot dan beberapa rentang alamat IP default saat membuat cluster. Deployment produksi aplikasi Anda sendiri memerlukan perencanaan alamat IP yang lebih cermat. Dalam mode Autopilot, Google mengelola konfigurasi cluster Anda, termasuk penskalaan otomatis, keamanan, dan setelan lainnya yang telah dikonfigurasi sebelumnya. Cluster dalam mode Autopilot dioptimalkan untuk menjalankan sebagian besar workload produksi dan menyediakan resource komputasi berdasarkan manifes Kubernetes Anda.
Men-deploy Cymbal Bank
Anda mengemas aplikasi (juga disebut workload) ke dalam container. Anda men-deploy kumpulan container sebagai Pod ke node Anda.
Dalam rangkaian tutorial ini, Anda akan men-deploy aplikasi berbasis microservice contoh bernama Cymbal Bank ke satu atau beberapa cluster GKE. Cymbal Bank menggunakan Python dan Java untuk menjalankan berbagai layanan, dan menyertakan backend PostgreSQL. Anda tidak memerlukan pengalaman dengan bahasa atau platform database ini untuk menyelesaikan rangkaian tutorial. Cymbal Bank hanyalah contoh aplikasi untuk menunjukkan cara GKE dapat mendukung kebutuhan bisnis Anda.
Saat Anda menggunakan Cymbal Bank sebagai bagian dari rangkaian tutorial ini, layanan berikut akan di-deploy ke cluster GKE Anda:
Layanan | Bahasa | Deskripsi |
---|---|---|
frontend |
Python | Mengekspos server HTTP untuk menayangkan situs. Berisi halaman login, halaman pendaftaran, dan halaman beranda. |
ledger-writer |
Java | Menerima dan memvalidasi transaksi yang masuk sebelum menuliskannya ke buku besar. |
balance-reader |
Java | Menyediakan cache saldo pengguna yang dapat dibaca dan efisien, seperti yang terbaca dari ledger-db . |
transaction-history |
Java | Menyediakan cache yang dapat dibaca dan efisien tentang transaksi terdahulu, seperti yang terbaca dari ledger-db . |
ledger-db |
PostgreSQL | Buku besar semua transaksi. Opsi untuk mengisi otomatis dengan transaksi untuk pengguna demo. |
user-service |
Python | Mengelola akun pengguna dan autentikasi. Menandatangani JWT yang digunakan untuk autentikasi oleh layanan lain. |
contacts |
Python | Menyimpan daftar akun lain yang terkait dengan pengguna. Digunakan untuk menu drop-down di formulir "Kirim Pembayaran" dan "Setor". |
accounts-db |
PostgreSQL | Database untuk akun pengguna dan data terkait. Opsi untuk mengisi sebelumnya dengan pengguna demo. |
loadgenerator |
Python / Locust | Terus mengirim permintaan yang meniru pengguna ke frontend. Secara berkala membuat akun baru dan menyimulasikan transaksi di antara akun tersebut. |
Untuk men-deploy Cymbal Bank ke cluster GKE Anda, selesaikan langkah-langkah berikut:
Cymbal Bank menggunakan Token Web JSON (JWT) untuk menangani autentikasi pengguna. JWT menggunakan pasangan kunci asimetris untuk menandatangani dan memverifikasi token. Di Cymbal Bank,
userservice
membuat dan menandatangani token dengan kunci pribadi RSA saat pengguna login, dan layanan lainnya menggunakan kunci publik yang sesuai untuk memvalidasi pengguna.Buat JWT RS256 dengan kekuatan 4.096 bit:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Jika diperlukan, download dan instal alat OpenSSL untuk platform Anda.
Secret Kubernetes dapat menyimpan data sensitif seperti kunci atau sandi. Workload yang berjalan di cluster Anda kemudian dapat mengakses Secret untuk mendapatkan data sensitif, bukan meng-hardcode-nya di aplikasi.
Buat Secret Kubernetes dari file kunci yang Anda buat pada langkah sebelumnya agar Cymbal Bank dapat menggunakannya dengan permintaan autentikasi:
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Deploy Cymbal Bank ke cluster Anda. Perintah berikut men-deploy semua file manifes di direktori
kubernetes-manifests
. Setiap file manifes men-deploy dan mengonfigurasi salah satu Layanan:kubectl apply -f kubernetes-manifests/accounts-db.yaml kubectl apply -f kubernetes-manifests/balance-reader.yaml kubectl apply -f kubernetes-manifests/config.yaml kubectl apply -f kubernetes-manifests/contacts.yaml kubectl apply -f extras/postgres-hpa/kubernetes-manifests/frontend.yaml kubectl apply -f kubernetes-manifests/ledger-db.yaml kubectl apply -f kubernetes-manifests/ledger-writer.yaml kubectl apply -f extras/postgres-hpa/loadgenerator.yaml kubectl apply -f kubernetes-manifests/transaction-history.yaml kubectl apply -f kubernetes-manifests/userservice.yaml
Anda mungkin melihat pesan di output
kubectl
saat manifes diterapkan ke cluster Anda tentang batas Autopilot. Autopilot menggunakan permintaan resource yang Anda tentukan dalam konfigurasi workload untuk mengonfigurasi node yang menjalankan workload Anda. Autopilot menerapkan permintaan resource minimum dan maksimum berdasarkan class komputasi atau konfigurasi hardware yang digunakan workload Anda. Jika Anda tidak menentukan permintaan untuk beberapa container, Autopilot akan menetapkan nilai default agar container tersebut berjalan dengan benar.Tinjau contoh manifes berikut untuk Layanan
frontend
:Manifes untuk Service
frontend
ini meminta100m
CPU dan64Mi
, serta menetapkan batas250m
CPU dan128Mi
per Pod.Saat Anda men-deploy workload di cluster Autopilot, GKE memvalidasi konfigurasi workload berdasarkan nilai minimum dan maksimum yang diizinkan untuk class komputasi atau konfigurasi hardware yang dipilih (seperti GPU). Jika permintaan Anda kurang dari jumlah minimum, Autopilot akan otomatis mengubah konfigurasi workload Anda untuk membawa permintaan Anda dalam rentang yang diizinkan. Pesan ini menunjukkan bahwa batas yang sesuai ditetapkan secara otomatis.
Tunggu hingga Pod siap. Gunakan
kubectl
untuk memeriksa status Pod:kubectl get pods
Kolom
STATUS
berubah dariPending
menjadiContainerCreating
. Perlu waktu beberapa menit hingga semua Pod berada dalam statusRunning
, seperti yang ditunjukkan dalam contoh output berikut:NAME READY STATUS RESTARTS AGE accounts-db-6f589464bc-6r7b7 1/1 Running 0 99s balancereader-797bf6d7c5-8xvp6 1/1 Running 0 99s contacts-769c4fb556-25pg2 1/1 Running 0 98s frontend-7c96b54f6b-zkdbz 1/1 Running 0 98s ledger-db-5b78474d4f-p6xcb 1/1 Running 0 98s ledgerwriter-84bf44b95d-65mqf 1/1 Running 0 97s loadgenerator-559667b6ff-4zsvb 1/1 Running 0 97s transactionhistory-5569754896-z94cn 1/1 Running 0 97s userservice-78dc876bff-pdhtl 1/1 Running 0 96s
Jika semua Pod dalam status
Running
, lanjutkan ke langkah berikutnya. Sekali lagi, perlu beberapa menit hingga semua Pod berada dalam statusRunning
. Beberapa Pod akan melaporkan statusREADY
0/1
hingga Cymbal Bank siap melayani traffic dengan benar.Layanan
frontend
mengekspos server HTTP untuk menayangkan situs Cymbal Bank, termasuk halaman login, halaman pendaftaran, dan halaman beranda. Objek Ingress menentukan aturan untuk merutekan traffic HTTP(S) ke aplikasi yang berjalan di cluster menggunakan Load Balancer HTTP(S) Google Cloud .Dapatkan alamat IP eksternal untuk Ingress
frontend
:kubectl get ingress frontend | awk '{print $4}'
Di jendela browser web, buka alamat IP yang ditampilkan dalam output perintah
kubectl get ingress
untuk mengakses instance Cymbal Bank Anda.Kredensial default akan otomatis diisi, sehingga Anda dapat login ke aplikasi dan menjelajahi beberapa contoh transaksi dan saldo. Tidak ada tindakan khusus yang perlu Anda lakukan, selain mengonfirmasi bahwa Cymbal Bank berhasil dijalankan. Mungkin perlu waktu satu atau dua menit agar semua layanan berkomunikasi dengan benar dan memungkinkan Anda login.
Mempelajari deployment Anda
Setelah membuat cluster GKE dan men-deploy workload, Anda mungkin perlu mengubah setelan atau meninjau performa aplikasi. Di bagian ini, Anda akan mempelajari cara menggunakan konsol Google Cloud untuk meninjau resource yang merupakan bagian dari cluster dan aplikasi contoh Cymbal Bank.
Cluster
Dalam tutorial ini, Anda telah membuat satu cluster GKE dan men-deploy workload Cymbal Bank.
Di halaman Google Kubernetes Engine di konsol Google Cloud , buka halaman Cluster.
Klik cluster scalable-apps yang baru di-deploy. Di halaman detail cluster yang terbuka, Anda dapat melihat detail cluster dasar beserta konfigurasi jaringan dan keamanan cluster. Anda juga dapat melihat fitur GKE mana yang diaktifkan di cluster ini di bagian Fitur.
Kemampuan observasi
Anda dapat melihat metrik dasar untuk kesehatan dan performa cluster. Dalam tutorial berikutnya dalam seri ini, Anda akan mengaktifkan Google Cloud Managed Service for Prometheus untuk pemantauan dan kemampuan pengamatan yang lebih terperinci.
Pilih cluster Anda dari halaman Clusters Google Kubernetes Engine di Google Cloud konsol, lalu buka tab Observability.
Periksa beberapa grafik metrik untuk hal-hal seperti CPU dan Memori. Tampilan ini memungkinkan Anda memantau performa berbagai bagian beban kerja cluster tanpa perlu men-deploy kemampuan pemantauan tambahan.
Untuk melihat log yang di-streaming dari cluster, pilih tab Logs. Anda dapat memfilter menurut Tingkat Keparahan log, atau membuat filter Anda sendiri untuk melihat namespace, Layanan, atau Pod tertentu. Seperti halnya peringatan dan peristiwa Pod, tampilan gabungan log dari cluster ini dapat membantu men-debug masalah dengan cepat menggunakan konsol Google Cloud .
Wajar jika Anda melihat entri log saat Cymbal Bank pertama kali di-deploy karena beberapa layanan belum dapat berkomunikasi.
Pilih tab Error Aplikasi. Saat beban kerja berjalan, Anda dapat melihat peringatan dan peristiwa yang dikumpulkan di konsol Google Cloud . Pendekatan ini dapat membantu men-debug masalah tanpa harus terhubung ke cluster, Node, atau Pod satu per satu.
Sekali lagi, wajar jika melihat peristiwa yang dicatat saat Cymbal Bank pertama kali di-deploy ketika beberapa Layanan belum dapat berkomunikasi.
Beban kerja
Halaman GKE di konsol Google Cloud memiliki bagian Workloads yang menampilkan tampilan gabungan workload yang berjalan di semua cluster GKE Anda.
Di halaman Google Kubernetes Engine di konsol Google Cloud , buka halaman Workloads.
Tab Ringkasan menampilkan daftar beban kerja dan namespace dari cluster GKE. Anda dapat memfilter berdasarkan namespace untuk melihat workload yang berjalan di setiap namespace.
Layanan & Ingress
Tampilan Services & Ingress menampilkan resource Service dan Ingress project. Layanan mengekspos sekumpulan Pod sebagai layanan jaringan dengan endpoint, sementara Ingress mengelola akses eksternal ke layanan di cluster.
Di halaman Google Kubernetes Engine di konsol Google Cloud , buka halaman Gateways, Services & Ingress.
Untuk menemukan ingress Cymbal Bank, klik tab Ingress dan temukan ingress dengan nama
frontend
. Ingress mengelola traffic masuk untuk aplikasi Anda. Anda dapat melihat informasi tentang load balancer, port, dan endpoint eksternal.Klik IP address untuk ingress
frontend
, seperti198.51.100.143:80
. Alamat ini akan membuka antarmuka web Cymbal Bank.
Pembersihan
Kumpulan tutorial untuk Cymbal Bank dirancang untuk diselesaikan satu per satu. Saat Anda menyelesaikan serangkaian tutorial, Anda akan mempelajari keterampilan baru dan menggunakan produk dan layanan Google Cloud tambahan.
Jika Anda ingin beristirahat sebelum melanjutkan ke tutorial berikutnya dan menghindari biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang Anda buat.
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Langkah berikutnya
Pelajari cara memantau workload Anda di GKE menggunakan Google Cloud Managed Service for Prometheus dan Cloud Monitoring dalam tutorial berikutnya.