58 lines
1.7 KiB
Plaintext
58 lines
1.7 KiB
Plaintext
```plaintext
|
|
%% GitOps Reconciliation Loop (ADR-0006)
|
|
%% Flowchart showing Flux CD GitOps workflow
|
|
|
|
flowchart TB
|
|
subgraph git["📂 Git Repositories"]
|
|
direction TB
|
|
homelab["homelab-k8s2<br/>(cluster config)"]
|
|
apps["Application Repos<br/>(argo, kubeflow, etc.)"]
|
|
end
|
|
|
|
subgraph flux["⚙️ Flux Controllers"]
|
|
direction TB
|
|
source["Source Controller<br/>📥 Fetches repos"]
|
|
kustomize["Kustomize Controller<br/>🔧 Applies manifests"]
|
|
helm["Helm Controller<br/>📦 Manages charts"]
|
|
notification["Notification Controller<br/>📢 Alerts"]
|
|
end
|
|
|
|
subgraph k8s["☸️ Kubernetes Cluster"]
|
|
direction TB
|
|
secrets["🔐 SOPS Secrets<br/>(Age decrypted)"]
|
|
resources["📋 Deployed Resources<br/>(Pods, Services, etc.)"]
|
|
drift["🔄 Drift Detection"]
|
|
end
|
|
|
|
subgraph notify["📱 Notifications"]
|
|
ntfy["ntfy<br/>(push alerts)"]
|
|
end
|
|
|
|
%% GitOps flow
|
|
homelab -->|"GitRepository CR"| source
|
|
apps -->|"GitRepository CR"| source
|
|
source -->|"Fetches every 5m"| kustomize
|
|
source -->|"Fetches charts"| helm
|
|
|
|
kustomize -->|"Decrypts with Age"| secrets
|
|
kustomize -->|"kubectl apply"| resources
|
|
helm -->|"helm upgrade"| resources
|
|
|
|
resources -->|"Actual state"| drift
|
|
drift -->|"Compares to Git"| kustomize
|
|
drift -->|"Auto-corrects"| resources
|
|
|
|
notification -->|"Success/failure"| ntfy
|
|
|
|
classDef repo fill:#f5a623,color:black
|
|
classDef controller fill:#4a90d9,color:white
|
|
classDef cluster fill:#50c878,color:white
|
|
classDef alert fill:#9b59b6,color:white
|
|
|
|
class homelab,apps repo
|
|
class source,kustomize,helm,notification controller
|
|
class secrets,resources,drift cluster
|
|
class ntfy alert
|
|
|
|
```
|