Cara Memanfaatkan Rahasia Kubernetes di Bash Script
Saya memiliki rahasia yang disimpan di pod Kubernetes yang dapat diakses dengan perintah berikut.
kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD
yang akan memberikan keluaran sebagai
SFTP_PASSWORD=password
Saya mengakses rahasia ini di skrip bash.
sftp_password=$(kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD)
Tetapi masalah yang saya hadapi adalah perintah di atas akan mengembalikan kedua pasangan nilai kunci, bukan nilai.
Jawaban
Jika ini adalah variabel lingkungan, Anda cukup menggunakan sintaks ekspansi parameter Bourne shell biasa :
kubectl exec pod_name -- sh -c 'echo $SFTP_PASSWORD'
Perhatikan tanda kutip tunggal, untuk mencegah shell lokal memperluas parameter; yang sh -cwrapper sehingga remote shell akan mulai melakukan ekspansi parameter; dan dalam penggunaan non-interaktif ini, -itopsi tidak diperlukan.
Ada kemungkinan administrator klaster Anda melarang kubectl exec, untuk mencegah penyalinan nilai rahasia keluar dari klaster dengan cara yang persis seperti ini. Ini juga menghindari alat non-standar printenv(ini adalah bagian dari GNU Coreutils dan bukan spesifikasi POSIX, jadi gambar berbasis Alpine mungkin tidak memilikinya).