Kubernetes kubectl:以明文形式从秘密中获取特定值

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 是否有办法仅

我想在shell脚本中获取秘密的特定字段的值

kubectl get secret
文档中,获取机密的标准方法似乎是以指定格式返回整个内容,并对值base64进行编码

因此,要获取
foo
secret的
bar
字段,将其作为未编码字符串输出,我将执行以下操作:

kubectl get secret foo-o json | jq-r“.data.bar”| base64——解码
就是

  • 将整个
    foo
    secret获取为JSON
  • 管道至
    jq
    以从JSON中读取
    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命令依赖性:您可以尝试使用sed
kubectl get secret foo | sed's/^.*bar:\(.*).$/\1/'| base64-d
这些都是非常有用的选项,谢谢!请把它们作为答案贴出来,这样我就可以投票了!我想没有比这更好的了@mchawre能回答,