CI/CD / DevOps / Kubernetes / Sponsored / Contributed

How to Enable Cloud Native DevOps with Kubernetes and Hyper-Converged Infrastructure

9 Jan 2020 10:18am, by

Diamanti sponsored this post.

The new era of cloud native DevOps brings various new tools and best practices that have offered significant advantages for application development. When properly implemented,  development pipelines become more automated, self-service capable and API-driven, giving independence to both the developer and the operations team. With cloud native DevOps, developers can deliver applications and updates to end-users at a much faster pace, without having to worry nearly as much about managing the underlying infrastructure.

FIGURE 1: DevOps: Development plus Operations Lifecycle.

Cloud Native DevOps encompasses the following aspects:

  • A microservices architecture allows teams to work in a lean and agile fashion.
  • Loosely coupled systems tied together with automation provides faster time to market.
  • Elasticity, scalability and resilience offer on-demand expansion.
  • Containerization makes applications portable and reusable.
  • Self-service capabilities and API-driven CI/CD offer developers more flexibility.

Building Blocks for Cloud Native DevOps

Arvind Gupta
Arvind is a cloud native expert, problem solver and evangelist with a passion for learning and teaching. Arvind has worked in various technical roles across a range of computer disciplines. After beginning his career in software testing, Arvind spent a few years in the ASIC industry with Redback Networks followed by Ericsson where he built advanced networking chips. He joined Diamanti in October 2015 and was instrumental in bringing Diamanti's hardware platform to production before assuming responsibilities in solutions and marketing. Arvind holds an MS degree from Purdue University.

Figure 2 shows the building blocks of a full-stack cloud native DevOps:

  • A microservices-based cloud native application.
  • CI/CD  layer providing, pipelines, tools and technology for DevOps.
  • Containers as a standard means of packaging software with immutability.
  • Kubernetes orchestration abstracting the infrastructure while providing resilience and scaling.
    • Standardization that containers offer to build and package applications so Kubernetes can be used to deploy, run and manage the microservices.
    • Portability across on-premises and public cloud vendors.
    • Automation of DevOps and infrastructure management.
    • Persistent volumes and storage to enable stateful applications.
    • Container Storage Interface (CSI) easily abstracts various storage solutions.
    • Container Network Interface (CNI) easily abstracts various networking solutions.
    • Service and Ingress to enable access to the application in the clusters and to provide load balancing.
    • Inbuilt constructs for the high-availability of applications.
    • Elasticity of resources for easy autoscaling.On-premises, public or hybrid cloud infrastructure.

 

FIGURE 2: Building Blocks of Full Stack Cloud Native CI/CD Environment.

Containers and Kubernetes Are Enablers of Cloud Native DevOps

Kubernetes brings a lot of features for container orchestration, which are complementary to Cloud Native DevOps. They include:

  • Standardization that containers offer to build and package applications so Kubernetes can be used to deploy, run and manage the microservices.
  • Portability across on-premises and public cloud vendors.
  • Automation of DevOps and infrastructure management.
  • Persistent volumes and storage to enable stateful applications.
  • Container Storage Interface (CSI) easily abstracts various storage solutions.
  • Container Network Interface (CNI) easily abstracts various networking solutions.
  • Service and Ingress to enable access to the application in the clusters and to provide load balancing.
  • Inbuilt constructs for the high-availability of applications.
  • Elasticity of resources for easy autoscaling.

Importance of Cloud Native Infrastructure

The right infrastructure must be in place in order to enable cloud native DevOps for CI/CD allowing developers to focus on delivering their product, rather than weighed down by where and how it is going to run. Platform architects need tools to manage fundamental resources such as compute, memory, network and storage, as well as all aspects of orchestration and management. The end result is the need for fewer tools and much lower total cost of ownership (TCO) for developers.

Innovation

Cloud native applications are built to run on infrastructure that is modular and automated, allowing them to become resilient as well as predictable. Performance and scalability become important benefits, as well as the flexibility to deploy workloads. Most existing infrastructure cannot support this. So, a creative and innovative approach is needed when choosing the infrastructure.

Resilience

Infrastructure must be built with a “resilience first” mindset. Resiliency is important for every layer of the puzzle, whether it is network, storage, node, process or application.

