Meet KubeOne: A New Lifecycle Management Tool for HA Kubernetes Clusters
Check out this new open source tool that helps manage the lifecycle of your cluster with a simple, intuitive API.
Join the DZone community and get the full member experience.Join For Free
Today, I am excited to introduce a new open source Kubernetes cluster lifecycle management tool: KubeOne! KubeOne takes care of installing, configuring, upgrading and maintaining Highly-Available (HA) Kubernetes clusters. It works out-of-the-box on any cloud provider, as well as in on-prem and bare-metal environments.
With Kubernetes gaining more and more popularity each day, we believe that creating and maintaining HA Kubernetes clusters should be easy. Operators should focus on running the workload, not a bunch of commands to get clusters up and running.
In search for a feature-complete solution that supports HA clusters, follows the Kubernetes best practices, and comes with a simple and declarative API based on the Kubernetes Cluster-API, we could not find an exisiting project that fulfilled our needs. Therefore, we decided to build our own solution.
Cluster Lifecycle Management
KubeOne comes with a rich, easy to use, declarative Kubernetes-style API that allows you to configure your desired cluster in just a few lines. The configuration manifest defines on what instances Kubernetes will be installed, what Kubernetes version will be used, and what features will be enabled on the newly-provisioned cluster. With the manifest in place, by using a single command, you can provision the cluster, upgrade it to the newer version, or destroy it.
During the provisioning time, the user can enable and configure various features that improve the security and usability of the cluster. Supported features include PodSecurityPolicy, DynamicAuditLog, metrics-server, and OpenID Connect authentication.
Moreover, selected providers benefit from advanced features such as managing worker nodes with KubeOne and Kubermatic machine-controller and deploying provider specific ones like external cloud controller managers (CCM).
Kubermatic machine-controller is a Cluster-API implementation that ensures you can manage all your worker nodes using a declarative Kubernetes-style API. That allows you to manage the full lifecycle of worker nodes, including creating infrastructure, provisioning and upgrading Kubernetes, and destroying nodes using just
All worker nodes are backed by the MachineDeployment objects. MachineDeployments work just like Deployments, but instead of managing containers they manage machines.
You can scale MachineDeployment objects using
kubectl and the
scale command. For example, the following command will set number of worker nodes to 5:
kubectl scale machinedeployment/fra1-1-deployment -n kube-system --replicas=5
KubeOne requires operators to provide the running instances for control plane nodes, instead of KubeOne provisioning them. This ensures users can continue using their favorite tools to create the infrastructure tailor-made to their needs on any provider, while enjoying all features of KubeOne.
To ensure a seamless flow of information on the infrastructure and control plane nodes, and prevent potential errors and mistakes, KubeOne can read the needed information directly from the Terraform output.
kubeadm: Under the Hood
KubeOne uses the well-known and production-grade tool
kubeadm allows you to follow the best practices for provisioning Kubernetes clusters, while providing a rich set of features that we make available in an easy to use manner.
Supported Providers and Environments
Despite being able to use KubeOne on any provider, in order to benefit from all features of KubeOne, the provider needs to be supported by KubeOne and Kubermatic machine-controller.
Currently, KubeOne supports AWS, GCP, DigitalOcean, Packet, Hetzner, and OpenStack. Support for VMware vSphere is planned for one of the upcoming releases.
If you’d like to see support for other providers let us know via GitHub or check the guidelines for adding support for a new provider.
Getting Started with KubeOne
Everything you need to do to get started with KubeOne is to grab the latest release from GitHub Releases. The detailed installation instructions can be found in the installing section of the README file. In order to use the example Terraform scripts, you need to have Terraform installed, which can be done by following the official installing instructions.
In the KubeOne documentation, you can find a “Getting started” walkthrough for each supported provider. Alternatively, check out the recording showing KubeOne in action!
Looking to the Future
If you want to keep in the loop about what is happening, keep an eye at the KubeOne GitHub repository and join the #kubeone channel on Kubermatic Slack. We’re planning many awesome features and we hope you’ll like them!
Opinions expressed by DZone contributors are their own.