CI/CD Architecture
项目管理
项目促进了多集群权限控制的成员、组和角色管理。它们还支持应用程序和部署组管理,以构建应用程序构建和部署管道。
在一个项目中,可以管理多个应用程序和部署组,它们之间的关系以 M:N 格式构建。例如,既可以用于开发环境也可以用于生产环境的应用程序可以作为部署组的一部分进行部署。
部署组与数据平面集群之间的关系可以逻辑上组织为 M:N。您可以在一个部署组中注册多个数据平面集群,以 GitOps 方式部署应用程序。
应用程序构建管理
现代化平台通过从开发团队获取源代码并生成准备好用于 Kubernetes 部署的 Docker 镜像来简化应用程序构建。此过程允许通过用户友好的 UI 进行管道配置,而无需编写脚本。此外,该平台集成了诸如 Gitea、Nexus 和 Harbor 等基本工具,用于源代码管理、库管理和镜像存储:
- Gitea(源管理):管理代码库。
- Nexus(二进制管理):存储和管理必要的库。
- Harbor(镜像注册表):存储构建的容器镜像。
构建过程遵循以下步骤:
- 开发人员将源代码和库上传到 Gitea 和 Nexus。
- Tekton 构建管道使用上传的资源编译构建。
- 完成后,生成的容器镜像上传到 Harbor 镜像注册表。
整个过程通过用户控制台进行管理,CICD 后端自动化构建管道和镜像上传。
应用程序部署管理
一个 Deployment Group 由应用程序部署的目标环境组成。这些环境对应于 Kubernetes 集群,并与各种 Kubernetes 服务兼容,包括 AKS、EKS、IKS 和 Native Kubernetes。每个部署组允许选择多个 Kubernetes 集群和指定的命名空间。当在部署组内触发部署时,应用程序将部署到所有选定集群的指定命名空间。
部署管理的关键特性包括:
- 在一个部署组内部署多个应用程序。
- 为每个应用程序定义部署类型(例如,Kubernetes 部署)。
- 在部署时自动生成 Kubernetes 部署清单(YAML)。
- 将 YAML 清单保存到 Git 服务器并通过 ArgoCD 应用它们。
基于 GitOps 的部署
通过 Cloud ZCP 控制台进行的部署遵循 GitOps 方法论,其中 Git 作为管理已部署资源的单一真实来源。CICD 后端根据应用程序配置生成 Kubernetes 清单,并将其提交到 GitOps 存储库。ArgoCD 作为 GitOps 控制器,持续监控并将更改应用于数据平面中的指定命名空间。