Skip to content

pascaliske/infrastructure

Repository files navigation

Infrastructure

Flux based GitOps repository for my home lab infrastructure.

Branch checks Pipeline (linting) Pipeline (docs) GitHub commit activity GitHub Last Commit GitHub top language GitHub repo size License: MIT

Kubernetes Terraform Ansible

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
  1. More information on the following command can be found in the provisioning section.
  2. Ensure you either fill in your GitHub username or you make it available as an environment variable.
  3. 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