This repository contains configurations to bootstrap and manage a simple home infrastructure using k3s and Argo CD.
Tool | Description |
---|---|
Ansible | Bare metal provisioning and configuration |
Argo CD | GitOps operator for managing cluster |
K3s | A Kubernetes distribution |
kube-prometheus-stack | Prometheus Operator with Grafana dashboards for basic monitoring |
MetalLB | MetalLB is a load-balancer implementation for bare-metal clusters |
ingress-nginx | An Ingress controller for Kubernetes using NGINX |
cert-manager | X.509 certificate management |
Before delving into the setup process, it is crucial to identify the available IP addresses within our network that can be assigned to MetalLB. To accomplish this, examine the IP address space of your router and utilize the Visual Subnet Calculator from Sargasso tool. This tool will assist you in determining the range of available IPs.
Once you have identified the range, subtract the range used by your router's DHCP server from the resulting range. This updated range can then be utilized by MetalLB and specified in `apps/core/metalb/configs.yaml``.
To initiate the setup, execute the make bootstrap
command (refer to the example below). This command will manage the installation and configuration of Argo CD, along with the application of the `root`` Application (app of apps).
GITHUB_PRIVATE_KEY_PATH=./mykey.pem make bootstrap
After running the bootstrap command, the following tasks will be automatically performed:
- Argo CD syncs the root app, triggering the synchronization of the core
AppProject
andApplicationSet
. - The ApplicationSet core initiates the sync process for all underlying Apps located in the
apps/
directory.
Once all apps are successfully synchronized, you can access Argo CD through the specified domain name.