Menghentikan dan melanjutkan konfigurasi sinkronisasi

Dalam beberapa situasi, Anda mungkin perlu segera menghentikan Config Sync agar tidak menyinkronkan konfigurasi dari sumber kebenaran Anda. Salah satu skenario tersebut adalah jika seseorang meng-commit konfigurasi yang valid secara sintaksis tetapi salah ke sumber, dan Anda ingin membatasi efeknya pada cluster yang sedang berjalan saat konfigurasi dihapus atau diperbaiki.

Prasyarat

Untuk menggunakan perintah dalam dokumen ini, Anda memerlukan izin Kubernetes RBAC berikut di namespace config-management-system pada semua cluster tempat Anda ingin berhenti menyinkronkan:

- 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 cepat menghentikan sinkronisasi, dan cara melanjutkan sinkronisasi setelah masalah diperbaiki. Guna mempelajari cara berhenti menyinkronkan untuk lebih dari satu sumber tepercaya, lihat menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya.

Hentikan sinkronisasi

Untuk berhenti menyinkronkan satu cluster, jalankan perintah berikut, yang diberikan sebagai perintah tunggal untuk memudahkan Anda, tetapi juga dapat dijalankan secara terpisah:

kubectl scale -n config-management-system deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator \
&& kubectl scale -n config-management-system deployment --replicas=0 --all \
&& kubectl wait -n config-management-system --for=delete pods --all

Perintah tersebut melakukan hal berikut secara berurutan. Jika perintah gagal, perintah yang tersisa tidak akan berjalan.

  1. Kurangi jumlah replicas dalam ConfigManagement Operator Deployment menjadi 0.
  2. Kurangi jumlah replicas semua Deployment yang berjalan di namespace config-management-system menjadi 0. Kumpulan Deployment pasti yang terpengaruh bervariasi menurut versi produk.

Semua deployment masih berada dalam cluster, tetapi tidak ada replika Operator atau proses apa pun yang bertanggung jawab untuk sinkronisasi yang tersedia, sehingga konfigurasi tidak disinkronkan dari sumber tepercaya.

Untuk memverifikasi bahwa semua proses telah dihentikan, gunakan perintah berikut dan pastikan semua Deployment memiliki nol replika:

kubectl get -n config-management-system deployment

Jika Anda perlu menghentikan sinkronisasi pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.

Lanjutkan sinkronisasi

Untuk melanjutkan sinkronisasi untuk satu cluster, jalankan perintah berikut:

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Perintah ini menskalakan Deployment Operator ke 1 replika. Operator kemudian melihat bahwa Pod di Deployment namespace config-management-system tidak diskalakan dengan benar dan menskalakannya ke jumlah replika yang sesuai.

Jika Anda perlu melanjutkan sinkronisasi di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.

Hentikan dan lanjutkan sinkronisasi dari lebih dari satu sumber tepercaya

Bagian ini ditujukan untuk lebih dari satu sumber tepercaya dan menunjukkan cara menghentikan sementara 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 root tepercaya.

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 Mengontrol sumber di sumber root of truth digunakan, administrator pusat adalah satu-satunya yang dapat menghentikan dan melanjutkan sinkronisasi.

  • Jika metode Mengontrol sumber kebenaran dengan Kubernetes API digunakan, operator aplikasi dapat menghentikan dan melanjutkan sinkronisasi dari sumber tepercaya cakupan namespace yang mereka kerjakan.

Hentikan sinkronisasi

Bagian berikut menunjukkan cara berhenti menyinkronkan untuk sumber root kebenaran dan sumber kebenaran cakupan namespace. Agar Reconciler Manager tidak mengembalikan perubahan, Anda harus menghentikan Reconciler Manager terlebih dahulu dengan menjalankan perintah berikut:

kubectl -n config-management-system scale deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator --timeout=60s \
&& 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 tersebut melakukan hal berikut secara berurutan. Jika perintah gagal, perintah yang tersisa tidak akan berjalan.

  1. Kurangi jumlah replicas dalam ConfigManagement Operator Deployment menjadi 0.
  2. Kurangi jumlah replicas dalam Deployment Manager Reconciler menjadi 0.

Berhenti menyinkronkan dari sumber root kebenaran

