Infrastructure
Flux based GitOps repository for my home lab infrastructure.
Requirements
- Task to execute all required commands
- Node.js + Yarn (for local repository management only)
- Ansible to provision the cluster nodes with common settings, Tailscale and K3s
- Terraform to deploy all external DNS records
- Flux which manages and updates the cluster state
Installation
The cluster can be set up using the following commands:
# clone the repo to your local machine
$ git clone https://github.com/pascaliske/infrastructure
# install needed dependencies
$ task install
# setup ansible vault file (one-time)
$ task vault:setup
# provision nodes using ansible (1)
$ task cluster:provision
# bootstrap flux cluster
$ task cluster:bootstrap -- \
--owner=$GITHUB_USER \ # required flag (2)
--repository=$GITHUB_REPO \ # required flag (3)
--branch=main
- More information on the following command can be found in the provisioning section.
- Ensure you either fill in your GitHub username or you make it available as an environment variable.
- Name of the repository to hold the declarative cluster state. If it does not exists yet, it will automatically be created by Flux.
Updates
Most updates inside this project are automated. Take a look at the update section for detailed information on this topic.
Thanks
A big thank you goes to these awesome people and their projects who inspired me to do this project:
Also I want to thank you the awesome k8s-at-home
community for all their work on their Helm Charts which helped me a lot.
License
MIT – © 2024 Pascal Iske