Ala*_*lan 3 base64 kubernetes kubectl json-path-expression
我有一个与此类似的命令
kubectl get secrets \
--selector='my-selector' \
-o jsonpath='{range .items[*] }{"\n"}{.metadata.labels.cluster-name}{"."}{.metadata.namespace {":"}{"5432"}{"postgres" }{":"}{.data.password}{end}'
Run Code Online (Sandbox Code Playgroud)
它输出这样的列表(需要格式)
cluster-name.namespace:5432:postgres:YbHF....==
cluster-name.namespace:5432:postgres:YbHF....==
cluster-name.namespace:5432:postgres:YbHF....==
Run Code Online (Sandbox Code Playgroud)
我需要解码该文件的 base64 并使用kubectl 备忘单作为参考,其中给出了以下示例:
# 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}}'
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法
cluster-name.namespace:5432:postgres:YbHF....==
cluster-name.namespace:5432:postgres:YbHF....==
cluster-name.namespace:5432:postgres:YbHF....==
Run Code Online (Sandbox Code Playgroud)
结果是除了现在为空的密码字段之外的所有内容都显示出来,例如:
cluster-name.namespace:5432:postgres:
Run Code Online (Sandbox Code Playgroud)
任何指示将不胜感激。
根据@mdaniel的建议,我使用了-o go-template
我的主要语法更改是删除 [ ],{range .items[*] }
即{{range .items}}'
如果一个键包含 a-
那么就{.metadata.labels.cluster-name}
变成{{index .metadata.labels "cluster-name"}}
我的解决方案如下,使 Base64 解码能够工作:
kubectl get secrets \
--selector='my-selector' \
-o go-template='{{range .items}}{{"\n"}}{{index .metadata.labels "cluster-name"}}{{"."}}{{.metadata.namespace }}{{":"}}{{"5432"}}{{"postgres"}}{{":"}}{{.data.password|base64decode}}{{end}}'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4790 次 |
最近记录: |