参考资料
yaml 文件差异比较
go 安装到 $(go env GOPATH)/bin
go install github.com/josephburnett/jd/v2/jd@latest- jd 支持 json 文件比较
go install github.com/homeport/dyff/cmd/dyff@latest
go install github.com/mikefarah/yq/v4@latest- 可选,也可以用于比较但需要熟悉 yq 对应语法
- 以 jenkins 版本升级为例
添加 jenkins repo
helm repo add jenkinsci https://charts.jenkins.io
helm repo update
helm search repo jenkins
获取 jenkins 两个不同版本的 values 文件
helm show values jenkins/jenkins --version 5.8.115 > values.default-5.8.115.yaml
helm show values jenkins/jenkins --version 5.8.130 > values.default-5.8.130.yaml
可选:如果需要获取当前安装的用户定义 values 文件
helm get values <RELEASE_NAME> -n <NAMESPACE>- 默认只会输出用户显式设置的值,不包含默认值,也不包含安装后手动修改的部分
--all包含默认值--revision=<num>获取历史版本的 valueshelm history <RELEASE_NAME> -n <NAMESPACE>
通过 dyff 查看差异,dyff 目前仍旧无法生成补丁文件
dyff between --omit-header values.default-5.8.115.yaml values.default-5.8.130.yaml > diff.patch
cat diff.patch
- 可以看到更新了哪些部分
通过 jd 查看差异并生成补丁文件
jd -yaml -f jd -o diff-5.8.115_5.8.130.patch.jd \ values.default-5.8.115.yaml values.default-5.8.130.yaml- 生成 jd v2 格式补丁文件
-f指定输出文件格式,可选jd"merge" (RFC 7386)"patch" (RFC 6902)
cat diff-5.8.115_5.8.130.patch.jd
- 可以看到更新了哪些部分
jd -t jd2patch diff-5.8.115_5.8.130.patch.jd > diff.patch- jd 格式转换为 patch 格式
-t可以支持以下格式之间的转换"jd", "patch" (RFC 6902) and "merge" (RFC 7386),"json" and "yaml"- 通过
2来隔开输入和输出格式,如jd2patch即 jd 格式转换为 patch 格式
jd 应用补丁文件,注意会丢失现有注释和顺序
jd -yaml -p diff-5.8.115_5.8.130.patch.jd values.default-5.8.115.yaml > values.upgrade-5.8.130.yaml
jd -yaml values.upgrade-5.8.130.yaml values.default-5.8.130.yaml- 查看应用补丁后的升级版本和原始版本的差异
- 没有输出说明没有差异
- Author:白鸟3
- URL:https://blog.kun2peng.top/operation/tools_yaml_diff
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
