Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dhermes/tailsk8s

tailsk8s: Bare Metal Kubernetes with Tailscale
https://github.com/dhermes/tailsk8s

Last synced: 17 days ago
JSON representation

tailsk8s: Bare Metal Kubernetes with Tailscale

Awesome Lists containing this project

README

        

# `tailsk8s`: Bare Metal Kubernetes with Tailscale

> Pronounced "Tail Skates"

[![Go Reference][1]][2]



> - Blog [post][28]
> - [Bare Metal Kubernetes with Tailscale][29] video
> - [Kubernetes Networking over Tailscale with Public Cloud VMs][30] video

This project walks through setting up a bare metal [Kubernetes][26] cluster
that uses [Tailscale][27] for networking. For readers already familiar with
both Kubernetes and Tailscale, you can go directly to
[Configure CNI Networking for Tailscale][19].

## Labs

- [Prerequisites][11]
- [Prepare Tailscale Keys][12]
- [New Machine: Allow SSH in from Jump Host][14]
- [Bringing up a New Machine][15]
- [Installing Kubernetes Tools][16]
- [Provision Load Balancer][17]
- [Initialize Cluster][18]
- [Configure CNI Networking for Tailscale][19]
- [Adding a New Control Plane Node][20]
- [Adding a Worker Node][21]
- [Smoke Test][22]
- [Add an AWS EC2 VM to the Kubernetes Cluster][23]
- [Add a GCP GCE Instance to the Kubernetes Cluster][24]
- [Cleaning Up][25]

## References, Documentation and Motivation

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][3] from Kelsey Hightower
- [rmb938/tailscale-cni][5] from Ryan Belgrave
- [Deploying Kubernetes on Bare Metal][4] by [Layachi Khodja][8]
- [`kubeadm init/join` and ExternalIP vs InternalIP][6] from
[Alasdair Lumsden][7]
- [prabhatsharma/kubernetes-the-hard-way-aws][9] from Prabhat Sharma

## Development

```
$ 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

```

[1]: https://pkg.go.dev/badge/github.com/dhermes/tailsk8s.svg
[2]: https://pkg.go.dev/github.com/dhermes/tailsk8s
[3]: https://github.com/kelseyhightower/kubernetes-the-hard-way/tree/79a3f79b27bd28f82f071bb877a266c2e62ee506
[4]: https://www.inap.com/blog/deploying-kubernetes-on-bare-metal/
[5]: https://github.com/rmb938/tailscale-cni/tree/dba6992227958e61ac85b3168dbcae4ff10dde57
[6]: https://medium.com/@aleverycity/kubeadm-init-join-and-externalip-vs-internalip-519519ddff89
[7]: https://github.com/alaslums
[8]: https://linkedin.com/in/layachi-khodja-38428a1
[9]: https://github.com/prabhatsharma/kubernetes-the-hard-way-aws/tree/c4872b83989562a35e9aba98ff92526a0f1498ca
[11]: 01-prerequisites.md
[12]: 02-prepare-tailscale-keys.md
[14]: 04-allow-ssh.md
[15]: 05-new-machine.md
[16]: 06-install-k8s.md
[17]: 07-provision-load-balancer.md
[18]: 08-initialize-cluster.md
[19]: 09-tailscale-cni.md
[20]: 10-adding-control-plane-node.md
[21]: 11-add-worker-node.md
[22]: 12-smoke-test.md
[23]: 13-add-vm-aws.md
[24]: 14-add-vm-gcp.md
[25]: 15-cleaning-up.md
[26]: https://kubernetes.io/
[27]: https://tailscale.com/
[28]: https://blog.bossylobster.com/2021/12/tailsk8s.html
[29]: https://www.youtube.com/watch?v=ws3mlpRUc8E
[30]: https://www.youtube.com/watch?v=6oSY0CP9o7o