微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 kubectl jsonpath 中解码 base64

如何解决在 kubectl jsonpath 中解码 base64

我有一个类似的命令

kubectl get secrets \
--selector='my-selector' \
-o jsonpath='{range .items[*] }{"\n"}{.Metadata.labels.cluster-name}{"."}{.Metadata.namespace {":"}{"5432"}{"postgres" }{":"}{.data.password}{end}'

输出这样的列表(需要格式)

cluster-name.namespace:5432:postgres:YbHF....==
cluster-name.namespace:5432:postgres:YbHF....==
cluster-name.namespace:5432:postgres:YbHF....==

我需要解码这个文件的 base64 并使用 kubectl cheat sheet 作为参考,给出这个例子:

# Output decoded secrets without external tools
kubectl get secret my-secret -o go-template='{{range $k,$v := .data}}{{"### "}}{{$k}}{{"\n"}}{{$v|base64decode}}{{"\n\n"}}{{end}}'

我尝试了以下

kubectl get secrets \
--selector='my-selector' \
-o jsonpath='{range .items[*] }{"\n"}{.Metadata.labels.cluster-name}{"."}{.Metadata.namespace {":"}{"5432"}{"postgres" }{":"}{.data.password|base64decode}{end}'

结果是除了现在空白的密码字段之外的所有内容都出现了,例如:

cluster-name.namespace:5432:postgres:

任何指针将不胜感激。

解决方法

根据@mdaniel 的建议,我使用了 D

我的主要语法更改是删除 [ ],即 -o go-template{range .items[*] }

如果一个键包含一个 {{range .items}}' 那么 - 变成了 {.metadata.labels.cluster-name}

我的以下解决方案启用了 base64 解码:

{{index .metadata.labels "cluster-name"}}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。