Cara Memanfaatkan Rahasia Kubernetes di Bash Script

Sep 13 2020

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

1 DavidMaze Sep 13 2020 at 16:30

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).