Files
homelab-gitops/README.md

2.1 KiB
Raw Permalink Blame History

Snarfnet Homelab GitOps & Infrastructure as Code

This repository contains declarative configurations for the Snarfnet homelab infrastructure across Kubernetes clusters (spaceport, aerodrome), Docker Swarm (shipyard), Synology NAS storage arrays, and Harvester HCI.

Repository Layout

homelab-gitops/
├── terraform/
│   ├── authentik/       # Authentik Providers, Applications, Proxy ForwardAuth, and Security Policies
│   ├── harvester/       # Declarative VLAN networks, VM templates, and SSH keys
│   ├── shipyard-swarm/  # Docker Swarm stacks (NPM, Gotify, Homebox, Peanut)
│   └── synology/        # Synology shared folders (kubernetes, docker, backups, media) and NFS rules
├── argocd/
│   ├── bootstrap/       # Root App-of-Apps and Project definitions
│   ├── spaceport/       # Applications hosted on spaceport (Gitea, Zabbix, Jenkins, Semaphore, Coder, Homepage)
│   └── aerodrome/       # Applications hosted on aerodrome (Authentik, AWX, Grafana, Uptime Kuma, Longhorn)
└── manifests/           # Raw Kubernetes YAML manifests managed by ArgoCD
    ├── spaceport/
    └── aerodrome/

Terraform State Storage

Terraform state is stored in Gitea's built-in HTTP State Backend:

  • Backend URL: https://git.snarfnet.net/api/packages/snarf/terraform/state/<module>
  • HTTP Authentication: Basic auth via Gitea account (snarf)

ArgoCD GitOps Engine

  • ArgoCD Server: https://argo.snarfnet.net (hosted on spaceport in namespace infrastructure)
  • Target Clusters:
    • In-cluster (https://kubernetes.default.svc): Spaceport (sninfr0lnxctl01–04, sninfr0lnxwrk01–06)
    • Remote cluster (https://140.44.4.11:6443): Aerodrome (sninfr2lnxctl01–03, sninfr2lnxwrk01–07)
  • Sync Policy:
    • automated: { prune: false, selfHeal: true }
    • syncOptions: [ServerSideApply=true, CreateNamespace=true]
  • Notifications Pipeline:
    • Webhook integration to Gotify (http://140.44.4.70:8090/message?token=A8aWxGiToPsAuToMaTiO)
    • Automated failover bridge to Discord channel #infra-alerts