Memahami Rahasia Kube
Salah satu pertimbangan terbesar saat bekerja dengan aplikasi terdistribusi adalah cara mengelola informasi sensitif, seperti kata sandi, koneksi, dan data serupa. Kubernetes memungkinkan Anda mengamankan data ini dengan sumber daya yang disebut Rahasia.
Memahami Rahasia
Di Kubernetes, Rahasia memungkinkan Anda menyimpan informasi sensitif dengan cara yang lebih aman daripada format teks biasa dalam pod dan penyebaran. Rahasia dirancang untuk menyimpan kata sandi dan data sensitif lainnya.
Rahasia Kubernetes mengodekan data mereka dalam format base64. Meskipun base64 bukan algoritma enkripsi, Kubernetes dapat melihat bahwa informasi dikodekan dan dapat menyembunyikan informasi ini dari output perintah seperti kubectl describe
. Proses ini tidak terjadi dengan konfigurasi teks biasa. Rahasia selalu dilingkupkan ke namespace layanan tunggal untuk menghindari paparan tambahan data sensitif ke beban kerja lain dalam kluster.
Jenis Rahasia
Ada berbagai jenis Rahasia. Jenis yang paling umum dan default adalah Opaque
, yang menyimpan data arbitrer yang ditentukan pengguna. Jenis umum lainnya meliputi:
kubernetes.io/service-account-token
: Menentukan Token Akun Layanan, dan secara otomatis dibuat saat Akun Layanan baru dibuat.kubernetes.io/basic-auth
: Kredensial untuk autentikasi dasar.kubernetes.io/tls
: Klien TLS atau data server, digunakan untuk melayani koneksi HTTPS dari dalam sumber daya Ingress, misalnya.
Tip
Untuk informasi selengkapnya, lihat dokumentasi Resmi Rahasia Kubernetes.
Membuat dan menggunakan Rahasia
Menurut dokumentasi resmi Rahasia Kubernetes, Anda dapat menggunakan Rahasia dengan tiga cara berbeda:
- Dipasang sebagai file dalam volume pada kontainer di dalam Pod atau Penyebaran.
- Direferensikan sebagai variabel lingkungan dalam spesifikasi Pod atau Penyebaran.
- Digunakan oleh Kubelet saat menarik gambar dari registri privat melalui
imagePullSecret
kunci dalam spesifikasi Pod.
Anda dapat membuat Rahasia seperti sumber daya Kubernetes lainnya, menggunakan file manifes YAML atau kubectl
perintah. Spesifikasi Rahasia adalah sebagai berikut:
apiVersion: v1
kind: Secret
metadata:
name: secret-name
namespace: secret-namespace
type: Opaque
data:
key_name: "key value in base64 format"
Untuk Rahasia dengan spesifikasi ini, Anda perlu mengodekan nilai sebelum membuat Rahasia. Jika Anda ingin membuat Rahasia dengan nilai teks biasa dan membiarkan Kubernetes mengodekannya secara otomatis, Anda menggunakan stringData
alih-alih data
:
apiVersion: v1
kind: Secret
metadata:
name: secret-name
namespace: secret-namespace
type: Opaque
stringData:
key_name: "key value in plain format"
Aplikasi menerima string Rahasia yang didekodekan sebagai nilai yang diteruskan ke dalamnya alih-alih yang dikodekan.
Pembaruan rahasia
Semua Rahasia yang dipasang sebagai volume di dalam pod secara otomatis diperbarui setelah nilainya berubah. Perubahan ini mungkin tidak segera terjadi karena konfigurasi Kubelet, tetapi terjadi secara otomatis sehingga tidak perlu menghidupkan ulang Pod.
Dalam kasus di mana Rahasia terikat ke variabel lingkungan yang tidak diperbarui secara otomatis, sehingga perlu untuk menghidupkan ulang Pod agar perubahan diterapkan.