bash - 如何在 Bash 脚本中使用 Kubernetes Secret
问题描述
我在 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
以便启动远程外壳来进行参数扩展;在这种非交互式使用中,这些-it
选项是不必要的。
您的集群管理员可能会禁止kubectl exec
, 以防止以这种方式将机密值复制出集群。这也避免了非标准printenv
工具(它是 GNU Coreutils 的一部分,而不是 POSIX 规范,因此基于 Alpine 的图像可能没有它)。
推荐阅读
- javascript - 两个值不会像假设的那样在动作上增加
- python - 如何使用密码和桌面快捷方式为我的 Python 应用程序创建安装文件?
- r - 如何使用另一列中的值过滤列数据框中的数据?
- php - 如何使用 Yii 1.1 框架通过 PHP 下载过滤后的 CSV 文件
- javascript - 语法错误:导入声明只能出现在模块的顶层
- java - 在没有 NPE 的情况下安全地从链中获取价值
- javascript - 如何使用自动完成下拉菜单中的按钮来进一步过滤已经显示的结果
- lucene - 为什么我在 org.apache.jena.query.text 中出现错误?
- python - 在 DataFrame 的列中浮动的字符串
- javascript - 如何在 reactjs 中打开 designMode?