Kubernetes kubectl:以明文形式从秘密中获取特定值
我想在shell脚本中获取秘密的特定字段的值 从Kubernetes kubectl:以明文形式从秘密中获取特定值,kubernetes,posix,kubectl,Kubernetes,Posix,Kubectl,我想在shell脚本中获取秘密的特定字段的值 从kubectl get secret文档中,获取机密的标准方法似乎是以指定格式返回整个内容,并对值base64进行编码 因此,要获取foosecret的bar字段,将其作为未编码字符串输出,我将执行以下操作: kubectl get secret foo-o json | jq-r“.data.bar”| base64——解码 就是 将整个foosecret获取为JSON 管道至jq以从JSON中读取bar字段 使用base64 是否有办法仅
kubectl get secret
文档中,获取机密的标准方法似乎是以指定格式返回整个内容,并对值base64进行编码
因此,要获取foo
secret的bar
字段,将其作为未编码字符串输出,我将执行以下操作:
kubectl get secret foo-o json | jq-r“.data.bar”| base64——解码
就是
- 将整个
secret获取为JSONfoo
- 管道至
以从JSON中读取jq
字段bar
- 使用
base64
kubectl
?
或者在兼容POSIX的shell中使用一种优雅的方式,它不依赖于任何依赖项,比如jq
?试试这个
kubectl get secret foo --template={{.data.bar}} | base64 --decode
不需要jq。自Kubernetes 1.11以来,这应该可以工作(请参阅):
kubectl get secret foo-o go template='{{.data.bar | base64decode}}'
kubectl get secret foo -o jsonpath={.data.bar} | base64 --decode
试试这个
kubectl get secret foo--template={{.data.bar}}}base64--decode
不需要jqI我不知道用kubectl的内部机制来解码base64的任何方法,但是要从secret中获取特定字段,可以使用jsonpath输出:-您可以用这里的一个方法对输出进行管道/组合,为了避免base64命令依赖性:您可以尝试使用sedkubectl get secret foo | sed's/^.*bar:\(.*).$/\1/'| base64-d
这些都是非常有用的选项,谢谢!请把它们作为答案贴出来,这样我就可以投票了!我想没有比这更好的了@mchawre能回答,