This post is part of a three-month series examining the challenges of Kubernetes in 2020. For January, we examined the Kubernetes developer experience.
It’s not an uncommon problem for open-source projects — while vanilla Kubernetes is free for anyone to download and set up in their environment, it’s too challenging to configure, update and generally manage for most enterprises. Not only is the developer experience in Kubernetes less than ideal, but in most companies, there’s also a serious skills gap.
The good news is that, as Kubernetes adoption has grown, so have the number of enterprise distributions and managed Kubernetes providers who recognize that most companies need more advanced functionality and support than vanilla Kubernetes provides. A key part of all managed services’ selling points is better developer experience.
“The way we look at the work is that essentially the way you’re going to be successful with Kubernetes is, number one, you’re gonna be running certified Kubernetes distributions everywhere,” said Peter Smails, chief marketing officer at Kubernetes distribution provider Rancher. “Number two, you need to be able to manage all these clusters in a simple, consistent way. If the developer experience is too complicated, if you’re spending too much time managing Kubernetes versus writing code, then your entire strategy can crater.”
Managed Services Step In
Kubernetes is an incredibly powerful and flexible technology, but the near-infinite possibilities can be daunting for an inexperienced developer. In practice, most developers are inexperienced using Kubernetes. It’s so new that no one has more than five years of experience, and it can take 12 to 18 months to get even basic proficiency at using Kubernetes in production, on customer-facing applications.
Managed service providers have to strike a balance between maintaining the flexibility that makes Kubernetes such a powerful tool while also being opinionated and prescriptive — removing the cognitive load of manually handling everything from configurations through day two operations.
“You don’t actually want to be familiar with all the knobs that exist in a platform,” explains Chen Goldberg, Google’s director of engineering for the company’s Kubernetes-based multicloud platform, Anthos. “Do you want to have a different set of best practices every time? Probably not.”
The core goal of any managed Kubernetes service is essentially the same: Streamline the development and operations process by taking care of things that every developer needs while leaving as much flexibility in the platform as possible. This is both to make things easier at an individual level as well as to make it feasible to run Kubernetes at scale, in organizations that have dozens, hundreds or thousands of developers as well as strict security, governance and compliance requirements that require consistency and tight oversight. “The goal of Google Anthos is to increase agility without increasing risk,” Goldberg said. “It does so by being opinionated about best practices.”
“Just like any complex software, it can be difficult to maintain, specifically at large scale,” explained Roopak Parikh, chief technology officer at managed Kubernetes provider Platform9. “If you want to run it in production, we need to make sure there is high uptime, that we can patch it, that it is upgraded when new features are released, that there are monitoring capabilities.”
Managed service providers are opinionated: They do the configuration work automatically, based on what they’ve determined to be the best practices. They all try to strike the right balance between making decisions for developers versus keeping as much flexibility as possible.
Platform Developers vs. Developers
Kubernetes is an infrastructure tool, so in some ways, developer experience should be irrelevant — if we’re talking about developers whose job is to write code and deploy new applications. “Developers don’t care about Kubernetes,” Goldberg said. “All they want to do is work in their IDE, click a button and get their source code and do a build and test and deploy and get feedback.”
One of the challenges in discussing developer experience in Kubernetes is that “developer” can mean so many different things. Having a coherent discussion about developer experience requires a clear definition of whose experience we’re talking about. According to the chairs of the CNCF application delivery special interest group, creating these universal definitions is a core challenge that the community needs to address.
Platform developers or infrastructure teams are the ones likely to see their jobs change more dramatically as companies move to Kubernetes, and they really are the target “end-user” for managed Kubernetes services. Whether they’re using Kubernetes or something else, the platform team’s goal is to make the developer experience seamless for application developers in their organization. Pratik Wadher, vice president of product development at Intuit, said that as little knowledge of Kubernetes that application developers need, the better. The problem is that infrastructure teams have trouble providing enough abstraction to make that possible.
Simplifying the Complex
If the goal is to give infrastructure engineers, or platform developers or infrastructure developers the tools they need to provide a seamless experience to application developers, many managed service providers have options to make it easier. Rancher’s open source Rio project, for example, released in 2019, makes it possible to get a service up and running with a single command. Like Google Anthos, Rio is based on the assumption of complexity — that companies will be running multiple clusters across public and private clouds.
Platform9’s managed Kubernetes service also has the same basic goal: simplify not just complex infrastructure but also the suite of tools that companies use to get visibility in their Kubernetes clusters and manage operations. “We see a lot of pain points where developers have deployed the application, and they want more and more visibility,” Parikh said.
Meeting Developers Where They Are
One of the most important roles of managed services, Goldberg said, is to find a way to meet developers where they are. This is both in terms of providing tools that make it easier for both application and platform developers to be successful with Kubernetes without a massive learning curve as well as understanding the realities of most enterprise IT environments. Anthos, she says, makes it possible to integrate Kubernetes-based workloads with VM-based workloads.
“From our experience, without customers, they love the agility that Kubernetes brings to the table,” Parikh said. “They also love the fact that they can use Kubernetes without worrying about the intimate details.”