Dalam beberapa situasi, Anda mungkin perlu menghentikan Config Sync dengan cepat agar tidak menyinkronkan konfigurasi dari sumber tepercaya. Salah satu skenario tersebut adalah jika seseorang melakukan commit konfigurasi yang valid secara sintaksis tetapi salah ke sumber, dan Anda ingin membatasi efeknya pada cluster yang berjalan saat konfigurasi dihapus atau diperbaiki.
Halaman ini hanya untuk penginstalan manual Config Sync menggunakan kubectl.
Untuk semua metode penginstalan lainnya, gunakan
gcloud CLI
spec.configSync.stopSyncing kolom
dengan menetapkan true di file konfigurasi Config Sync. Kemudian, untuk melanjutkan sinkronisasi, tetapkan kolom ke false.
Halaman ini ditujukan untuk administrator dan Operator IT yang mengelola siklus proses infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam Cloud de Confiance by S3NS konten, lihat Peran dan tugas pengguna GKE umum.
Prasyarat
Untuk menggunakan perintah dalam dokumen ini, Anda memerlukan izin RBAC Kubernetes berikut di namespace config-management-system pada semua cluster tempat Anda ingin menghentikan sinkronisasi:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
Menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya
Bagian ini ditujukan untuk satu sumber tepercaya dan menunjukkan cara menghentikan sinkronisasi dengan cepat, serta cara melanjutkan sinkronisasi saat masalah telah diperbaiki. Untuk mempelajari cara menghentikan sinkronisasi untuk lebih dari satu sumber tepercaya, lihat menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya.
Menghentikan sinkronisasi
Untuk menghentikan sinkronisasi untuk satu cluster, jalankan perintah berikut:
kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
Perintah ini mengurangi jumlah replicas dari semua Deployment yang berjalan di namespace config-management-system menjadi 0. Kumpulan Deployment yang terpengaruh dapat bervariasi menurut versi produk.
Semua deployment masih ada di cluster, tetapi tidak ada replika proses yang bertanggung jawab untuk sinkronisasi, sehingga konfigurasi tidak disinkronkan dari sumber tepercaya.
Untuk memverifikasi bahwa semua proses telah dihentikan, gunakan perintah berikut dan verifikasi bahwa semua Deployment memiliki nol replika:
kubectl get -n config-management-system deployment
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Melanjutkan sinkronisasi
Untuk melanjutkan sinkronisasi untuk satu cluster, jalankan perintah berikut:
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Perintah ini menskalakan Deployment Pengelola Rekonsiliasi ke 1 replika. Pengelola Rekonsiliasi kemudian akan melihat bahwa Pod di Deployment namespace config-management-system diskalakan dengan tidak benar dan menskalakannya ke jumlah replika yang sesuai.
Jika Anda perlu melanjutkan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya
Bagian ini ditujukan untuk lebih dari satu sumber tepercaya dan menunjukkan cara menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya untuk sementara. Untuk mempelajari cara menghentikan sinkronisasi untuk satu sumber tepercaya, lihat menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya.
Hanya administrator pusat yang dapat menghentikan sinkronisasi di sumber tepercaya root.
Kemampuan untuk menghentikan sinkronisasi di lebih dari satu sumber tepercaya bergantung pada metode konfigurasi yang digunakan saat Anda menyiapkan sinkronisasi dari lebih dari satu sumber tepercaya:
Jika metode Control sources in a root source of truth digunakan, hanya administrator pusat yang dapat menghentikan dan melanjutkan sinkronisasi.
Jika metode Control a source of truth with the Kubernetes API digunakan, operator aplikasi dapat menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya yang cakupannya namespace yang mereka gunakan.
Menghentikan sinkronisasi
Bagian berikut menunjukkan cara menghentikan sinkronisasi untuk sumber tepercaya root dan sumber tepercaya yang cakupannya namespace. Untuk menghentikan Pengelola Rekonsiliasi agar tidak mengembalikan perubahan, Anda harus menghentikan Pengelola Rekonsiliasi terlebih dahulu dengan menjalankan perintah berikut:
kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager
Perintah ini mengurangi jumlah replicas di Deployment Pengelola Rekonsiliasi menjadi 0.
Menghentikan sinkronisasi dari sumber tepercaya root
Untuk menghentikan sinkronisasi cluster dari sumber tepercaya root, administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Perintah ini mengurangi jumlah replicas di root-reconciler
Deployment
menjadi 0.
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan sinkronisasi dari sumber tepercaya yang cakupannya namespace
Pilih tab Root source of truth method atau Kubernetes API method untuk melihat petunjuk yang relevan.
Metode sumber tepercaya root
Jika metode Control namespace sources of truth in the root source of truth digunakan, administrator pusat dapat menjalankan perintah berikut untuk menghentikan sinkronisasi cluster dari sumber tepercaya namespace:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
Perintah ini mengurangi jumlah replika di
ns-reconciler-NAMESPACE Deployment menjadi 0.
Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Metode Kubernetes API
Jika metode Control namespace-scoped sources with the Kubernetes API digunakan, operator aplikasi dapat menghentikan sinkronisasi cluster dengan menjalankan perintah berikut:
Ambil konfigurasi
RepoSyncdan simpan untuk digunakan nanti saat Anda ingin melanjutkan sinkronisasi:kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yamlGanti
NAMESPACEdengan namespace objek RepoSync Anda.Hapus konfigurasi
RepoSync:kubectl -n NAMESPACE delete reposyncs repo-syncPerintah ini akan memicu Pengelola Rekonsiliasi untuk menghapus rekonsiliasi namespace (
ns-reconciler-NAMESPACE) dari NAMESPACE dan menghentikan sinkronisasi.Jika Anda perlu menghentikan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.
Menghentikan webhook penerimaan agar tidak memblokir penyimpangan (opsional)
Webhook penerimaan Config Sync dinonaktifkan secara default, dan Anda dapat
mengaktifkan serta
menonaktifkan fungsi pencegahan
penyimpangan yang disediakan oleh webhook penerimaan menggunakan Google Cloud CLI
atau kubectl.
Menghentikan sinkronisasi dari semua sumber tepercaya
Untuk menghentikan sinkronisasi dari semua sumber tepercaya, termasuk sumber tepercaya root dan sumber yang cakupannya namespace, jalankan perintah berikut:
kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler
Perintah ini mengurangi jumlah replicas dari semua Pod Rekonsiliasi yang berjalan di namespace config-management-system menjadi 0, dan menunggu hingga semua Pod Rekonsiliasi dihapus.
Semua Deployment Rekonsiliasi masih ada di cluster, tetapi tidak ada replika Rekonsiliasi atau proses yang bertanggung jawab untuk sinkronisasi, sehingga konfigurasi tidak disinkronkan dari sumber tepercaya.
Melanjutkan sinkronisasi
Bagian ini menunjukkan cara melanjutkan sinkronisasi untuk sumber tepercaya root dan untuk sumber yang cakupannya namespace.
Melanjutkan sinkronisasi dari sumber tepercaya root
Untuk melanjutkan sinkronisasi dari sumber tepercaya root, administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
Perintah ini menskalakan Deployment root-reconciler ke 1 replika.
Melanjutkan sinkronisasi dari sumber yang cakupannya namespace
Pilih tab Root source of truth method atau Kubernetes API method untuk melihat petunjuk yang relevan.
Metode sumber tepercaya root
Jika Anda menggunakan metode Control namespace-scoped sources in a root source of truth , administrator pusat dapat menjalankan perintah berikut:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1
Perintah ini menskalakan Deployment ns-reconciler-NAMESPACE ke 1 replika.
Metode Kubernetes API
Jika Anda menggunakan metode Control namespace-scoped sources with the Kubernetes API, operator aplikasi dapat melanjutkan sinkronisasi dengan menerapkan kembali repo-sync.yaml yang berisi konfigurasi RepoSync:
kubectl apply -f repo-sync.yaml
Perintah ini akan memicu Pengelola Rekonsiliasi untuk membuat proses rekonsiliasi namespace
dan membuat Deployment ns-reconciler-NAMESPACE.
Mengaktifkan dan menonaktifkan webhook penerimaan
Webhook penerimaan Config Sync dinonaktifkan secara default, dan Anda dapat
mengaktifkan serta
menonaktifkan fungsi pencegahan
penyimpangan yang disediakan oleh webhook penerimaan menggunakan Google Cloud CLI
atau kubectl.
Melanjutkan sinkronisasi dari semua sumber tepercaya
Untuk melanjutkan sinkronisasi, jalankan perintah berikut:
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Perintah ini menskalakan Deployment Pengelola Rekonsiliasi ke 1 replika. Pengelola Rekonsiliasi kemudian akan menskalakan rekonsiliasi root dan rekonsiliasi namespace ke jumlah replika yang sesuai.