TazLab Flux DAG
Scope
This page documents the actual Flux reconciliation DAG for the active tazlab-k8s cluster, including what depends on what and which Kubernetes objects each layer installs.
Current Synthesis
Flux bootstraps from clusters/tazlab-k8s/flux-system/gotk-sync.yaml, whose GitRepository points at github.com/tazzo/tazlab-k8s and whose root Kustomization targets ./clusters/tazlab-k8s.
The cluster then converges through a layered graph. Some layers are true DAG roots and can be applied in parallel after bootstrap; others wait for specific prerequisites such as namespaces, bridge objects, or config secrets.
Flux Root
Flux controllers installed by bootstrap:
- source-controller
- kustomize-controller
- helm-controller
- notification-controller
- image-reflector-controller
- image-automation-controller
Root reconciliation entrypoint:
flux-systemGitRepositoryflux-systemKustomization at./clusters/tazlab-k8s
DAG Layers
| Layer | Depends On | What It Installs | Main Runtime Surface |
|---|---|---|---|
infrastructure-operators-namespaces | Flux root only | Namespace ai-agents | ai-agents namespace for agent workloads |
infrastructure-operators-core | Flux root only | cert-manager, traefik, reloader, namespace scaffolding for dex, auth, cloudflare-ddns, tazlab-db, hugo-blog | cluster ingress, certificate management, reload automation, app namespace scaffolding |
infrastructure-operators-data | Flux root only | postgres-operator (Crunchy PGO) | Postgres operator and its CRDs/controllers |
infrastructure-monitoring | infrastructure-operators-namespaces | metrics-server, kube-prometheus-stack, Grafana ingress, Grafana bootstrap secret sync, dashboards | Prometheus, Grafana, node-exporter, kube-state-metrics, metrics-server |
infrastructure-bridge | infrastructure-operators-core, infrastructure-operators-namespaces | IngressClass, ClusterIssuer tazlab-issuer | Traefik ingress class and ACME issuer prerequisites |
infrastructure-configs | infrastructure-bridge | ExternalSecrets and static config for cert-manager, wildcard TLS, tazlab-db, Dex, ai-agents, GitHub automation | secret/config objects consumed by later layers |
infrastructure-instances | infrastructure-configs, infrastructure-operators-data | tazlab-db cluster, cloudflare-ddns, pgadmin, homepage, traefik service, longhorn service, dex deployment/service, tazlab-db-external service | database, dashboards, homepage, DNS updater, Dex, Longhorn UI, Traefik dashboard |
infrastructure-auth | infrastructure-instances | oauth2-proxy deployment/service/ingress/middleware plus secret/config wiring | forward-auth gate for protected services |
apps-static | infrastructure-configs | hugo-blog deployment/service, certificates, redirect middleware, ingress rules | public blog site |
apps-data | infrastructure-configs | mnemosyne-mcp deployment/service, ExternalSecret, RBAC | semantic memory service |
Ordering Rules
Roots
These layers are DAG roots after Flux bootstrap:
infrastructure-operators-namespacesinfrastructure-operators-coreinfrastructure-operators-data
Downstream Dependencies
infrastructure-monitoringwaits for namespaces because it needs the monitoring namespace and the shared cluster baseline first.infrastructure-bridgewaits for core ingress/certificate prerequisites.infrastructure-configswaits for bridge because the TLS and secret wiring it creates is consumed later by ingress-backed workloads.infrastructure-instanceswaits for both configs and data, butwait: falsekeeps Flux from blocking on runtime readiness that Kubernetes already models through its own probes and initContainers.infrastructure-authwaits for instances so the auth gateway can sit on top of already-created service targets.apps-staticandapps-datawait for configs because they both consume cluster variables and secret-backed configuration.
Installed Pods And Services
Operator and Core Surfaces
cert-managercontroller and CRDstraefikDeployment plus LoadBalancer service on192.168.1.240reloadercontroller- namespace-only scaffolding for
dex,auth,cloudflare-ddns,tazlab-db,hugo-blog
Data Surfaces
postgres-operatorcontrollertazlab-dbPostgres cluster with primary, pgBouncer, backups, and userspgadmin,mnemosyne,tazlab-admin,grafana
Monitoring Surfaces
metrics-serverkube-prometheus-stackcomponents, including Prometheus, Grafana, node-exporter, and kube-state-metrics- Grafana LoadBalancer service on
192.168.1.240:8005
Instance Surfaces
cloudflare-ddnsdeploymentpgadmindeployment and LoadBalancer service on192.168.1.240:8001homepagedeployment and LoadBalancer service on192.168.1.240:8000traefikdashboard LoadBalancer service on192.168.1.240:8003longhorndashboard LoadBalancer service on192.168.1.240:8002dexdeployment and ClusterIP service on ports5556and5558tazlab-db-externalLoadBalancer service on192.168.1.241:5432
Auth Surface
oauth2-proxydeployment, ClusterIP service, ingress, and Traefik forward-auth middleware onauth.tazlab.net
Application Surfaces
hugo-blogdeployment, service, ingress, certificate, and redirect middleware onblog.tazlab.netmnemosyne-mcpdeployment and LoadBalancer service on192.168.1.240:8004
Scope Note
The repository also contains an apps-openclaw Flux branch, but this wiki pass intentionally excludes it because the user asked to leave OpenClaw out of the current documentation work.
Relationships
- TazLab Cluster Delivery Flow
- TazLab System Map
- TazLab K8s Layers
- TazLab Flux DAG Troubleshooting
- tazlab-k8s
- TazLab Secret And Identity Flow
Source Basis
AGENTS.ctx/tazlab-k8s/CONTEXT.mdAGENTS.ctx/cluster/CONTEXT.mdtazlab-k8s/clusters/tazlab-k8s/flux-system/gotk-sync.yamltazlab-k8s/clusters/tazlab-k8s/*.yamltazlab-k8s/infrastructure/operators/*tazlab-k8s/infrastructure/instances/*tazlab-k8s/infrastructure/auth/oauth2-proxy/*tazlab-k8s/apps/base/hugo-blog/*tazlab-k8s/apps/base/mnemosyne-mcp/*