Following along after the smashing success of both k8s the hard way digitalocean and k8s the hard way linode...here's the same thing, but on Vultr!
This is a fork of the outstanding Kubernetes The Hard Way - AWS, itself a fork of the awesome Kubernetes The Hard Way by Kelsey Hightower and is geared towards using it on Vultr.
- Kubernetes v1.17.2
- cri-tools v1.17.0
- containerd v1.3.2
- CNI plugins v0.8.5
- etcd v3.3.18
- vultr-cli v2.7.0
This tutorial walks you through setting up Kubernetes the hard way. This guide is not for people looking for a fully automated command to bring up a Kubernetes cluster. If that's you then check out Google Kubernetes Engine, AWS Elastic Container Service for Kubernetes or the Getting Started Guides.
Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to bootstrap a Kubernetes cluster.
The results of this tutorial should not be viewed as production ready, and may receive limited support from the community, but don't let that stop you from learning!
The target audience for this tutorial is someone planning to support a production Kubernetes cluster and wants to understand how everything fits together.
Kubernetes The Hard Way guides you through bootstrapping a highly available Kubernetes cluster with end-to-end encryption between components and RBAC authentication.
- Kubernetes 1.17.2
- containerd Container Runtime 1.3.2
- gVisor 08879266fef3a67fac1a77f1ea133c3ac75759dd
- CNI Container Networking 0.8.5
- etcd 3.3.18
This tutorial assumes you have access to Vultr. If you are looking for the GCP version of this guide then look at : https://github.com/kelseyhightower/kubernetes-the-hard-way.
- Prerequisites
- Installing the Client Tools
- Provisioning Compute Resources
- Provisioning the CA and Generating TLS Certificates
- Generating Kubernetes Configuration Files for Authentication
- Generating the Data Encryption Config and Key
- Bootstrapping the etcd Cluster
- Bootstrapping the Kubernetes Control Plane
- Bootstrapping the Kubernetes Worker Nodes
- Configuring kubectl for Remote Access
- Provisioning Pod Network Routes
- Deploying the DNS Cluster Add-on
- Smoke Test
- Cleaning Up
Since I'm only able to work on this in short stretches, it's easiest to script out steps so I can pick up where I left off. If you'd like to get to a certain point automatically, for example, the end of the steps in docs/06-data-encryption-keys.md
, then you can run:
for i in {3..6}; do
./scripts/${i}.sh
done
And to clean up at any point, just run ./scripts/14.sh
. This also removes all the local resources (like yaml config files and ssh keys) that were generated along the way.