Scalability

Platforms used for cloud native DevOps need to be able to support horizontal scaling for applications, as demand ebbs and flows.

Resource Utilization

As more and more teams adopt cloud native DevOps, users often run out of resources. Virtual machines contain many unneeded layers of complexities that reduce resource efficiency and increase cost. Running containers on bare metal offers higher performance and resource utilization.

Consumption Model

With multi-tenancy, teams can work in parallel on a shared infrastructure and businesses are able to achieve greater application density and improved efficiency of infrastructure. The ability to use or pay for only what you need for either public or on-premises infrastructure is important.

Service Level Agreement

With a multi-tenant shared infrastructure used by different teams across the company, a platform must adhere to a certain service level guarantee. It’s important that a certain application under heavy load is not impacting the other applications running on the same infrastructure.

TCO

While innovation is an important factor, the Total Cost of Ownership (TCO) is always a driving factor for an organization aiming to “do more with less.” Public clouds are a very attractive option for quick start and smaller application deployments, but cost and complexity can skyrocket with applications growing in size and complexity. On the other hand, an on-premises solution requires a relatively higher upfront investment but as adoption grows, the cost is much lower in the long term. In reality, a hybrid cloud is a marriage of the best of both worlds, thus giving decision-makers more flexibility as well as allowing them to manage costs more effectively.

Security

Security is, for obvious reasons, one of the most important considerations when developing applications for today’s IT environments. With highly distributed containerized environments, security must be a part of the development process from the beginning. DevSecOps is the process of integrating security into the software development process, which could be a paradigm shift in a company’s culture.

Persistent Storage

While Kubernetes platforms come with a standard container storage interface (CSI), a storage solution for Kubernetes is also required that meets an organization’s specific needs and budget constraints. Storage services (replication, snapshot, backup, recovery, encryption capabilities) are, of course, important to consider when choosing a storage solution.

Network and Connectivity

Cloud native environments are highly distributed and are composed of microservices. The ability to communicate between services and APIs is critical. Application connectivity with other applications as well as the external world is important. Kubernetes provides a container networking interface (CNI), but choosing the right networking plugin can complicate the vendor selection process. Most networking plugins are software-defined network (SDN)-based which simplifies pod-to-pod communication within the cluster. However, as pod IPs only exist within the cluster, exposing the applications outside the cluster becomes harder and not compatible with existing network infrastructure. In addition, potential problems of network performance and noisy neighbor (container or VM taking up the majority of resources) elimination are important to consider upfront.

Choosing the Right Infrastructure for Cloud Native DevOps

When adopting cloud native DevOps, it’s critically important to choose the cloud native infrastructure wisely. Much existing infrastructure in use with many independent compute, networking and storage components are not suitable for cloud native DevOps. Hyperconverged infrastructure (HCI)-purpose built for Kubernetes has the ability to support all the above requirements and has become critical for enabling cloud native DevOps.

Figure 3 shows an example of a cloud native CI/CD environment running on a hyperconverged infrastructure (a Diamanti Enterprise Kubernetes Platform). HCI infrastructure, such as the what Diamanti offers, provides scalable and high-performance CI/CD on bare-metal Kubernetes infrastructure. The power of containers, Kubernetes, storage and networking abstraction and quality-of-service guarantees enable the solution to easily scale on demand and provide unparalleled operational uptime and efficiencies across resource allocation and usage. The ability to backup and replicate data for high availability, disaster recovery (DR) and seamlessly move CI/CD environments across a hybrid cloud environment is implicit with such an infrastructure.

FIGURE 3: Cloud Native CI/CD Environment running on the Diamanti Enterprise Kubernetes Platform.

Conclusion

A key milestone that cloud native DevOps has helped numerous organizations achieve is faster deployment and development cycles. This, in turn, helps with having a stable and reliable enterprise infrastructure. DevOps and Kubernetes have together become the foundation to enable digital transformations of enterprises. With the microservices architecture, a cloud native DevOps environment accelerates application delivery, provides on-demand scaling and allows for seamless application portability and reuse. Ultimately, the entire cloud native DevOps stack relies on the underlying infrastructure to perform and scale.

Feature image from Pixabay.

A newsletter digest of the week’s most important stories & analyses.