Skip to main content

CI/CD Architecture

Project Management​

Projects facilitate Member, Group, and Role management for multi-cluster permission control. They also support Application and Deployment Group management for structuring application builds and deployment pipelines.

Project Management Logical Architecture

Within a project, multiple applications and deployment groups can be managed, and their relationships are structured in an M:N format. For instance, an application for both development and production environments can be deployed as part of a Deployment Group.

The relationship between the Deployment Group and the Data Plane Cluster can be logically organized as M: N. You can register multiple Data Plane Clusters in one Deployment Group to deploy applications in a GitOps fashion.

Application Build Management​

The Modernization Platform streamlines application builds by retrieving source code from development teams and generating Docker images ready for Kubernetes deployment. This process allows for pipeline configuration through a user-friendly UI without requiring scripting. Additionally, the platform integrates essential tools like Gitea, Nexus, and Harbor for source control, library management, and image storage:

  • Gitea (Source Management): Manages code repositories.
  • Nexus (Binary Management): Stores and manages necessary libraries.
  • Harbor (Image Registry): Stores built container images.

The build process follows these steps:

  1. Developers upload source code and libraries to Gitea and Nexus.
  2. The Tekton build pipeline compiles the build using the uploaded resources.
  3. Upon completion, the resulting container image is uploaded to the Harbor Image Registry.

The entire process is managed through the user console, with the CICD Backend automating the build pipeline and image uploads.

Application Build & Deployment Architecture

Application Deployment Management​

A Deployment Group consists of target environments for application deployment. These environments correspond to Kubernetes clusters and are compatible with various Kubernetes services, including AKS, EKS, IKS, and Native Kubernetes. Each Deployment Group allows the selection of multiple Kubernetes clusters and a designated Namespace. When a deployment is triggered within a Deployment Group, the application is deployed to the specified Namespace across all selected clusters.

Key features of deployment management include:

  • Deploying multiple Applications within a Deployment Group.
  • Defining deployment types (e.g., Kubernetes Deployment) for each Application.
  • Automatically generating Kubernetes Deployment Manifests (YAML) upon deployment.
  • Saving YAML manifests to a Git server and applying them via ArgoCD.

GitOps-Based Deployment​

Deployment via the Cloud ZCP console follows the GitOps methodology, where Git serves as the single source of truth for managing deployed resources. The CICD Backend generates Kubernetes manifests based on application configurations and commits them to a GitOps repository. ArgoCD, as the GitOps controller, continuously monitors and applies changes to the specified Namespace in the Data Plane.