如何使用kubectl diff递归对比目录且仅处理YAML文件?
让kubectl仅对YAML文件执行diff的优雅方法
以下是几种实用方案,可根据场景选择:
1. 跨shell通用的递归过滤方法
用find命令精准筛选出所有.yaml/.yml后缀的文件,再传递给kubectl执行diff:
find . -type f \( -name "*.yaml" -o -name "*.yml" \) | xargs kubectl diff -f -
-type f确保只处理文件(排除目录)xargs将筛选出的文件路径批量传递给kubectl-f -表示从标准输入读取文件列表
2. Bash环境下的简洁递归写法
如果使用Bash,可通过开启shell扩展特性实现更简洁的命令:
先开启必要选项:
shopt -s globstar nullglob
globstar允许**匹配任意深度的子目录nullglob避免无匹配文件时,把**/*.yaml当作字面量传递
然后执行diff:
kubectl diff -f **/*.yaml -f **/*.yml
3. 非递归的单目录场景
如果只需要处理当前目录的YAML文件,直接用glob匹配即可:
kubectl diff -f *.yaml -f *.yml
内容的提问来源于stack exchange,提问作者Ivan Aracki
相关产品推荐
相关产品推荐

