Halaman ini menjelaskan cara melakukan rotasi kredensial di cluster Google Kubernetes Engine (GKE).
Tentang rotasi kredensial di GKE
Masa berlaku root Certificate Authority (CA) cluster terbatas. Saat CA
berakhir, semua kredensial yang ditandatangani oleh CA tidak lagi valid,
termasuk sertifikat klien cluster (dari kolom API MasterAuth
), kunci dan sertifikat untuk server API, serta sertifikat klien kubelet. Untuk mengetahui detailnya, lihat Masa aktif root CA cluster.
Anda dapat melakukan rotasi kredensial untuk mencabut dan menerbitkan kredensial baru untuk cluster Anda. Operasi ini merotasi kunci pribadi CA cluster dan memerlukan pembuatan ulang node untuk menggunakan kredensial baru. Anda harus memulai dan finish rotasi kredensial untuk cluster Anda finish masa berlaku kredensial Anda saat ini berakhir. Selain merotasi kredensial, rotasi kredensial juga melakukan rotasi IP.
Waktu untuk melakukan rotasi kredensial
Anda harus melakukan rotasi kredensial secara teratur dan sebelum tanggal habis masa berlaku kredensial saat ini. Rotasi kredensial memerlukan pembuatan ulang node untuk menggunakan kredensial baru, yang mungkin akan mengganggu workload yang sedang berjalan. Rencanakan periode pemeliharaan dan lakukan rotasi selama masa pemeliharaan untuk menghindari periode nonaktif workload yang tidak terduga atau klien API yang tidak responsif di luar cluster.
Menemukan cluster dengan kredensial yang masa berlakunya akan atau sudah habis masa berlakunya
Jika masa berlaku kredensial cluster Anda akan habis dalam 180 hari ke depan, atau
kredensial cluster telah habis masa berlakunya, GKE akan memberikan panduan
dengan insight dan rekomendasi untuk menjelaskan bahwa Anda harus melakukan rotasi
kredensial untuk cluster ini. Panduan ini mencakup tanggal habis masa berlaku
kredensial. Anda dapat melihat panduan ini di konsol Google Cloud. Atau,
Anda dapat melihat
panduan ini
dengan gcloud CLI, atau Recommender API, yang menentukan
subjenis CLUSTER_CA_EXPIRATION
.
Jika menerima insight dan rekomendasi untuk cluster, Anda harus melakukan rotasi kredensial, atau GKE akan otomatis memulai rotasi kredensial dalam waktu 30 hari sejak tanggal habis masa berlaku CA saat ini, seperti yang dijelaskan di bagian berikutnya.
Kebijakan otomatisasi GKE untuk mencegah pemadaman layanan cluster
Untuk mencegah cluster Anda memasuki status yang tidak dapat dipulihkan jika masa berlaku kredensial saat ini habis, GKE akan otomatis memulai rotasi kredensial dalam waktu 30 hari sejak tanggal habis masa berlaku CA saat ini. Misalnya, jika cluster CA Anda berakhir pada 6 Januari 2024 dan Anda tidak merotasi kredensial Anda paling lambat 5 Desember 2023, GKE akan memulai rotasi otomatis pada atau setelah 7 Desember 2023, dan menyelesaikan rotasi ini tujuh hari setelah operasi dimulai. Rotasi otomatis ini adalah upaya terakhir untuk mencegah gangguan cluster, dan memiliki pertimbangan berikut:
- Rotasi otomatis mengabaikan semua masa pemeliharaan atau pengecualian pemeliharaan yang dikonfigurasi
- Saat rotasi kredensial selesai, kredensial yang habis masa berlakunya akan dicabut. Klien Kubernetes API di luar cluster, seperti kubectl di lingkungan lokal, tidak akan berfungsi sebelum Anda mengonfigurasi klien untuk menggunakan kredensial baru
- Pembuatan ulang node pool selama rotasi dapat menyebabkan gangguan pada workload yang berjalan
Rotasi otomatis yang dimulai GKE adalah tindakan pencegahan pemadaman pengurutan terakhir. Jangan hanya mengandalkan rotasi otomatis ini—rotasi adalah tindakan darurat pencegahan untuk menghindari pemadaman layanan total.
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
initialize
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Memeriksa masa berlaku kredensial
Sebaiknya periksa masa berlaku kredensial Anda sebelum dan sesudah melakukan rotasi kredensial agar Anda mengetahui validitas root CA cluster Anda.
Untuk memeriksa masa berlaku kredensial untuk satu cluster, jalankan perintah berikut:
gcloud container clusters describe CLUSTER_NAME \
--region REGION_NAME \
--format "value(masterAuth.clusterCaCertificate)" \
| base64 --decode \
| openssl x509 -noout -dates
Outputnya mirip dengan hal berikut ini:
notBefore=Mar 17 16:45:34 2023 GMT
notAfter=Mar 9 17:45:34 2053 GMT
Untuk memeriksa masa berlaku kredensial untuk semua cluster dalam sebuah project, jalankan perintah berikut:
gcloud container clusters list --project PROJECT_ID \
| awk 'NR>1 {print "echo; echo Validity for cluster " $1 " in location " $2 ":;\
gcloud container clusters describe --project PROJECT_ID " $1 " --location " $2 " \
--format \"value(masterAuth.clusterCaCertificate)\" \
| base64 --decode | openssl x509 -noout -dates"}' \
| bash
Merotasi kredensial
Rotasi kredensial melibatkan langkah-langkah berikut:
- Mulai rotasi: bidang kontrol mulai aktif di alamat IP baru selain alamat IP asli. Kredensial baru dikeluarkan untuk workload dan bidang kontrol.
- Membuat ulang node: GKE membuat ulang node cluster sehingga node menggunakan alamat IP dan kredensial baru, dengan memperhatikan ketersediaan dari masa pemeliharaan dan pengecualian.
- Update klien API: setelah memulai rotasi, update klien API
cluster, seperti mesin pengembangan yang menggunakan
kubectl
, untuk berkomunikasi dengan bidang kontrol menggunakan alamat IP baru. - Selesaikan rotasi: bidang kontrol berhenti melayani traffic melalui alamat IP asli. Kredensial lama akan dicabut, termasuk kredensial statis yang ada untuk Akun Layanan Kubernetes.
Memulai rotasi
Untuk memulai rotasi kredensial, jalankan perintah berikut:
gcloud container clusters update CLUSTER_NAME \
--region REGION_NAME \
--start-credential-rotation
Perintah ini akan membuat kredensial baru, menerbitkan kredensial ini ke bidang kontrol, dan mengonfigurasi bidang kontrol untuk menyalurkan dua alamat IP: alamat IP asli dan alamat IP baru.
Membuat ulang node
Setelah mengonfigurasi ulang server API untuk ditayangkan di alamat IP baru, GKE akan otomatis memperbarui node Anda agar dapat menggunakan alamat IP dan kredensial baru jika ada ketersediaan pemeliharaan. GKE mengupgrade semua node Anda ke versi GKE yang sama dengan yang sudah dijalankan node, yang membuat ulang node. Untuk mengetahui informasi selengkapnya, lihat Upgrade kumpulan node.
Secara default, GKE otomatis menyelesaikan rotasi kredensial tujuh hari setelah Anda memulai operasi. Jika masa atau pengecualian pemeliharaan aktif dalam cluster Anda mencegah GKE membuat ulang beberapa node selama periode tujuh hari ini, rotasi kredensial akan gagal diselesaikan.
Jika Anda menggunakan pengecualian pemeliharaan atau masa pemeliharaan yang dapat mengakibatkan rotasi gagal, upgrade cluster Anda secara manual untuk memaksa pembuatan ulang node:
gcloud container clusters upgrade CLUSTER_NAME \ --location=LOCATION \ --cluster-version=VERSION
Ganti
VERSION
dengan versi GKE yang sama dengan yang sudah digunakan cluster.Untuk informasi selengkapnya, lihat peringatan untuk masa pemeliharaan.
Memeriksa progres pembuatan ulang node pool
Untuk memantau operasi rotasi, jalankan perintah berikut:
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
Perintah ini menampilkan ID operasi dari operasi upgrade node.
Untuk melakukan polling pada operasi, teruskan ID operasi ke perintah berikut:
gcloud container operations wait OPERATION_ID
Node pool dibuat ulang satu per satu, dan masing-masing memiliki operasinya sendiri. Jika Anda memiliki beberapa node pool, gunakan petunjuk ini untuk melakukan polling pada setiap operasi.
Mengupdate klien API
Setelah memulai rotasi kredensial, Anda harus mengupdate semua klien API di luar
cluster (seperti kubectl
pada mesin developer) agar menggunakan kredensial baru
dan mengarah ke alamat IP baru bidang kontrol.
Untuk memperbarui klien API Anda, jalankan perintah berikut untuk setiap klien:
gcloud container clusters get-credentials CLUSTER_NAME \
--region REGION_NAME
Memperbarui kredensial ServiceAccount Kubernetes
Jika Anda menggunakan kredensial statis untuk ServiceAccounts di cluster, beralihlah ke kredensial berumur pendek. Jika Anda menyelesaikan rotasi, kredensial ServiceAccount yang sudah ada akan menjadi tidak valid. Jika tidak ingin menggunakan kredensial yang memiliki masa aktif singkat, pastikan Anda membuat ulang kredensial statis untuk semua ServiceAccounts dalam cluster setelah menyelesaikan rotasi.
Memperbarui alamat IP dan aturan firewall hardcode
Jika Anda melakukan hardcode pada alamat IP bidang kontrol di lingkungan, atau jika memiliki aturan firewall yang menargetkan alamat IP bidang kontrol, perbarui alamat tersebut ke alamat IP baru. Jika Anda menyelesaikan rotasi tanpa memperbarui alamat IP di aplikasi dan di aturan firewall, resource tersebut mungkin akan mengalami gangguan saat GKE berhenti melakukan penayangan di alamat IP bidang kontrol sebelumnya.
Menyelesaikan rotasi
Setelah mengupdate klien API di luar cluster, selesaikan rotasi untuk mengonfigurasi bidang kontrol agar hanya menyajikan kredensial baru dan alamat IP baru:
gcloud container clusters update CLUSTER_NAME \
--region=REGION_NAME \
--complete-credential-rotation
Jika rotasi kredensial gagal diselesaikan dan menampilkan pesan error seperti berikut, lihat pemecahan masalah:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
Langkah selanjutnya
- Pelajari cara Melindungi metadata cluster.
- Pelajari objek Secret Kubernetes.
- Pelajari cara merotasi alamat IP.