Commit Graph

8 Commits

Author SHA1 Message Date
Julia McGhee
7db7bc916e Fix longhorn-nvme: add storageclass.yaml to Longhorn kustomization
The longhorn-nvme StorageClass was defined but never included in the
Longhorn kustomization, so it was never deployed. Add it and revert
Gitea manifests back to longhorn-nvme as intended.
2026-03-21 15:51:24 +00:00
Julia McGhee
c6ce40a557 Add Ansible storage role for NVMe setup and Longhorn dual-disk config
Automates LV expansion, NVMe mount, and Longhorn node disk tagging
(hdd/nvme) via Ansible instead of Kustomize-managed manifests.
2026-03-21 13:19:04 +00:00
Julia McGhee
3b8fd4afd2 expand disk storage 2026-03-21 09:53:50 +00:00
Julia McGhee
051c957347 Add observability stack: ServiceMonitors, Tempo, OTel API instrumentation, dashboards
- Add ServiceMonitors for Traefik, ArgoCD, and Longhorn
- Enable cert-manager ServiceMonitor via helm values
- Deploy Grafana Tempo for distributed tracing (single-binary, Longhorn PVC)
- Add Tempo datasource with trace-to-logs and trace-to-metrics correlation
- Instrument API with OpenTelemetry SDK (Prometheus metrics + OTLP traces)
- Replace console.log with pino structured logging + pino-http middleware
- Add Grafana dashboards for Traefik, API overview, and PostgreSQL (CNPG)
2026-03-20 21:01:05 +00:00
Julia McGhee
e863ebed9b Set Longhorn default replica count to 1 for single-node cluster
With only one node, 2 replicas can never be scheduled — volumes report
as degraded. Match the replica count to the node count.
2026-03-20 19:39:15 +00:00
Julia McGhee
6f1418d0c6 Disable Longhorn pre-upgrade checker job for ArgoCD compatibility 2026-03-20 18:48:06 +00:00
Julia McGhee
4aff69d0e6 Add Helm-based ArgoCD Applications for platform operators
- Longhorn: Helm chart v1.7.2 (sync-wave -2, installs first)
- cert-manager: Helm chart v1.16.3 with CRDs enabled
- CloudNativePG: Helm chart v0.23.0
- Sealed Secrets: Helm chart v2.16.2
- Remove custom StorageClass (Helm chart manages it)

Previously only config resources were deployed without the actual
operators, causing PVCs to pend and CRDs to be missing.
2026-03-20 18:40:16 +00:00
Julia McGhee
96e3f32f28 Initial monorepo scaffold
Turborepo + pnpm monorepo for k3s homelab cluster on Intel NUCs.

- Apps: Next.js web frontend, Express API (TypeScript, Dockerfiles, k8s manifests)
- Packages: shared UI, ESLint config, TypeScript config, Drizzle DB schemas
- Infra/Ansible: bare-metal provisioning with roles for common, k3s-server, k3s-agent, hardening
- Infra/Kubernetes: ArgoCD GitOps (app-of-apps + ApplicationSets), platform components
  (cert-manager, Traefik, CloudNativePG, Valkey, Longhorn, Sealed Secrets), namespaces
- Observability: kube-prometheus-stack, Loki, Promtail as ArgoCD Applications
- CI/CD: GitHub Actions for PR builds, preview deploys, production deploys
- DX: Taskfile, utility scripts, copier templates, Ubiquiti network docs
2026-03-19 22:24:56 +00:00