Como usar os segredos do Kubernetes no script Bash
Tenho um segredo armazenado no pod do Kubernetes que pode ser acessado pelo comando a seguir.
kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD
que fornecerá a saída como
SFTP_PASSWORD=password
Estou acessando este segredo no script bash.
sftp_password=$(kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD)
Mas o problema que estou enfrentando é que o comando acima retornará os dois pares de valores-chave em vez de valor.
Respostas
Se for uma variável de ambiente, você pode usar apenas a sintaxe de expansão de parâmetro do shell Bourne comum :
kubectl exec pod_name -- sh -c 'echo $SFTP_PASSWORD'
Observe as aspas simples, para evitar que o shell local expanda o parâmetro; o sh -cwrapper para que um shell remoto seja iniciado para fazer a expansão dos parâmetros; e neste uso não interativo as -itopções são desnecessárias.
É possível que seu administrador de cluster proíba kubectl exec, para evitar a cópia de valores secretos para fora do cluster exatamente dessa maneira. Isso também evita a printenvferramenta não padrão (é parte do GNU Coreutils e não da especificação POSIX, portanto, imagens baseadas em Alpine podem não ter).