kubectl:从明文秘密中获取特定值

时间:2019-08-06 15:10:24

标签: kubernetes posix kubectl

我想在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中采用一种优雅的方式?

3 个答案:

答案 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

https://kubernetes.io/docs/reference/kubectl/jsonpath/