What is CNCF- Origin, Landscape, Projects

What is CNCF- Origin, Landscape, Projects

Table of contents

No heading

No headings in the article.

When it comes to the tech industry, there are a variety of domains that are rising on a daily basis. There are various tools emerging that help in automation, making the development process easy. There are various foundations that arise and solve the major challenges faced by developers. One such foundation is Cloud Native Computing Foundation also referred to as CNCF

At the end of this blog, you'll understand:

  • What is CNCF?
  • History of CNCF?
  • What is CNCF Landscape?
  • How to navigate the landscape?
  • What problem is CNCF trying to solve?

Before understanding what is CNCF, we need to understand what is Linux Foundation.

The Linux Foundation (LF) is a non-profit technology consortium founded in 2000 as a merger between Open Source Development Labs and the Free Standards Group to standardize Linux, support its growth, and promote its commercial adoption. Additionally, it hosts and promotes the collaborative development of open-source software projects. It is a major force in promoting diversity and inclusion in both Linux and the wider open-source software community.

Under Linux Foundation, there are various other foundations. You can consider Linux Foundation as the "Foundation of Foundations". The Linux Foundation provides a neutral, trusted home for developers to collaborate on hundreds of open technology projects.

Screenshot 2022-09-11 125818.png

You can explore various Open Source projects under LF here.

Now, that you've understood what is Linux Foundation, let's understand it's one of the foundations which is the Cloud Native Computing Foundation (CNCF).

CNCF was founded in 2015 in order to advance container technology. The main goal of the CNCF is to establish a vendor-agnostic community of developers, end users, and IT technology and service providers to collaborate on open-source projects.

It was announced alongside Kubernetes 1.0, an open source container cluster manager, which was contributed to the Linux Foundation by Google as a seed technology. There are various founding members of CNCF including Google, CoreOS, RedHat, Twitter, etc.

Dan Kohn, who helped to launch the core infrastructure, led CNCF as executive director until May 2020.

f0792b18385c730e8942b69f236dddca_XL.jpg

After May 2020, CNCF announced Priyanka Sharma, director of Cloud Native Alliances at GitLab, would step into a general manager role in his place.

download.jfif

In August 2018 Google announced that it was handing over operational control of Kubernetes to the community. Since its creation, CNCF has launched a number of hosted sub-projects.

In January 2020, the CNCF annual report for the previous year was issued and reflected significant growth to the foundation across the membership, event attendance, training, and industry investment. In 2019, CNCF grew by 50% since the previous year with 173 new members and nearly 90% growth in end-users.

Similarly to Linux Foundation, there are several Open Source projects under CNCF to which people around the world contribute, and use the new tools that are emerging. All these Open Source projects have categories and are listed under the CNCF Landscape. We'll discuss CNCF Landscape shortly.

Projects under CNCF

All projects of the Cloud Native Computing Foundation are classified with one of three stages of maturity:

  • Graduated
  • Incubated
  • Sandboxed

Sandboxed Projects: The CNCF Sandbox is the entry point for early-stage projects. These Open Source projects are under experimentation and are not preferred to use in production.

Incubated Projects: These projects are considered stable and are used in production. The projects listed under the Incubated category have come from the Sandbox category after being reviewed by certain specific tags like technical advisory groups and fulfilling certain conditions.

Graduated Projects: After a project gets a large number of contributors contributing to it, rise in the stability of the project, and the project is moved to the Graduated category. For eg. Kubernetes, Prometheus, Containerd, etc.

Here are some of the projects listed below:

graduate.png

INCUBTING.png

You can find more about the projects on the CNCF website.

Now that you've come to know what are the kind of projects hosted under CNCF, you'll definitely get an idea of the number of projects hosted under CNCF. A LOT!

So, How does one know which is the right tool for the production to be used? Which project I can contribute to? Where can I find the right set of tools/Projects in a category?

The answer is CNCF Landscape

CNCF landscape.webp

The goal of cloud native landscape is to compile and organize all the cloud native open source projects into categories. Any organization can ask to submit their project under CNCF by raising a Pull Request and fulfilling certain conditions.

But the question comes, How do you use this landscape? or more accurately, How do you navigate through this landscape?

Before navigating through the landscape, let's understand this little thing:

When looking at the landscape, you'll note a few distinctions:

  • Projects in large boxes are CNCF-hosted open source projects. Some are still in the incubation phase (light blue/purple frame), while other's are graduated projects (dark blue frame).

  • Projects in small white boxes are open source projects.

  • Projects in small gray boxes are proprietary products.

Screenshot 2022-09-25 104206.png

Let's try to navigate through the landscape

When it comes to navigating through the landscape, there are different criteria that one can follow, which are listed below:

  1. App Containerization: In order to deploy the application, it is necessary to containerize the application first. Some of the containerization tools are docker, nerdctl, etc. In order to containerize an application, you're required to build an image out of it. In this category, you can see there are different types of tools that you can use. app.png
  2. Infra Provisioning: After you've containerized your application, it's time for you to decide in which cloud you're going to deploy your application. Some of the clouds are AWS, Civo, Google Cloud, etc. There are various infrastructure provisioning tools that give you the power to define your own infrastructure in an automated way. Some of the Infrastructure provisioning tools are Ansible, Chef, etc. infra.png
  3. Container Orchestration: Container orchestration is the automation of much of the operational effort required to run containerized workloads and services. After you're done with picking a cloud and defining your own infrastructure, it's time for you to pick a container orchestrator. There are a lot of container orchestrators, but we generally go for Kubernetes since it's more effective. orchestration.png

  4. Security & Compliance: Security & Compliance is one of the domains which should not be taken into consideration at the last. There are 4C's which are considered when it comes to security.

  • Security at the Cloud level
  • Security at the Cluster level
  • Security at the Container level
  • Security at the Code Level security.png

There are three major things that you've to decide in the orchestration part - CRI, CNI, and CSI.

  • CRI: CRI stands for Container Runtime Interface. This reflects the runtime you'll be using. For eg. Containerd, cri-o, etc. It is to be noted that there are different sets of tools present for runtime. cri.png
  • CSI: CSI stands for Cloud Storage Interface. This reflects what type of storage solution you'll be using. For eg., Many cloud vendors will have their own storage solutions. storage.png
  • CNI: CNI stands for Cloud Network Interface. In order to make your orchestration work, you're required the presence of a network layer. In order to get network layer, You're required a CNI solution for that. network.png
  1. Observability and analysis: There are mainly 4 observability pillars and each of the pillar have its own place in the landscape.
  • Monitoring: Cloud monitoring is a method of reviewing, observing, and managing the operational workflow in a cloud-based IT infrastructure. Tools like Prometheus, cortex, Thanos, etc are widely used. Monitoring.png
  • Tracing: Distributed tracing, also called distributed request tracing, is a method for IT and DevOps teams to monitor applications, especially those composed of microservices. Some of the tools which can be used are EaseAgent, Grafana Tempo, etc. tracing.png
  • Logging: Logging is a method of tracking and storing data to ensure application availability and assess the impact of state transformations on performance. loggin.png
  • Profiling: Profiling tools are used to identify which portions of the program are executed most frequently or where most of the time is spent.

Although you're navigating the landscape now yet there are many tools. Instead of that, we can follow a narrow-down approach.

Service Mesh: Projects like Linkerd , kuma ,Istio, etc are present here. When the project is scaling and maturing, you'll be looking at service mesh options to find the right set of tools. service.png

Well, it's time for me to end up writing this blog as I'll not bore you further. I hope you enjoyed reading this blog.

Feel free to connect with me on Twitter