Kubernetes 1.15 Aims to Extensibility with Custom Resource Definition Features

19 Jun 2019 4:00pm, by

With Kubernetes 1.14, the team moved 10 enhancements to stable, but this time around that number has dropped to two, with many more alpha and beta features being introduced. Kubernetes 1.15, says team lead Claire Laurence, is focused far more on introducing new features than stable ones, and spending time building those features up before declaring them stable.

“This release is in stark contrast to the last release, which was the most amount of stable features in a release. We don’t have a ton of features going stable this cycle. We have two kubectl commands — get and describe — that should now work well with extensions and are stable. The second stable enhancement is adding go module support, which is mostly interesting to folks who are actually developing Kubernetes or our third-party vendors,” said Laurence in an interview with The New Stack. “Other than that, we’ve had a fair amount of features progress to beta. I think what we’ve been seeing a lot with these alpha and beta features as they progress is a lot of continued focus on stability and overall improvement before indicating that those features are stable.”

Kubernetes 1.15 is the second release for Kubernetes in 2019, putting it on pace with 2018’s four releases, and focuses on continued efforts toward stability and extensibility, as evidenced by the two newly stable features, as well as the numerous additions to custom resource definitions (CRDs). For example, go module support brings the recently added go feature to Kubernetes’ core developers as well as those looking to build third-party extensions, while kubectl get and describe now “allow better extensibility,” making it “possible for third-party API extensions and CRD to provide custom output for kubectl get to avoid kubectl having to have code to interpret those resources,” according to comment on GitHub.

According to the blog post unveiling Kubernetes 1.15, new features around CRDs revolved around ideas of data consistency and native behavior, with the end goal that “a user should not notice whether the interaction is with a CustomResource or with a Golang-native resource.” To that end, Kubernetes 1.15 adds four new beta features and one alpha feature relating to CRDs. First, OpenAPI publishing for CRDs will be available for structural schemas in beta, while CRD pruning will provide “the automatic removal of unknown fields in objects sent to a Kubernetes API” according to that schema. CRDs will also get the alpha ability to have defaults, which will be “specified using the default keyword in the OpenAPI validation schema.” And finally, CRDs will get two beta features around Webhooks, first supporting the ability to “convert between different versions on-the-fly, just like users are used to from native resources” and then also improvements around reinvocation. While 1.15 may have the fewest number of new stable features, the blog post reveals that the team is working toward a GA release of CRDs and admission webhooks in one of the next releases.

Other notable features of Kubernetes 1.15 include:

All of that is not to mention the other big news out of the Kubernetes team — kubeadm now has its own logo.

Feature image via Pixabay.

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