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 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:

  1. Mulai rotasi: bidang kontrol mulai aktif di alamat IP baru selain alamat IP asli. Kredensial baru dikeluarkan untuk workload dan bidang kontrol.
  2. Membuat ulang node: GKE membuat ulang node cluster sehingga node menggunakan alamat IP dan kredensial baru, dengan memperhatikan ketersediaan dari masa pemeliharaan dan pengecualian.
  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 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

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

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