云原生时代:从Jenkins到Argo Workflows,构建高效CI Pipeline
发布网友
发布时间:2024-10-08 06:30
我来回答
共1个回答
热心网友
时间:2024-11-15 19:40
Argo Workflows
Argo Workflows是用于在Kubernetes上编排Job的开源云原生工作流引擎。它可以轻松自动化和管理Kubernetes上的复杂工作流程,适用于各种场景,包括定时任务、机器学习、ETL和数据分析、模型训练、数据流pipline、CI/CD等。
Kubernetes Jobs只提供基础的任务执行,但无法定义步骤依赖关系和顺序、缺乏工作流模版、没有可视化界面,也不支持工作流级别的错误处理等。对于批处理、数据处理、科学计算、持续集成等业务场景,Kubernetes Job无法胜任。
CI与Jenkins
持续集成和持续部署(CI/CD)是软件开发生命周期中的重要部分,它允许团队以敏捷流程开发应用并提高所构建应用程序的质量。持续集成(CI)是面向开发者的自动化流程,经测试、构建等步骤,有助于更频繁、可靠地将代码变更提交到主分支。
Jenkins作为CI/CD领域最常见的解决方案,具有开源免费、插件丰富、社区成熟等诸多优点,但仍然存在一些问题,尤其是云原生大背景的当下:
•非kubernetes原生;
•随着pipeline和插件的增加,Jenkins会面临性能瓶颈;
•自动扩展能力不足,并发不足,运行时间长,空闲计算浪费成本;
•维护成本方面,虽然Jenkins的插件生态系统丰富,但这也可能导致插件版本不兼容、更新不及时或安全漏洞等问题,管理插件更新和权限是一个持续的挑战;
•项目隔离/权限分配方案的缺陷等。
Argo Workflows与Jenkins的对比
相比于Jenkins,Argo Workflows有诸多优势。Argo Workflows构建在Kubernetes之上,使其具有Kubernetes经过时间考验的优势,其Autoscaling和并发等能力,使得Argo Workflows可以处理大规模的pipelins,具有更快的运行速度,和更低的费用/使用成本,让开发者更加聚焦业务功能和为客户提供、传播价值;并且与Argo生态的Argo CD、Argo Rollout、Argo Event的无缝集成,为CI等场景提供更强大的能力。您可以基于Argo Workflows来构建更加云原生、大规模、高效率、低成本的CI Pipeline。
ACK One Serverless Argo工作流的CI Pipeline
ACK One Serverless Argo工作流作为一款完全遵循社区规范的全托管式Argo Workflows服务,致力于应对大规模计算密集型作业,通过集成阿里云ECI实现自动扩展和极致弹性、按需扩容以最小化成本,通过使用spot ECI(抢占式ECI实例)可以降低80%成本。
CI Pipeline 概述
基于ACK One Serverless Argo工作流集群构建CI Pipeline,主要使用BuildKit实现容器镜像的构建和推送,并使用BuildKit Cache加速镜像的构建,使用NAS来存储Go mod cache加速go test和go build,最终大幅加速CI Pipeline流程。
我们将实现的CI Pipeline的Cluster Workflow Template预置在工作流集群中(名为ci-go-v1),其中主要包含3个步骤:
1.Git Clone&Checkout:Clone Git仓库,Checkout到目标分支;并获取commit id。
2.Run Go Test:通过参数控制是否运行,使用NAS存储Go mod cache进行加速。
3.Build&Push Image:
a.使用BuildKit构建和推送容器镜像,并使用BuildKit Cache中 registry类型cache来加速镜像构建;
b.镜像tag默认使用 {container_tag}-{commit_id} 格式,可在提交工作流时通过参数控制是否追加commit id;
c.推送镜像的同时,也会推送覆盖其latest镜像。
您可执行以下步骤完成CI Pipeline的运行,详细步骤请参见最佳实践:
1.在工作流集群中准备好ACR EE的凭据和NAS存储卷
2.基于预置模板启动工作流(workflow)运行CI Pipeline
预置CI Pipeline模板
工作流集群中默认已经预置了名为ci-go-v1的工作流模板(ClusterWorkflowTemplate),yaml如下所示,详细参数说明请参见最佳实践:
在控制台运行CI Pipeline
1.登录ACK One工作流集群控制台;
2.在基础信息,开启工作流控制台(Argo),并访问进入页面;
3.左侧菜单栏Cluster Workflow Templates,单击ci-go-v1预置模板进入详情页;
4.单击+SUBMIT,在右侧填入您的参数,单击下方+SUBMIT。
参数说明:
执行完以后,可在Argo UI的workflow详情页查看运行情况,如下所示:
总结
ACK One Serverless Argo工作流作为全托管的Argo工作流服务,可以帮助您实现更大规模、具有更快的运行速度、及更低成本的CI Pipeline,与ACK One GitOps(Argo CD)、Argo Event等事件驱动架构可以构建完整的自动化CI/CD Pipeline。
欢迎加入ACK One客户交流钉钉与我们一同交流。(钉钉群号:35688562)
相关链接:
[1] Argo Workflows
argoproj.github.io/argo...
[2] ACK One Serverless Argo工作流
help.aliyun.com/zh/ack/...
[3] 抢占式ECI实例
help.aliyun.com/zh/eci/...
[4] BuildKit
github.com/moby/buildki...
[5] BuildKit Cache
github.com/moby/buildki...
[6] 最佳实践
help.aliyun.com/zh/ack/...
[7] ACK One工作流集群控制台
account.aliyun.com/logi...
[8] ACK One GitOps
help.aliyun.com/zh/ack/...
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。 欢迎关注 “阿里云基础设施”同名 微信、 微博、 知乎 获取关于我们的更多信息~