As we close out 2021, we at Container Journal wanted to highlight the most popular articles of the year. Following is the fourth in our series of the Best of 2021.
I like to use the word “pillar” to describe major “immovable” structural parts of DevOps. Much like a pillar, a column of a building that helps hold the structure up, a DevOps pillar represents a permanent structural part of any well-engineered DevOps methodology. In my engineering framework, described in my book, Engineering DevOps, DevOps is organized in nine pillars of engineering practices categories. The nine pillars of DevOps are leadership, collaborative culture, design for DevOps, continuous integration, continuous testing, elastic infrastructure, continuous monitoring, continuous security and continuous delivery.
Only two years ago when I wrote the book, adoption of container technology was already a dominant part of DevOps solutions, and I wrote an article about the 9 Pillars of Containers Best Practices; at the time, Kubernetes was still competing with other container orchestration solutions for dominance. Today, Kubernetes is the de facto standard container orchestrator, displacing most alternatives. This happened because Kubernetes has the most mature, proven, dynamically scalable, robust open-source software and well-defined architecture, with APIs and services for all major cloud services.
The question now is how Kubernetes benefits each of the nine pillars of engineering DevOps. The answer will help you to understand, in concrete DevOps terms, why Kubernetes has become so dominant when engineering DevOps solutions. Here are the benefits Kubernetes offers for each of the nine pillars of engineering DevOps.
Leadership – Businesses, whose success increasingly depends on a company’s ability to deliver digital services and software quickly, use containers with Kubernetes as essential tools for building, deploying and running applications at scale. Kubernetes helps business leaders to empower the organization to reach next-level performance, deliver innovative new software and features faster and enable multicloud operations for greater agility and resilience.
Collaborative culture – Self-service infrastructures enabled by containers and Kubernetes allows teams to access the resources they need when they need them. This results in more productive and happier teams with fewer impediments and dramatically faster time to deploy, collaborate, get feedback and restore services when needed.
Design for DevOps – Modular applications architected as microservices benefit the most from Kubernetes. Software designed in accordance with twelve-factor app tenets, communicating through networked APIs, work best for scalable deployments on clusters. Kubernetes is optimal for orchestrating cloud-native applications. Modular distributed services are better able to scale and recover from failures.
Continuous integration – During the integration phase, container images are built, and associated setup and run procedures are defined. Small-sized images can reduce the time and resources required to start up a container on a cluster by keeping footprint manageable and reusing existing layers between image updates.
Continuous testing – With Kubernetes, developers and testers can work better together to solve defects quickly and accurately; developers can use the tester’s Kubernetes instance for debugging. This eliminates long delays associated with developers and testers trying to replicate each other’s test environments. Kubernetes also helps testers and developers exchange precise application configuration information quickly.
Elastic infrastructure – With Kubernetes, infrastructure resources are clustered and can be consumed and released elastically, enabling seamless scaling and higher resource utilization. Kubernetes eliminates many of the manual provisioning and other repetitive tasks of enterprise IT operations. In addition, the unified and automated orchestration approaches offered by Kubernetes simplifies multicloud management, enabling more services to be delivered with less work and fewer errors.
Continuous monitoring – Cloud-native applications are constructed with health reporting metrics to enable the platform to manage life cycle events if an instance becomes unhealthy. They produce (and make available for export) robust telemetry data to alert operators to problems and allow them to make informed decisions. Kubernetes supports liveness and readiness probes that make it easy to determine the state of a containerized application.
Continuous security – Complex applications operating over complex distributed infrastructures can be difficult to secure. Cloud-native tools, such as Kubernetes, provide more insight into what is happening within an application, making it easier to identify and fix security problems. The enhanced orchestration controls provided by Kubernetes on the deployment and deployed containerized applications benefit from immutable consistency and improved response times. In addition, the Secrets objects offer a secure way to store sensitive data.
Continuous delivery – Kubernetes offers many capabilities that allow one container to support many configuration environment contexts. The ConfigMaps object, for example, supports configuration data that is used at runtime. This avoids the need for specialized containers for different environment configurations. Declarative syntax used to define the deployment state of Kubernetes-deployed container clusters greatly simplifies the management of the delivery and deployments.
What this means – Some technologies, such as a new DevOps tool, may benefit engineering of one or more pillars of DevOps. Engineering DevOps with Kubernetes offers a lot of benefits for all nine pillars of DevOps. This explains the success of Kubernetes with DevOps, and why the Kubernetes ecosystem continues to expand quickly, enabling new DevOps capabilities built on top of the Kubernetes platform.