在Azure DevOps流水线中,如何打印kubectl kustomize的输入deployment.yml文件?
查看Helm Post-Renderer传入Kustomize的deployment.yml内容
问题场景
Azure DevOps流水线通过Helm部署Chart,使用--post-renderer参数指定脚本执行kubectl kustomize ./。kustomization.yaml配置如下:
resources: - deployment.yml patches: - target: kind: Deployment path: set_affinitytolerations.yml
运行时触发错误:
error: accumulating resources: accumulating resources from 'deployment.yml': MalformedYAMLError: yaml: line 3: did not find expected key in File: deployment.yml
使用版本:
Client Version: v1.32.0 Kustomize Version: v5.5.0 Server Version: v1.26.10+rke2r2
已查看kubectl kustomize --help未找到直接打印输入文件的选项。
可行解决方案
1. 修改Post-Renderer脚本,临时保存并打印内容
如果脚本直接读取本地deployment.yml,可在执行kustomize前添加打印步骤:
#!/bin/bash # 打印deployment.yml内容 echo "=== deployment.yml 内容 ===" cat deployment.yml echo "=== 内容结束 ===" # 执行kustomize kubectl kustomize ./
如果deployment.yml是Helm通过stdin传入的(脚本需接收Helm渲染后的YAML),则先将stdin写入文件再打印:
#!/bin/bash # 将Helm传入的内容保存到deployment.yml cat > deployment.yml # 打印文件内容 echo "=== Helm传入的deployment.yml 内容 ===" cat deployment.yml echo "=== 内容结束 ===" # 执行kustomize kubectl kustomize ./
流水线日志会输出文件内容,方便排查YAML格式问题。
2. 在Azure DevOps流水线中添加前置打印步骤
若deployment.yml是流水线提前生成的文件,可在helm upgrade步骤前添加bash任务打印内容:
- bash: | echo "=== deployment.yml 内容 ===" cat ./deployment.yml echo "=== 内容结束 ===" displayName: '打印deployment.yml内容'
3. 使用Kustomize的调试模式
尝试添加--debug参数执行kustomize,该参数会输出更详细的资源加载日志,可能包含deployment.yml的内容:
kubectl kustomize --debug ./
内容的提问来源于stack exchange,提问作者Susheel
相关产品推荐
相关产品推荐

