基于Tekton和ArgoCD的GitOps实战
来源:admin
发布时间:2022-08-22 10:54:59
点击数:
一、Tekton
Tekton 为 CI/CD 系统提供了诸多好处(主要用于CI):
可定制:Tekton 是完全可定制的,具有高度的灵活性,我们可以定义非常详细的构建块目录,供开发人员在各种场景中使用。 可重复使用:Tekton 是完全可移植的,任何人都可以使用给定的流水线并重用其构建块,可以使得开发人员无需"造轮子"就可以快速构建复杂的流水线。 可扩展:Tekton Catalog 是社区驱动的 Tekton 构建块存储库,我们可以使用 Tekton Catalog 中定义的组件快速创建新的流水线并扩展现有管道。 标准化:Tekton 在你的 Kubernetes 集群上作为扩展安装和运行,并使用完善的 Kubernetes 资源模型,Tekton 工作负载在 Kubernetes Pod 内执行。 伸缩性:要增加工作负载容量,只需添加新的节点到集群即可,Tekton 可随集群扩展,无需重新定义资源分配或对管道进行任何其他修改。
Task:Task 为构建任务,是 Tekton 中不可分割的最小单位,正如同 Pod 在 Kubernetes 中的概念一样。在 Task 中,可以有多个 Step,每个 Step 由一个 Container 来执行。 TaskRun:PipelineRun 被创建出来后,会对应 Pipeline 里面的 Task 创建各自的 TaskRun。一个 TaskRun 控制一个 Pod,Task 中的 Step 对应 Pod 中的 Container。当然,TaskRun 也可以单独被创建。 Pipeline:Pipeline 由一个或多个 Task 组成。在 Pipeline 中,用户可以定义这些 Task 的执行顺序以及依赖关系来组成 DAG(有向无环图)。 PipelineRun:PipelineRun 是 Pipeline 的实际执行产物,当用户定义好 Pipeline 后,可以通过创建 PipelineRun 的方式来执行流水线,并生成一条流水线记录。 PipelineResource:表示Pipeline输入资源,比如GitHub上的源码,或者Pipeline输出资源,例如一个容器镜像或者构建生成的jar包等。
二、Argo CD
Argo CD是用于Kubernetes的声明性GitOps持续交付工具,可以在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在Git提交时跟踪对分支,标签的更新或固定到清单的特定版本。
Argo CD的主要功能
可搭配使用各种配置管理工具(如 ksonnet/jsonnet、Helm 和 kustomize)使应用程序与 Git 中定义的保持一致; 将应用程序自动部署到指定的目标环境; 持续监控已部署的应用程序; 基于 Web 和 CLI 的操作,以及应用程序可视化; 部署或回滚到 Git 仓库中提交的应用程序的任何状态(这也是使用 Git 进行版本管理的一大好处); PreSync、Sync、PostSync hooks 以支持复杂的应用程序部署策略(例如:blue/green 、canary upgrades); SSO 集成(OIDC、LDAP、SAML 2.0、GitLab、Microsoft、LinkedIn),这些是企业比较需要的功能; Webhook 集成(GitHub、BitBucket、GitLab)。 可以独立使用,也可以作为现有 Pipeline 的一部分使用,例如与 Argo Workflow、Jenkins 以及 GitLab CI 等配合使用;
Aego CD中的几个主要组件:
API服务:API服务是一个gRPC/REST服务,它暴露了Web暴露了 Web UI、CLI 和 CI/CD 系统使用的接口。 仓库服务:存储仓库服务是一个内部服务,负责维护保存应用程序清单Git仓库的本地缓存。 应用控制器:应用控制器是一个Kuberntes控制器,它持续watch正在运行的应用程序并将当前的实时状态与所期望的目标状态进行比较。
三、总结