Memutar sertifikat Kubernetes menggunakan mesin AKS di Azure Stack Hub

Dokumen ini memberikan panduan tentang cara memutar sertifikat pada kluster Mesin AKS yang ada dan rekomendasi untuk menggunakan adopsi aks-engine rotate-certs sebagai alat.

Prasyarat

Panduan ini mengasumsikan bahwa Anda sudah menyebarkan kluster menggunakan mesin AKS dan kluster dalam keadaan sehat.

Merencanakan rotasi sertifikat

Saat mempertimbangkan untuk menggunakan fungsi ini, ingat bahwa sarana kontrol Kubernetes tidak akan tersedia selama langkah pembaruan, validasi, dan mulai ulang. Rencanakan operasi pemeliharaan ini sesuai dengan itu. Selain itu, rencanakan untuk menjalankan operasi ini di staging environment dengan konfigurasi yang sama dengan lingkungan produksi sebelum mencoba dalam produksi.

Tinjau pertimbangan berikut sebelum mencoba operasi ini:

Catatan

Untuk AKSe versi 0.75.3 ke atas, perintah untuk rotasi sertifikat dimulai dengan aks-engine-azurestack bukan aks-engine.

  • Anda akan memerlukan akses ke model API (apimodel.json) yang dihasilkan oleh perintah aks-engine deploy atau aks-engine generate. Secara default file ini ditempatkan ke direktori relatif seperti _output/<clustername>/.

  • Operasi aks-engine rotate-certs menyebabkan downtime server API.

  • aks-engine rotate-certs mengharapkan model API yang sesuai dengan keadaan kluster saat ini. aks-engine rotate-certs menjalankan perintah jarak jauh pada node kluster dan menggunakan informasi model API untuk membuat koneksi SSH yang aman. aks-engine rotate-certs juga bergantung pada beberapa sumber daya yang akan diberi nama sesuai dengan penyebaran aks-engine asli, misalnya, VM harus mengikuti penamaan yang disediakan oleh aks-engine.

  • aks-engine rotate-certs bergantung pada koneksi ke sarana kontrol kluster yang bekerja selama rotasi sertifikat:

    • Untuk memvalidasi setiap langkah proses.
    • Untuk memulai ulang/membuat ulang sumber daya kluster seperti pod kube-system dan token akun layanan.

    Jika Anda merotasi sertifikat kluster di VNet yang tertutup ke akses luar, Anda harus menjalankan aks-engine rotate-certs dari VM host yang memiliki akses jaringan ke sarana kontrol, misalnya, VM jumpbox yang berada di VNet yang sama dengan VM master.

  • Jika Anda menggunakan aks-engine rotate-certs dalam produksi, sebaiknya lakukan pengujian rotasi sertifikat pada kluster yang dibangun dengan spesifikasi yang sama. Artinya, kluster dibangun dengan konfigurasi kluster yang sama, versi alat baris perintah mesin AKS yang sama, dan set add-on yang diaktifkan yang sama dengan kluster produksi sebelum melakukan rotasi sertifikat. Mesin AKS mendukung konfigurasi kluster yang berbeda dan sejauh mana pengujian end-to-end yang dijalankan tim mesin AKS tidak dapat secara praktis mencakup setiap konfigurasi yang mungkin. Oleh karena itu, sebaiknya pastikan saat dalam staging environment bahwa konfigurasi kluster spesifik Anda bekerja dengan aks-engine rotate-certs sebelum mencoba operasi pada kluster produksi Anda.

  • aks-engine rotate-certstidak menjamin kompatibilitas mundur. Jika Anda menyebarkan dengan aks-engine versi 0.60.x, Anda seharusnya lebih memilih menjalankan proses rotasi sertifikat dengan versi 0.60.x.

  • Mengambil satu set sertifikat baru dari Key Vault tidak didukung pada saat ini.

  • Gunakan koneksi jaringan yang andal. aks-engine rotate-certs memerlukan eksekusi beberapa perintah jarak jauh, yang memiliki kemungkinan kegagalan, terutama jika koneksi ke node kluster tidak dapat diandalkan. Menjalankan aks-engine rotate-certs dari VM yang berjalan pada stempel Azure Stack target dapat mengurangi terjadinya masalah sementara.

