Comment utiliser les secrets Kubernetes dans Bash Script

Sep 13 2020

J'ai un secret stocké dans le pod Kubernetes qui peut être accessible par la commande suivante.

kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD

qui fournira la sortie comme

SFTP_PASSWORD=password

J'accède à ce secret dans le script bash.

sftp_password=$(kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD)

Mais le problème auquel je suis confronté est que la commande ci-dessus renverra les deux paires clé-valeur au lieu de valeur.

Réponses

1 DavidMaze Sep 13 2020 at 16:30

S'il s'agit d'une variable d'environnement, vous pouvez simplement utiliser la syntaxe d' expansion de paramètre Bourne shell ordinaire :

kubectl exec pod_name -- sh -c 'echo $SFTP_PASSWORD'

Notez les guillemets simples, pour empêcher le shell local d'étendre le paramètre; le sh -cwrapper pour qu'un shell distant soit lancé pour faire l'expansion des paramètres; et dans cette utilisation non interactive, les -itoptions sont inutiles.

Il est possible que votre administrateur de cluster vous interdise kubectl execde copier des valeurs secrètes hors du cluster exactement de cette manière. Cela évite également l' printenvoutil non standard (il fait partie de GNU Coreutils et non de la spécification POSIX, donc les images basées sur Alpine peuvent ne pas l'avoir).