CNCF (Cloud Native Computing Foundation) as we know its a small organization, and it's not narrowed to a specific type of project, it's so diverse and deal with too many projects and its growing continuously. So there was a need to make these projects interaction and function together. And CNCF-CI is the way to make all these things possible. It's a CI which take care of cross-project interoperability of all cloud-native tech, and which integrates, tests and deploys projects within the CNCF ecosystem.
Why we need Cloud-Native CNCF-CI?
The CNCF is growing continuously, and to make it faster, work smoothly, fix bug fast and make the release quicker, and be more agile there was need of something which can communicate and function with all the cloud-native project, this is what cncf-ci will do - CNCF would like to ensure cross-project interoperability of all cloud-native technologies and show the daily status of builds, deployments, and end-to-end tests on a status dashboard.
Architecture of CNCF-CI
It mainly consists of -
Status Repository Server
This project has three sections a dashboard, status repository server, and a testing system all together make the Cloud Native Computing Foundation ci process. The testing system which is used to validate the build and deployments whenever there will be a commit on stable and HEAD to Arm or x86 architecture on bare metal servers. The CI continuously validates interoperability between each CNCF projects. The status repository server fetches the results generated by the test system, and dashboard displays them.
CNCF-CI Key Features
The crucial primary feature for CNCF CI v2 are - It is going to be Project Centric - That is it will focus and validate CNCF hosted graduated and incubating project first. Increase Collaboration - CI system will integrate with external CI system for retrieving a CNCF projects build status and container artifacts. Agnostic testing - According to Kubernetes release Bare Metal According to architecture - x86 and Arm
CI Dashboard Overview
The below image is the CI dashboard overview, and the highlighted section shows provisioning the test environment for Kubernetes release with selected architecture for the projects. Here we can see the test environment having Kubernetes release v1.13.0 for projects CoreDNS is a success, and we can adjust the Kubernetes version through the drop down and see project CoreDNS success too for different Kube version. The build and deploy section for every project is interactive we can check the build details and deploy by clicking on it, it will show build and deploy job running on GitLab. You can find the dashboard for CNCF-CI here.
Tech flow overview
The tech flow of CNCF-CI is something like - the CI/CD runs on GitLab platform, and it uses Terraform and cloud-init for test environment provisioning, the app deployments are done through Helm and uses Git+yaml files for automating the build and deployments steps. The CI testing-system has four stages - Kubernetes test environment provisioning
Collect the k8s artifacts
provision the packet server and bootstrap k8s
finally, update the dashboard with the results for the status badge
Build pipeline per projects -
Build - Compile or retrieve the binaries and e2e test results.
Package - Create containers and push the created artifacts to gitlab docker registry.
Update - update the build status badge on the CI dashboard.
E2e testing stage per projects Deployments pipeline per plans -
Artifacts - Sum up all the project artifacts from the previous step i.e., build stage
Cross-project - Deploy each project with the help of Helm.
Update Update the deploy status badge on CI dashboard
A Comprehensive Strategy
Cloud Native Computing Approach and Development Principles helps Enterprises to move away form legacy mindset and adapt Next Gen IT.To know more about Cloud Native Computing we recommend taking the following steps-