Halaman ini menjelaskan cara menggunakan paket fleet Config Sync untuk men-deploy resource Kubernetes di seluruh cluster yang terdaftar ke fleet. Setelah Anda membuat dan men-deploy paket fleet, saat Anda menambahkan cluster baru ke fleet, paket fleet akan otomatis men-deploy file konfigurasi Kubernetes di repositori Git ke cluster baru.
FleetPackage adalah API deklaratif untuk men-deploy manifes mentah Kubernetes ke
kumpulan cluster. Semua resource Kubernetes yang ingin Anda deploy dengan paket armada harus
sudah di-hydrasi (WET).
Sebelum memulai
Buat, atau pastikan Anda memiliki akses ke, repositori Git dengan resource Kubernetes yang ingin Anda deploy di seluruh fleet.
Instal dan lakukan inisialisasi Google Cloud CLI, yang menyediakan perintah
gclouddannomos. Jika Anda menggunakan Cloud Shell, Google Cloud CLI sudah terinstal. Jika sebelumnya Anda telah menginstal Google Cloud CLI, dapatkan versi terbaru dengan menjalankangcloud components update.Aktifkan Config Sync (
anthosconfigmanagement) API danConfigDeliveryAPI:gcloud services enable anthosconfigmanagement.googleapis.com configdelivery.googleapis.comMenetapkan lokasi default:
gcloud config set config_delivery/location us-central1Menetapkan project default:
gcloud config set project PROJECT_IDGanti
PROJECT_IDdengan project ID project host fleet.Pastikan cluster Anda terdaftar ke fleet.
Gunakan repositori Cloud Build untuk membuat koneksi ke penyedia yang didukung seperti GitHub atau GitLab. Saat menggunakan paket armada, Anda hanya perlu menyiapkan Cloud Build satu kali per repositori yang ingin disinkronkan.
Meninjau persyaratan cluster
Sebelum menginstal Config Sync di cluster, tinjau rekomendasi dan persyaratan konfigurasi cluster.
Menyiapkan lingkungan Anda
Untuk menyiapkan lingkungan Anda bagi paket fleet Config Sync, berikan peran IAM yang diperlukan kepada pengguna yang mendaftarkan cluster.
Menginstal Config Sync
Anda dapat menginstal Config Sync dengan Google Cloud konsol atau Google Cloud CLI.
Konsol
Untuk menginstal Config Sync, semua cluster harus didaftarkan ke fleet. Saat Anda menginstal Config Sync di konsol Google Cloud , memilih masing-masing cluster akan otomatis mendaftarkan cluster tersebut ke fleet Anda.
- Di konsol Google Cloud , buka halaman Config di bagian Features.
Klik add Instal Config Sync.
Di bagian Installation options, pilih Install Config Sync on entire fleet (recommended).
Klik Install Config Sync. Di tab Setelan, setelah beberapa menit, Anda akan melihat Diaktifkan di kolom Status untuk cluster di fleet Anda.
gcloud
Aktifkan fitur fleet
ConfigManagement:gcloud beta container fleet config-management enableUntuk mengaktifkan Config Sync, buat file bernama
apply-spec.yamldengan konten berikut:applySpecVersion: 1 spec: configSync: enabled: trueTerapkan file
apply-spec.yaml:gcloud beta container fleet config-management apply \ --membership=MEMBERSHIP_NAME \ --config=apply-spec.yamlGanti
MEMBERSHIP_NAMEdengan nama keanggotaan fleet yang Anda pilih saat mendaftarkan cluster. Untuk menemukan nama keanggotaan, jalankan perintahgcloud container fleet memberships list.
Buat akun layanan untuk Cloud Build
Paket fleet menggunakan Cloud Build untuk mengambil resource Kubernetes dari repositori Git Anda dan men-deploy ke cluster Anda. Cloud Build memerlukan akun layanan yang memiliki izin untuk menjalankan tugas ini. Untuk membuat akun layanan dan memberikan izin yang diperlukan, selesaikan langkah-langkah berikut:
Buat akun layanan:
gcloud iam service-accounts create "SERVICE_ACCOUNT_NAME"Ganti
SERVICE_ACCOUNT_NAMEdengan nama untuk akun layanan. Nama harus berupa ID alfanumerik dengan panjang antara 6 dan 30 karakter, misalnyamy-service-account. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.Tambahkan binding kebijakan IAM untuk peran Resource Bundle Publisher:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/configdelivery.resourceBundlePublisher'Jika diminta, pilih
Nonesebagai kondisi untuk kebijakan.Tambahkan binding kebijakan IAM untuk peran Logs Writer:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/logging.logWriter'Jika diminta, pilih
Nonesebagai kondisi untuk kebijakan.Tambahkan binding kebijakan IAM untuk peran ArtifactRegistry Writer:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Jika diminta, pilih
Nonesebagai kondisi untuk kebijakan.
Membuat paket fleet
Untuk membuat paket armada, Anda menentukan spesifikasi FleetPackage yang mengarah ke repositori dengan resource Kubernetes yang Anda hubungkan ke Cloud Build. Kemudian, Anda menerapkan FleetPackage yang mengambil
resource dari Git dan men-deploy-nya di seluruh fleet.
Buat file bernama
fleetpackage-spec.yamldengan konten berikut:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS # set the state to SUSPENDED to pause new rollouts # set the state back to ACTIVE to resume rollouts # state: SUSPENDEDGanti kode berikut:
CONNECTION_NAME: nama yang Anda pilih saat menghubungkan host Git ke Cloud Build. Anda dapat melihat semua koneksi Cloud Build di project Anda dengan menjalankangcloud builds connections listatau dengan membuka halaman Repositori di konsol Google Cloud :REPOSITORY_NAME: nama repositori Anda. Nilai ini harus sama dengan nilai yang dimasukkan saat Anda menyiapkan koneksi Cloud Build.TAG: tag Git repositori Anda. Formatnya harus berupa versi semantik lengkap dengan nomor utama, minor, dan patch. Misalnya,v1.0.0adalah tag yang valid, sedangkanv1atauv1.0adalah tag yang tidak valid.CONFIG_FILE_PATH: jalur ke resource Kubernetes Anda di repositori. Jika file Anda berada di root repositori, Anda dapat menghapus kolom ini.MAX_CLUSTERS: jumlah maksimum cluster untuk men-deploy resource Kubernetes sekaligus. Misalnya, jika Anda menyetelnya ke1, paket resource akan di-deploy ke satu cluster dalam satu waktu.Untuk mengetahui daftar lengkap semua kolom yang dapat Anda konfigurasi, lihat dokumentasi referensi
FleetPackage.
Buat paket fleet:
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlGanti
FLEET_PACKAGE_NAMEdengan nama peluncuran paket armada Anda.Pastikan paket armada telah dibuat:
gcloud container fleet packages listOutput mencantumkan status pemicu build. Setelah beberapa detik, kolom
MESSAGEakan 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, paket armada akan mulai men-deploy resource Kubernetes di seluruh armada Anda.
Jika pemicu build berhasil diselesaikan, output
gcloud container fleet packages listakan mirip dengan berikut ini:NAME STATE CREATE_TIME ACTIVE_ROLLOUT LAST_COMPLETED_ROLLOUT MESSAGES my-fleet-package ACTIVE 2024-07-09T15:15:56 rollout-20240709-153621Paket fleet mulai men-deploy resource Kubernetes di seluruh fleet Anda.
Setelah Anda men-deploy paket armada, saat Anda menambahkan cluster baru ke armada, resource Kubernetes yang ditentukan dalam paket armada akan otomatis di-deploy ke cluster baru.
Memperbarui paket armada
Anda dapat memperbarui paket armada untuk mengubah setelan atau mengubah resource yang di-deploy paket armada, seperti dalam contoh berikut:
- Ubah strategi peluncuran dengan mengubah nilai kolom
maxConcurrent. - Jeda paket armada untuk sementara dengan menyetel
state: SUSPENDED. Saat paket armada ditangguhkan, semua peluncuran yang sedang berlangsung akan dilanjutkan. Tidak ada peluncuran baru yang dibuat atau dijadwalkan hingga Anda mengubah statusnya kembali menjadiACTIVE. - Perbarui resource Kubernetes yang di-deploy paket fleet dengan memperbarui kolom
taguntuk menarik dari tag Git yang berbeda.
Untuk mengupdate paket armada, selesaikan langkah-langkah berikut:
Perbarui spesifikasi
FleetPackageAnda dengan perubahan Anda.Perbarui paket armada:
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlMungkin perlu waktu beberapa menit sebelum perubahan diterapkan dan mulai di-roll out ke cluster Anda.
Mengelola peluncuran paket armada
Anda dapat memantau progres deployment paket armada dan mengelola peluncuran aktif. Saat paket armada diubah, peluncuran baru akan otomatis dibuat. Perintah berikut membantu Anda mendapatkan informasi mendetail tentang peluncuran. Misalnya, jika perlu men-debug masalah deployment, Anda dapat memeriksa detail peluncuran, dan menjeda atau membatalkan peluncuran jika diperlukan.
Mencantumkan peluncuran memungkinkan Anda melihat status semua peluncuran yang terkait dengan paket, termasuk error yang dapat menyebabkan peluncuran gagal. Untuk mencantumkan peluncuran dan melihat statusnya, jalankan perintah berikut:
gcloud container fleet packages rollouts list --fleet-package FLEET_PACKAGE_NAMEOutputnya akan terlihat seperti berikut:
ROLLOUT RELEASE START_TIME END_TIME STATE MESSAGE rollout-20250515-132857 v2-0-0 2025-05-15T13:28:58Z STALLED rollout-20250418-165528 v1-0-0 2025-04-18T16:55:29Z 2025-04-18T16:57:47Z COMPLETEDDeskripsi peluncuran memberikan informasi mendetail tentang peluncuran tertentu, termasuk status untuk setiap cluster yang ditargetkan dan error khusus cluster. Untuk mendeskripsikan peluncuran, jalankan perintah berikut:
gcloud container fleet packages rollouts describe ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEGanti ROLLOUT_NAME dengan nama peluncuran Anda. Anda bisa mendapatkan nama peluncuran lengkap dari perintah
listdi langkah sebelumnya.Outputnya akan terlihat seperti berikut:
CLUSTER CURRENT_VERSION SYNC_STATE DESIRED_VERSION START_TIME END_TIME STATE MESSAGES cluster1 v2.0.0 SYNCED v2.0.0 2025-05-15T13:28:58Z 2025-05-15T13:30:27Z COMPLETED cluster2 v1.0.0 SYNCED v2.0.0 2025-05-15T13:30:27Z ERROR Membership no longer existsAnda dapat mengelola peluncuran aktif dengan menjalankan perintah berikut:
Menangguhkan peluncuran akan membuat peluncuran yang sedang berlangsung menjadi dalam status
SUSPENDED. Semua update paket yang sedang berlangsung akan dilanjutkan, dan tidak ada lagi update paket yang dijadwalkan. Untuk menangguhkan peluncuran, jalankan perintah berikut:gcloud container fleet packages rollouts suspend ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEMelanjutkan peluncuran akan mengubah peluncuran
SUSPENDEDkembali ke statusIN_PROGRESS. Update paket di-deploy ke cluster target sesuai rencana. Untuk melanjutkan peluncuran, jalankan perintah berikut:gcloud container fleet packages rollouts resume ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAMEMembatalkan peluncuran yang sedang berlangsung akan segera menghentikan peluncuran, sehingga peluncuran tersebut berada dalam status
ABORTED. Semua update paket yang tertunda yang direncanakan sebagai bagian dari peluncuran dibatalkan. Untuk membatalkan peluncuran, jalankan perintah berikut:gcloud container fleet packages rollouts abort ROLLOUT_NAME --fleet-package FLEET_PACKAGE_NAME
Menggunakan label untuk men-deploy ke cluster yang berbeda
Label adalah pasangan nilai kunci yang Anda lampirkan ke objek. Paket fleet hanya mendukung label keanggotaan fleet. Label cluster GKE tidak didukung.
Anda dapat menggunakan label untuk men-deploy paket fleet ke subkumpulan cluster di fleet Anda.
Menambahkan label keanggotaan
Untuk menambahkan label keanggotaan, selesaikan langkah-langkah berikut:
Mendapatkan daftar langganan di armada:
gcloud container fleet memberships listMenambahkan label ke langganan:
gcloud container fleet memberships update MEMBERSHIP_NAME \ --update-labels=KEY=VALUEGanti kode berikut:
MEMBERSHIP_NAME: nama cluster yang terdaftar ke fleet.KEYdanVALUE: label yang akan ditambahkan ke keanggotaan. Jika label ada, nilainya akan diubah. Jika tidak, label baru akan dibuat. Kunci harus diawali dengan huruf kecil dan hanya berisi tanda hubung (-), garis bawah (_), huruf kecil, dan angka. Nilai hanya boleh berisi tanda hubung (-), garis bawah (_), karakter huruf kecil, dan angka.
Ulangi perintah ini untuk setiap keanggotaan yang ingin Anda tambahkan labelnya.
Men-deploy ke subset cluster
Anda dapat men-deploy ke subset cluster dengan menentukan kolom
target.fleet.selector.matchLabels dengan pasangan nilai kunci Anda. Misalnya,
jika Anda menetapkan matchLabels sebagai country: "us", layanan paket fleet akan men-deploy
resource Anda hanya ke cluster dengan label country yang cocok dengan "us".
Untuk men-deploy paket armada ke subset cluster, selesaikan langkah-langkah berikut:
Buat atau perbarui spesifikasi
FleetPackagedengan pemilih label:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH target: fleet: project: projects/PROJECT_ID selector: matchLabels: KEY: "VALUE" rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERSBuat atau perbarui paket armada:
Membuat paket fleet
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlMemperbarui paket armada
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yaml
Men-deploy resource varian ke cluster
Varian adalah versi lain dari resource. Resource ini mungkin memiliki nilai yang berbeda, bergantung pada lokasi, project, atau nama cluster. Anda dapat
men-deploy resource varian ke cluster yang berbeda dengan menentukan
kolom variantsPattern dan variantNameTemplate.
Anda dapat menggunakan label keanggotaan atau metadata keanggotaan lainnya seperti lokasi, project, atau nama untuk mencocokkan varian.
Untuk men-deploy paket armada dengan varian, selesaikan langkah-langkah berikut:
Buat atau perbarui spesifikasi
FleetPackageAnda dengan detail varian:resourceBundleSelector: cloudBuildRepository: name: projects/PROJECT_ID/locations/us-central1/connections/CONNECTION_NAME/repositories/REPOSITORY_NAME tag: TAG serviceAccount: projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com path: CONFIG_FILE_PATH variantsPattern: VARIANT_PATTERN target: fleet: project: projects/PROJECT_ID rolloutStrategy: rolling: maxConcurrent: MAX_CLUSTERS target: fleet: project: projects/PROJECT_ID variantSelector: variantNameTemplate: VARIANT_NAME_TEMPLATEGanti kode berikut:
VARIANT_PATTERN: pola untuk varian, misalnya"variants/*.yaml"atau"us-*".VARIANT_NAME_TEMPLATE: String template yang merujuk ke variabel yang berisi metadata keanggotaan cluster seperti lokasi, project, nama, atau label untuk menentukan nama varian untuk cluster target. Untuk contoh lainnya, lihat dokumentasi referensiFleetPackage.
Buat atau perbarui paket armada:
Membuat paket fleet
gcloud container fleet packages create FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yamlMemperbarui paket armada
gcloud container fleet packages update FLEET_PACKAGE_NAME \ --source=fleetpackage-spec.yaml
Menghapus paket armada
Menghapus paket armada juga akan menghapus resource berikut:
- Resource Kubernetes yang di-deploy di cluster Anda
- Histori peluncuran paket armada
Untuk menghapus paket armada, jalankan perintah berikut:
gcloud container fleet packages delete FLEET_PACKAGE_NAME --force
Memecahkan masalah
Untuk menemukan metode mendiagnosis dan menyelesaikan error terkait Cloud Build, lihat Memecahkan masalah error build.