The source code for my own K3s-based Kubernetes-Cluster at home.
Repo is incomplete and in active development
Table of Contents
Kubernetes | Just Kubernetes | ||
ArgoCD | Automatically deploys manifests from git repo | ||
cert-manager | Certificate Management for Kubernetes | ||
Grafana | Dashboard that displays metrics from Prometheus | ||
Istio | The leading Kubernetes service mesh |
|
|
Rook/Ceph | Highly scalable distributed storage |
|
|
MetalLB | A load balancer | ||
Prometheus | Monitoring Scraper | ||
Goldilocks | CPU/Memory Reqests Reccomender | ||
Kyverno | Policy Management | ||
Loki | Log Aggregator | ||
Headscale | Mesh VPN |
Repo Folder Structure
π cluster #all cluster-relevant stuff
ββπ applications #this is where all application definitions for argo-cd live
ββπ config #here are all Chart.yaml, values.yaml and other deployment files
ββπ main.yaml #this file defines the app of apps for argocd (it applies everything in the applications folder)
ββπ repository.yaml #this file defines the repo from where this repo gets pulled in argo-cd
Example config folder structure
π config #the config directory from above
| ...
ββπ example-helm-application #the folder of an application that gets deployed with helm and argocd
βββπ Chart.yaml #this file defines the helm chart that the application uses
βββπ values.yaml #this file configures aspects of the application
ββπ example-manifest #the folder of an application that has a manually written manifest
βββπ example-manifest.yaml #this is a manually written manifest for an application which doesn't have a helm chart
| ...
This is a possible way to get this setup running on your own cluster. It assumes you use K3s. I have never tested it, so use it at your own discretion.
- Clone repo
git clone https://github.com/jkulzer/kube.git
cd kube
... //TODO
Add missing steps
7. After some time, get the certificate generated for the domain using the following command:
```sh
kubectl get configmaps wildcard-kube-home-distribution -o jsonpath='{.data}' | jq -r '.["kube-home.crt"]' > /tmp/kube-home.crt
- GitOps with ArgoCD
- Automatic Certificate Management
- SSO with Authelia and lldap
- ArgoCD
- Grafana
- Homer
- Kiali
- Prometheus
- Alertmanager
- Rook/Ceph Backups
- Monitoring
- Secure Prometheus
- Create nice dashboard
- Alerting
- Renovate
- Unified Node management
- Talos
See the open issues for a full list of proposed features (and known issues).
Project Link: https://github.com/jkulzer/kube
Helpful repos: