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 konfigurasi yang secara sintaksis valid tetapi salah ke sumber, dan Anda ingin membatasi pengaruhnya terhadap cluster yang sedang berjalan saat konfigurasi dihapus atau diperbaiki.

Halaman ini ditujukan untuk Operator dan administrator IT yang mengelola siklus proses infrastruktur teknologi yang mendasarinya. Untuk mempelajari lebih lanjut peran umum dan contoh tugas yang kami referensikan dalam konten Google Cloud, lihat Peran dan tugas pengguna GKE Enterprise umum.

Prasyarat

Untuk menggunakan perintah dalam dokumen ini, Anda memerlukan izin RBAC Kubernetes berikut di namespace config-management-system di 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, dan cara melanjutkan sinkronisasi saat masalah diperbaiki. Untuk mempelajari cara menghentikan sinkronisasi untuk lebih dari satu sumber tepercaya, lihat artikel menghentikan dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya.

Menghentikan sinkronisasi

Untuk menghentikan sinkronisasi untuk satu cluster, jalankan perintah berikut, yang disediakan sebagai satu perintah 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 lainnya tidak akan berjalan.

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

Semua deployment masih berada di 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 tidak memiliki 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 config-management-operator --replicas=1

Perintah ini menskalakan Deployment Operator menjadi 1 replika. Operator 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 sementara dan melanjutkan sinkronisasi dari lebih dari satu sumber tepercaya. 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 Kontrol sumber di sumber tepercaya root digunakan, administrator pusat adalah satu-satunya yang dapat menghentikan dan melanjutkan sinkronisasi.

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

Menghentikan sinkronisasi

Bagian berikut menunjukkan cara menghentikan sinkronisasi untuk sumber tepercaya root dan sumber tepercaya cakupan namespace. Untuk menghentikan Pengelola Rekonsiliasi agar tidak mengembalikan perubahan, Anda harus menghentikan Pengelola Rekonsiliasi 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 lainnya tidak akan berjalan.

  1. Kurangi jumlah replicas di Deployment Operator ConfigManagement menjadi 0.
  2. Kurangi jumlah replicas di Deployment Pengelola Reconciler menjadi 0.

Menghentikan sinkronisasi dari sumber tepercaya root

Untuk menghentikan sinkronisasi cluster dari root source of truth, 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 di beberapa cluster, jalankan perintah sebelumnya untuk setiap cluster.

Berhenti menyinkronkan dari sumber tepercaya cakupan namespace

Pilih tab Root source of truth method atau Kubernetes API method untuk melihat petunjuk yang relevan.

Metode root source of truth

Jika metode Kontrol sumber tepercaya namespace di sumber tepercaya root 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 Deployment ns-reconciler-NAMESPACE menjadi 0.

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

Metode Kubernetes API

Jika metode Mengontrol sumber cakupan namespace dengan 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 memicu Pengelola Reconciler untuk menghapus rekonsiliator 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 drift (opsional)

Webhook izin Config Sync dinonaktifkan secara default, dan Anda dapat mengaktifkan dan menonaktifkan fungsi pencegahan penyimpangan yang disediakan oleh webhook izin 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 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 dari semua Pod Reconciler yang berjalan di namespace config-management-system menjadi 0, dan menunggu hingga semua Pod Reconciler dihapus.

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

Melanjutkan sinkronisasi

Bagian ini menunjukkan cara melanjutkan sinkronisasi untuk root source of truth dan untuk sumber cakupan 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 menjadi 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 root source of truth

Jika Anda menggunakan metode Mengontrol sumber cakupan namespace di sumber tepercaya root, 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 menjadi 1 replika.

Metode Kubernetes API

Jika Anda menggunakan metode Mengontrol sumber cakupan namespace dengan Kubernetes API, operator aplikasi dapat melanjutkan sinkronisasi dengan menerapkan ulang repo-sync.yaml yang berisi konfigurasi RepoSync:

kubectl apply -f repo-sync.yaml

Perintah ini memicu Pengelola Reconciler untuk membuat proses reconciler namespace dan membuat Deployment ns-reconciler-NAMESPACE.

Mengaktifkan dan menonaktifkan webhook izin masuk

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

Melanjutkan sinkronisasi dari semua sumber tepercaya

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 menjadi 1 replika. Operator kemudian melihat bahwa Deployment Pengelola Reconciler tidak diskalakan dengan benar dan menskalakannya ke jumlah replika yang sesuai. Pada akhirnya, Pengelola Reconciler menskalakan root reconciler dan namespace reconciler ke jumlah replika yang sesuai.

Langkah selanjutnya