CNCF Landscape - TheLearnLoop/ExploringKubernetes GitHub Wiki
CNCF is part of Linux Foundation and provides support, oversight and direction for fast-growing cloud native projects.
CNCF projects have a maturity level of sandbox, incubating, or graduated.
Sandbox: Experimental projects not yet widely tested in Production. Eg: k3s Incubating: Projects used successfully in Production by a small number of users with a healthy pool of contributors. Eg : Longhorn Graduated: Projects considered stable, widely adopted, and production-ready, attracting thousands of contributors. Eg: Kubernetes,Helm Archived: Projects that have reached the End of Life and have become inactive. Eg: rkt
NOTE: Graduated and incubating projects are considered stable and are used successfully in production environments.
Cloud Native Landscape is a categorical overview of projects and product offerings in the cloud native space.
"This landscape is intended as a map through the previously uncharted terrain of cloud native technologies. There are many routes to deploying a cloud native application, with CNCF Projects representing a particularly well-traveled path"
The goal of the cloud-native landscape is to compile and organize all cloud-native open-source projects and proprietary products into categories, providing an overview of the current ecosystem.
Link: https://landscape.cncf.io/?fullscreen=yes
High-level overview of Landscapes layers, columns, and categories:
- Provisioning - Tools to lay infrastructure foundation
- Runtime layer - Tools that deal with everything about containers
- Orchestration and management layer - Tools to manage your containers and applications
- Application and Definition and Development layer - Tools to build or deploy applications
- Observability and Analysis column - Tools to monitor applications
- Platforms - They bundle multiple tools from different layers together.
A little more detail with examples:
Provisioning:
- First, there is the provisioning layer with the tools needed to lay the infrastructure foundation.
- You'll find tools to automatically configure, create, and manage the infrastructure, as well as for scanning, signing, and storing container images.
- Automation and Configuration : Ansible, Chef Infra, OpenStack, Puppet, Terraform, VMWare vSphere ...
- Container Registry : Azure Registry, Google Container Registry ...
- Security and Compliance : Chef Inspec ...
- Key Management : Vault ...
Runtime layer:
- is where everything revolves around containers and what they need to run in a cloud native environment.
- It encompasses everything a container needs to run in a cloud native environment. That includes the code used to start a container, referred to as a container runtime; tools to make persistent storage available to containers; and those that manage the container environment networks.
- Tools in this category are used to start and stop containers, help them store data, and allow them to talk to each other.
- Cloud Native Storage : Gluster, Longhorn ...
- Container Runtime : contained, crio, kata, rkt ...
- Cloud Native Network : cilium, flannel, cni ...
Orchestration and management layer:
- contains the tools to orchestrate and manage your containers and applications — in other words, the tools needed to create the platform on which applications are built.
- Here you’ll find tooling to handle running and connecting your cloud native applications. This section covers everything from Kubernetes itself, one of the key enablers of cloud native development to the infrastructure layers responsible for inter app, and external communication. Inherently scalable, cloud native apps rely on automation and resilience, enabled by these tools.
- Scheduling and Orchestration : Apache Mesos, Docker swarm, Crossplabe, Fluid, Kubernetes, Open Nebula ...
- coordination and service discovery : CoreDNS, etcd, ...
- Remote Procedure call : gRPC ...
- Service Proxy : envoy, nginx, traefik ...
- API Gateway : akana ...
- Service Mesh : Istio, Linkerd, Traefik mesh ...
Application and definition and development layer:
- is concerned with the tooling needed to enable applications to store and send data as well as with the ways we build and deploy our applications.
- As the name suggests, the application definition and development layer focuses on the tools that enable engineers to build apps.
- Database : Apache Hadoop, Cassandra, dragonfly, MongoDB, Oracle ...
- Streaming and Messaging : Kafka, RabbitMQ,
- Application Definition and Image build : bitnami, Chef habitat, Docker compose, Gradle, podman, ...
- continuous Integration and Delivery : Azure pipeline, Github actions, gitlab, jenkins, JenkinsX ...
Next to the layers, there are two columns. The Observability and Analysis column includes tools that monitor applications and flag when something is wrong. Since all layers have to be monitored, this category runs across all of them.
- Observability is a system characteristic describing the degree to which a system can be understood from its external outputs. Measured by CPU time, memory, disk space, latency, errors, etc., computer systems can be more or less observable. Analysis is an activity in which you look at this observable data and make sense of it.
- To ensure there is no service disruption, you'll need to observe and analyze every aspect of your application so every anomaly gets detected and rectified right away. This is what this category is all about. It runs across and observes all layers which is why it's on the side and not embedded in a specific layer.
- Observability and Analysis Monitoring : Appdynamics, dynatrace, falcon, Fradle, grafana, Prometheus ...
- Observability and Analysis Logging : Fluentd, logstash
- Observability and Analysis Tracing : helios
- Observability and Analysis Chaos engineering : Chaos mesh ...
- Observability and Analysis Continuous Optimization : crane ...
And finally, there are Platforms. Platforms don't provide new functionality, instead, they bundle multiple tools across the different layers together, configuring and fine-tuning them so they are ready to be used. This eases the adoption of cloud native technologies and may even be the only way organizations are able to leverage them.
- Platforms bundle different tools from different layers together, solving a larger problem.
- You'll probably notice, all platforms revolve around Kubernetes. That's because is at the core of the cloud native stack. Platform - Certified Kubernetes - Distribution : Oracle OCNE, AWS EKS-d , Redhat OpenShift, Rancher ... Platform - Certified Kubernetes - Hosted : AWS EKS, GKE, Oracle Container Engine OKE, AKS, Redhat Openshift dedicated... Platform - Certified Kubernetes - Installer : Anazon EKS Anywhere, Kind, minikube, OpenNebula, puppet-kubernetes, rancher Platform - PaaS/Container Service - portainer.io, ...