Homelab — k3s GitOps Bootstrap
État au 18 juillet 2026 — cluster k3s v1.36.2 restauré après corruption PostgreSQL Harbor.
Cluster
| Node |
Rôle |
OS |
Arch |
IP |
| piroof |
control-plane |
Debian 13 |
arm64 |
192.168.1.3 |
| nixos |
worker |
Ubuntu 24.04 |
amd64 |
192.168.1.16 |
Bootstrap (ordre réel)
- k3s install — 2 nodes, CoreDNS + metrics-server + local-path
- ingress-nginx — LoadBalancer
192.168.1.16
- cert-manager — v1.16.3, ClusterIssuer
letsencrypt-nginx
- MinIO — standalone S3 (
minio.elfenec.org / minioapi.elfenec.org)
- Forgejo — Gitea fork (
forgejo.elfenec.org, admin elfenec)
- ArgoCD — GitOps (
argocd.elfenec.org, projet apps + secret)
- Harbor — v2.14.0, S3 backend MinIO, PostgreSQL standalone
- Apps — fenec, manim, n8n, kubermetrics, medusa (en cours)
Apps ArgoCD
| App |
Sync |
Health |
Notes |
| fenec |
Unknown |
Healthy |
JupyterHub fenec |
| manim |
Unknown |
Healthy |
JupyterHub manim |
| n8n |
Unknown |
Healthy |
Workflows |
| kubermetrics |
Unknown |
Healthy |
Prometheus/Grafana stack |
| medusa |
Unknown |
Degraded |
En attente build Kaniko |
| reflector |
Synced |
Healthy |
Copie secrets Harbor |
| harbor-patch-* (x8) |
Synced |
Healthy |
Patch SA avec pull secret |
Architecture clé
- Harbor utilise MinIO comme backend S3 (
harbor bucket)
- Images mirrorées via
skopeo copy (scripts apps/*/mirror-images.sh)
- Pull secrets gérés par
reflector + harbor-patch-appset (robot account)
- Build custom via Kaniko (
ci/image-builder, CRD builds.build.elfenec.org)
- Cert staging pour Harbor (rate limit Let's Encrypt, retry 2026-07-19)
Dépendances
graph TD
k3s --> ingress-nginx
k3s --> cert-manager
k3s --> MinIO
MinIO --> Harbor
Harbor --> n8n
Harbor --> fenec
Harbor --> manim
Harbor --> kubermetrics
Harbor --> medusa
Forgejo --> ArgoCD
ArgoCD --> Apps
ingress-nginx --> Apps
Commandes utiles
# Voir tout
kubectl get pods,svc,ing,pvc -A
# Logs ArgoCD
kubectl logs -n argocd deployment/argocd-server
# Logs Harbor core
kubectl logs -n harbor deployment/harbor-core
# MinIO client (depuis host)
mc ls minio/harbor/registry/v2/
# Trigger mirror images
HARBOR_PASS=$HARBOR_PASS bash apps/n8n/mirror-images.sh
# Trigger Kaniko build
kubectl apply -f ci/image-builder/examples/build-medusa.yaml
Secrets
| Secret |
Namespace |
Usage |
| harbor-pull-secret |
kube-system |
Reflected via reflector |
| connect-repo |
argocd |
Forgejo git credentials |
| connect-harbor |
argocd |
Harbor helm credentials |
Problèmes connus
- Harbor staging cert → containerd config
insecure_skip_verify: true (fix via registries.yaml)
- medusa image pas encore buildée (Kaniko en cours)
- Apps ArgoCD en statut "Unknown" (sync à vérifier)
- Let's Encrypt rate limit pour
harbor.elfenec.org jusqu'au 2026-07-19