Parameter

Parameter Diperlukan Deskripsi
--api-model ya Jalur relatif ke model API (definisi kluster) yang mendeklarasikan konfigurasi kluster yang diharapkan.
--ssh-host ya Nama domain yang sepenuhnya memenuhi syarat (FQDN), atau alamat IP, dari listener SSH yang dapat menjangkau semua node dalam kluster.
--linux-ssh-private-key ya Jalur ke kunci SSH privat yang valid untuk mengakses node Linux kluster.
--location ya Lokasi Azure tempat kluster disebarkan.
--subscription-id ya Langganan Azure tempat infra kluster disebarkan.
--resource-group ya Grup sumber daya Azure tempat infra kluster disebarkan.
--client-id tergantung ID klien perwakilan layanan. Diperlukan jika auth-method diatur ke client_secret atau client_certificate.
--client-secret tergantung Rahasia klien perwakilan layanan. Diperlukan jika auth-method diatur ke client_secret.
--azure-env tergantung Nama cloud target. Opsional jika cloud target adalah AzureCloud.
--certificate-profile tidak Jalur relatif ke file JSON yang berisi kumpulan sertifikat baru.
--force tidak Eksekusi paksa meskipun Server API tidak responsif.

Langkah-langkah sederhana untuk merotasi sertifikat

Untuk AKS Engine versi 0.75.3 ke atas, setelah Anda membaca semua persyaratan, jalankan aks-engine-azurestack rotate-certs dengan argumen yang sesuai (lihat di bawah).

Untuk AKS Engine versi 0.73.0 ke bawah, setelah Anda membaca semua persyaratan, jalankan aks-engine rotate-certs dengan argumen yang sesuai:

./bin/aks-engine rotate-certs \
  --location <resource-group-location> \
  --api-model <generated-apimodel.json> \
  --linux-ssh-private-key <private-SSH-key> \
  --ssh-host <apiserver-URI> \
  --resource-group <resource-group-name> \
  --client-id <service-principal-id> \
  --client-secret <service-principal-secret> \
  --subscription-id <subscription-id> \
  --azure-env <cloud-name>

Contohnya:

./bin/aks-engine rotate-certs \
  --location "westus2" \
  --api-model "_output/my-cluster/apimodel.json" \
  --linux-ssh-private-key "~/.ssh/id_rsa" \
  --ssh-host "my-cluster.westus2.cloudapp.azure.com"\
  --resource-group "my-cluster" \
  --client-id "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --client-secret "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --subscription-id "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --azure-env "AzureStackCloud" # optional if targeting AzureCloud

Memutar sertifikat front-proxy

Catatan

Untuk AKSe versi 0.75.3 ke atas, perintah untuk rotasi sertifikat dimulai dengan aks-engine-azurestack bukan aks-engine.

Mesin AKS membuat PKI terpisah untuk front-proxy sebagai bagian dari proses bootstrap node dan mengirimkannya ke semua node melalui etcd. Untuk menggunakan kembali fungsi ini secara efektif, rotate-certs harus mengganti sertifikat yang disimpan di etcd. Sertifikat front-proxy kedaluwarsa setelah 30 tahun. aks-engine rotate-certs memutar sertifikat proksi depan.

Pemecahan Masalah

Catatan

Untuk AKSe versi 0.75.3 ke atas, perintah untuk rotasi sertifikat dimulai dengan aks-engine-azurestack bukan aks-engine.

Jika proses rotasi sertifikat berhenti sebelum selesai karena kegagalan atau masalah sementara, misalnya, konektivitas jaringan, aman untuk menjalankan aks-engine rotate-certs kembali menggunakan bendera --force.

Perhatikan juga bahwa aks-engine rotate-certs mengelog output dari setiap langkah dalam /var/log/azure/rotate-certs.log (Linux) dan c:\\k\\rotate-certs.log (Windows) file.

Untuk informasi lebih lanjut tentang apa yang sebenarnya terjadi under the hood saat menjalankan operasi ini atau untuk kustomisasi lebih lanjut, lihat Under The Hood.

Langkah berikutnya