Files
homelab-gitops/README.md

41 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```text
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`