K8s集群全命令行模式Sanity测试最佳实践咨询
DevOps基础设施变更自动Sanity测试实现方案
各验证项的命令行实现
- 验证Jenkins agent与K8s集群通信
你现有的kubectl命令已经可以满足需求,建议补充返回码校验和过滤规则降低输出冗余,示例命令如下:kubectl get pod -n <jenkins授权访问的命名空间> --field-selector status.phase=Running
执行后返回码为0即可判定通信正常。 - 验证集群可正常访问Github
直接使用K8s临时Pod做连通性验证,无需提前准备资源,命令如下:kubectl run -it --rm github-conn-test --image=alpine:3.18 --restart=Never -- wget --spider --timeout=10 https://github.com
执行无报错且返回码为0,即可判定集群内Pod可正常访问Github,完全覆盖Argo CD同步YAML的场景验证。 - 验证集群可正常拉取Artifactory镜像
无需构建新镜像、修改Helm Chart,可提前将一个极小的测试镜像(比如alpine)上传到你的Artifactory仓库作为专用测试镜像,使用临时Pod执行拉取验证,命令如下:kubectl run -it --rm artifactory-pull-test --image=<你的Artifactory仓库地址/测试镜像名:标签> --restart=Never -- true
若Pod正常启动且返回码为0,即可判定集群拉取Artifactory镜像的链路正常,不会对现有业务配置产生任何影响。
Jenkins Groovy集成示例
你可以将上述命令直接封装为Jenkins流水线的独立阶段,所有执行逻辑都通过shell调用实现,示例代码如下:
pipeline { agent any stages { stage('校验Jenkins与集群连通性') { steps { sh label: '集群连通性检查', script: 'kubectl get pod -n <目标命名空间> --field-selector status.phase=Running' } } stage('校验集群访问Github能力') { steps { sh label: 'Github连通性检查', script: 'kubectl run -it --rm github-conn-test --image=alpine:3.18 --restart=Never -- wget --spider --timeout=10 https://github.com' } } stage('校验集群拉取Artifactory镜像能力') { steps { sh label: 'Artifactory镜像拉取检查', script: 'kubectl run -it --rm artifactory-pull-test --image=<你的Artifactory测试镜像地址> --restart=Never -- true' } } } post { success { echo "全部Sanity测试项通过,基础设施状态正常" } failure { echo "Sanity测试失败,请检查本次基础设施变更配置" // 可在此处扩展告警逻辑,如发送邮件、企业微信通知等 } } }
额外优化建议
你可以将该流水线配置为基础设施变更流水线的后置触发任务,每次DevOps工具链、K8s集群配置变更完成后自动执行,完全替代原有手动测试流程,无需人工介入。
内容的提问来源于stack exchange,提问作者erv2
相关产品推荐
相关产品推荐

