Rangkaian tutorial ini ditujukan untuk Operator dan administrator IT yang ingin men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan di edisi Google Kubernetes Engine (GKE) Enterprise. Seiring Anda melanjutkan rangkaian tutorial ini, Anda akan mempelajari cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan beban kerja, dan menyimulasikan kegagalan, semuanya menggunakan aplikasi contoh microservice 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 mem-build 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 mengelola 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 satu fleet. Anda akan mempelajari cara menyelesaikan tugas-tugas berikut:
Membuat repositori Git dan menghubungkannya ke Cloud Build
Membuat cluster, mendaftarkannya ke fleet, dan menginstal Config Sync di fleet cluster Anda
Menggunakan paket fleet untuk men-deploy Cymbal Bank dan resource lainnya di cluster atau di seluruh fleet
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 Google Cloud lainnya yang timbul saat menjalankan aplikasi contoh Cymbal Bank, seperti tagihan untuk VM Compute Engine dan load balancer.
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 rangkaian tutorial ini untuk Cymbal Bank secara berurutan. Seiring 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 harus mengaktifkan API berikut:
gcloud services enable configdelivery.googleapis.com cloudbuild.googleapis.com developerconnect.googleapis.com
Membuat repositori Git dan menghubungkannya ke Cloud Build
Paket fleet adalah kumpulan manifes resource Kubernetes. Dengan menggabungkan manifes tersebut sebagai paket, Anda dapat men-deploy aplikasi ke beberapa cluster dalam satu 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 yang bersumber secara 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 menunjukkan cara Config Sync membantu Anda mengelola perubahan pada resource Kubernetes dengan aman dan men-deploynya. Untuk membuat perubahan tersebut secara langsung, Anda harus melakukan fork pada 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 melakukan fork repositori ke akun pribadi Anda.
Sekarang Anda memiliki fork repositori Cymbal Bank. Semua manifes Kubernetes
yang Anda deploy berada di folder /kubernetes-manifests
.
Menghubungkan 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 fleet, Anda hanya perlu menyiapkan Cloud Build satu kali per repositori yang ingin disinkronkan. API paket fleet 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 Repositori 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, 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 untuk mengonfirmasi identitas Anda di GitHub.
- Di jendela GitHub untuk akses repositori Cloud Build, pilih Hanya pilih repositori.
- 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 Repositori, pilih fork
bank-of-anthos
Anda.Pilih Tautkan.
Membuat cluster
Dalam tutorial pertama dalam seri ini, Anda telah membuat satu cluster dan men-deploy aplikasi Cymbal Bank ke cluster tersebut. Dalam skenario nyata, Anda mungkin tidak hanya memiliki satu cluster untuk dikelola. GKE memungkinkan Anda mengelompokkan cluster dalam satu fleet: grup cluster logika yang dapat dikelola bersama. Dalam fleet, Anda dapat mengelompokkan lebih lanjut cluster dengan beberapa cluster yang mewakili lingkungan yang berbeda atau milik tim yang berbeda. Misalnya, Anda mungkin memiliki cluster pengembangan, cluster staging, dan cluster produksi. Di organisasi besar, setiap tim mungkin memiliki clusternya sendiri untuk lingkungan yang berbeda. Sebagai administrator IT atau Operator, hal ini mungkin berarti Anda harus mengelola puluhan 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 berbagai lingkungan atau di seluruh 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 scalable-apps, tetapi project ID Anda mungkin scalable-apps-567123.REGION
dengan region tempat Anda ingin membuat cluster, sepertius-central1
.
Label adalah pasangan nilai kunci yang dapat Anda tambahkan ke resource GKE untuk membantu mengaturnya. Untuk paket fleet, Anda dapat menggunakan label keanggotaan fleet untuk menyesuaikan cluster yang ditargetkan paket fleet. Jenis label lainnya tidak didukung.
Tambahkan label ke langganan fleet:
gcloud container fleet memberships update scalable-apps-dev \ --update-labels=env=dev
Saat Anda membuat paket fleet nanti dalam tutorial ini, label ini akan memastikan bahwa resource hanya di-deploy di cluster
scalable-apps-dev
, 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 Install Config Sync.
- Pastikan Upgrade manual tetap dipilih.
- Menu versi akan ditetapkan secara default ke versi Config Sync terbaru. Jika perlu, pilih versi terbaru.
- Di bagian Installation options, pilih Install Config Sync on entire fleet (recommended).
- Klik Instal 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 Sinkronisasi Konfigurasi. 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. Dalam tutorial ini, Anda akan menggunakan fitur paket
armada 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 cluster.
Menyiapkan akun layanan untuk Cloud Build
Akun layanan adalah jenis akun khusus yang biasanya digunakan oleh aplikasi, bukan oleh pengguna. 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. Dalam tutorial ini, Anda akan membuat akun layanan untuk memberikan izin Cloud Build guna mengambil resource Kubernetes dari repositori Git dan men-deploynya ke cluster.
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"
Berikan izin akun layanan untuk mengambil resource dari repositori Git Anda dengan menambahkan binding kebijakan IAM untuk peran Penayang Resource Bundle:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:cymbal-bank-service-account@PROJECT_ID." \ --role='roles/configdelivery.resourceBundlePublisher'
Jika diminta, pilih
None
sebagai kondisi untuk kebijakan.Berikan izin akun layanan 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." \ --role='roles/logging.logWriter'
Jika diminta, pilih
None
sebagai kondisi untuk kebijakan.
Membuat rilis untuk aplikasi Cymbal Bank
Paket fleet memerlukan tag versi semantik untuk mengetahui versi repositori mana yang akan di-deploy. Sebaiknya buat rilis baru saat Anda membuat perubahan pada repositori, karena hal ini membantu kontrol versi dan mempermudah untuk melakukan rollback ke versi stabil jika diperlukan.
Di jendela browser web dari fork GitHub Cymbal Bank, klik Create a new release di bagian Releases pada sidebar.
Pilih menu Pilih tag dan 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 Kubernetes Secret untuk menyimpan JWT untuk 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 fleet
Resource FleetPackage
adalah API deklaratif untuk men-deploy beberapa manifes Kubernetes ke
armada 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 Google Cloud CLI
configdelivery
. Seperti saat menghubungkan repositori 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. 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 armada 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 fleet yang menargetkan semua cluster dalam fleet.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 beralih ke cluster berikutnya. Hal ini memungkinkan Anda 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 fleet 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 disediakan untuk melihat log streaming untuk tugas Cloud Build. Diperlukan waktu beberapa menit agar Cloud Build 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 meluncurkan resource Kubernetes di seluruh fleet Anda.
Di halaman Google Kubernetes Engine di Konsol Google Cloud, pilih cluster
scalable-apps-dev
, 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 "Layanan" 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 referensi baru ke repositori Git
Untuk menunjukkan cara menambahkan layanan baru ke aplikasi, Anda membuat deployment nginx dasar dan menambahkannya ke cluster:
Di jendela browser web dari fork GitHub Cymbal Bank, klik Tambahkan file, lalu Buat file baru.
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...
Di dialog konfirmasi, biarkan Commit directly to the
main
branch dipilih, lalu klik Commit changes.Di halaman utama repositori Cymbal Bank yang di-fork, pilih Rilis dari sidebar.
Di bagian atas halaman, pilih Buat draf rilis baru.
Pilih menu Pilih tag dan 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 fleet baru:
Paket fleet ini menargetkan semua cluster dalam fleet Anda karena tidak berisi kolom pemilih. Hal ini juga berarti setiap cluster mendatang yang ditambahkan ke fleet akan otomatis menambahkan 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. 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 fleet telah dibuat:
gcloud alpha container fleet packages list
Anda dapat mengklik link yang disediakan untuk melihat log streaming untuk tugas Cloud Build.
Paket fleet mulai meluncurkan resource Kubernetes di seluruh fleet Anda. Mungkin perlu waktu beberapa menit hingga peluncuran dimulai dan selesai.
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 mempelajari berbagai strategi deployment dengan paket fleet. Misalnya, Anda dapat mencoba menambahkan berbagai jenis resource ke repositori yang di-fork dan menggunakan konfigurasi paket fleet yang berbeda untuk men-deploy-nya. Anda juga dapat menggunakan paket fleet untuk menghapus resource apa pun yang di-deploy di seluruh cluster. Untuk mengetahui informasi selengkapnya tentang paket fleet, lihat Men-deploy paket fleet dalam dokumentasi Config Sync.
Menghapus resource di seluruh fleet
Sama seperti Anda dapat men-deploy resource di seluruh fleet, Anda dapat menghapus resource di seluruh fleet dengan paket fleet.
Untuk menghapus setiap resource, langkah-langkah tingkat tingginya adalah sebagai berikut:
- Hapus resource dari repositori Git Anda.
- Buat rilis Git baru dan buat tag baru.
- Perbarui kolom
tag
paket armada. - Jalankan perintah update paket fleet.
Atau, Anda dapat menghapus paket fleet itu sendiri, yang juga akan menghapus resource apa pun yang dikelola oleh paket fleet.
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.
- 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.
Anda dapat menghapus repositori yang di-fork dengan menyelesaikan langkah-langkah berikut:
Di jendela browser web dari fork GitHub Cymbal Bank, di bagian nama repositori, klik Setelan.
Di halaman Setelan umum (yang dipilih secara default), buka bagian Danger Zone dan 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, ketikkan nama repositori Cymbal Bank yang di-fork.
Klik Delete this repository.
Langkah selanjutnya
Sebelum mulai membuat lingkungan cluster GKE Enterprise Anda sendiri yang mirip dengan yang telah Anda pelajari dalam rangkaian tutorial ini, tinjau beberapa pertimbangan produksi.