Today, no lead developer can ignore cloud-native technology. Developers monitor what actions competitors take when it comes to containers, distributed applications and microservices. Falling behind is not an option. How can you create the optimal ecosystem? And how do you ensure harmony within your Kubernetes or Docker Swarm environment? In this blogpost we discuss which cloud-native technologies are needed to get started with a Kubernetes environment. We will also discuss a number of tools that have become the ‘de facto’ standard.
To run microservices or containers a software stack is required.
The Cloud Native Computing Foundation (CNCF) hosts critical components of this software stack. The foundation creates and maintains an ecosystem of open source and vendor-neutral projects. Projects that are part of the CNCF receive funding and support for the further development of their technology(s) or tool(s). Nevertheless, the projects continue to operate independently of each other and are maintained by their own team. The CNCF is part of The Linux Foundation.
The CNCF Landscape
The CNCF is home to a wide variety of cloud-native technologies and tools, ranging from development and orchestration to monitoring and analysis tools. For almost every purpose, the foundation refers to relevant solutions that they believe deliver quality. The foundation bundles these insights into the development of the CNCF landscape, a large plate that visualizes the possibilities when you design a container orchestration platform. The CNCF landscape can be broken down into several categories, helping to identify the right tools for the right purpose. We will explain the different categories below:
1. App Definition & Development
This category includes technologies and tools that support the development of apps. Think of database management systems, which ensure data is stored correctly and is only accessible to authorized users. Streaming and messaging tools, that facilitate communication between services and apps are also available.
In addition, the category includes application definition and image build tools. This broad category can be divided into two segments: developer-focused tools helping to containerize applications and operations-focused tools for standardized app deployment. Tools for continuous integration and continuous delivery (CI/CD) are the last part of the category.
2. Orchestration & Management
The Orchestration & Management category includes – as the name might suggest – tools that help orchestrate and manage applications. This includes orchestration and scheduling tools that support deploying a container across a cluster.
A distributed application is usually divided into several microservices communicating with each other. Service discovery tools help these microservices locate each other and enable communication. Communication between microservices often takes place via APIs. API gateways (also included in this category) manage this communication.
Runtime is a category within the CNCF landscape that encompasses all the tools and technologies required to run a container in a cloud-native environment. These include for example tools for creating the code needed to start the container, also known as the container runtime. Also consider cloud-native network tools, which superimpose a virtual network on top of existing networks. Distributed applications can communicate with each other via such an overlay network. The category also includes cloud-native storage tools. These help ensure that container data is preserved, even if a container moves to another location.
Provisioning is the fourth category that characterizes the CNCF landscape. The category includes tools that help create the right foundation for building and deploying Cloud-native apps. For example, how do you create, manage and configure such an environment?
This category also includes automation and configuration tools that help set up and configure resources more quickly, or help to define container registries. Tools to manage security and compliance are also included in this category.
5. Observability & Analysis
Monitoring and analyzing possible problems is of great importance for monitoring the availability of an application and being able to quickly resolve unexpected disruptions. By continuously monitoring every part of an application and the container orchestration, anomalies are immediately detected for them to be addressed without delay.
For this purpose, the category includes tools for recording log files and monitoring solutions for collecting measured values. Also consider tools in the field of chaos engineering, a discipline that considers technical problems to be inevitable. Chaos engineering tools therefore deliberately create random disruptions in an application and thus test the resilience of an app.
Within the CNCF landscape, several projects have now become ‘de facto’ standards for cloud-native technology. Here are some popular examples:
With the help of monitoring, you gain insights into the health of a Kubernetes implementation. In this field Prometheus has become the tool of choice for many users. With the help of Prometheus you can monitor servers, virtual machines and databases, which provides insight into the performance of applications and infrastructure. The tools help, among other things, to display your data in handy graphs. It is also possible to set and send alarm notifications via e-mail and Slack.
Manage applications and images
Package managers help deploy and manage distributed applications. Helm is a widely used tool in this area. With the help of Helm you can roll out ‘Charts’, which describe the configuration of an application. Charts not only simplify the rollout of complex applications, they also ensure a replicable installation. Do you want to change the configuration of an application? With Helm you do this by simply rolling out a new version of the Chart with a different configuration.
Continuous Integration & Continuous Delivery
Continuous Integration & Continuous Delivery (CI/CD) tools accelerate the development process. These tools ensure that code is rolled out with fewer errors in the production environment and thus increase the productivity of developers. A popular tool in this area is Argo, a container workflow engine for creating native workflows and pipelines. With the help of this tool, every step of a workflow can be accommodated in a container. Argo ensures that the output from one container is transferred to the next container and that the workflow is completed step by step.
Security is an important point of attention for every company, when using cloud-native technology and Kubernetes this priority still applies. Container registry helps you to secure containers. Harbor is a popular choice in this area. One of its features is protecting images by applying policy and function-based access control. It is also capable of signing trusted images. Another feature of Harbor is scanning images for vulnerabilities.
Continuously developing and moving
The CNCF landscape is constantly evolving and therefore continuously supplemented with new projects. An up-to-date overview of the landscape is available on the CNCF website. Do you need support with the deployment of Kubernetes? We are happy to think along with you! Contact us for more information.