Menghentikan dan melanjutkan sinkronisasi konfigurasi

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:

  1. Ambil konfigurasi RepoSync dan simpan untuk digunakan nanti saat Anda ingin melanjutkan sinkronisasi:

    kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
    

    Ganti NAMESPACE dengan namespace objek RepoSync Anda.

  2. Hapus konfigurasi RepoSync:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Perintah 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.

Langkah berikutnya