Seems that everywhere you turn these days – someone’s talking about Kubernetes. With recent research indicating 71% of enterprises using Kubernetes to manage their containers, Kubernetes has essentially become the de lingua franca of container management and orchestration – some might even go as far to say of the cloud itself… Today we’re pleased to announce the “Terraform Kubernetes Installer”, an open source Terraform template for easily standing up a Kubernetes Cluster on Oracle Cloud Infrastructure (OCI). This allows customers to combine the production grade container orchestration of Kubernetes, with the control, security and high predictable performance of Oracle’s next generation OCI cloud infrastructure.
Getting a Kubernetes cluster up and running, let alone a production ready one, has not historically been quite as straightforward. While purists (and those learning Kubernetes) might choose to stand up a Kubernetes cluster the hard way – most of us are looking for easy and automated ways to make this happen. There have been a (large) number of projects from the vendor and Kubernetes community in this area, many in various stages of ongoing development. We chose to go the Terraform route for a few key reasons:
The Terraform Kubernetes Installer provides a set of Terraform modules and sample base configuration, to provision and configure a highly available and configurable Kubernetes cluster in your tenancy on Oracle Cloud Infrastructure (OCI). This includes a Virtual Cloud Network (VCN) and subnets, instances for the Kubernetes control plane to run on, and Load Balancers to front-end the etcd and Kubernetes master clusters.
The base configuration supports a number of input variables that allow you to specify the Kubernetes master and node shapes/sizes and how they are placed across the underlying availability domains (ADs).
This is extremely powerful, as you can specify Bare Metal shapes (no hypervisor!), in addition to VM shapes, to leverage the full power and performance of OCI infrastructure for your Kubernetes clusters. The nodes are also labeled intelligently, for example with the Availability Domain, to support Kubernetes multi-zone deployments so that the Kubernetes scheduler can spread pods across availability domains. You can also add and remove nodes from your cluster using Terraform as documented in the README.
If your requirements extend beyond the base configuration, the modules can also be used to form your own customized configuration.
Highly Available Kubernetes Control Plane
A couple of things high on our list are Kubernetes persistent storage integration and Load Balancer integration (for exposed services) – but we’re excited to see the requests and contributions that come in from the community to make this template even better – so feel free to submit an issue or a pull request on Github (check out the CONTRIBUTING file for more instructions). Our goal is to make it as easy as possible for developers and DevOps teams to reap the benefits of standard upstream Kubernetes, on our next generation cloud infrastructure.