Kubernetes and the future of as-Code Systems

  • It is open; the project is not owned by any single company but is managed by Linux foundation.
  • It has been adopted across all public and private cloud providers.
  • And its architecture provides the right building blocks for extending its core APIs to run any software needed in an application stack natively on Kubernetes.
  • First, the fact that entire application platform is running on Kubernetes makes it portable across public/private/hybrid clouds.
  • Second, the declarative nature of Kubernetes YAMLs enable leveraging all the benefits of ‘as-Code’ systems like repeatability and shareability in the Kubernetes world.
  • First generation systems like AWS CloudFormation focussed on delivering this for a single cloud (AWS).
  • Second generation systems like Terraform, focussed on abstracting underlying cloud APIs but did this across multiple clouds, offering a common language to provision technology stack in multi-cloud environments.
  • There are couple of key differences between first and second generation as-Code systems with the third generation of ‘as-Code’ systems. In the first and second generation as-Code systems, the set of APIs that the orchestration layer (as-Code layer) could use was fixed and known a priori. This is not the case with Kubernetes as one can extend Kubernetes API set by installing API extensions/Operators anytime. Second, with Kubernetes offering a base platform layer across private/public clouds, it is no more about abstracting the underlying cloud infrastructure APIs but it is about utilizing Kubernetes APIs to realize your Platform workflows. In this context, a Platform-as-Code system needs to augment Kubernetes to simplify creation of these platform YAMLs using built-in and Custom Resources enabling Platform-as-Code experience in hybrid multi-cloud environments. We have developed KubePlus API add-on to enable this Platform-as-Code experience.
  1. ability to discover underlying supported resources, and
  2. ability to inter-connect / bind these resources to realize different workflows.
kubectl get — raw “/apis/platform-as-code/v1/man?kind=MysqlCluster”kubectl get — raw “/apis/platform-as-code/v1/composition?kind=Moodle&instance=moodle1&namespace=ns1”

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store