Menggunakan certificate authority cluster kustom

Otoritas sertifikat cluster (CA) menerbitkan dan menandatangani sertifikat untuk mengaktifkan enkripsi dan autentikasi yang aman antar-komponen cluster. Secara default, di GKE di Bare Metal, Cluster API membuat CA cluster saat Anda membuat cluster baru. Dokumen ini menjelaskan cara menggunakan certificate authority Anda sendiri dengan GKE di Bare Metal. Dengan menggunakan CA cluster kustom, Anda memiliki lebih banyak kontrol untuk menerbitkan dan mengelola sertifikat cluster. Anda juga dapat mengontrol kepercayaan, parameter algoritma enkripsi, kedalaman sertifikat subordinate, dan tujuannya.

Untuk menggunakan CA kustom, Anda harus memberikan root CA, yang terdiri dari file sertifikat CA dan file kunci pribadi yang terkait. Anda harus memberikan sertifikat CA dan pasangan file kunci untuk setiap CA cluster yang diperlukan berikut:

  • etcd CA: sertifikat untuk sertifikat CA etcd mengamankan komunikasi dari server Kubernetes API ke replika etcd, serta komunikasi antara replika etcd.

  • CA cluster: sertifikat untuk CA cluster mengamankan komunikasi antara server Kubernetes API dan semua klien Kubernetes API internal. Kliennya meliputi kubelet, {i>controller manager<i}, dan penjadwal.

  • front-proxy CA: sertifikat untuk CA front-proxy mengamankan komunikasi dengan API gabungan.

Anda dapat memberikan pasangan kunci sertifikat unik untuk setiap CA atau Anda dapat menggunakan kembali pasangan kunci sertifikat untuk lebih dari satu CA.

Anda menerapkan pasangan kunci sertifikat selama pembuatan cluster (khusus metode bmctl) dan rotasi CA. Fitur CA Cluster Kustom berfungsi dengan semua jenis cluster: admin, pengguna, hybrid, dan mandiri.

Prasyarat

Anda bertanggung jawab untuk menyiapkan root CA sendiri sesuai dengan aturan berikut:

  • CA kustom adalah root CA, yang masing-masing terdiri dari file sertifikat yang ditandatangani sendiri dan file kunci pribadi.

  • CA menengah dan bawahan tidak didukung.

  • Untuk sertifikat, sebaiknya gunakan format Distinguished Encoding Rules (DER) (lihat rekomendasi X.690 untuk aturan encoding ASN.1). File sertifikat Anda harus berisi data yang dienkode base64 yang diawali dengan ‑‑‑‑‑BEGIN CERTIFICATE‑‑‑‑‑ dan diikuti oleh ‑‑‑‑END CERTIFICATE‑‑‑‑‑.

  • Untuk kunci pribadi, sebaiknya gunakan format Public-Key Cryptography Standards (PKCS) #1. File kunci Anda harus berisi data yang dienkode base64 yang diawali dengan ‑‑‑‑BEGIN RSA PRIVATE KEY‑‑‑‑ dan diikuti oleh ‑‑‑‑END RSA PRIVATE KEY‑‑‑‑.

  • Untuk meminimalkan potensi gangguan cluster, CA kustom tidak boleh habis masa berlakunya lebih cepat dari lima tahun. Sebaiknya gunakan periode habis masa berlaku yang lebih lama, misalnya 10 hingga 30 tahun.

  • Pastikan file sertifikat dan kunci berada di workstation admin tempat Anda menjalankan perintah bmctl.

  • Pengguna yang menjalankan perintah bmctl harus memiliki akses ke direktori tempat Anda menyimpan file. Sebaiknya Anda menempatkan file tersebut di direktori yang ada yang digunakan untuk sertifikat dan kunci. Misalnya, Anda dapat menyimpan file di ~/baremetal/bmctl-workspace/.sa-keys bersama dengan kunci akun layanan Anda.

  • Pengguna yang menjalankan perintah bmctl harus memiliki akses baca ke file.

