Di Kubernetes 1.22 dan versi setelahnya, masa berlaku token akun layanan adalah satu tahun. Kubelet secara otomatis memperbarui token sebelum kedaluwarsa. Namun, jika versi client-go lebih awal dari 11.0.0 atau 0.15.0, sistem tidak akan memuat ulang token secara otomatis, sehingga token akan kedaluwarsa saat masa berlaku berakhir. Topik ini menjelaskan dampak dari kedaluwarsa token akun layanan pada kluster Container Service for Kubernetes (ACK) yang menjalankan Kubernetes 1.22 atau versi setelahnya, serta solusinya.
Untuk memastikan keamanan data, fitur BoundServiceAccountTokenVolume diaktifkan secara default di Kubernetes 1.21. Fitur ini menentukan masa berlaku token akun layanan, memperbaruinya secara otomatis sebelum kedaluwarsa, dan membatalkannya setelah pod terkait dihapus. Jika versi client-go adalah 11.0.0 atau lebih baru atau 0.15.0 atau lebih baru, kubelet secara otomatis memuat ulang token dari disk untuk memperbaruinya. Untuk memastikan kompatibilitas ke depan, Anda dapat terus menggunakan token selama satu tahun setelah kedaluwarsa. Jika versi client-go lebih awal dari 11.0.0 atau 0.15.0, sistem tidak akan memperbarui token secara otomatis setelah kedaluwarsa. Kesalahan berikut ditampilkan ketika token akun layanan kedaluwarsa:
# Log komponen.
Error listing resources error=Unauthorized
# Log akses server API Kubernetes dari kluster.
"Unable to authenticate the request" err="[invalid bearer token, Token has expired.]"Mulai ulang pod komponen untuk memungkinkan client-go mendapatkan token baru.
Ruang lingkup dampak
Aplikasi yang berjalan di kluster Kubernetes 1.22 atau versi setelahnya dengan versi klien lebih awal dari 11.0.0 atau 0.15.0 terpengaruh.
Dampak
Di kluster yang menjalankan Kubernetes 1.22 atau versi setelahnya, token akun layanan mungkin tidak dimuat ulang satu tahun setelah kedaluwarsa jika versi client-go lebih awal dari 11.0.0 atau 0.15.0.
Satu tahun setelah pemutakhiran kluster ke Kubernetes 1.22 atau versi setelahnya, token akun layanan yang terikat pada aplikasi yang ada akan kedaluwarsa jika aplikasi tidak diperbarui atau dimulai ulang.
Solusi
Aplikasi yang menggunakan komponen ACK
Secara default, komponen ACK sudah dipasang sebelumnya dengan versi terbaru client-go. Jika versi client-go komponen ACK belum diperbarui, Anda dapat memperbarui komponen untuk meningkatkan versi client-go.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel navigasi kiri, klik Add-ons.
Di halaman Add-ons, temukan komponen yang ingin Anda perbarui dan klik Upgrade.
Aplikasi yang tidak menggunakan komponen ACK
Untuk sementara, mulai ulang aplikasi untuk mengatasi masalah ini. Untuk solusi permanen, perbarui versi client-go ke 11.0.0 atau lebih baru atau 0.15.0 atau lebih baru agar aplikasi secara otomatis memuat ulang token akun layanan yang terikat padanya.