我想在shell脚本中获取秘密的特定字段的值。
从kubectl get secret
文档中看来,获取秘密的标准方法似乎以指定的格式以base64编码的值返回整个事物。
因此,要获取bar
机密的foo
字段,以未编码的字符串形式输出,我正在这样做:
kubectl get secret foo -o json | jq -r ".data.bar" | base64 --decode
那是
foo
机密获取为JSON jq
的管道,以从JSON中读取bar
字段base64
是否可以仅使用kubectl
来做到这一点?
还是在不依赖jq
之类的任何依赖关系的POSIX兼容shell中采用一种优雅的方式?
答案 0 :(得分:3)
尝试
kubectl get secret foo --template={{.data.bar}} | base64 --decode
不需要jq。
答案 1 :(得分:0)
从Kubernetes 1.11开始,这应该有效(请参见PR 60755):
kubectl get secret foo -o go-template='{{ .data.bar | base64decode }}'
答案 2 :(得分:0)
kubectl get secret foo -o jsonpath={.data.bar} | base64 --decode