Untuk menghentikan sinkronisasi cluster dari sumber root tepercaya, administrator pusat dapat menjalankan perintah berikut:

kubectl -n config-management-system scale deployment root-reconciler --replicas=0

Perintah ini mengurangi jumlah replicas di Deployment root-reconciler menjadi 0.

Jika Anda perlu menghentikan sinkronisasi pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.

Berhenti menyinkronkan dari sumber tepercaya cakupan namespace

Pilih tab Metode root source of truth atau Metode Kubernetes API untuk melihat petunjuk yang relevan.

Metode sumber kebenaran root

Jika metode Mengontrol sumber kebenaran namespace di sumber root kebenaran digunakan, administrator pusat dapat menjalankan perintah berikut untuk menghentikan sinkronisasi cluster dari sumber kebenaran namespace:

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0

Perintah tersebut mengurangi jumlah replika dalam Deployment ns-reconciler-NAMESPACE menjadi 0.

Jika Anda perlu menghentikan sinkronisasi pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.

Metode Kubernetes API

Jika metode Kontrol sumber yang memiliki cakupan namespace dengan Kubernetes API digunakan, operator aplikasi dapat menghentikan sinkronisasi cluster dengan menjalankan perintah berikut:

  1. Ambil konfigurasi RepoSync dan simpan untuk menggunakannya 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 memicu Reconciler Manager untuk menghapus reconciler namespace (ns-reconciler-NAMESPACE) dari NAMESPACE dan berhenti menyinkronkan.

    Jika Anda perlu menghentikan sinkronisasi pada beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.

Menghentikan webhook pendaftaran agar tidak memblokir penyimpangan (opsional)

Webhook masuk Config Sync dinonaktifkan secara default, dan Anda dapat enable dan menonaktifkan fungsi pencegahan penyimpangan yang disediakan oleh webhook masuk menggunakan Google Cloud CLI atau kubectl.

Berhenti menyinkronkan dari semua sumber tepercaya

Untuk berhenti menyinkronkan dari semua sumber tepercaya, termasuk sumber root kebenaran dan sumber cakupan 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 semua Pod Reconciler yang berjalan di namespace config-management-system menjadi 0, dan menunggu hingga semua Pod Reconciler dihapus.

Semua Deployment Reconciler masih berada dalam cluster, tetapi tidak ada replika Reconciler atau proses apa pun yang bertanggung jawab untuk sinkronisasi yang tersedia, sehingga konfigurasi tidak disinkronkan dari sumber tepercaya.

Lanjutkan sinkronisasi

Bagian ini menunjukkan cara melanjutkan sinkronisasi untuk sumber root kebenaran dan untuk sumber dengan cakupan namespace.

Lanjutkan sinkronisasi dari sumber root kebenaran

Untuk melanjutkan sinkronisasi dari sumber root tepercaya, 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 cakupan namespace

Pilih tab Metode root source of truth atau Metode Kubernetes API untuk melihat petunjuk yang relevan.

Metode sumber kebenaran root

Jika Anda menggunakan metode Kontrol sumber yang dicakup namespace dalam sumber root kebenaran, 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 Kontrol sumber cakupan namespace dengan 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 memicu Reconciler Manager untuk membuat proses rekonsiler namespace dan membuat Deployment ns-reconciler-NAMESPACE.

Mengaktifkan dan menonaktifkan webhook masuk

Webhook masuk Config Sync dinonaktifkan secara default, dan Anda dapat enable dan menonaktifkan fungsi pencegahan penyimpangan yang disediakan oleh webhook masuk menggunakan Google Cloud CLI atau kubectl.

Lanjutkan sinkronisasi dari semua sumber kebenaran

Untuk melanjutkan sinkronisasi dari semua sumber tepercaya, jalankan perintah berikut:

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Perintah ini menskalakan Deployment Operator ke 1 replika. Operator kemudian mengetahui bahwa Deployment Manager Reconciler tidak diskalakan dengan benar dan menskalakannya ke jumlah replika yang sesuai. Pada akhirnya, Reconciler Manager menskalakan rekonsiler root dan rekonsiler namespace ke jumlah replika yang sesuai.

Langkah selanjutnya