Kumpulan tutorial ini ditujukan untuk admin IT dan Operator yang ingin untuk men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan Google Kubernetes Engine (GKE). Saat Anda terus mempelajari rangkaian tutorial ini, Anda pelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan menyimulasikan gagal, 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 workload
- Menyimulasikan kegagalan
Ringkasan dan tujuan
Cymbal Bank menggunakan Python dan Java untuk menjalankan beragam layanan, termasuk backend PostgreSQL. Anda tidak memerlukan pengalaman dengan bahasa atau database ini platform untuk menyelesaikan rangkaian tutorial, karena Cymbal Bank hanyalah contoh untuk menunjukkan bagaimana GKE dapat mendukung kebutuhan bisnis.
Dalam tutorial ini, Anda akan mempelajari cara membuat satu cluster GKE dan men-deploy contoh aplikasi berbasis microservice bernama Cymbal Bank cluster GKE. Anda akan mempelajari cara menyelesaikan tugas-tugas berikut:
Membuat cluster GKE yang menggunakan Autopilot.
Men-deploy contoh aplikasi berbasis microservice yang bernama Cymbal Bank.
Gunakan Konsol Google Cloud untuk mempelajari resource GKE yang digunakan oleh aplikasi contoh Cymbal Bank.
Biaya
Mengaktifkan GKE dan men-deploy aplikasi contoh Cymbal Bank untuk rangkaian tutorial ini berarti bahwa Anda dikenai biaya per cluster untuk GKE di Google Cloud seperti yang tercantum dalam Halaman harga hingga Anda menonaktifkan GKE atau menghapus project.
Anda juga bertanggung jawab atas biaya Google Cloud lainnya yang timbul saat menjalankan Contoh aplikasi Cymbal Bank, seperti biaya untuk VM Compute Engine dan dengan load balancer Jaringan Passthrough Eksternal Regional.
Sebelum memulai
Dalam tutorial pertama dalam rangkaian ini, selesaikan semua langkah "Mulai Anda memulai" langkah-langkah pengaturan sebelum Anda memulai. Anda hanya perlu menyelesaikan setelah "Sebelum memulai" langkah sekali.
Mengonfigurasi shell dan alat
Dalam seri tutorial ini, Anda akan menggunakan alat berikut untuk men-deploy dan mengelola lingkungan Anda:
- gcloud CLI: membuat dan mengelola cluster GKE serta fleet, beserta layanan Google Cloud lainnya.
kubectl
: mengelola Kubernetes, sistem orkestrasi cluster yang digunakan oleh hanya pada container yang tepercaya.
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
sudah
siapkan, aktifkan Cloud Shell:
Di bagian bawah halaman ini, sesi Cloud Shell dimulai dan menampilkan prompt command line. Sesi akan memerlukan waktu beberapa detik melakukan inisialisasi.
Shell lokal
Untuk menggunakan lingkungan pengembangan lokal, ikuti langkah-langkah berikut:
- Menginstal gcloud CLI.
- Melakukan inisialisasi gcloud CLI.
Instal gcloud CLI
kubectl
:gcloud components install kubectl
Menyiapkan project
Lakukan langkah-langkah berikut untuk menyiapkan project Google Cloud, termasuk mengaktifkan penagihan dan layanan GKE. Ini adalah proyek di mana Anda akan mengaktifkan GKE.
Anda mungkin memerlukan administrator Google Cloud di organisasi untuk memberi Anda untuk membuat atau menggunakan project dan mengaktifkan API.
Di konsol Google Cloud, buka halaman Google Kubernetes Engine:
Buat atau pilih project. Di project inilah Anda mengaktifkan hanya pada container yang tepercaya.
Jika diminta, klik Enable GKE API.
Tunggu hingga API dan layanan terkait diaktifkan. Proses ini dapat memerlukan beberapa menit.
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
Memberikan peran IAM
Jika Anda adalah pemilik proyek (misalnya jika Anda membuat proyek sendiri), Anda sudah memiliki semua izin yang diperlukan untuk menyelesaikan tutorial ini. Jika Anda bukan pemilik, pastikan bahwa akun Google Cloud Anda memiliki wajib diisi Peran IAM ke project yang Anda pilih untuk kumpulan tutorial ini. Sekali lagi, Anda mungkin memerlukan administrator Google Cloud di organisasi Anda untuk membantu memberikan peran.
Dalam perintah berikut, ganti PROJECT_ID
dengan
ID project yang dibuat secara otomatis yang Anda buat atau pilih di
bagian sebelumnya. Project ID sering kali berbeda dari nama project. Sebagai
misalnya, project Anda mungkin adalah scalable-apps, tetapi project ID Anda mungkin
scalable-apps-567123.
Berikan peran ke Akun Google Anda. Jalankan perintah berikut satu kali untuk setiap peran
IAM berikut:
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:EMAIL_ADDRESS" --role=ROLE
- Ganti
PROJECT_ID
dengan project ID Anda. - Ganti
EMAIL_ADDRESS
dengan alamat email Anda. - Ganti
ROLE
dengan setiap peran individual.
Meng-clone aplikasi contoh
Buat clone repositori Git yang menyertakan semua manifes contoh untuk Cymbal Bank:
git clone https://github.com/GoogleCloudPlatform/bank-of-anthos
cd bank-of-anthos/
Membuat cluster
Dengan selesainya semua langkah prasyarat di bagian sebelumnya, Anda dapat mulai membuat cluster GKE dan men-deploy sampel aplikasi.
GKE adalah layanan Kubernetes terkelola yang dapat Anda gunakan untuk men-deploy dan mengoperasikan aplikasi dalam container. Lingkungan GKE terdiri atas node, yang merupakan virtual machine (VM) Compute Engine, yang yang dikelompokkan untuk membentuk cluster.
Membuat cluster GKE yang akan Anda gunakan dalam tutorial selanjutnya dalam rangkaian ini:
gcloud container clusters create-auto scalable-apps \ --project=PROJECT_ID \ --region=REGION
Ganti kode berikut:
PROJECT_ID
dengan ID yang dibuat otomatis dari project yang Anda buat di bagian sebelumnya. Project ID sering kali berbeda dari nama proyek. Misalnya, proyek Anda mungkin scalable-apps, tetapi project ID Anda mungkin adalah scalable-apps-567123.REGION
dengan wilayah tempat Anda ingin membuat dikelompokkan, sepertius-central1
.
Perlu waktu beberapa menit untuk membuat cluster dan memastikan semuanya berfungsi dengan benar.
Dalam set tutorial ini, Anda menggunakan cluster mode Autopilot dan beberapa rentang alamat IP default saat Anda membuat cluster. Deployment produksi aplikasi Anda sendiri memerlukan perencanaan alamat IP yang lebih hati-hati. Di beberapa Mode Autopilot, Google mengelola konfigurasi cluster Anda, termasuk penskalaan otomatis, keamanan, dan setelan sebelumnya yang telah dikonfigurasi sebelumnya. Cluster di Mode {i>Autopilot<i} dioptimalkan untuk menjalankan sebagian besar beban kerja produksi dan menyediakan resource komputasi berdasarkan manifes Kubernetes Anda.
Men-deploy Cymbal Bank
Anda mengemas aplikasi (juga disebut workloads) ke dalam container. Anda men-deploy kumpulan container sebagai Pod ke node Anda.
Dalam rangkaian tutorial ini, Anda akan men-deploy contoh aplikasi berbasis microservice Cymbal Bank ke satu atau beberapa cluster GKE. Bank Cymbal menggunakan Python dan Java untuk menjalankan berbagai layanan, termasuk PostgreSQL backend. Anda tidak memerlukan pengalaman dengan bahasa atau platform {i>database<i} ini untuk menyelesaikan rangkaian tutorial. Cymbal Bank adalah contoh aplikasi untuk menunjukkan bagaimana GKE dapat mendukung kebutuhan bisnis Anda.
Jika Anda menggunakan Cymbal Bank sebagai bagian dari rangkaian tutorial ini, hal berikut 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 menulisnya ke buku besar. |
balance-reader |
Java | Menyediakan cache saldo pengguna yang dapat dibaca secara efisien, seperti yang dibaca dari ledger-db . |
transaction-history |
Java | Menyediakan cache transaksi sebelumnya yang dapat dibaca dan efisien, seperti yang dibaca dari ledger-db . |
ledger-db |
PostgreSQL | Buku besar semua transaksi. Opsi untuk mengisi otomatis dengan transaksi bagi pengguna demo. |
user-service |
Python | Mengelola akun pengguna dan autentikasi. Menandatangani JWT yang digunakan untuk autentikasi oleh layanan lain. |
contacts |
Python | Daftar penyimpanan akun lain yang terkait dengan pengguna. Digunakan untuk drop-down di "Kirim Pembayaran" dan "Setoran" formulir. |
accounts-db |
PostgreSQL | Database untuk akun pengguna dan data terkait. Opsi untuk mengisi otomatis dengan pengguna demo. |
loadgenerator |
Python / Belai | Terus-menerus mengirimkan permintaan yang meniru pengguna ke frontend. Membuat akun baru secara berkala dan menyimulasikan transaksi di antara akun-akun tersebut. |
Untuk men-deploy Cymbal Bank ke cluster GKE Anda, selesaikan langkah langkah-langkah berikut:
Cymbal Bank menggunakan JSON Web Token (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 {i>login<i}, dan layanan lainnya menggunakan kunci publik yang sesuai untuk memvalidasi pengguna.Buat JWT RS256 berkekuatan 4.096 bit:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Jika diperlukan, mendownload dan menginstal alat OpenSSL untuk platform Anda.
Rahasia Kubernetes dapat menyimpan data sensitif seperti kunci atau sandi. Workload yang berjalan di cluster Anda kemudian dapat mengakses Secret ini untuk mendapatkan data sensitif alih-alih meng-{i>hard-coding<i} dalam aplikasi.
Membuat Secret Kubernetes dari file kunci yang Anda buat di langkah sebelumnya langkah yang akan digunakan Cymbal Bank untuk permintaan otentikasi:
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 dalam 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 dalam 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 perangkat keras yang digunakan oleh beban kerja Anda. Jika Anda tidak menentukan untuk beberapa kontainer, Autopilot menetapkan nilai default dan membiarkan container tersebut berjalan dengan benar.Tinjau contoh manifes berikut untuk Layanan
frontend
:Manifes untuk Layanan
frontend
ini meminta100m
CPU dan64Mi
, dan menetapkan batas250m
CPU dan128Mi
per Pod.Saat Anda men-deploy beban kerja di cluster Autopilot, GKE memvalidasi konfigurasi workload terhadap nilai minimum dan maksimum yang diizinkan untuk class komputasi atau konfigurasi hardware yang dipilih (seperti GPU). Jika permintaan Anda kurang dari minimum, Autopilot secara otomatis mengubah konfigurasi workload untuk membawa permintaan Anda dalam rentang yang diizinkan. Pesan ini menunjukkan bahwa batas yang sesuai sedang ditetapkan secara otomatis.
Tunggu hingga Pod siap. Gunakan
kubectl
untuk memeriksa status Pod:kubectl get pods
Kolom
STATUS
berubah dariPending
menjadiContainerCreating
. Dibutuhkan selama beberapa menit hingga semua Pod berada dalam statusRunning
, seperti ditunjukkan di 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
Saat semua Pod berada dalam status
Running
, lanjutkan ke langkah berikutnya. Sekali lagi, semua Pod memerlukan waktu beberapa menit untuk berada diRunning
status. Beberapa Pod melaporkan statusREADY
dari0/1
hingga Cymbal Bank siap melayani traffic dengan benar.Layanan
frontend
mengekspos server HTTP untuk menyalurkan Cymbal Bank {i>website<i}, termasuk halaman {i>sign-in<i}, halaman pendaftaran, dan halaman beranda. Ingress menentukan aturan untuk mengarahkan 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 di output Perintah
kubectl get ingress
untuk mengakses instance Cymbal Bank Anda.Kredensial default diisi secara otomatis, sehingga Anda dapat login ke aplikasi dan menjelajahi beberapa contoh transaksi dan saldo. Ada tidak ada tindakan khusus yang perlu Anda ambil, selain untuk mengonfirmasi bahwa Cymbal Bank berhasil dijalankan. Mungkin perlu waktu satu atau dua menit untuk semua layanan berkomunikasi dengan benar dan memungkinkan Anda masuk.
Mempelajari deployment Anda
Setelah membuat cluster GKE dan men-deploy workload, Anda mungkin perlu mengubah pengaturan atau meninjau kinerja aplikasi Anda. Di sini Anda akan mempelajari cara menggunakan Konsol Google Cloud untuk meninjau resource adalah bagian dari cluster Anda dan aplikasi contoh Cymbal Bank.
Cluster
Dalam tutorial ini, Anda membuat satu cluster GKE dan men-deploy workload Cymbal Bank.
Di halaman Google Kubernetes Engine pada Konsol Google Cloud, buka Clusters kami.
Klik cluster scalable-apps yang baru di-deploy. Di detail cluster terbuka, Anda juga dapat melihat detail cluster dasar beserta konfigurasi jaringan dan keamanan. Anda juga dapat melihat Fitur GKE diaktifkan dalam cluster ini di bagian Fitur bagian.
Kemampuan observasi
Anda dapat melihat metrik dasar untuk kondisi dan performa cluster Anda. Di beberapa tutorial berikutnya dalam seri ini, Anda mengaktifkan Google Cloud Managed Service for Prometheus untuk kemampuan observasi dan pemantauan yang lebih terperinci.
Pilih cluster Anda dari halaman Clusters Google Kubernetes Engine pada Konsol Google Cloud, lalu buka tab Observability.
Periksa beberapa grafis metrik untuk hal seperti CPU dan Memori. Ini memungkinkan Anda memantau performa berbagai bagian cluster workload tanpa perlu men-deploy kemampuan pemantauan tambahan.
Untuk melihat log yang di-streaming dari cluster, pilih tab Logs. Anda dapat filter menurut Severity log, atau buat filter Anda sendiri untuk melihat namespace, Service, atau Pod. Seperti halnya peringatan dan peristiwa Pod, tampilan gabungan log dari cluster Anda dapat membantu men-debug masalah dengan cepat menggunakan konsol Google Cloud.
Adalah hal yang normal untuk melihat entri log karena Cymbal Bank pertama kali di-deploy ketika beberapa belum dapat berkomunikasi.
Pilih tab Error Aplikasi. Saat beban kerja Anda berjalan, Anda dapat melihat kumpulan peringatan dan peristiwa 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 Anda melihat peristiwa yang dicatat dalam log saat Cymbal Bank pertama kali di-deploy saat beberapa Layanan belum dapat berkomunikasi.
Beban kerja
Halaman GKE Konsol Google Cloud memiliki bagian Workloads yang menunjukkan tampilan agregat workload yang berjalan di semua Cluster GKE.
Di halaman Google Kubernetes Engine pada Google Cloud Console, buka Workloads kami.
Tab Overview menampilkan daftar beban kerja dan namespace dari cluster GKE. Anda dapat memfilter menurut namespace untuk melihat dan workload berjalan di setiap namespace.
Layanan & Ingress
Halaman Layanan & Tampilan Ingress menunjukkan Service dan Ingress project Google Cloud Platform. Service mengekspos kumpulan Pod sebagai layanan jaringan dengan endpoint, sedangkan Ingress mengelola akses eksternal ke layanan di cluster.
Di halaman Google Kubernetes Engine pada Konsol Google Cloud, buka Gateways, Layanan & Ingress.
Untuk menemukan traffic masuk Cymbal Bank, klik tab Ingress dan temukan traffic masuk dengan nama
frontend
. Traffic masuk mengelola lalu lintas masuk untuk aplikasi Anda. Anda dapat melihat informasi tentang load balancer, port, dan endpoint eksternal.Klik IP address untuk traffic masuk
frontend
, seperti198.51.100.143:80
. Alamat ini akan membuka antarmuka web Cymbal Bank.
Pembersihan
Kumpulan tutorial untuk Cymbal Bank dirancang untuk diselesaikan satu setelah lainnya. Seiring kemajuan Anda melalui serangkaian tutorial, Anda akan mempelajari keterampilan baru dan menggunakan produk dan layanan Google Cloud tambahan.
Jika Anda ingin istirahat sebelum melanjutkan ke tutorial berikutnya dan menghindari menimbulkan biaya ke akun Google Cloud Anda untuk resource yang digunakan dalam menghapus project yang Anda buat.
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Langkah selanjutnya
Pelajari cara memantau workload Anda di GKE menggunakan Google Cloud Managed Service for Prometheus dan Cloud Monitoring di tutorial berikutnya.