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 masa berlaku CA
berakhir, kredensial apa pun 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.
Masa berlaku kredensial cluster Anda bergantung pada kapan Anda membuat cluster atau kapan
Anda terakhir kali memutar kredensial. Untuk mengetahui detailnya, periksa masa berlaku kredensial.
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 menyelesaikan rotasi kredensial untuk cluster Anda sebelum 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.
Untuk mempelajari lebih lanjut pengaruh ketersediaan pemeliharaan terhadap rotasi kredensial cluster, dan jenis gangguan yang dialami cluster Anda selama langkah-langkah rotasi, lihat baris untuk rotasi kredensial dalam tabel perubahan manual yang membuat ulang node menggunakan strategi upgrade node dan mematuhi kebijakan pemeliharaan. GKE bergantung pada ketersediaan resource untuk mengupdate node. Untuk mempelajari update node lebih lanjut, lihat Merencanakan gangguan update node.
Masa berlaku kredensial cluster
Masa berlaku kredensial cluster biasanya bergantung pada waktu cluster dibuat atau saat kredensial terakhir kali dirotasi:
- Cluster yang dibuat sebelum sekitar Oktober 2021 memiliki masa berlaku CA selama 5 tahun.
- Cluster yang dibuat setelah sekitar Oktober 2021 memiliki masa aktif CA selama 30 tahun.
- Cluster yang dirotasi setelah sekitar Januari 2022 memiliki masa berlaku CA selama 30 tahun.
Menemukan cluster dengan kredensial yang akan habis masa berlakunya atau sudah habis masa berlakunya
Jika kredensial cluster Anda akan berakhir masa berlakunya dalam 180 hari ke depan, atau
kredensial cluster Anda sudah tidak berlaku, 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 Anda 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. Setelah rotasi kredensial selesai, perlu waktu hingga 36 jam agar insight dan rekomendasi dapat diselesaikan.
Kebijakan otomatisasi GKE untuk mencegah pemadaman layanan cluster
Agar cluster Anda tidak memasuki status yang tidak dapat dipulihkan jika masa berlaku kredensial saat ini berakhir, GKE akan otomatis memulai rotasi kredensial dalam 30 hari sejak tanggal habis masa berlaku CA saat ini. Misalnya, jika CA cluster Anda berakhir pada 6 Januari 2024 dan Anda tidak merotasi kredensial hingga 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 pemadaman layanan cluster, dan memiliki pertimbangan berikut:
- Rotasi otomatis umumnya mematuhi masa pemeliharaan atau pengecualian pemeliharaan, tetapi GKE berhak melakukan langkah-langkah dalam waktu 30 hari sejak habis masa berlaku untuk merotasi kredensial, terlepas dari ketersediaan pemeliharaan.
- Jika ketersediaan pemeliharaan mencegah GKE menyelesaikan rotasi pada awalnya, GKE akan terus mencoba menyelesaikan rotasi hingga tanggal habis masa berlaku kredensial, setelah itu cluster menjadi tidak dapat dipulihkan.
- 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.
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
lakukan inisialisasi
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
Jika Anda menjalankan perintah ini setelah memulai rotasi kredensial, outputnya adalah masa berlaku sertifikat asli Anda. Sertifikat ini tetap berlaku hingga Anda menyelesaikan rotasi. Setelah Anda menyelesaikan rotasi, output-nya adalah masa berlaku sertifikat baru Anda.
Untuk memeriksa masa berlaku kredensial untuk semua cluster dalam 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
Setiap 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.
- Buat ulang node: GKE membuat ulang node cluster sehingga node tersebut menggunakan alamat IP dan kredensial baru, dengan mempertimbangkan ketersediaan dari masa pemeliharaan dan pengecualian. Anda juga dapat membuat ulang node secara manual dengan melakukan upgrade versi node ke versi GKE yang sama dengan yang sudah dijalankan node.
- 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 dicabut, termasuk kredensial statis yang ada untuk Akun Layanan Kubernetes.
Saat Anda memulai rotasi kredensial, atau saat GKE otomatis memulai rotasi, GKE akan melakukan langkah-langkah ini secara otomatis, termasuk mencoba menyelesaikan rotasi. Pada setiap langkah, GKE mematuhi ketersediaan pemeliharaan, meskipun selama rotasi otomatis sebelum masa berlaku cluster berakhir, GKE berhak mengabaikan ketersediaan pemeliharaan untuk mencegah cluster Anda tidak dapat dipulihkan.
Jika Anda tidak menyelesaikan rotasi kredensial dalam waktu tujuh hari setelah memulainya, GKE akan mencoba menyelesaikan rotasi untuk Anda. Jika ada node dalam cluster Anda yang masih menggunakan kredensial sebelumnya, operasi penyelesaian otomatis akan gagal, tetapi GKE akan terus mencoba menyelesaikan hingga kredensial berakhir masa berlakunya dan cluster tidak dapat dipulihkan. Anda harus merencanakan untuk melacak dan menyelesaikan rotasi kredensial yang Anda mulai secara manual. Untuk mengganti pemblokir ketersediaan pemeliharaan, jalankan perintah di setiap bagian yang berikut untuk memicu fase proses rotasi tersebut secara manual. Jangan mengandalkan penyelesaian otomatis, yang merupakan upaya terbaik.
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 melayani alamat IP baru, GKE secara otomatis memperbarui node Anda agar dapat menggunakan kredensial dan alamat IP baru jika tersedia pemeliharaan. GKE mengupgrade semua node Anda ke versi GKE yang sama dengan yang sudah dijalankan node, yang akan membuat ulang node. Untuk informasi selengkapnya, lihat Upgrade node pool.
Secara default, GKE otomatis menyelesaikan rotasi kredensial tujuh hari setelah Anda memulai operasi. Jika masa atau pengecualian pemeliharaan aktif di cluster Anda mencegah GKE membuat ulang beberapa node selama periode tujuh hari ini, rotasi kredensial awalnya gagal selesai. Namun, GKE terus mencoba membuat ulang node dan menyelesaikan rotasi hingga ketersediaan pemeliharaan memungkinkan GKE melanjutkan. Selama acara besar seperti Google Cloud Next, GKE juga dapat menjeda pembuatan ulang node otomatis agar Anda tidak mengalami gangguan.
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 mengetahui informasi selengkapnya, lihat perubahan manual yang mematuhi kebijakan pemeliharaan GKE.
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 Akun Layanan Kubernetes
Jika Anda menggunakan kredensial statis untuk ServiceAccount di cluster, beralihlah ke kredensial jangka pendek. Menyelesaikan rotasi akan membatalkan kredensial ServiceAccount yang ada. Jika Anda tidak ingin menggunakan kredensial jangka pendek, pastikan Anda membuat ulang kredensial statis untuk semua ServiceAccount di cluster setelah menyelesaikan rotasi.
Memperbarui alamat IP dan aturan firewall yang di-hardcode
Jika Anda melakukan hardcode pada alamat IP bidang kontrol di lingkungan Anda, atau jika Anda memiliki aturan firewall yang menargetkan alamat IP bidang kontrol, perbarui alamat ke alamat IP baru. Jika Anda menyelesaikan rotasi tanpa memperbarui alamat IP di aplikasi dan di aturan firewall, resource tersebut mungkin mengalami gangguan saat GKE berhenti ditayangkan 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 yang mirip dengan yang berikut, lihat Error 400: Node pool memerlukan pembuatan ulang:
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
GKE mempertimbangkan ketersediaan pemeliharaan saat menyelesaikan rotasi secara otomatis, tetapi GKE mungkin mengabaikan ketersediaan ini dalam waktu 30 hari sejak habis masa berlaku untuk mencegah cluster menjadi tidak dapat dipulihkan. Jika penyelesaian rotasi awalnya gagal, dan rotasi dimulai setidaknya tujuh hari yang lalu, GKE akan mencoba menyelesaikan rotasi hingga tanggal masa berlaku kredensial berakhir, setelah itu cluster menjadi tidak dapat dipulihkan.
Langkah selanjutnya
- Pelajari cara Melindungi metadata cluster.
- Pelajari objek Secret Kubernetes{track-name="k8sLink" track-type="tasks"}.
- Pelajari cara merotasi alamat IP.