kubernetes - 如何使用 yq 在条件下修补多文档 yaml 文件?
问题描述
让 YAML 文档类似于:
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-scraping
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: allow-webhooks
我想得到类似的东西
---
apiVersion: **networking.k8s.io/v1beta1**
kind: NetworkPolicy
metadata:
name: allow-scraping
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: allow-webhooks
所以基本上得到文件,如果文件有kind: NetworkPolicy
补丁apiVersion: networking.k8s.io/v1beta1
。
理想情况下一个班轮,理想情况下使用 yq v4,但其他解决方案也会有所帮助。
解决方案
使用mikefarah/yq超过 4 的版本,您可以对所需文档执行select
和更新操作|=
yq e 'select(.kind == "NetworkPolicy").apiVersion |= "networking.k8s.io/v1beta1"' yaml
以上工作正常yq version 4.6.0
。使用该-i
标志就地替换文件。
推荐阅读
- angular - 关于
在角 - docker - 在超级账本结构中创建专用网络时出错
- php - 不要用动态路由重写链接生成器
- ios - 无法同时满足约束 iOS
- swift - AVCaptureDevice 无法为我移植了 Catalyst 的 macOS 应用找到任何设备
- c++ - cout<<中的未知编译器错误理论上它可以工作
- google-apps-script - 如何打开 G Suite 附加边栏?
- java - 支持事务关联的 Java 或 Spring 异步任务执行器?
- amazon-web-services - 以编程方式从特定版本下载 s3 文件
- python - 将 .xlsx 文件合并为一个而不覆盖数据