如何解决如何使用go-template替换kubectl输出中的JSON值?
我有一个configMap,我想通过使用最后一个应用的配置来创建备份configMap。
我使用以下命令获取上一次应用的配置:
kubectl get cm app-map -n app-space \
-o go-template \
--template='{{index .metadata "annotations" "kubectl.kubernetes.io/last-applied-configuration"}}' > backup.json
它返回如下内容[backup.json的内容]:
{"kind":"ConfigMap","apiVersion":"v1","metadata":{"name":"app-map","creationTimestamp":null},"data":{"app.yml":"xxxxxxxxx","config.yml":"yyyyyyyyy"}}
现在,我希望备份configMap具有不同的名称。因此,我想将.metadata.name
从app-map
更改为app-map-backup
。
有没有一种方法可以通过kubectl
和-o go-template
实现?我想先更改名称,然后再将其写入backup.json
文件。
我知道我可以使用jq
来做到这一点,但是我没有权限在正在使用jq
的服务器上安装kubectl
。
解决方法
您不能仅使用kubectl来执行此操作。但是还有其他方法。
您可以从official jq website下载静态链接的jq二进制文件:
wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
chmod +x jq-linux64
然后您可以像下面这样使用该二进制文件:
kubectl -o go-template [...] | ./jq-linux64 ...
或者您可以使用sed
:
kubectl -o go-template [...] | sed 's/"name":"app-map"/"name":"app-map-backup"/'
,
您可以使用kubectl bulk
插件。以下命令将复制您的配置图
# get resource(s) and create with field(name) change
kubectl bulk configmap app-map -n app-space create name app-mapp-backup
Kubectl大量使用非常强大,我建议检查samples。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。