Serangkaian tutorial ini ditujukan bagi administrator dan Operator IT yang ingin men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan di edisi Google Kubernetes Engine (GKE) Enterprise. Seiring Anda mempelajari serangkaian tutorial ini, Anda akan mempelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan menyimulasikan kegagalan, semuanya menggunakan aplikasi microservice sampel Cymbal Bank:
- Membuat cluster dan men-deploy aplikasi contoh
- Memantau dengan Google Cloud Managed Service for Prometheus
- Menskalakan beban kerja
- Menyimulasikan kegagalan
- Memusatkan manajemen perubahan (tutorial ini)
Ringkasan dan tujuan
Saat membangun layanan dan aplikasi baru, Anda mungkin ingin menguji perubahan di lingkungan yang berbeda. Seiring pertumbuhan organisasi, Anda mungkin memerlukan konfigurasi cluster yang berbeda untuk tim yang berbeda. Mengelola beberapa cluster dengan konfigurasi yang berbeda dapat menjadi tantangan. Anda dapat menggunakan alat GitOps seperti Config Sync untuk membantu Anda mengatasi tantangan ini.
Dalam tutorial Membuat cluster, Anda telah membuat cluster dan men-deploy aplikasi Cymbal Bank ke cluster tersebut.
Dalam tutorial ini, Anda akan mempelajari cara menyimpan manifes Kubernetes untuk aplikasi di repositori Git terpusat dan cara menggunakan alat seperti Config Sync untuk men-deploy aplikasi ke beberapa cluster dalam armada. Anda akan mempelajari cara menyelesaikan tugas berikut:
Buat repositori Git dan hubungkan ke Cloud Build
Buat cluster, daftarkan ke fleet, dan instal Config Sync di fleet cluster Anda
Gunakan paket armada untuk men-deploy Cymbal Bank dan resource lainnya di cluster atau di seluruh armada
Biaya
Mengaktifkan GKE Enterprise dan men-deploy aplikasi contoh Cymbal Bank untuk rangkaian tutorial ini berarti Anda akan dikenai biaya per cluster untuk GKE Enterprise di Google Cloud seperti yang tercantum di halaman Harga kami hingga Anda menonaktifkan GKE Enterprise 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
Untuk mempelajari cara menyimpan, membuat perubahan, dan men-deploy resource dari repositori Git, Anda harus menyelesaikan tutorial pertama untuk membuat cluster GKE yang menggunakan mode Autopilot dan men-deploy aplikasi berbasis microservice contoh Cymbal Bank.
Sebaiknya selesaikan serangkaian tutorial ini untuk Cymbal Bank secara berurutan. Saat Anda menyelesaikan serangkaian tutorial, Anda akan mempelajari keterampilan baru dan menggunakan produk dan layanan Google Cloud tambahan.
Untuk menggunakan Config Sync guna men-deploy manifes Kubernetes dari repositori Git ke cluster Anda, Anda harus mengaktifkan API berikut:
gcloud services enable configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com
Buat repositori Git dan hubungkan ke Cloud Build
Paket armada adalah kumpulan manifes resource Kubernetes. Dengan menggabungkan manifes tersebut sebagai paket, Anda dapat men-deploy aplikasi ke beberapa cluster dalam fleet langsung dari repositori Git. Dengan alur kerja ini, Anda akan mendapatkan manfaat berikut:
- Peningkatan skalabilitas dengan men-deploy resource di seluruh fleet, bukan menerapkannya secara manual cluster demi cluster.
- Update yang lebih aman dengan peluncuran progresif.
- Alur kerja tambahan dari file konfigurasi sumber terpusat di Git, seperti kontrol versi dan persetujuan.
Untuk menunjukkan cara menyimpan dan membuat perubahan di Git, Anda akan membuat fork repositori Cymbal Bank dan menghubungkannya ke Cloud Build.
Melakukan fork repositori Cymbal Bank
Dalam tutorial ini, Anda akan membuat perubahan pada repositori Git untuk mendemonstrasikan cara Config Sync membantu Anda mengelola perubahan pada resource Kubernetes dan men-deploy-nya dengan aman. Untuk melakukan perubahan tersebut secara langsung, Anda harus membuat fork repositori Git, bukan meng-clone-nya.
Untuk membuat fork repositori, selesaikan langkah-langkah berikut:
Di GitHub, buka repositori contoh Cymbal Bank (
bank-of-anthos
).Klik Fork untuk mendapatkan salinan repositori dengan file sumber.
Jika perlu, login ke akun GitHub Anda. Jika Anda memiliki akses ke organisasi atau tim lain di GitHub, pastikan Anda membuat fork repositori ke akun pribadi Anda.
Sekarang Anda memiliki fork repositori Cymbal Bank. Semua manifes Kubernetes yang Anda deploy berada di folder /kubernetes-manifests
.
Hubungkan repositori ke Cloud Build
Cloud Build adalah layanan yang dapat menjalankan build di Google Cloud, yang dapat Anda gunakan untuk continuous delivery bergaya GitOps. Layanan paket fleet Config Sync menggunakan Cloud Build untuk mengambil resource Kubernetes dari repositori Git Anda dan men-deploy-nya ke cluster Anda. Saat menggunakan paket armada, Anda hanya perlu menyiapkan Cloud Build satu kali per repositori yang ingin disinkronkan. Fleet package API secara otomatis membuat pemicu build melalui Cloud Build.
Untuk menghubungkan repositori GitHub Anda ke Cloud Build:
Buka halaman Cloud Build di konsol Google Cloud , lalu pilih Repositories.
Pastikan Anda berada di halaman Repositories generasi ke-2. Jika perlu, pilih Lihat repositori (generasi ke-2).
Klik Create host connection.
Di menu Region, pilih us-central1 (Iowa) sebagai region Anda.
Di kolom Name, ketik
cymbal-bank-connection
sebagai nama untuk koneksi Anda.Klik Connect.
Jika ini pertama kalinya Anda menghubungkan Cloud Build ke akun GitHub Anda, selesaikan langkah-langkah berikut:
- Terima permintaan untuk token OAuth GitHub Anda. Token disimpan di Secret Manager untuk digunakan dengan Koneksi GitHub Cloud Build. Klik Lanjutkan.
- Instal Cloud Build ke repositori GitHub Anda. Pilih Instal di akun baru.
- Di jendela GitHub baru yang terbuka, pilih akun GitHub tempat Anda membuat fork Cymbal Bank sebelumnya. Dalam lingkungan produksi, Anda dapat memilih akun atau repositori lain yang aksesnya telah didelegasikan kepada Anda.
- Ikuti perintah autentikasi apa pun untuk mengonfirmasi identitas Anda di GitHub.
- Di jendela GitHub untuk akses repositori Cloud Build, pilih Only select repositories.
- Dari menu drop-down yang mencantumkan repositori, pilih fork
bank-of-anthos
Anda. - Klik Simpan.
Di halaman Cloud Build di konsol Google Cloud , klik Link repository untuk menghubungkan repositori Git baru ke Cloud Build.
Di menu Connection, pilih
cymbal-bank-connection
.Di menu Repositories, pilih fork
bank-of-anthos
Anda.Pilih Tautkan.
Membuat cluster
Dalam tutorial pertama di seri ini, Anda telah membuat satu cluster dan men-deploy aplikasi Cymbal Bank ke cluster tersebut. Dalam skenario nyata, Anda kemungkinan tidak hanya memiliki satu cluster untuk dikelola. GKE memungkinkan Anda mengelompokkan cluster dalam satu fleet: grup logis cluster yang dapat dikelola bersama. Dalam fleet, Anda dapat mengelompokkan lebih lanjut cluster dengan beberapa cluster yang merepresentasikan lingkungan yang berbeda atau termasuk dalam tim yang berbeda. Misalnya, Anda mungkin memiliki cluster pengembangan, cluster staging, dan cluster produksi. Di organisasi besar, setiap tim mungkin memiliki cluster sendiri untuk lingkungan yang berbeda. Sebagai administrator atau Operator IT, hal ini mungkin berarti Anda harus mengelola lusinan cluster.
Dalam hal men-deploy aplikasi, atau resource individual seperti kebijakan kustom, di semua cluster ini, fitur GKE Enterprise seperti Config Sync dapat membantu Anda mengelola deployment tersebut dalam skala besar.
Untuk membantu menunjukkan cara men-deploy resource ke lingkungan yang berbeda atau di seluruh kumpulan cluster, Anda membuat cluster baru dan men-deploy aplikasi Cymbal Bank ke cluster tersebut:
Buat cluster GKE yang menyimulasikan lingkungan pengembangan:
gcloud container clusters create-auto scalable-apps-dev \ --project=PROJECT_ID \ --region=REGION \ --fleet-project=PROJECT_ID \ --release-channel=rapid
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
.
Label adalah key-value pair yang dapat Anda tambahkan ke resource GKE untuk membantu mengaturnya. Untuk paket fleet, Anda dapat menggunakan label keanggotaan fleet untuk menyesuaikan cluster yang ditargetkan oleh paket fleet. Jenis label lainnya tidak didukung.
Menambahkan label ke keanggotaan armada:
gcloud container fleet memberships update scalable-apps-dev \ --update-labels=env=dev
Saat Anda membuat paket armada nanti dalam tutorial ini, label ini memastikan bahwa resource hanya di-deploy di cluster
scalable-apps-dev
dan bukan clusterscalable-apps
dari tutorial pertama dalam seri ini.
Menginstal Config Sync
Instal Config Sync di kedua cluster:
- Di konsol Google Cloud , buka halaman Config di bagian Features.
- Klik add Instal Config Sync.
- Biarkan Upgrade manual dipilih.
- Menu versi harus ditetapkan secara default ke Config Sync versi terbaru. Jika perlu, pilih versi terbaru.
- Di bagian Installation options, pilih Install Config Sync on entire fleet (recommended).
- Klik Install Config Sync.
- Di tab Settings untuk Config Sync, lihat kolom Status dari daftar cluster. Setelah beberapa menit, status akan ditampilkan sebagai "Tertunda" hingga cluster dikonfigurasi dengan benar untuk Config Sync. Mungkin diperlukan waktu hingga 10 menit agar status berubah menjadi Diaktifkan.
Men-deploy Cymbal Bank
Dalam tutorial pertama dalam seri ini, Anda menggunakan perintah kubectl
untuk menerapkan konfigurasi aplikasi ke cluster Anda. Dalam tutorial ini, Anda menggunakan fitur paket fleet Config Sync untuk men-deploy konfigurasi yang sama ke cluster baru. Di bagian
selanjutnya, Anda akan melihat contoh cara menambahkan resource baru ke repositori Git dan men-deploy resource tersebut di seluruh kumpulan cluster.
Menyiapkan akun layanan untuk Cloud Build
Akun layanan adalah jenis akun khusus yang biasanya digunakan oleh aplikasi, bukan oleh orang. Sebagai praktik terbaik saat membuat akun layanan, Anda harus membuat akun layanan untuk satu layanan atau tugas tertentu, dan memberikan peran terperinci ke akun layanan tersebut. Dalam tutorial ini, Anda akan membuat akun layanan untuk memberikan izin Cloud Build guna mengambil resource Kubernetes dari repositori Git Anda dan men-deploy-nya ke cluster Anda.
Untuk membuat akun layanan dan memberikan izin yang diperlukan, selesaikan langkah-langkah berikut:
Buat akun layanan:
gcloud iam service-accounts create "cymbal-bank-service-account"
Beri akun layanan izin untuk mengambil resource dari repositori Git Anda dengan menambahkan binding kebijakan IAM untuk peran Resource Bundle Publisher:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'
Jika diminta, pilih
None
sebagai kondisi untuk kebijakan.Beri akun layanan izin untuk menulis log dengan menambahkan binding kebijakan IAM untuk peran Logs Writer:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'
Jika diminta, pilih
None
sebagai kondisi untuk kebijakan.
Buat rilis untuk aplikasi Cymbal Bank
Paket armada memerlukan tag versi semantik untuk mengetahui versi repositori yang akan di-deploy. Sebaiknya buat rilis baru saat Anda melakukan perubahan pada repositori, karena hal ini membantu kontrol versi dan mempermudah melakukan rollback ke versi stabil jika diperlukan.
Di jendela browser web fork GitHub Cymbal Bank Anda, di bagian Releases pada sidebar, klik Create a new release.
Pilih menu Pilih tag, lalu ketik
v1.0.0
sebagai tag. Klik Buat tag baru.Klik Publikasikan rilis.
Menyiapkan autentikasi
Sama seperti tutorial pertama dalam seri ini, Anda harus membuat JWT untuk menangani autentikasi pengguna dan Secret Kubernetes untuk menyimpan JWT bagi cluster baru yang Anda buat. Sebaiknya setiap cluster memiliki JWT unik untuk autentikasi.
Di Cloud Shell, buat JWT:
openssl genrsa -out jwtRS256.key 4096 openssl rsa -in jwtRS256.key -outform PEM -pubout -out jwtRS256.key.pub
Buat Secret Kubernetes:
kubectl create secret generic jwt-key --from-file=./jwtRS256.key --from-file=./jwtRS256.key.pub
Men-deploy aplikasi Cymbal Bank dengan paket armada
Resource FleetPackage
adalah API deklaratif untuk men-deploy beberapa manifes Kubernetes ke sekumpulan cluster.
Untuk membuat paket armada, Anda menentukan spesifikasi FleetPackage
yang mengarah ke repositori dengan resource Kubernetes yang Anda hubungkan ke Cloud Build. Kemudian, Anda menerapkan resource FleetPackage
, yang mengambil
resource dari Git dan men-deploy-nya di seluruh fleet.
Di Cloud Shell, tetapkan lokasi default untuk perintah
configdelivery
Google Cloud CLI. Seperti saat menghubungkan repositori Anda ke Cloud Build, Anda harus menggunakanus-central1
saat fitur paket fleet dalam pratinjau:gcloud config set config_delivery/location us-central1
Buat file bernama
fleetpackage-spec.yaml
dengan konten berikut:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.0.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests target: fleet: project: projects/PROJECT_ID selector: matchLabels: env: dev rolloutStrategy: rolling: maxConcurrent: 1
Ganti
REPOSITORY_NAME
dengan nama repositori Anda, seperti yang muncul di koneksi Cloud Build.Kolom pemilih cocok dengan label keanggotaan grup yang Anda buat sebelumnya. Hal ini memastikan bahwa aplikasi Cymbal Bank hanya di-deploy di cluster
scalable-apps-dev
. Clusterscalable-apps
dari tutorial pertama tidak terpengaruh. Di bagian berikutnya, Anda akan melihat contoh paket armada yang menargetkan semua cluster dalam armada.Kolom strategi peluncuran mengontrol cara resource di-deploy di seluruh cluster. Dalam contoh ini, Anda hanya men-deploy ke satu cluster, sehingga kolom ini tidak mengubah cara peluncuran berlangsung. Namun, jika Anda memiliki banyak cluster, setelan ini memastikan bahwa semua file resource diterapkan ke satu cluster sebelum melanjutkan ke cluster berikutnya. Dengan begitu, Anda dapat memantau progres peluncuran.
Buat paket fleet:
gcloud alpha container fleet packages create cymbal-bank-fleet-package \ --source=fleetpackage-spec.yaml \ --project=PROJECT_ID
Pastikan paket armada telah dibuat:
gcloud alpha container fleet packages list
Output mencantumkan status pemicu build. Setelah beberapa detik, kolom
MESSAGE
akan diperbarui dengan output yang mirip dengan berikut ini:MESSAGES: Build status: WORKING. The release is still being built; see the build status on the following page:
Anda dapat mengklik link yang diberikan untuk melihat log streaming untuk tugas Cloud Build. Cloud Build mungkin memerlukan waktu beberapa menit untuk memproses pemicu build.
Jika pemicu build berhasil diselesaikan, output
gcloud alpha container fleet packages list
akan mirip dengan berikut ini:NAME: cymbal-bank-fleet-package STATE: ACTIVE CREATE_TIME: 2024-07-09T15:15:56 ACTIVE_ROLLOUT: rollout-20240709-153621 LAST_COMPLETED_ROLLOUT: MESSAGES:
Paket fleet mulai men-deploy resource Kubernetes di seluruh fleet Anda.
Di halaman Google Kubernetes Engine di konsol Google Cloud , pilih cluster
scalable-apps-dev
Anda, lalu buka halaman Workloads untuk melihat tampilan gabungan workload yang di-deploy di semua cluster GKE Anda:Anda mungkin melihat beberapa error saat Autopilot menyesuaikan Pod untuk memenuhi permintaan resource. Setelah beberapa menit, Anda akan melihat Pod mulai berjalan dengan status OK.
Untuk melihat antarmuka web Cymbal Bank, selesaikan langkah-langkah berikut:
Di halaman Google Kubernetes Engine di konsol Google Cloud , buka halaman Gateways, Services & Ingress.
Untuk menemukan ingress Cymbal Bank, klik tab "Services" dan temukan layanan dengan nama
frontend
.Klik link Endpoint untuk ingress
frontend
, seperti198.51.100.143:80
, untuk membuka antarmuka web Cymbal Bank.
Men-deploy resource di seluruh fleet
Selanjutnya, bayangkan skenario saat Anda ingin memperluas aplikasi Cymbal Bank dengan microservice baru. Anda ingin men-deploy microservice ini di semua cluster saat ini dan cluster mendatang yang ditambahkan ke fleet. Dengan menggunakan paket fleet, Anda dapat men-deploy ke beberapa cluster dan mendapatkan deployment otomatis di cluster baru.
Menambahkan resource baru ke repositori Git Anda
Untuk mendemonstrasikan penambahan layanan baru ke aplikasi, Anda membuat deployment nginx dasar dan menambahkannya ke cluster:
Di jendela browser web fork GitHub Cymbal Bank Anda, klik Add file, lalu Create new file.
Beri nama file Anda
new-resource/nginx.yaml
dan tempelkan konten berikut ke dalamnya:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - image: nginx:1.14.2 name: nginx ports: - containerPort: 80
Klik Commit changes...
Pada dialog konfirmasi, biarkan Commit langsung ke cabang
main
dipilih lalu klik Commit changes.Di halaman utama repositori Cymbal Bank yang di-fork, pilih Rilis dari sidebar.
Di bagian atas halaman, pilih Buat rilis baru.
Pilih menu Pilih tag, lalu ketik
v1.1.0
sebagai tag. Klik Buat tag baru.Klik Publikasikan rilis.
Men-deploy resource ke cluster dengan paket fleet
Untuk men-deploy resource baru, buat paket armada baru:
Paket fleet ini menargetkan semua cluster di fleet Anda karena tidak berisi kolom pemilih. Artinya juga, semua cluster mendatang yang ditambahkan ke fleet akan otomatis ditambahkan ke deployment nginx.
Di Cloud Shell, buat file bernama
new-deployment-fleet-package.yaml
dengan konten berikut:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/cymbal-bank-connection/repositories/REPOSITORY_NAME tag: v1.1.0 serviceAccount: projects/PROJECT_ID/serviceAccounts/cymbal-bank-service-account@PROJECT_ID.iam.gserviceaccount.com path: kubernetes-manifests/new-resource target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: 1
Buat paket fleet untuk memulai peluncuran:
gcloud alpha container fleet packages create new-deployment-fleet-package \ --source=new-deployment-fleet-package.yaml \ --project=PROJECT_ID
Pastikan paket armada telah dibuat:
gcloud alpha container fleet packages list
Anda dapat mengklik link yang diberikan untuk melihat log streaming untuk tugas Cloud Build.
Paket fleet mulai men-deploy resource Kubernetes di seluruh fleet Anda. Peluncuran dapat memerlukan waktu beberapa menit untuk dimulai dan diselesaikan.
Di halaman Google Kubernetes Engine di konsol Google Cloud , buka halaman Workloads untuk melihat tampilan gabungan workload yang di-deploy di semua cluster GKE Anda:
Anda dapat terus menjelajahi berbagai strategi deployment dengan paket armada. Misalnya, Anda dapat mencoba menambahkan berbagai jenis resource ke repositori yang di-fork dan menggunakan berbagai konfigurasi paket armada untuk men-deploy-nya. Anda juga dapat menggunakan paket fleet untuk menghapus resource yang di-deploy di seluruh cluster. Untuk mengetahui informasi selengkapnya tentang paket armada, lihat Men-deploy paket armada dalam dokumentasi Config Sync.
Menghapus resource di seluruh armada
Sama seperti Anda dapat men-deploy resource di seluruh armada, Anda juga dapat menghapus resource di seluruh armada dengan paket armada.
Untuk menghapus setiap resource, langkah-langkah umumnya adalah sebagai berikut:
- Hapus resource dari repositori Git Anda.
- Buat rilis Git baru dan buat tag baru.
- Perbarui kolom paket armada
tag
. - Jalankan perintah update paket fleet.
Atau, Anda dapat menghapus paket armada itu sendiri, yang juga akan menghapus semua resource yang dikelola oleh paket armada.
Misalnya, jika Anda ingin menghapus deployment nginx dari bagian sebelumnya, jalankan perintah berikut:
gcloud alpha container fleet packages delete new-deployment-fleet-package --force
Pembersihan
Agar tidak menimbulkan 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.
Anda dapat menghapus repositori yang di-fork dengan menyelesaikan langkah-langkah berikut:
Di jendela browser web fork GitHub Cymbal Bank Anda, di bawah nama repositori Anda, klik Settings.
Di halaman setelan Umum (yang dipilih secara default), buka bagian Danger Zone, lalu klik Delete this repository.
Klik Saya ingin menghapus repositori ini.
Baca peringatan dan klik Saya telah membaca dan memahami efek ini.
Untuk memverifikasi bahwa Anda menghapus repositori yang benar, di kolom teks, ketik nama repositori Cymbal Bank yang di-fork.
Klik Delete this repository.
Langkah berikutnya
Sebelum mulai membuat lingkungan cluster GKE Enterprise Anda sendiri yang serupa dengan yang Anda pelajari dalam serangkaian tutorial ini, tinjau beberapa pertimbangan produksi.