Kubernetes has been gaining steam since it was open sourced in 2014. Containers have been on the rise within the enterprise of late. While many startups and engineering focused organizations have been using Kubernetes for a long time, (maybe even since the beginning) enterprises have taken a little longer to join the hype-train. I have been working in the “container space” for over four years now (which seems like forever) and in last year have seen my conversations with customers change from “what are containers?” to “help me implement containers.” As a technologist this gets me excited for a few reasons:
- A single deployment model for applications across the organization, reducing the complexity of application deployments. Containers “encourage” application architecture best practices such as ephemeral state management, the coupling of dependencies and application release cycles.
- Security, while containers are not a silver bullet, they do provide sensible defaults and a glide plane for increased security in the future.
- A unified and simplified CI/CD pipeline for applications. The same way containers have unified the deployment model; containers enable organizations to build paved roads for application types and share those across the organization.
As a mentioned, I am starting to see conversations with customers transition out of the education phase to the adoption phase. Research conducted by Forrester Consulting commissioned by Dell EMC, Intel and Red Hat in 2017 supports these observations.
“Organizations expect that their number of containerized applications will rise by 80% in the next two years.”
I believe there are two drivers behind this trend. One, organizations are beginning to refactor their applications to a microservices architecture which lends itself towards containers. Second, is organizations are looking for a path to modernization legacy applications. Containers and Kubernetes allow organizations to wrap applications in a container along with its dependencies and deploy these applications to more modern architectures. However, Kubernetes still has many rough edges stunting its growth within the enterprise.
Kubernetes Is Still Hard To Run
Kubernetes is still a tall order for many IT organizations to deploy, configure, SECURE, and manage in production. Recently, Telsa was caught with their Kubernetes Dashboard left open to the public. There are countless stories of organizations that have left S3 buckets open to the public.
I always recommend organizations use managed services such as Amazon Elastic Kubernetes Service, Azure Kubernetes Service, Google Container Service, Docker EE, or Rancher. While this doesn’t prevent you from making mistakes, it does take care of securing the master node which is where all the Kubernetes cluster data are stored. Managed services remove a large portion of the operational overhead and integrations with services like monitoring and logging. Just like the rest of enterprise IT dilemmas do you want to be the business of managing Kubernetes?
Kubernetes At The Edge
Organizations are increasingly operating applications across the globe. Whether it is multiple regions within a single cloud provider, multiple cloud providers, edge locations such as retail locations, or a hybrid model, managing applications across all of these deployment targets can be difficult. Kubernetes is becoming the go-to tool for creating a single deployment plane across all of these environments. Docker EE has started to trend in this direction by pulling in managed clusters from AWS, Azure, and GKE under its management plane.
I believe this is a healthy approach for organizations because they can hide the majority of complexity behind automation tools like Jenkins. Kubernetes services like Service Broker will be a game changer in this space and allow organizations to build an abstraction layer between application supporting services (databases, caching, load balancers) and the underlying provider.
Windows Containers Are Real!
Containerization has become an increasing trend in the Windows space as Windows Server 2008 reaches its end of life. Organizations with large .NET estates are starting to containerize their applications to decouple the applications from the underlying host and gaining cost efficiencies by “bin packing” multiple applications onto a single Windows Server instance. Smaller and simpler .NET applications can be good candidates to refactor to .NET Core which unlocks .NET applications from Windows and can be deployed using a Windows container.
Docker Enterprise Edition was the first (that I know of) to support Windows Containers on Kubernetes. The Kubernetes, open source project, will quickly be adding Windows support with many of the managed services providers (AWS and Azure) following suit with their container services. I see this as an extreme advantage for organizations looking to unify their Windows and Linux deployment processes. Many organizations that I have seen still have a Windows team and a Linux team, especially in the Financial Services space. The organization cost efficiencies that Kubernetes and Containers could bring will be monumental.
Why Is Kubernetes Struggling In The Enterprise?
Many organizations are using Kubernetes successfully today. However, it hasn’t reached the VMWare status where organizations can deploy it and instantly see savings (I know I am oversimplifying here). Kubernetes lacks that robust end-to-end tool that can take a source code repository, build the application, test the application, security scan the application, and deploy the application. These solutions can be developed today by combining tools like Jenkins, TwistLock, Aqua, Spinnaker, and Kubernetes but are still difficult and require a significant investment in the tooling. This investment takes resources away from investing in new features that improve the customer experience of the application.
Kubernetes still has a sizeable cognitive overhead for organizations to understand and push through the corporate process. Kuberenetes documentation is still lacking in this space, where most of the meaningful information comes from personal blogs. This is great for open source junkies and startups but difficult for enterprises to adopt at scale.
Conclusion
I am incredibly bullish on Kubernetes within the enterprise for driving extreme efficiencies in reducing lead time to new features, building highly available applications, and securing applications. I have seen Kubernetes change the way organizations deliver value to customers and I think this will become increasingly easier. The next wave of tools built on top of Kubernetes such as Istio that will make managing and securing microservices at scale easier will also change the way enterprises think about software. I am always on the lookout for new tools and software to bring into our toolbelt. I am also seeing large investments firms getting interested in the container space on the backs of many of the early container companies. If you want to gather feedback on your product or are interested in adopting containers within the enterprise, don’t hesitate to reach out.