Best of 2021 – Kubernetes Enables DevOps-as-a-Service (DaaS)
DaaS is DevOps capabilities made available to users through portals and APIs, on demand. In my earlier blog, Measuring the Value of DevOps-as-a-Service, I explained that a DaaS blueprint has four layers, as follows.
Stakeholders – There are three types of stakeholders: Business, add-dev users and DaaS teams.
Service Access Layer – consists of user portals, APIs and access security.
Service Layer – consists of user services and management services. User services include things like repositories, CI/CD pipelines, sandboxes, test data, configuration data, guides and training. Management services include service catalogs, issues and change requests, SLOs, SLIs, governance policies, experience monitoring and automated tasks.
Resources Layer – includes application stacks, infrastructure resources, tools, infrastructure code and topology data.
Why is DaaS Important?
More and more enterprises are embracing the idea of providing DevOps capabilities, such as pipelines, tools, hardened containers and tech stacks, as a centralized service to support their many application teams.
Business stakeholder benefits include improved return on investment (ROI) relative to the costs of implementing DevOps and net savings derived from reducing bottlenecks in the pipelines. A DaaS also provides enhanced and consistent visibility of DevOps performance across the business application portfolio covered by the DaaS.
App-development users benefit from the ability to work remotely from their desktops wherever they may be, and improved responsiveness to change requests.
DevOps support teams benefit from being able to scale management of support services by centralizing, pooling their efforts across many application teams and pipeline and automating the toil of common DevOps support practices.
What Is Needed for DaaS?
The following are some of the primary ingredients that are required for a viable DaaS.
Persistent version management to act as a permanent source of truth for each version of the application, the pipeline and the infrastructure.
CI/CD platform tools, available on demand, configured according to the data from version management systems.
Application code and images deployed on demand to infrastructure when needed for build and test jobs.
Setup build and test tools available and scalable on demand.
Ephemeral topologies for testing of different apps and scalable for different kinds of tests.
Management capabilities for the DaaS including the ability to monitor performance of each DevOps pipeline instance.
How Does Kubernetes Enable DaaS?
While is feasible to implement DaaS without Kubernetes, Kubernetes simplifies the job, especially when the applications and pipeline tools and tests are are containerized.
The following are examples of capabilities that make Kubernetes a great fit for implementing DaaS.
The ability of Kubernetes to spin up multiple container instances with different scaling policies makes it a perfect fit for CI/CD jobs and activities. A container instance can include build and test resources in addition to applications. For example, Kubernetes can be used to create on-demand clusters on a container-capable CI worker node.
Kubernetes can easily scale infrastructure and worker node configurations to match variable demands for different levels of integration and test workload demands.
The portability of application and orchestration management across private and public cloud platforms and operating system versions allows developers and DevOps teams to build applications and pipelines without worrying about the underlying infrastructure and operating systems that the applications need to run on.
With Kubernetes, developers and testers can work better together, and solve defects quickly and accurately, because 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 helps testers and developers exchange precise information for application configurations quickly.
During the continuous integration phase, small-sized containerized images can reduce the time and resources required to start up a container on a cluster by keeping the footprint manageable and reusing existing layers between image updates.
Since Kubernetes is used in production, the testing stages in the pipeline are more realistic and better match the configurations that applications will face during production.
Automated tests and scripts can be packaged in containers and run as part of a build pipeline against deployment containers, thus producing more consistent results.
Flexible deployment topologies afforded by Kubernetes supports advanced deployment and test scenarios, such as chaos engineering or A/B testing on real production sites, reducing risk and improve resiliency.
Kubernetes supports liveness and readiness probes that make it easy to determine the state of a containerized application. 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.
DaaS admins get a lot of benefits from using Kubernetes:
Ability to create, validate and manage Kubernetes clusters from a single UI terminal
Remote visibility, health checks and alerts of pods and clusters.
Admins can upgrade the Kubernetes stack along with different frameworks used in the setup.
Easy to apply patches to clusters with security vulnerabilities associated with the technology stack deployed within clusters.
What This Means
DevOps-as-a-Service (DaaS) provides many valuable capabilities to business, app-dev users and DaaS teams. Kubernetes capabilities match many of the requirements for DaaS implementations. Anyone looking to implement DaaS can benefit by using Kubernetes.