There are many ways to deploy kubernetes these days to most cloud providers such as AWS, Google Cloud, Azure and or Baremetal.
My favorite one to do for sake of POC (Proof of Concept) is by utilizing a tool called EKSCLI by Waveworks.
It is extremely easy to setup and you don't have to muck around with almost anything as long as you have requirements set as they describe.
Here is YT video I made on full deploy of EKS Cluster + some random tips.
Moving on to some other tools...
Kubespray, configuration is somewhat simple however it takes time to set it up right as it is using Ansible in the background. You have to setup servers/ssh keys etc, it took me about 1hr to set all of it up with 3 master and 6 worker nodes , with some help of terraform to standup EC2 instances etc..
KOPS is yet another tool similar to EKSCLI however its utilizing ec2 instances in AWS vs EKS. Super easy to configure a and could have a cluster up in matter of 20-30m, they also say its Production ready.. (that all depends on what someone considers a K8s "Production Ready")
JX - This is something I've been playing for a while now as it supports most cloud providers that I 'play' with including my local copy of minikube, but it's not just that!
JX provides you jenkins X CI/CD pipeline with some examples to get you going, including hooks into your Github and deploys an app. So if you are Dev this is probably something you will like most of them all.
Let me know if you know of any other automation tools for deploying Kubernetes Cluster.
Top comments (12)
We have been using Rancher for dev environments for over 2 years and recently in production. In every case we are able to get a new kubernetes cluster with multiple nodes deployed in less than 20 minutes. We've deployed successfully to AWS, Azure, Eucalyptus, Azure Stack and VMware all using the same deployment method. See rancher.com for product details.
Joe - great article on Kubernetes deployment! Thanks for putting this together.
I'd like to point out a few other resources as well. For cluster deployment of Kubernetes, there is also a tool called "Kubeadm". This tool is designed to very very quickly allow you to build Kubernetes clusters and handle the node admission pattern of workers in to the cluster.
Kubeadm Resources
There is also an Open Source tool called Digital Rebar Provision (DRP), which provides bare metal provisioning and control of hardware infrastructure. DRP uses "Workflows" to do additional things beyond operating system deployments. One of those examples is a content pack called "KRIB" (Kubernetes Rebar Integrated Bootstrap, coupled with a Terraform Provider for DRP - that makes zero-touch Kubernetes clusters on Bare Metal completely possible.
DRP Terraform Kubernetes in 8 minutes - youtube video
This pattern provides a Zero to Kubernetes experience on bare metal in 8 minutes. There are several new deployment options in DRP that will radically reduce that time - but there aren't any demo videos of that process yet (image deployment, and zero reboot with Kernel Kexec pattern). We believe this time can be driven down closer to 4 minutes with these new patterns.
The Kubespray pattern is a great solution for a highly customized deployment. In fact - DRP also supports deploying Kubernetes via the Kubespray playbooks - so that is also an option. In our experience, we've found that Kubespray can be exceptionally slow, and sometimes can take as much as 30 minutes to complete. Outside of the time issue, it is a good tool.
For transparency purposes - I work on the DRP Open Source project. I am a contributor to both DRP and the content packs mentioned above.
Digital Rebar Provision Github Repo
Digital Rebar Provision Website
Awesome share.
I'll take a look at DRP..
YES! :)
How about conjure-up or Juju by canonical Ubuntu?
I did try Juju on aws and gce. I guess I forgot to mention that one / whoops /
JX uses ekscli under the hood when you pass provider=eks
Hi Joe Hobot
This is dhinesh we are deployed our applications in kubernetes using KOPS method we want to autoscale my node instance when ever the load increases or insufficient space on the current node can anyone guide me how to achieve that . In my case pod level autoscaling working but i want to achieve that in node level too
Have you tried Kubic?
I looked into it but have not made an attempt to try it yet. Maybe a weekend project to see what’s all about.
TK8 by the Kubernauts - great command line tool, written in Go.
github.com/kubernauts/tk8
kubernauts.io
Thanks for Sharing
Hi joe I'm implementing kubespray I want to do that in aws eks can you share docs with terraform pls.