赞
踩
当前微服务和云原生应用解决方案日趋成熟, 应用架构的细分和服务间的解耦使得服务有了独立发布的能力,容器化与Kubernetes也已成为微服务应用部署的标准方式。由此带来构建部署的频率提升对CI/CD工具的并发性能、扩容能力以及稳定性带来新的挑战。在云原生时代下,传统的CI/CD工具的缺点越来越明显,基于Kubernetes 能力打造新的云原生CI/CD平台逐渐成为主流。
例如Jenkins 作为老牌流水线框架被大家所悉知,它依靠庞大的插件生态,占据了目前大部分的企业级 CI/CD 引擎的份额。但在云原生时代,Jenkins 也暴露出很多的问题,Master单点故障、磁盘存储、内存占用、并行构建性能等。因此Jenkins 也推出了 Jenkins X 作为基于 Kubernetes 的新一代流水线引擎。同时还有像Tekton、Argo CD等较为流行的基于 Kubernetes 原生的CI/CD工具。
下面我们就来对Tekton、Jenkins X、Argo CD等主流云原生CI/CD工具进行对比。在具体比较之前,让我们先了解一些基础内容。
Tekton 是一个基于 Kubernetes 的云原生 CI/CD 开源框架,属于 CD 基金会的项目之一。Tekton 通过定义 CRD 的方式,让用户以灵活的自定义流水线以满足自身 CI/CD 需求。
Tekton架构
Tekton 引入了几个新的 CRD,包括 Task、Pipeline、TaskRun 和 PipelineRun
l Task: Task 为构建任务,是 Tekton 中不可分割的最小单位,正如同 Pod 在 Kubernetes 中的概念一样。在 Task 中,可以有多个 Step,每个 Step 由一个 Container 来执行。
l Pipeline: Pipeline 由一个或多个 Task 组成。在 Pipeline 中,用户可以定义这些 Task 的执行顺序以及依赖关系来组成 DAG(有向无环图)。
l PipelineRun: PipelineRun 是 Pipeline 的实际执行产物,当用户定义好 Pipeline 后,可以通过创建 PipelineRun 的方式来执行流水线,并生成一条流水线记录。
l TaskRun: PipelineRun 被创建出来后,会对应 Pipeline 里面的 Task 创建各自的 TaskRun。一个 TaskRun 控制一个 Pod,Task 中的 Step 对应 Pod 中的 Container。当然,TaskRun 也可以单独被创建。
一个 Pipeline 通常由多个 Task 组成,这些 Task 串、并执行。而每个 Task 中,又有若干个 Step ,Step 是串行执行的。
同时 Pipeline 还定义了输入、输出,通常输入 Git 仓库,输出镜像。在运行时,Pipeline 对象作为一个模板,被 PipelineRun 引用,创建运行实例。
通过PipelineRunController 监听 PipelineRun 对象,将 PipelineRun 中所有的 Task 构建为一张有向无环图,创建 TaskRun。而 TaskRunController 监听 TaskRun 对象的变化,根据 TaskRun 引用的 Task,创建 Pod 运行 Step。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。