如何在 Bash 脚本中使用 Kubernetes 秘密



我有一个存储在 Kubernetes pod 中的秘密,可以通过以下命令访问。

kubectl exec -it pod_name -- printenv | grep SFTP_PASSWORD

这将提供输出为

SFTP_PASSWORD=password

我正在 bash 脚本中访问这个秘密。

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

但是我面临的问题是上面的命令将返回两个键值对而不是值。

如果是环境变量,你可以只使用普通的 Bourne shell 参数扩展语法:

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

请注意单引号,以防止本地 shell 扩展参数;sh -c包装器,以便启动远程 shell 来执行参数扩展;在这种非交互式使用中,-it选项是不必要的。

群集管理员可能禁止kubectl exec,以防止以这种方式将机密值复制到群集之外。 这也避免了非标准的printenv工具(它是GNU Coreutils的一部分,而不是POSIX规范,所以基于Alpine的镜像可能没有它)。

最新更新