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.