Merotasi kredensial cluster


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:

  1. Mulai rotasi: bidang kontrol mulai aktif di alamat IP baru selain alamat IP asli. Kredensial baru dikeluarkan untuk workload dan bidang kontrol.
  2. 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.
  3. 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.
  4. 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

  1. 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.

  2. 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