Kumpulan tutorial ini ditujukan bagi administrator dan Operator IT yang ingin men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan di Google Kubernetes Engine. Saat Anda mempelajari serangkaian 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
- 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 dengan 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
Menggunakan paket armada untuk men-deploy Cymbal Bank dan resource lainnya di cluster atau di seluruh armada
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 mewakili 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, Anda mungkin harus mengelola puluhan cluster.
Dalam hal men-deploy aplikasi, atau resource individual seperti kebijakan kustom, di semua cluster ini, fitur GKE seperti Config Sync dapat membantu Anda mengelola deployment tersebut dalam skala besar.
Untuk membantu mendemonstrasikan 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 versi terbaru Config Sync. 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 di 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 memudahkan untuk mengembalikan 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 fleet, 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 ke Cloud Build, Anda harus menggunakanus-central1
saat fitur paket armada 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, cluster mendatang yang ditambahkan ke fleet akan otomatis ditambahkan deployment nginx-nya.
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