6 CNCF Projects for CI/CD
Nowadays, software development teams need a more agile way of working to quickly bring code to life. And CI/CD has been a big enabler for more rapid development models for cloud-native software. Whereas continuous integration (CI) is about building and testing code, continuous delivery (CD) takes this one step further to deploy code.
A well-established CI/CD pipeline validates quality standards such as code reliability, compliance and security. But running code through each step of the build phase can be a cumbersome process, and automating these checks can reduce time and room for human error. Setting up a CI/CD pipeline from scratch can be a challenge, not to mention a financial burden if adopting vendor tools. Thankfully, the CNCF has many open source tools and projects to help accelerate your CI/CD process. Below, we’ll review some of the CNCF-supported CI/CD tools to see how they might aid your software delivery requirements.
1. Argo
Workflow engine for Kubernetes
Argo offers a handful of cloud-native projects to assist with operational tasks on Kubernetes. Argo Workflows, specifically, is an engine to help orchestrate jobs on Kubernetes. Implemented as a Kubernetes CustomResourceDefinition (CRD), Argo Workflows can create multi-step custom workflows that call each unit as a container. This can help engineers construct and run native CI/CD pipelines on Kubernetes and run multiple jobs in parallel.
Argo Workflows offers a complete UI to stitch together workflows visually as well as other features to build reusable workflow templates to store on a cluster. Argo Workflows is fully open source with over ten thousand stars on GitHub and is also an incubating CNCF project at the time of writing.
2. Flux
Extensible CD toolkit for Kubernetes
Flux is a K8s-native continuous delivery solution that can help development teams achieve GitOps. Flux excels at keeping Kubernetes clusters in sync with configuration sources, like Github or GitLab repositories. It’s relatively straightforward to bootstrap a Flux on a K8s cluster and deploy an application, and the project comes very well-documented with instructions for Azure, AWS, Helm and other use cases. A GitOps approach can help enable progressive delivery with feature flags or canary builds. Written in Go, Flux is on version 2 and is currently incubating within the CNCF.
3. Brigade
Event-driven scripting for Kubernetes
CI/CD pipelines inherently require configuring a good deal of automation. Brigade is a tool that enables you to chain containers together to build out a pipeline. This could include running unit tests for a new GitHub push, updating a MongoDB database or other actions. Brigade can also intercept events from tools such as Slack to trigger scripts to be run. At the time of writing, Brigade is on version 2 and is a sandbox project within the CNCF.
4. Keptn
Cloud-native application life cycle orchestration
Continual development for cloud-native software requires a constant lens into performance. This is crucial for SREs to meet internal service level objectives (SLOs) and make good on reliability promises. Keptn is a new open-source sandbox CNCF project that can help in this regard. It runs on Kubernetes and offers cloud-native application life cycle orchestration. Keptn is made up of a control plane that enables organizations to declare SLOs and for Keptn to automate observability and SLO-based decisions. Such a tool helps to ensure only quality code is released through each development phase. The Keptn roadmap is made publicly available here so you can track its progress.
5. OpenGitOps
A working group to define GitOps
Lately, there’s been a lot of talk about GitOps for operating cloud-native infrastructure. “Declarative configuration is the key to dealing with infrastructure at scale,” says Kelsey Hightower, staff developer advocate at Google. Yet, defining GitOps is somewhat nebulous—so far, GitOps is more of a concept than referring to any specific tool.
The GitOps Working Group, under the CNCF App Delivery SIG, is a group aiming to provide a more standards-based approach to GitOps. “The focus of the GitOps WG is to clearly define a vendor-neutral, principle-led meaning of GitOps,” the according to the group charter. The OpenGitOps repository holds materials produced by the OpenGitOps Working Group. While no specification or standard has yet been proposed, the group is set to identify gaps in the landscape and promote better interoperability. With founding members such as Amazon, Azure, CodeFresh, Crayon, GitHub, Red Hat and Weaveworks, OpenGitOps will be an exciting force to follow.
6. OpenKruise
Automate application management on Kubernetes
OpenKruise, now hosted as a CNCF sandbox project, is a project that extends some core Kubernetes components. A key feature is its advanced workloads such as CloneSet, Advanced StatefulSet, Advanced DaemonSet and BroadcastJob, which bring advanced abilities. For example, the in-place update feature enables operators to update containers without recreating pods. OpenKruise is designed to work in Kubernetes and is based on CRD extensions, providing automation for deployment, upgrades and availability protection.
Open Source CI/CD Projects
The seemingly simple act of moving code from a source code repository to a production environment is a surprisingly complex endeavor. The tools above each present methods to assist the various aspects of this mission. Outside of the CNCF, the CD Foundation is another excellent resource for open source CI/CD projects. The Foundation oversees perhaps the most popular CI/CD tool, Jenkins, as well as other projects such as Jenkins X, Spinnaker and Tekton.