Kumpulan tutorial ini ditujukan untuk administrator IT dan Operator yang ingin untuk men-deploy, menjalankan, dan mengelola lingkungan aplikasi modern yang berjalan Edisi Google Kubernetes Engine (GKE) Enterprise. Saat Anda terus mempelajari rangkaian tutorial ini, Anda akan belajar cara mengonfigurasi pemantauan dan pemberitahuan, menskalakan workload, dan melakukan simulasi kegagalan, semuanya menggunakan aplikasi microservice contoh Cymbal Bank:
- Membuat cluster dan men-deploy aplikasi contoh
- Memantau dengan Google Cloud Managed Service for Prometheus
- Menskalakan workload
- Menyimulasikan kegagalan
- Memusatkan manajemen perubahan (tutorial ini)
Ringkasan dan tujuan
Saat Anda membangun layanan dan aplikasi baru, Anda mungkin ingin menguji perubahan di lingkungan yang berbeda. Seiring dengan berkembangnya organisasi, Anda mungkin perlu konfigurasi cluster yang berbeda untuk tim yang berbeda. Mengelola banyak cluster dengan konfigurasi yang berbeda dapat menjadi tantangan. Anda dapat menggunakan alat GitOps seperti Config Sync untuk membantu Anda mengelola tantangan ini.
Di kolom Membuat tutorial 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 Anda dalam 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
Buat cluster, daftarkan ke fleet, dan instal Config Sync di fleet cluster Anda
Gunakan paket fleet untuk men-deploy Cymbal Bank dan resource lainnya di cluster atau di seluruh fleet
Biaya
Mengaktifkan GKE Enterprise dan men-deploy contoh Cymbal Bank untuk rangkaian tutorial ini berarti Anda mengeluarkan biaya per-cluster biaya untuk GKE Enterprise di Google Cloud seperti yang tercantum dalam Halaman harga hingga Anda menonaktifkan GKE Enterprise 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
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 contoh aplikasi berbasis microservice contoh Cymbal Bank.
Sebaiknya Anda menyelesaikan rangkaian tutorial ini secara berurutan untuk Cymbal Bank. Saat Anda terus mempelajari serangkaian tutorial, Anda 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:
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 memaketkan manifes bersamaan sebagai satu paket, Anda dapat men-deploy aplikasi ke beberapa cluster dalam fleet secara langsung dari repositori Git. Dengan alur kerja ini, Anda mendapatkan manfaat berikut:
- Meningkatkan skalabilitas dengan men-deploy resource di seluruh fleet, bukan menerapkannya secara manual berdasarkan cluster.
- Update yang lebih aman dengan peluncuran progresif.
- Alur kerja tambahan dari pengambilan file konfigurasi secara terpusat di Git, seperti kontrol dan persetujuan versi.
Untuk menunjukkan cara menyimpan dan membuat perubahan di Git, Anda melakukan fork pada Cymbal Bank dan menghubungkannya ke Cloud Build.
Lakukan fork pada 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 dan men-deploy dengan aman mereka. Untuk membuat perubahan tersebut secara langsung, Anda harus melakukan fork ke repositori Git, bukan meng-clone repositori tersebut.
Untuk melakukan 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 lain atau tim di GitHub, pastikan Anda mengambil repositori ke akun pribadi Anda.
Anda sekarang memiliki garpu
repositori Cymbal Bank. Semua Kubernetes
manifes yang Anda deploy terletak 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 layanan berkelanjutan pengiriman. 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 Anda sinkronkan. API paket fleet 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 Repositori.
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 koneksi Anda.Klik Connect.
Jika ini adalah pertama kalinya Anda menghubungkan Cloud Build ke akun GitHub, selesaikan langkah-langkah berikut:
- Setujui permintaan untuk token OAuth GitHub Anda. Token tersebut disimpan di Secret Manager untuk digunakan dengan Koneksi GitHub Cloud Build. Klik Lanjutkan.
- Instal Cloud Build ke dalam repositori GitHub Anda. Pilih Instal di akun baru.
- Di jendela GitHub baru yang terbuka, pilih akun GitHub tempat Anda menciptakan garpu Cymbal Bank. Dalam lingkungan produksi, Anda dapat memilih akun atau repositori lain yang aksesnya telah Anda delegasikan.
- Ikuti perintah autentikasi apa pun 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
. - 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
.Pilih Tautkan.
Membuat cluster
Dalam tutorial pertama dalam seri ini, Anda telah membuat satu cluster dan men-deploy aplikasi Cymbal Bank ke cluster tersebut. Di skenario yang sebenarnya, kemungkinan Anda hanya memiliki satu cluster untuk dikelola. GKE memungkinkan Anda mengelompokkan cluster dalam sebuah fleet: grup yang logis beberapa cluster yang dapat dikelola bersama-sama. Di dalam armada, Anda mungkin lebih mengelompokkan cluster Anda dengan beberapa cluster yang mewakili lingkungan atau anggota yang berbeda ke tim yang berbeda. Misalnya, Anda mungkin memiliki yaitu cluster staging, dan cluster produksi. Dalam organisasi besar, tim individu mungkin memiliki cluster mereka sendiri untuk lingkungan yang berbeda. Sebagai administrator IT atau Operator, ini mungkin berarti Anda harus mengelola banyak cluster.
Dalam hal men-deploy aplikasi, atau resource individual seperti kebijakan kustom, di semua cluster tersebut, fitur GKE Enterprise seperti Config Sync dapat membantu Anda mengelola deployment tersebut dalam skala besar.
Untuk membantu mendemonstrasikan cara men-deploy resource ke berbagai atau di seluruh fleet cluster, Anda membuat cluster baru dan men-deploy aplikasi Cymbal Bank:
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 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
.
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 mana yang ditargetkan oleh paket fleet. Jenis label lainnya tidak dapat digunakan.
Tambahkan label ke keanggotaan fleet:
gcloud container fleet memberships update scalable-apps-dev \ --update-labels=env=dev
Saat Anda membuat paket fleet 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 Install Config Sync.
- Pastikan Upgrade manual tetap dipilih.
- Menu versi harus disetel secara default ke versi terbaru Config Sync. Jika diperlukan, pilih versi terbaru.
- Di bagian Opsi penginstalan, pilih Menginstal Config Sync di seluruh perangkat (direkomendasikan).
- Klik Install Config Sync.
- Di tab Settings untuk Config Sync, lihat kolom Status pada daftar cluster. Setelah beberapa menit, statusnya akan ditampilkan sebagai "Tertunda" sampai cluster dikonfigurasi dengan benar untuk Config Sync. Dapat memakan waktu hingga 10 menit agar status berubah menjadi Aktif.
Men-deploy Cymbal Bank
Pada tutorial pertama dalam seri ini, Anda menggunakan perintah kubectl
untuk menerapkan aplikasi
konfigurasi deployment ke cluster Anda. Dalam tutorial ini, Anda menggunakan perangkat Config Sync
fitur paket untuk men-deploy konfigurasi yang sama ke cluster baru. Nanti
Anda akan melihat contoh cara menambahkan sumber daya baru ke
repositori Git dan men-deploy resource tersebut
ke seluruh fleet cluster.
Menyiapkan akun layanan untuk Cloud Build
Akun layanan adalah jenis akun khusus yang biasanya digunakan aplikasi, dan bukan manusia. Sebagai praktik terbaik saat membuat akun layanan, Anda harus membuat akun layanan untuk satu layanan atau tugas tertentu, dan memberikan peran terperinci akun layanan. Dalam tutorial ini, Anda membuat akun layanan untuk memberi Cloud Build izin guna mengambil Resource Kubernetes dari repositori Git Anda dan deploy 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." \ --role='roles/configdelivery.resourceBundlePublisher'
Jika diminta, pilih
None
sebagai kondisi untuk kebijakan.Beri akun layanan izin untuk menulis log dengan menambahkan atribut 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 dari repositori lama. Ada baiknya untuk membuat rilis baru ketika Anda membuat perubahan pada repositori, karena ini membantu kontrol versi dan membuatnya lebih mudah untuk melakukan roll back ke versi stabil jika diperlukan.
Di jendela browser web pada fork GitHub Cymbal Bank, di bawah Releases pada sidebar, klik Create a new release.
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 otentikasi 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
Membuat 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
fleet cluster.
Untuk membuat paket fleet, tentukan spesifikasi FleetPackage
yang mengarah ke
repositori dengan resource Kubernetes yang telah dihubungkan
Cloud Build. Kemudian, Anda menerapkan resource FleetPackage
, yang mengambil
resource dari Git dan men-deploy-nya ke seluruh fleet.
Di Cloud Shell, tetapkan lokasi default untuk
configdelivery
perintah Google Cloud CLI. Seperti halnya menghubungkan repositori ke Cloud Build, Anda harus menggunakanus-central1
sedangkan fitur paket fleet sedang 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 dalam koneksi Cloud Build.Kolom pemilih cocok dengan label keanggotaan fleet 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 akan terpengaruh. Dalam Anda akan melihat contoh paket fleet yang menargetkan semua cluster dalam sebuah armada.Kolom strategi peluncuran mengontrol cara resource di-deploy di berbagai cluster. Dalam contoh ini, Anda hanya men-deploy ke satu cluster sehingga kolom ini tidak berubah bagaimana peluncuran dilanjutkan. Tetapi jika Anda memiliki banyak klaster, pengaturan ini memastikan tempat semua file resource diterapkan satu klaster sebelum beralih ke klaster berikutnya. Hal ini memungkinkan Anda memantau bagaimana peluncuran berlangsung.
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
Outputnya mencantumkan status pemicu build. Setelah beberapa detik, kolom
MESSAGE
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 guna melihat log streaming untuk tugas Cloud Build. Cloud Build memerlukan waktu beberapa menit untuk memproses pemicu build.
Saat pemicu build berhasil diselesaikan, output dari
gcloud alpha container fleet packages list
mirip dengan yang 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 pada Konsol Google Cloud, pilih cluster
scalable-apps-dev
Anda, lalu buka halaman Workloads untuk melihat tampilan gabungan workload yang sedang di-deploy di semua cluster GKE Anda:Anda mungkin melihat beberapa error saat Autopilot menyesuaikan Pod agar memenuhi permintaan resource. Setelah beberapa menit, Pod Anda akan mulai berjalan dengan status OK.
Untuk melihat antarmuka web Cymbal Bank, selesaikan langkah-langkah berikut:
Di halaman Google Kubernetes Engine pada Konsol Google Cloud, buka Gateways, Layanan & Ingress.
Untuk menemukan traffic masuk Cymbal Bank, klik tab "Layanan" dan cari dengan nama
frontend
.Klik link Endpoint untuk traffic masuk
frontend
, seperti198.51.100.143:80
, untuk membuka antarmuka web Cymbal Bank.
Men-deploy resource di seluruh fleet
Selanjutnya, bayangkan skenario di mana Anda ingin memperluas permohonan Cymbal Bank dengan microservice baru. Anda ingin men-deploy microservice ini di seluruh cluster yang ada saat ini dan cluster apa pun di masa mendatang yang akan ditambahkan ke fleet. Dengan menggunakan sebuah paket fleet, Anda dapat men-deploy ke beberapa cluster dan mendapatkan deployment otomatis pada cluster baru.
Menambahkan resource baru ke repositori Git Anda
Untuk mendemonstrasikan penambahan layanan baru ke aplikasi, Anda membuat nginx, lalu menambahkannya ke cluster Anda:
Di jendela browser web pada fork GitHub Cymbal Bank, pilih, klik Tambahkan file, lalu Buat file baru.
Beri nama file
new-resource/nginx.yaml
dan tempel 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 Lakukan perubahan...
Pada dialog konfirmasi, biarkan Commit langsung ke cabang
main
dipilih lalu klik Commit changes.Di halaman utama repositori Cymbal Bank yang bercabang, 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 di fleet Anda karena tidak berisi isian pemilih. Ini juga berarti setiap cluster mendatang yang ditambahkan ke fleet deployment nginx akan otomatis ditambahkan.
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 guna melihat log streaming untuk tugas Cloud Build.
Paket fleet mulai meluncurkan resource Kubernetes di seluruh perangkat seluler. Diperlukan waktu beberapa menit hingga peluncuran dimulai dan selesai.
Di halaman Google Kubernetes Engine pada Google Cloud Console, buka halaman Workloads untuk melihat tampilan agregat workload yang sedang 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 dan menggunakan konfigurasi paket fleet yang berbeda untuk men-deploy-nya. Anda juga dapat menggunakan paket fleet untuk menghapus resource yang di-deploy di seluruh klaster. Untuk mengetahui informasi selengkapnya tentang paket fleet, lihat Men-deploy paket fleet di dokumentasi Config Sync.
Menghapus resource di seluruh fleet
Sama seperti Anda dapat mendistribusikan sumber daya di seluruh armada, Anda dapat menghapus resource di seluruh fleet dengan paket fleet.
Untuk menghapus resource satu per satu, langkah-langkah tingkat tingginya adalah sebagai berikut:
- Hapus resource dari repositori Git Anda.
- Buat rilis Git baru dan buat tag baru.
- Update kolom
tag
paket fleet. - Jalankan perintah fleet package update.
Atau, Anda dapat menghapus paket fleet itu sendiri, yang juga menghapus semua sumber daya yang dikelola oleh paket fleet.
Misalnya, jika Anda ingin menghapus deployment nginx dari versi 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 di 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 bercabang dengan menyelesaikan langkah-langkah berikut:
Di jendela browser web pada fork GitHub Cymbal Bank, di bagian nama repositori Anda, klik Settings.
Di halaman Setelan umum (yang dipilih secara default), buka bagian Zona Bahaya dan klik Hapus repositori ini.
Klik I want to delete this repository.
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 bercabang.
Klik Delete this repository.
Langkah selanjutnya
Sebelum mulai membuat cluster GKE Enterprise sendiri lingkungan yang serupa dengan yang Anda pelajari dalam rangkaian tutorial ini, meninjau beberapa pertimbangan produksi.