Di Kubernetes, kita dapat menyimpan dan mengelola informasi sensitif, seperti kata sandi, token OAuth, dan kunci ssh menggunakan Rahasia Kubernetes. Di Kubernetes, rahasia dapat didefinisikan sebagai Objek Kubernetes. Lebih aman menyimpan kredensial di Rahasia Kubernetes daripada di Pod atau di Gambar Docker.
Ada beberapa cara untuk menghasilkan rahasia di Kubernetes:
- Membuat dari file teks
- Membuat dari file yml
Setelah rahasia tersedia, rahasia dapat digunakan dengan cara berikut:
- Variabel Lingkungan
- Volume
- Menggunakan bidang imagePullSecrets
Untuk mengetahui lebih lanjut tentang Rahasia Kubernetes, klik di sini.
Dalam artikel ini, kita akan membuat rahasia menggunakan file .yml dan mengaksesnya di Pod sebagai Variabel Lingkungan.
Prasyarat
- Cluster Kubernetes dengan setidaknya 1 node pekerja.
Jika Anda ingin belajar membuat Cluster Kubernetes, klik di sini. Panduan ini akan membantu Anda membuat cluster Kubernetes dengan 1 Master dan 2 Node di Instans AWS Ubuntu 18l04 EC2.
Apa yang akan kita lakukan
- Buat Rahasia
Buat rahasia
Untuk membuat rahasia baru di Kubernetes, enkripsi terlebih dahulu seperti yang ditunjukkan di bawah ini menggunakan metode pengkodean base64.
Di sini,
nama pengguna=rahul dan kata sandi=howtoforge123.
echo -n "rahul" | base64
echo -n "howtoforge123" | base64
Pada tangkapan layar di atas, dapat dilihat bahwa kredensial telah dienkripsi.
Buat file definisi rahasia sebagai berikut, file ini menyimpan nilai base64 dari kredensial yang dihasilkan pada langkah di atas,.
vim my-secret.yml
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque data: username: cmFodWw= password: aG93dG9mb3JnZTEyMw==
Sekarang, mari kita buat pod di mana rahasia-rahasia ini dapat diakses.
Buat file baru yang akan berisi definisi pod sebagai berikut.
vim my-pod.yaml
apiVersion: v1 kind: Pod metadata: name: secrets-in-pod spec: containers: - name: my-container image: redis env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: mysecret key: username - name: SECRET_PASSWORD valueFrom: secretKeyRef: name: mysecret key: password restartPolicy: Never
Mari kita buat rahasia menggunakan perintah berikut.
kubectl create -f my-secret.yml
kubectl dapatkan rahasia | ambil rahasiaku
Sekarang, buat pod menggunakan definisi pod berikut untuk mengakses rahasia yang dibuat sebelumnya.
kubectl create -f my-pod.yml
kubectl dapatkan pod | grep secret-in-pod
Masuk ke dalam pod menggunakan perintah berikut.
kubectl dapatkan pod | grep secret-in-pod
kubectl exec -it secret-in-pod /bin/bash
Setelah Anda login ke pod, rahasia dapat diakses sebagai Variabel Lingkungan menggunakan perintah berikut.
gema $SECRET_USERNAME
echo $SECRET_PASSWORD
Pada tangkapan layar di atas, dapat dilihat bahwa rahasia tersedia sebagai Variabel lingkungan.
Untuk melihat detail objek rahasia, jalankan perintah berikut.
kubectl dapatkan rahasia | ambil rahasiaku
kubectl get secret mysecret -o yaml
Sekresi ini juga dapat didekode dari baris perintah menggunakan perintah berikut.
kubectl get secret/mysecret --template={{.data.username}} | base64 -d
kubectl get secret/mysecret --template={{.data.password}} | base64 -d
Pada tangkapan layar di atas, terlihat bahwa kredensial diekstraksi dari Rahasia dan didekripsi pada baris perintah menggunakan base64.
Kesimpulan
Dalam artikel ini, kita melihat langkah-langkah untuk membuat dan menyimpan rahasia di Kubernetes dari file .yml. Kami mencoba mengakses rahasia ini di Pod sebagai variabel Lingkungan. Kami juga melihat perintah untuk mendekripsi rahasia di baris perintah.