Memahami Rahasia Kube

Selesai

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.

Uji pengetahuan Anda

1.

Mengapa Kubernetes Secret lebih aman dari nilai teks biasa?

2.

Bagaimana Anda dapat menggunakan Rahasia dalam aplikasi?

3.

Bagaimana base64 digunakan dalam rahasia?