Merotasi sertifikat CA cluster admin

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

Panduan ini hanya berlaku untuk rotasi sertifikat CA cluster admin. Untuk cluster pengguna, lihat Merotasi 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, serta komunikasi antara 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 front-proxy 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 baru akan mendistribusikan sertifikat CA baru, sertifikat leaf, dan kunci pribadi 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 bidang kontrol akan habis masa berlakunya lima tahun sejak tanggal cluster dibuat. Sertifikat bidang kontrol otomatis dirotasi selama upgrade cluster, tetapi CA tidak dirotasi secara otomatis. Artinya, rotasi CA harus dilakukan setidaknya sekali setiap lima tahun, selain upgrade versi reguler.

Batasan

  • Rotasi sertifikat CA terbatas pada sertifikat etcd, cluster, dan front-proxy yang disebutkan sebelumnya.

  • Rotasi sertifikat CA terbatas pada sertifikat yang diterbitkan secara otomatis oleh Google Distributed Cloud. Sertifikat ini tidak memperbarui sertifikat yang dikeluarkan 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 sama seperti upgrade cluster. Meskipun cluster admin dan cluster pengguna yang dikelola oleh cluster admin tetap beroperasi selama rotasi sertifikat, Anda akan menyadari bahwa beban kerja di cluster admin akan dimulai ulang dan dijadwalkan ulang. Anda juga harus memperkirakan 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 diperbarui lagi setelah rotasi selesai. Hal ini perlu dilakukan karena sertifikat cluster lama dicabut, dan kredensial di 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, bergantung pada ukuran cluster.

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

Memulai rotasi

Untuk memulai rotasi sertifikat, jalankan perintah berikut. Modul 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, update file kubeconfig untuk cluster admin. Tindakan ini akan menempatkan sertifikat klien baru dan sertifikat CA baru di file kubeconfig. Sertifikat klien lama dihapus dari file kubeconfig, dan sertifikat CA lama tetap ada di file kubeconfig.

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

Lanjutkan rotasi

Jalankan perintah berikut untuk melakukan paruh kedua prosedur. Perintah ini tidak akan dilanjutkan hingga gkectl memverifikasi bahwa file kubeconfig yang diupdate berada 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 rotasi selesai, versi CA saat ini akan dilaporkan.

Perbarui file kubeconfig lagi

Setelah paruh kedua rotasi selesai, update kembali file kubeconfig. 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 yang baru ke semua pengguna cluster.