如何用单条指令为单个文件应用Kustomize配置?
单条指令实现仅应用指定Kustomize处理后的单个资源
直接用管道将三步合并,无需临时文件,这里提供两种可行方案:
方案1:用yq精准筛选(推荐,需安装yq)
yq是专门处理YAML的工具,能高效定位目标资源,执行这条命令即可:
kubectl kustomize overlays/dev | yq 'select(.metadata.name == "deployment1")' | kubectl apply -f -
原理:先让Kustomize生成对应环境的全量配置,用yq筛选出名字为deployment1的资源,最后直接传给kubectl apply完成部署。
方案2:用awk原生处理(无需额外工具)
如果不想安装yq,用系统自带的awk也能实现:
kubectl kustomize overlays/dev | awk '/^---$/{n++} n==1 && /metadata:/{if($0 ~ /name: deployment1/) {print "---"; print; flag=1; next}} flag==1{if($0 !~ /^---$/) print; else exit}' | kubectl apply -f -
原理:利用YAML文档间用---分隔的特性,遍历找到包含name: deployment1的资源块,提取后传给kubectl apply完成部署。
另外,如果你频繁需要单独部署这个资源,也可以临时修改对应overlay的kustomization.yaml,在resources字段里只保留../../base/deployment1.yaml,用完再改回去,但单条命令的方式更灵活。
内容的提问来源于stack exchange,提问作者Ivan dal Bosco
相关产品推荐
相关产品推荐