Menggunakan CA kustom selama pembuatan cluster

Saat membuat cluster dengan bmctl, Anda harus terlebih dahulu mengupdate file konfigurasi cluster untuk mendeskripsikan setelan dan fitur cluster Anda. Untuk menggunakan fitur CA Cluster Kustom selama pembuatan cluster, Anda memiliki dua opsi untuk menentukan CA cluster kustom dalam file konfigurasi cluster:

  • Menentukan jalur untuk file sertifikat CA dan file kunci pribadi
  • Menentukan jalur untuk file kunci pribadi saja

Jika Anda menentukan kunci pribadi saja, bmctl akan mencari file sertifikat CA yang sesuai dalam direktori yang sama. File sertifikat harus memiliki nama yang sama dengan file kunci pribadi yang terkait dan ekstensi file .crt. Misalnya, jika jalur kunci pribadi adalah /custom-ca/cluster_ca.key, bmctl mengharapkan jalur sertifikat menjadi /custom-ca/cluster_ca.crt.

Dalam kedua kasus tersebut, jalur ditentukan di bagian kredensial file konfigurasi seperti ditunjukkan dalam contoh berikut.

Contoh 1: Menentukan sertifikat dan jalur kunci

Kutipan berikut dari file konfigurasi cluster menunjukkan cara menentukan jalur ke file sertifikat dan kunci untuk setiap CA cluster. Dalam contoh ini, file kunci dan sertifikat CA berada di direktori yang sama dengan file kunci JSON akun layanan.

gcrKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-gcr.json
...
cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-cloud-ops.json
clusterCACertPath: bmctl-workspace/.sa-keys/cluster_ca_cert.pem
clusterCAPrivateKeyPath: bmctl-workspace/.sa-keys/cluster_ca_key.pem
etcdCACertPath: bmctl-workspace/.sa-keys/etcd_ca_cert.pem
etcdCAPrivateKeyPath: bmctl-workspace/.sa-keys/etcd_ca_key.pem
frontProxyCACertPath: bmctl-workspace/.sa-keys/front_proxy_ca_cert.pem
frontProxyCAPrivateKeyPath: bmctl-workspace/.sa-keys/front_proxy_ca_key.pem
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin-test
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
...

Contoh 2: Menentukan jalur kunci pribadi saja

Kutipan berikut dari file konfigurasi cluster menunjukkan cara menentukan jalur ke file kunci saja. Dalam contoh ini, file kunci pribadi CA berada di direktori yang sama dengan file kunci JSON akun layanan. File sertifikat CA yang sesuai juga harus berada dalam direktori /.sa-keys. File sertifikat memiliki nama file yang sama dengan file kunci, tetapi dengan ekstensi .crt. Jadi, file sertifikat CA dll. memiliki nama etcd_ca.crt.

gcrKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-gcr.json
...
cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-cloud-ops.json
clusterCAPrivateKeyPath: bmctl-workspace/.sa-keys/cluster_ca_key.pem
etcdCAPrivateKeyPath: bmctl-workspace/.sa-keys/etcd_ca_key.pem
frontProxyCAPrivateKeyPath: bmctl-workspace/.sa-keys/front_proxy_ca_key.pem
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin-test
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
...

Contoh 3: Menggunakan kembali sepasang sertifikat CA dan file kunci

Kutipan berikut dari file konfigurasi cluster menunjukkan cara menentukan jalur ke file kunci saja. Dalam contoh ini, satu pasangan kunci sertifikat digunakan untuk semua CA cluster. File sertifikat CA dan kunci pribadi berada di direktori /custom-ca. Berdasarkan konvensi penamaan, nama file sertifikat CA adalah custom_ca.crt.

gcrKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-gcr.json
...
cloudOperationsServiceAccountKeyPath: bmctl-workspace/.sa-keys/myproject-anthos-baremetal-cloud-ops.json
clusterCAPrivateKeyPath: /custom-ca/custom_ca.key
etcdCAPrivateKeyPath: /custom-ca/custom_ca.key
frontProxyCAPrivateKeyPath: /custom-ca/custom_ca.key
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin-test
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
...

Menggunakan CA kustom selama rotasi CA

Saat merotasi CA, Anda dapat menentukan jalur untuk sertifikat CA cluster kustom dan file kunci pribadi Anda. Opsi yang Anda miliki mirip dengan opsi untuk menentukan CA cluster kustom selama pembuatan cluster. Saat menjalankan perintah bmctl update credentials certificate-authorities rotate, Anda memiliki opsi berikut:

  • Tentukan jalur untuk file sertifikat CA kustom dan file kunci pribadi.
  • Menentukan jalur untuk file kunci pribadi CA kustom saja. File sertifikat CA yang sesuai harus berada di direktori yang sama, memiliki nama yang sama dengan file kunci, dan memiliki ekstensi file .crt.
  • Gunakan kembali pasangan kunci sertifikat CA dengan menentukan sertifikat dan jalur kunci yang sama untuk lebih dari satu CA cluster.
  • Hapus argumen untuk jalur CA kustom. Jika Anda tidak menentukan jalur CA kustom saat merotasi CA, GKE di Bare Metal akan membuat dan menggunakan CA cluster standar.

Contoh 1: Menentukan jalur sertifikat CA dan kunci pribadi

bmctl update credentials certificate-authorities rotate \
    --cluster CLUSTER_NAME \
    --kubeconfig ADMIN_KUBECONFIG \
    --cluster-ca-cert-path=CLUSTER_CA_CERT_PATH \
    --cluster-ca-private-key-path=CLUSTER_CA_KEY_PATH \
    --etcd-ca-cert-path=ETCD_CA_CERT_PATH \
    --etcd-ca-private-key-path=ETCD_CA_KEY_PATH \
    --front-proxy-ca-cert-path=FRONT_PROXY_CA_CERT_PATH \
    --front-proxy-ca-private-key-path=FRONT_PROXY_CA_KEY_PATH

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster tempat Anda ingin merotasi CA.
  • ADMIN_KUBECONFIG: jalur ke file kubeconfig cluster admin. Untuk mengelola cluster sendiri, file ini adalah file kubeconfig cluster.
  • CLUSTER_CA_CERT_PATH: jalur file sertifikat CA cluster.
  • CLUSTER_CA_KEY_PATH: jalur file kunci pribadi CA cluster.
  • ETCD_CA_CERT_PATH: jalur file sertifikat CA etcd.
  • ETCD_CA_KEY_PATH: jalur file kunci pribadi CA etcd.
  • FRONT_PROXY_CA_CERT_PATH: jalur file sertifikat front-proxy.
  • FRONT_PROXY_CA_KEY_PATH: jalur file kunci pribadi front-proxy.

Contoh 2: Menentukan jalur kunci pribadi saja

bmctl update credentials certificate-authorities rotate \
    --cluster CLUSTER_NAME \
    --kubeconfig ADMIN_KUBECONFIG \
    --cluster-ca-private-key-path=CLUSTER_CA_KEY_PATH \
    --etcd-ca-private-key-path=ETCD_CA_KEY_PATH \
    --front-proxy-ca-private-key-path=FRONT_PROXY_CA_KEY_PATH

Ganti kode berikut:

  • CLUSTER_NAME: nama cluster tempat Anda ingin merotasi CA.
  • ADMIN_KUBECONFIG: jalur ke file kubeconfig cluster admin. Untuk mengelola cluster sendiri, file ini adalah file kubeconfig cluster.
  • CLUSTER_CA_KEY_PATH: jalur file kunci pribadi CA cluster.
  • ETCD_CA_KEY_PATH: jalur file kunci pribadi CA etcd.
  • FRONT_PROXY_CA_KEY_PATH: jalur file kunci pribadi front-proxy.