Skip to content

Commit 46f0875

Browse files
committed
up
1 parent 0e2c6f2 commit 46f0875

4 files changed

Lines changed: 39 additions & 0 deletions

File tree

BOOTSTRAP.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ ArgoCD deploys applications in a specific order to avoid race conditions and SSD
198198
| **0** | **1Password Connect** | Secret backend | Required by External Secrets Operator |
199199
| **0** | **External Secrets Operator** | Secret management CRDs | Longhorn needs ExternalSecret CRD for backup credentials |
200200
| **1** | **Longhorn** | Storage layer | Needs networking + secret CRDs; other apps need storage |
201+
| **1** | **Snapshot Controller** | Storage API | Provides VolumeSnapshot CRDs required by VolSync |
201202
| **1** | **Garage** | S3-compatible object storage | Needs storage layer |
202203
| **2** | **Infrastructure** | Core services (cert-manager, GPU operators, databases, etc.) | Depends on networking and storage being ready |
203204
| **3** | **Monitoring** | Prometheus, Grafana, alerts | Monitors the infrastructure |

docs/storage-architecture.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ This document outlines the storage architecture for the cluster, focusing on dat
66

77
The cluster uses a layered storage approach:
88
- **Longhorn**: Distributed block storage for runtime replication (2 replicas per volume)
9+
- **Snapshot Controller**: Manages VolumeSnapshot lifecycles and CRDs
910
- **VolSync**: Daily backups of all PVCs to S3 using Restic
1011
- **Database-native backups**: CloudNativePG and Crunchy Postgres backup directly to S3
1112

@@ -199,6 +200,7 @@ mc ls rustfs/volsync/home-assistant/
199200
| Component | Location |
200201
|-----------|----------|
201202
| VolSync operator | `infrastructure/storage/volsync/` |
203+
| Snapshot Controller | `infrastructure/storage/snapshot-controller/` |
202204
| Longhorn (replication only) | `infrastructure/storage/longhorn/` |
203205
| App VolSync configs | `my-apps/<category>/<app>/replicationsource.yaml` |
204206
| CNPG backup config | `infrastructure/database/cloudnative-pg/*/cluster.yaml` |

infrastructure/controllers/argocd/apps/kustomization.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ resources:
88
- 1passwordconnect.yaml # Wave 0 - Secret backend (required by External Secrets)
99
- external-secrets.yaml # Wave 0 - External Secrets CRDs (required by Longhorn)
1010
- longhorn-app.yaml # Wave 1 - Storage foundation
11+
- snapshot-controller-app.yaml # Wave 1 - VolumeSnapshot controller + CRDs
1112
- volsync-app.yaml # Wave 1 - PVC backup and replication
1213
# ApplicationSets for automatic discovery
1314
- infrastructure-appset.yaml # Wave 2
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Snapshot Controller
2+
# Storage layer component - manages VolumeSnapshot CRDs and lifecycle
3+
apiVersion: argoproj.io/v1alpha1
4+
kind: Application
5+
metadata:
6+
name: snapshot-controller
7+
namespace: argocd
8+
annotations:
9+
argocd.argoproj.io/sync-wave: "1"
10+
labels:
11+
app.kubernetes.io/part-of: infrastructure
12+
spec:
13+
project: infrastructure
14+
source:
15+
repoURL: https://github.com/mitchross/talos-argocd-proxmox.git
16+
targetRevision: main
17+
path: infrastructure/storage/snapshot-controller
18+
destination:
19+
server: https://kubernetes.default.svc
20+
namespace: snapshot-controller
21+
syncPolicy:
22+
automated:
23+
prune: true
24+
selfHeal: true
25+
allowEmpty: false
26+
syncOptions:
27+
- CreateNamespace=true
28+
- ServerSideApply=true
29+
- RespectIgnoreDifferences=true
30+
retry:
31+
limit: 10
32+
backoff:
33+
duration: 15s
34+
factor: 2
35+
maxDuration: 5m

0 commit comments

Comments
 (0)