Merotasi sertifikat CA cluster admin

Google Distributed Cloud menggunakan sertifikat dan kunci pribadi untuk mengautentikasi komunikasi antara komponen sistem Kubernetes di cluster admin. Saat Anda membuat cluster admin, sertifikat certificate authority (CA) baru akan dibuat, dan root certificate ini digunakan untuk menerbitkan sertifikat leaf tambahan untuk komponen sistem Kubernetes.

Panduan ini hanya berlaku untuk rotasi sertifikat CA cluster admin. Untuk cluster pengguna, lihat Memutar sertifikat CA cluster pengguna.

Ada tiga sertifikat CA yang digunakan oleh sistem Kubernetes di cluster admin:

  • Sertifikat CA etcd mengamankan komunikasi dari server Kubernetes API ke replika etcd dan juga komunikasi antar-replika etcd. Sertifikat ini ditandatangani sendiri.

  • Sertifikat CA cluster mengamankan komunikasi antara server Kubernetes API dan semua klien Kubernetes API internal, misalnya, kubelet, pengelola pengontrol, dan penjadwal. Sertifikat ini ditandatangani sendiri.

  • Sertifikat CA proxy depan mengamankan komunikasi dengan API gabungan. Sertifikat ini ditandatangani sendiri.

Anda dapat menggunakan gkectl untuk memicu rotasi sertifikat. Selama rotasi, gkectl akan mengganti sertifikat CA sistem inti untuk cluster admin dengan sertifikat yang baru dibuat. Kemudian, CA mendistribusikan sertifikat CA, sertifikat leaf, dan kunci pribadi baru ke komponen sistem cluster admin. Rotasi terjadi secara bertahap, sehingga komponen sistem dapat terus berkomunikasi selama rotasi. Namun, perlu diperhatikan bahwa workload dan node dimulai ulang selama rotasi.

Tanpa rotasi, sertifikat CA dan sertifikat platform kontrol akan berakhir masa berlakunya lima tahun sejak tanggal cluster dibuat. Sertifikat bidang kontrol otomatis dirotasi selama upgrade cluster, tetapi CA tidak otomatis dirotasi. Artinya, rotasi CA harus dilakukan setidaknya sekali setiap lima tahun, selain upgrade versi reguler.

Batasan

  • Rotasi sertifikat CA dibatasi untuk sertifikat etcd, cluster, dan front-proxy yang disebutkan sebelumnya.

  • Rotasi sertifikat CA terbatas pada sertifikat yang dikeluarkan secara otomatis oleh Google Distributed Cloud. Tindakan ini tidak memperbarui sertifikat yang diterbitkan secara manual oleh administrator, meskipun sertifikat tersebut ditandatangani oleh CA sistem.

  • Rotasi sertifikat CA memulai ulang server Kubernetes API, proses bidang kontrol lainnya, dan setiap node di cluster admin beberapa kali. Setiap tahap rotasi berlangsung dengan cara yang sama seperti upgrade cluster. Meskipun cluster admin dan cluster pengguna yang dikelola oleh cluster admin tetap beroperasi selama rotasi sertifikat, Anda harus bersiap bahwa beban kerja di cluster admin akan dimulai ulang dan dijadwalkan ulang. Anda juga akan mengalami periode nonaktif singkat untuk bidang kontrol cluster admin dan bidang kontrol cluster pengguna.

  • Anda harus memperbarui file kubeconfig cluster admin di tengah-tengah rotasi sertifikat dan lagi setelah rotasi selesai. Hal ini karena sertifikat cluster lama dicabut, dan kredensial dalam file kubeconfig tidak akan berfungsi lagi.

  • Setelah dimulai, rotasi sertifikat CA tidak dapat di-roll back.

  • Rotasi sertifikat CA mungkin memerlukan waktu yang cukup lama untuk diselesaikan, bergantung pada ukuran cluster.

  • Proses rotasi sertifikat dapat dilanjutkan dengan menjalankan kembali perintah yang sama jika terganggu. Namun, Anda harus memastikan bahwa hanya ada satu perintah rotasi yang berjalan dalam satu waktu.

Memulai rotasi

Untuk memulai rotasi sertifikat, jalankan perintah berikut. Metode ini melakukan paruh pertama rotasi dan berhenti pada titik jeda.

Mulai rotasi:

gkectl update credentials certificate-authorities rotate \
    --admin-cluster \
    --config ADMIN_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Ganti kode berikut:

  • ADMIN_CLUSTER_CONFIG: jalur file konfigurasi cluster admin

  • ADMIN_CLUSTER_KUBECONFIG: jalur file kubeconfig cluster admin

Jika perintah terganggu, lanjutkan dengan menjalankan perintah yang sama.

Mengupdate file kubeconfig

Saat perintah sebelumnya dijeda, perbarui file kubeconfig untuk cluster admin. Tindakan ini akan menempatkan sertifikat klien baru dan sertifikat CA baru dalam file kubeconfig. Sertifikat klien lama dihapus dari file kubeconfig, dan sertifikat CA lama tetap ada dalam file kubeconfig.

gkectl update credentials certificate-authorities update-kubeconfig \
    --admin-cluster \
    --config ADMIN_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Melanjutkan rotasi

Jalankan perintah berikut untuk melakukan paruh kedua prosedur. Perintah tidak akan dilanjutkan hingga gkectl memverifikasi bahwa file kubeconfig yang diperbarui ada di direktori saat ini.

gkectl update credentials certificate-authorities rotate \
    --admin-cluster \
    --complete \
    --config ADMIN_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Jika perintah terganggu, lanjutkan dengan menjalankan perintah yang sama.

Setelah selesai, rotasi akan melaporkan versi CA saat ini.

Mengupdate file kubeconfig lagi

Setelah paruh kedua rotasi selesai, perbarui file kubeconfig lagi. Tindakan ini akan menghapus sertifikat CA lama dari file kubeconfig.

gkectl update credentials certificate-authorities update-kubeconfig \
    --admin-cluster \
    --config ADMIN_CLUSTER_CONFIG \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG

Mendistribusikan file kubeconfig baru

Distribusikan file kubeconfig cluster admin baru ke semua pengguna cluster.