Pronounced "Tail Skates"
This project walks through setting up a bare metal Kubernetes cluster that uses Tailscale for networking. For readers already familiar with both Kubernetes and Tailscale, you can go directly to Configure CNI Networking for Tailscale.
- Prerequisites
- Prepare Tailscale Keys
- New Machine: Allow SSH in from Jump Host
- Bringing up a New Machine
- Installing Kubernetes Tools
- Provision Load Balancer
- Initialize Cluster
- Configure CNI Networking for Tailscale
- Adding a New Control Plane Node
- Adding a Worker Node
- Smoke Test
- Add an AWS EC2 VM to the Kubernetes Cluster
- Add a GCP GCE Instance to the Kubernetes Cluster
- Cleaning Up
Over the many days of getting this off the ground, I leaned heavily on the work and writings of others. I could not have made nearly as much progress without example projects, blog posts and great documentation. Some that were particularly helpful:
- kelseyhightower/kubernetes-the-hard-way from Kelsey Hightower
- rmb938/tailscale-cni from Ryan Belgrave
- Deploying Kubernetes on Bare Metal by Layachi Khodja
kubeadm init/join
and ExternalIP vs InternalIP from Alasdair Lumsden- prabhatsharma/kubernetes-the-hard-way-aws from Prabhat Sharma
$ make # Or `make help`
Makefile for the `tailsk8s` project
Usage:
make tailscale-advertise-linux-amd64 Build static `tailscale-advertise` binary for linux/amd64
make tailscale-authorize-linux-amd64 Build static `tailscale-authorize` binary for linux/amd64
make tailscale-authorize-windows-amd64 Build static `tailscale-authorize` binary for windows/amd64
make tailscale-withdraw-linux-amd64 Build static `tailscale-withdraw` binary for linux/amd64
make release Build all static binaries