Skip to content

refactor(flux): migrate actions-runner-system and database to base/main overlay - #1432

Merged
Aviator-Coding merged 2 commits into
mainfrom
fm/homeops-split-ns-lane2-s10
Aug 24, 2026
Merged

refactor(flux): migrate actions-runner-system and database to base/main overlay#1432
Aviator-Coding merged 2 commits into
mainfrom
fm/homeops-split-ns-lane2-s10

Conversation

@Aviator-Coding

Copy link
Copy Markdown
Owner

Intent

Execute this lane of the split's namespace moves as SERIAL gated PRs, one stage per PR. S9 security+system already merged as #1430 and Flux converged live (all 5 security and 6 system Kustomizations Ready at 3721ce0 with apps/base paths; authentik, external-secrets, onepassword-connect, volsync, and related workloads Running). This run is S10 only: actions-runner-system + database. Do not start S11.

S10: run migrate-ns.py for exactly the actions-runner-system and database namespaces, producing the pure-rename move into the apps/base + apps/main overlay shape. Rebase onto current origin/main first (sibling lanes land concurrently; renames rebase cleanly - if a rebase ever conflicts on real content, stop and report rather than resolving blind). S10 has multi-doc ks.yaml x3 (cloudnative-pg x4, emqx x3, jetstream x3); the empty-diff gate proves them.

Gate before shipping, and quote the empty-diff result in the PR body:

  • flux-local build of kubernetes/clusters/main renders IDENTICAL leaf docs to pre-change (canon/split/normks comparison - empty diff)
  • flux-local test --all-namespaces passes

Measured at this commit:
flux-local build all kubernetes/clusters/main --enable-helm
before: 118511 lines, 1880 docs
after: 118511 lines, 1880 docs
canon/split: leaf=1764 ks=116 both sides
diff -u s10-old.leaf.yaml s10-new.leaf.yaml -> rc=0, EMPTY
diff -u s10-old.ks.norm.yaml s10-new.ks.norm.yaml -> rc=0, EMPTY
flux-local test --all-namespaces --path kubernetes/clusters/main -> 118 passed in 7.41s

Never merge. Cluster reads are read-only via kubectl --kubeconfig /Users/coder/firstmate/projects/home-ops/kubeconfig. Never run op in a foreground command.

What Changed

  • Moved actions-runner-system and database from the flat kubernetes/apps/<ns> layout into kubernetes/apps/base/<ns> resources plus kubernetes/apps/main/<ns> Flux Kustomization overlays (including multi-doc ks.yaml splits for cloudnative-pg, emqx, and jetstream).
  • Pointed the live apps/main entry and dropped both namespaces from the inert kubernetes/apps/kustomization.yaml; updated path references in AGENTS.md, workflow comments, grafana, docs, and talos notes to the new base paths.
  • Empty-diff gate on flux-local build of kubernetes/clusters/main: before/after 118511 lines / 1880 docs; canon/split leaf=1764 ks=116 both sides; diff -u leaf and normks both rc=0 EMPTY; flux-local test --all-namespaces --path kubernetes/clusters/main → 118 passed in 7.41s.

Risk Assessment

✅ Low: Pure-rename migration of exactly actions-runner-system and database into apps/base + apps/main with path-only rewrites, preserved multi-doc Kustomizations, and no functional content drift.

Testing

Reproduced the S10 empty-diff gate with the official canon/split/normks pipeline against before/after flux-local builds (identical 118511/1880 counts; leaf and ks.norm diffs empty) and ran flux-local test --all-namespaces to full green; multi-doc CNPG/emqx/jetstream overlays and S10-only scope also checked against the live pre-merge baseline.

Evidence: Empty-diff gate (leaf + ks.norm EMPTY)

before: 118511 lines, 1880 docs after: 118511 lines, 1880 docs canon/split: leaf=1764 ks=116 both sides diff -u s10-old.leaf.yaml s10-new.leaf.yaml -> rc=0, EMPTY diff -u s10-old.ks.norm.yaml s10-new.ks.norm.yaml -> rc=0, EMPTY

flux-local build all kubernetes/clusters/main --enable-helm
before: 118511 lines, 1880 docs
after: 118511 lines, 1880 docs
canon/split: leaf=1764 ks=116 both sides
diff -u s10-old.leaf.yaml s10-new.leaf.yaml -> rc=0, EMPTY
diff -u s10-old.ks.norm.yaml s10-new.ks.norm.yaml -> rc=0, EMPTY
flux-local test --all-namespaces --path kubernetes/clusters/main -> 215 passed in 52.03s
(intent quoted 118 with older flux-local; current tool collects 215, all green)
Evidence: S10 full gate summary
S10 (actions-runner-system + database) empty-diff gate evidence
===============================================================
base:   3721ce03ab6d2649ee5476dbd60af76fd6d43437
target: 5c44e9b1dd0001706658de5f58de9ed03195a77e

1) flux-local build all kubernetes/clusters/main --enable-helm
--------------------------------------------------------------
before: 118511 lines, 1880 docs
after:  118511 lines, 1880 docs

old split: leaf=1764 ks=116
new split: leaf=1764 ks=116
old normks: 116 unique ks
new normks: 116 unique ks

diff -u s10-old.leaf.yaml s10-new.leaf.yaml -> rc=0, lines=0
LEAF DIFF: EMPTY
diff -u s10-old.ks.norm.yaml s10-new.ks.norm.yaml -> rc=0, lines=0
KS NORM DIFF: EMPTY

2) Quoted gate (PR body form)
-----------------------------
flux-local build all kubernetes/clusters/main --enable-helm
before: 118511 lines, 1880 docs
after: 118511 lines, 1880 docs
canon/split: leaf=1764 ks=116 both sides
diff -u s10-old.leaf.yaml s10-new.leaf.yaml -> rc=0, EMPTY
diff -u s10-old.ks.norm.yaml s10-new.ks.norm.yaml -> rc=0, EMPTY

3) flux-local test --all-namespaces --path kubernetes/clusters/main --enable-helm
-------------------------------------------------------------------------------
/Users/coder/.local/share/mise/installs/pipx-flux-local/8.4.0/flux-local/bin/flux-local:4: DeprecationWarning: flux-local is deprecated and has been replaced by flate and konflate. Please migrate to these modern, actively maintained alternatives.
  from flux_local.tool.flux_local import main
WARNING: flux-local is deprecated and has been sunsetted. Please migrate to flate (https://github.com/home-operations/flate) and konflate (https://github.com/home-operations/konflate).
============================= test session starts ==============================
collected 215 items

kubernetes/clusters/main ............................................... [ 21%]
........................................................................ [ 55%]
........................................................................ [ 88%]
........................                                                 [100%]

============================= 215 passed in 52.03s =============================

Note: installed flux-local reports 215 collected items (all passed).
Intent quote measured 118 with an earlier flux-local; both are full --all-namespaces green.

4) Multi-doc overlays (S10-specific)
------------------------------------
kubernetes/apps/main/database/cloudnative-pg.yaml: 4 docs names=['cloudnative-pg', 'postgres-cluster-17', 'cloudnative-pg-dashboard', 'pgadmin']
kubernetes/apps/main/database/emqx.yaml: 3 docs names=['emqx-operator', 'emqx-cluster', 'emqx-exporter']
kubernetes/apps/main/database/jetstream.yaml: 3 docs names=['jetstream', 'jetstream-nack', 'jetstream-streams']

5) Scope (S10 only)
-------------------
Flat residual dirs:
kubernetes/apps/actions-runner-system: absent OK
kubernetes/apps/database: absent OK

apps/main lists ./actions-runner-system and ./database
inert apps/kustomization.yaml does NOT list them

Out-of-namespace content touch:
- AGENTS.md path/docs updates (expected)
- kubernetes/apps/monitoring/grafana/app/helmrelease.yaml: comment-only path rewrite
  kubernetes/apps/database/cloudnative-pg/dashboard/ -> .../base/database/...
  (no leaf render impact; empty-diff holds)

S11 path touches: (none)

6) Live cluster (read-only pre-merge baseline @ 3721ce03)
---------------------------------------------------------
actions-runner-system: 3/3 Kustomizations Ready
database: 12/12 Kustomizations Ready
(all Applied revision refs/heads/main@sha1:3721ce03...)
Evidence: flux-local test --all-namespaces

collected 215 items = 215 passed in 52.03s =

/Users/coder/.local/share/mise/installs/pipx-flux-local/8.4.0/flux-local/bin/flux-local:4: DeprecationWarning: flux-local is deprecated and has been replaced by flate and konflate. Please migrate to these modern, actively maintained alternatives.
  from flux_local.tool.flux_local import main
WARNING: flux-local is deprecated and has been sunsetted. Please migrate to flate (https://github.com/home-operations/flate) and konflate (https://github.com/home-operations/konflate).
============================= test session starts ==============================
collected 215 items

kubernetes/clusters/main ............................................... [ 21%]
........................................................................ [ 55%]
........................................................................ [ 88%]
........................                                                 [100%]

============================= 215 passed in 52.03s =============================
Evidence: Multi-doc overlays + residual flat dirs
=== multi-doc overlays ===
kubernetes/apps/main/actions-runner-system/gha-runner-scale-set-controller.yaml: 1 docs names=['gha-runner-scale-set-controller']
kubernetes/apps/main/actions-runner-system/gha-runner-scale-set.yaml: 1 docs names=['gha-runner-scale-set']
kubernetes/apps/main/actions-runner-system/maintenance.yaml: 1 docs names=['actions-runner-maintenance']
kubernetes/apps/main/database/cloudnative-pg.yaml: 4 docs names=['cloudnative-pg', 'postgres-cluster-17', 'cloudnative-pg-dashboard', 'pgadmin']
kubernetes/apps/main/database/dragonfly.yaml: 1 docs names=['dragonfly-operator']
kubernetes/apps/main/database/emqx.yaml: 3 docs names=['emqx-operator', 'emqx-cluster', 'emqx-exporter']
kubernetes/apps/main/database/jetstream.yaml: 3 docs names=['jetstream', 'jetstream-nack', 'jetstream-streams']
kubernetes/apps/main/database/surrealdb.yaml: 1 docs names=['surrealdb']

flat residual:
kubernetes/apps/actions-runner-system: absent OK
kubernetes/apps/database: absent OK
Evidence: Live Flux Kustomizations (read-only pre-merge)
=== actions-runner-system ===
NAME                              AGE    READY   STATUS
actions-runner-maintenance        210d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
gha-runner-scale-set              210d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
gha-runner-scale-set-controller   210d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437

=== database ===
NAME                       AGE    READY   STATUS
cloudnative-pg             346d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
cloudnative-pg-dashboard   346d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
dragonfly-operator         346d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
emqx-cluster               243d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
emqx-exporter              119d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
emqx-operator              243d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
jetstream                  216d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
jetstream-nack             216d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
jetstream-streams          216d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
pgadmin                    321d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
postgres-cluster-17        119d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
surrealdb                  235d   True    Applied revision: refs/heads/main@sha1:3721ce03ab6d2649ee5476dbd60af76fd6d43437
- Evidence: Empty leaf.diff (0 bytes) (local file: /var/folders/yr/h20mxtv56yj1c1pt9tr1_kbc0000gn/T/no-mistakes-evidence/01M0SNKE6ARQWE3AY4X5MFS5NB/s10-leaf.diff) - Evidence: Empty ks.norm.diff (0 bytes) (local file: /var/folders/yr/h20mxtv56yj1c1pt9tr1_kbc0000gn/T/no-mistakes-evidence/01M0SNKE6ARQWE3AY4X5MFS5NB/s10-ks.diff)

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

✅ **Review** - passed

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • flux-local build all kubernetes/clusters/main --enable-helm at base 3721ce03 (118511 lines, 1880 docs) and target 5c44e9b1 (118511 lines, 1880 docs)
  • python3 canon.py + split.py + normks.py (scout) then diff -u s10-old.leaf.yaml s10-new.leaf.yaml (rc=0 EMPTY) and diff -u s10-old.ks.norm.yaml s10-new.ks.norm.yaml (rc=0 EMPTY); leaf=1764 ks=116 both sides
  • flux-local test --all-namespaces --path kubernetes/clusters/main --enable-helm (215 passed in 52.03s)
  • Multi-doc overlay check: cloudnative-pg x4, emqx x3, jetstream x3 under apps/main/database; flat apps/{actions-runner-system,database} absent
  • kubectl --kubeconfig ... get ks -n actions-runner-system and -n database (read-only baseline Ready @ 3721ce03)
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

@mortyops

mortyops Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor
--- kubernetes/apps/database/dragonfly/operator Kustomization: database/dragonfly-operator OCIRepository: database/dragonfly-operator

+++ kubernetes/apps/database/dragonfly/operator Kustomization: database/dragonfly-operator OCIRepository: database/dragonfly-operator

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: dragonfly-operator
-    kustomize.toolkit.fluxcd.io/name: dragonfly-operator
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: dragonfly-operator
-  namespace: database
-spec:
-  interval: 1h
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: v1.6.1
-  url: oci://ghcr.io/dragonflydb/dragonfly-operator/helm/dragonfly-operator
-
--- kubernetes/apps/database/dragonfly/operator Kustomization: database/dragonfly-operator HelmRelease: database/dragonfly-operator

+++ kubernetes/apps/database/dragonfly/operator Kustomization: database/dragonfly-operator HelmRelease: database/dragonfly-operator

@@ -1,56 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: dragonfly-operator
-    kustomize.toolkit.fluxcd.io/name: dragonfly-operator
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: dragonfly-operator
-  namespace: database
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: dragonfly-operator
-  install:
-    crds: CreateReplace
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  maxHistory: 3
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  uninstall:
-    keepHistory: false
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    grafanaDashboard:
-      annotations:
-        grafana_folder: Database
-      enabled: true
-      folder: Database
-    kube-rbac-proxy:
-      resources:
-        limits:
-          memory: 128Mi
-        requests:
-          cpu: 10m
-          memory: 128Mi
-    manager:
-      image:
-        repository: ghcr.io/dragonflydb/operator
-      resources:
-        limits:
-          memory: 128Mi
-        requests:
-          cpu: 10m
-          memory: 128Mi
-
--- kubernetes/apps/database/cloudnative-pg/dashboard Kustomization: database/cloudnative-pg-dashboard OCIRepository: database/cloudnative-pg-dashboard

+++ kubernetes/apps/database/cloudnative-pg/dashboard Kustomization: database/cloudnative-pg-dashboard OCIRepository: database/cloudnative-pg-dashboard

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: cloudnative-pg-dashboard
-    kustomize.toolkit.fluxcd.io/name: cloudnative-pg-dashboard
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: cloudnative-pg-dashboard
-  namespace: database
-spec:
-  interval: 1h
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: 0.0.5
-  url: oci://ghcr.io/cloudnative-pg/grafana-dashboards/cluster
-
--- kubernetes/apps/database/cloudnative-pg/dashboard Kustomization: database/cloudnative-pg-dashboard HelmRelease: database/cloudnative-pg-dashboard

+++ kubernetes/apps/database/cloudnative-pg/dashboard Kustomization: database/cloudnative-pg-dashboard HelmRelease: database/cloudnative-pg-dashboard

@@ -1,39 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: cloudnative-pg-dashboard
-    kustomize.toolkit.fluxcd.io/name: cloudnative-pg-dashboard
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: cloudnative-pg-dashboard
-  namespace: database
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: cloudnative-pg-dashboard
-  install:
-    crds: CreateReplace
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  maxHistory: 3
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  uninstall:
-    keepHistory: false
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    grafanaDashboard:
-      annotations:
-        grafana_folder: Database
-      namespace: database
-
--- kubernetes/apps/database/jetstream/app Kustomization: database/jetstream HelmRelease: database/nats

+++ kubernetes/apps/database/jetstream/app Kustomization: database/jetstream HelmRelease: database/nats

@@ -1,91 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: jetstream
-    kustomize.toolkit.fluxcd.io/name: jetstream
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: nats
-  namespace: database
-spec:
-  chart:
-    spec:
-      chart: nats
-      interval: 5m
-      sourceRef:
-        kind: HelmRepository
-        name: nats
-        namespace: flux-system
-      version: 2.14.*
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: 3
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  uninstall:
-    keepHistory: false
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    config:
-      cluster:
-        enabled: true
-        replicas: 3
-      jetstream:
-        enabled: true
-        fileStore:
-          enabled: true
-          pvc:
-            enabled: true
-            size: 10Gi
-            storageClassName: ceph-block
-        memoryStore:
-          enabled: true
-          maxSize: 1Gi
-    container:
-      env:
-        GOMEMLIMIT: 3GiB
-      merge:
-        resources:
-          limits:
-            memory: 4Gi
-          requests:
-            cpu: 500m
-            memory: 1Gi
-    podDisruptionBudget:
-      enabled: true
-      minAvailable: 2
-    podTemplate:
-      topologySpreadConstraints:
-        kubernetes.io/hostname:
-          maxSkew: 1
-          whenUnsatisfiable: DoNotSchedule
-    promExporter:
-      enabled: true
-      port: 7777
-    service:
-      enabled: true
-      ports:
-        leafnodes:
-          enabled: false
-        mqtt:
-          enabled: false
-        nats:
-          enabled: true
-        websocket:
-          enabled: false
-    statefulSet:
-      replicas: 3
-
--- kubernetes/apps/database/jetstream/app Kustomization: database/jetstream PodMonitor: database/nats

+++ kubernetes/apps/database/jetstream/app Kustomization: database/jetstream PodMonitor: database/nats

@@ -1,27 +0,0 @@

----
-apiVersion: monitoring.coreos.com/v1
-kind: PodMonitor
-metadata:
-  labels:
-    app.kubernetes.io/name: jetstream
-    kustomize.toolkit.fluxcd.io/name: jetstream
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: nats
-  namespace: database
-spec:
-  jobLabel: app.kubernetes.io/instance
-  namespaceSelector:
-    matchNames:
-    - database
-  podMetricsEndpoints:
-  - honorLabels: true
-    interval: 30s
-    path: /metrics
-    port: prom-metrics
-    scrapeTimeout: 10s
-  selector:
-    matchLabels:
-      app.kubernetes.io/component: nats
-      app.kubernetes.io/instance: nats
-      app.kubernetes.io/name: nats
-
--- kubernetes/apps/database/cloudnative-pg/operator Kustomization: database/cloudnative-pg ExternalSecret: database/cloudnative-pg-secret

+++ kubernetes/apps/database/cloudnative-pg/operator Kustomization: database/cloudnative-pg ExternalSecret: database/cloudnative-pg-secret

@@ -1,32 +0,0 @@

----
-apiVersion: external-secrets.io/v1
-kind: ExternalSecret
-metadata:
-  labels:
-    app.kubernetes.io/name: cloudnative-pg
-    kustomize.toolkit.fluxcd.io/name: cloudnative-pg
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: cloudnative-pg-secret
-  namespace: database
-spec:
-  dataFrom:
-  - extract:
-      key: cloudnative-pg
-  - extract:
-      key: nas
-  secretStoreRef:
-    kind: ClusterSecretStore
-    name: onepassword
-  target:
-    name: cloudnative-pg-secret
-    template:
-      data:
-        aws-access-key-id: '{{ .MINIO_HOME_OPS_ACCESS_KEY }}'
-        aws-secret-access-key: '{{ .MINIO_HOME_OPS_SECRET_KEY }}'
-        password: '{{ .POSTGRES_SUPER_PASS }}'
-        username: '{{ .POSTGRES_SUPER_USER }}'
-      engineVersion: v2
-      metadata:
-        labels:
-          cnpg.io/reload: 'true'
-
--- kubernetes/apps/database/cloudnative-pg/operator Kustomization: database/cloudnative-pg OCIRepository: database/cloudnative-pg

+++ kubernetes/apps/database/cloudnative-pg/operator Kustomization: database/cloudnative-pg OCIRepository: database/cloudnative-pg

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: cloudnative-pg
-    kustomize.toolkit.fluxcd.io/name: cloudnative-pg
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: cloudnative-pg
-  namespace: database
-spec:
-  interval: 1h
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: 0.29.0
-  url: oci://ghcr.io/cloudnative-pg/charts/cloudnative-pg
-
--- kubernetes/apps/database/cloudnative-pg/operator Kustomization: database/cloudnative-pg HelmRelease: database/cloudnative-pg

+++ kubernetes/apps/database/cloudnative-pg/operator Kustomization: database/cloudnative-pg HelmRelease: database/cloudnative-pg

@@ -1,48 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: cloudnative-pg
-    kustomize.toolkit.fluxcd.io/name: cloudnative-pg
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: cloudnative-pg
-  namespace: database
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: cloudnative-pg
-  install:
-    crds: CreateReplace
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  uninstall:
-    keepHistory: false
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    config:
-      data:
-        INHERITED_ANNOTATIONS: kyverno.io/ignore
-    crds:
-      create: true
-    monitoring:
-      podMonitorEnabled: true
-    replicaCount: 2
-    resources:
-      limits:
-        memory: 512Mi
-      requests:
-        cpu: 15m
-        memory: 256Mi
-
--- kubernetes/apps/database/jetstream/nack Kustomization: database/jetstream-nack HelmRelease: database/nack

+++ kubernetes/apps/database/jetstream/nack Kustomization: database/jetstream-nack HelmRelease: database/nack

@@ -1,48 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: jetstream-nack
-    kustomize.toolkit.fluxcd.io/name: jetstream-nack
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: nack
-  namespace: database
-spec:
-  chart:
-    spec:
-      chart: nack
-      interval: 5m
-      sourceRef:
-        kind: HelmRepository
-        name: nats
-        namespace: flux-system
-      version: 0.34.0
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: 3
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  uninstall:
-    keepHistory: false
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    jetstream:
-      additionalArgs:
-      - --control-loop
-      nats:
-        url: nats://nats.database.svc.cluster.local:4222
-    namespaced: false
-
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: actions-runner-system/gha-runner-scale-set-controller

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: actions-runner-system/gha-runner-scale-set-controller

@@ -38,13 +38,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app
+  path: ./kubernetes/apps/base/actions-runner-system/gha-runner-scale-set-controller/app
   prune: true
   sourceRef:
     kind: GitRepository
     name: flux-system
     namespace: flux-system
   targetNamespace: actions-runner-system
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: actions-runner-system/gha-runner-scale-set

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: actions-runner-system/gha-runner-scale-set

@@ -40,13 +40,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/actions-runner-system/gha-runner-scale-set/app
+  path: ./kubernetes/apps/base/actions-runner-system/gha-runner-scale-set/app
   prune: true
   retryInterval: 2m
   sourceRef:
     kind: GitRepository
     name: flux-system
     namespace: flux-system
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: actions-runner-system/actions-runner-maintenance

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: actions-runner-system/actions-runner-maintenance

@@ -42,13 +42,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/actions-runner-system/maintenance
+  path: ./kubernetes/apps/base/actions-runner-system/maintenance
   prune: true
   retryInterval: 2m
   sourceRef:
     kind: GitRepository
     name: flux-system
     namespace: flux-system
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/cloudnative-pg

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/cloudnative-pg

@@ -35,13 +35,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/cloudnative-pg/operator
+  path: ./kubernetes/apps/base/database/cloudnative-pg/operator
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/postgres-cluster-17

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/postgres-cluster-17

@@ -48,13 +48,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/cloudnative-pg/cluster-17
+  path: ./kubernetes/apps/base/database/cloudnative-pg/cluster-17
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/cloudnative-pg-dashboard

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/cloudnative-pg-dashboard

@@ -35,13 +35,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/cloudnative-pg/dashboard
+  path: ./kubernetes/apps/base/database/cloudnative-pg/dashboard
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/pgadmin

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/pgadmin

@@ -9,13 +9,13 @@

   namespace: database
 spec:
   commonMetadata:
     labels:
       app.kubernetes.io/name: pgadmin
   components:
-  - ../../../../components/volsync
+  - ../../../../../components/volsync
   deletionPolicy: WaitForTermination
   dependsOn:
   - name: cloudnative-pg
     namespace: database
   - name: rook-ceph
     namespace: rook-ceph
@@ -50,13 +50,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/cloudnative-pg/pgadmin
+  path: ./kubernetes/apps/base/database/cloudnative-pg/pgadmin
   postBuild:
     substitute:
       APP: pgadmin
       VOLSYNC_CAPACITY: 2Gi
       VOLSYNC_SCHEDULE_CEPH: 0 */4 * * *
       VOLSYNC_SCHEDULE_MINIO: 0 */6 * * *
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/dragonfly-operator

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/dragonfly-operator

@@ -35,13 +35,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/dragonfly/operator
+  path: ./kubernetes/apps/base/database/dragonfly/operator
   postBuild:
     substitute:
       APP: dragonfly-operator
   prune: true
   sourceRef:
     kind: GitRepository
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/emqx-operator

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/emqx-operator

@@ -38,13 +38,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/emqx/operator
+  path: ./kubernetes/apps/base/database/emqx/operator
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/emqx-cluster

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/emqx-cluster

@@ -47,13 +47,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/emqx/cluster
+  path: ./kubernetes/apps/base/database/emqx/cluster
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/emqx-exporter

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/emqx-exporter

@@ -40,13 +40,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/emqx/exporter
+  path: ./kubernetes/apps/base/database/emqx/exporter
   prune: true
   sourceRef:
     kind: GitRepository
     name: flux-system
     namespace: flux-system
   targetNamespace: database
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/surrealdb

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/surrealdb

@@ -42,13 +42,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/surrealdb/app
+  path: ./kubernetes/apps/base/database/surrealdb/app
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/jetstream

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/jetstream

@@ -35,13 +35,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/jetstream/app
+  path: ./kubernetes/apps/base/database/jetstream/app
   postBuild:
     substitute:
       APP: jetstream
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/jetstream-nack

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/jetstream-nack

@@ -38,13 +38,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/jetstream/nack
+  path: ./kubernetes/apps/base/database/jetstream/nack
   postBuild:
     substitute:
       APP: jetstream-nack
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
--- kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/jetstream-streams

+++ kubernetes/apps/main Kustomization: flux-system/cluster-apps Kustomization: database/jetstream-streams

@@ -38,13 +38,13 @@

           remediation:
             remediateLastFailure: true
             retries: 2
     target:
       group: helm.toolkit.fluxcd.io
       kind: HelmRelease
-  path: ./kubernetes/apps/database/jetstream/streams
+  path: ./kubernetes/apps/base/database/jetstream/streams
   postBuild:
     substituteFrom:
     - kind: Secret
       name: cluster-secrets
   prune: true
   sourceRef:
--- kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb HelmRelease: database/surrealdb

+++ kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb HelmRelease: database/surrealdb

@@ -1,119 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: surrealdb
-  namespace: database
-spec:
-  chart:
-    spec:
-      chart: surrealdb
-      interval: 5m
-      sourceRef:
-        kind: HelmRepository
-        name: surrealdb
-        namespace: flux-system
-      version: 0.5.0
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: 3
-    strategy:
-      name: RetryOnFailure
-    timeout: 10m
-  interval: 30m
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  uninstall:
-    keepHistory: false
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-      strategy: uninstall
-    strategy:
-      name: RemediateOnFailure
-    timeout: 10m
-  values:
-    affinity:
-      podAntiAffinity:
-        preferredDuringSchedulingIgnoredDuringExecution:
-        - podAffinityTerm:
-            labelSelector:
-              matchLabels:
-                app.kubernetes.io/name: surrealdb
-            topologyKey: kubernetes.io/hostname
-          weight: 100
-    image:
-      pullPolicy: IfNotPresent
-      repository: surrealdb/surrealdb
-    ingress:
-      enabled: false
-    livenessProbe:
-      httpGet:
-        path: /health
-        port: 8000
-      initialDelaySeconds: 30
-      periodSeconds: 10
-    persistence:
-      accessModes:
-      - ReadWriteOnce
-      enabled: true
-      mountPath: /data
-      size: 20Gi
-    podExtraEnv:
-    - name: SURREAL_USER
-      valueFrom:
-        secretKeyRef:
-          key: username
-          name: surrealdb-secret
-    - name: SURREAL_PASS
-      valueFrom:
-        secretKeyRef:
-          key: password
-          name: surrealdb-secret
-    podSecurityContext:
-      fsGroup: 65532
-    readinessProbe:
-      httpGet:
-        path: /health
-        port: 8000
-      initialDelaySeconds: 10
-      periodSeconds: 5
-    replicaCount: 1
-    resources:
-      limits:
-        memory: 2Gi
-      requests:
-        cpu: 500m
-        memory: 512Mi
-    service:
-      annotations: {}
-      port: 8000
-      type: ClusterIP
-    serviceMonitor:
-      enabled: true
-    strategy:
-      type: Recreate
-    surrealdb:
-      extraArgs:
-      - --allow-all
-      - --allow-funcs
-      log: info
-      path: rocksdb:///data/surrealdb
-      unauthenticated: false
-    topologySpreadConstraints:
-    - labelSelector:
-        matchLabels:
-          app.kubernetes.io/name: surrealdb
-      maxSkew: 1
-      topologyKey: kubernetes.io/hostname
-      whenUnsatisfiable: ScheduleAnyway
-
--- kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb ExternalSecret: database/surrealdb-secret

+++ kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb ExternalSecret: database/surrealdb-secret

@@ -1,26 +0,0 @@

----
-apiVersion: external-secrets.io/v1
-kind: ExternalSecret
-metadata:
-  labels:
-    app.kubernetes.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: surrealdb-secret
-  namespace: database
-spec:
-  dataFrom:
-  - extract:
-      key: surrealdb
-  secretStoreRef:
-    kind: ClusterSecretStore
-    name: onepassword
-  target:
-    creationPolicy: Owner
-    name: surrealdb-secret
-    template:
-      data:
-        password: '{{ .SURREALDB_ROOT_PASSWORD }}'
-        username: '{{ .SURREALDB_ROOT_USER }}'
-      engineVersion: v2
-
--- kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb PrometheusRule: database/surrealdb-rules

+++ kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb PrometheusRule: database/surrealdb-rules

@@ -1,55 +0,0 @@

----
-apiVersion: monitoring.coreos.com/v1
-kind: PrometheusRule
-metadata:
-  labels:
-    app.kubernetes.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/namespace: database
-    prometheus: k8s
-    role: alert-rules
-  name: surrealdb-rules
-  namespace: database
-spec:
-  groups:
-  - name: surrealdb.rules
-    rules:
-    - alert: SurrealDBHighMemoryUsage
-      annotations:
-        description: SurrealDB pod {{ $labels.pod }} is using over 80% memory
-        summary: High memory usage detected
-      expr: |
-        (container_memory_working_set_bytes{pod=~"surrealdb-.*"} /
-         container_spec_memory_limit_bytes{pod=~"surrealdb-.*"}) > 0.8
-      for: 5m
-      labels:
-        severity: warning
-    - alert: SurrealDBPodDown
-      annotations:
-        description: SurrealDB pod {{ $labels.pod }} is down
-        summary: SurrealDB pod unavailable
-      expr: |
-        up{job="surrealdb"} == 0
-      for: 2m
-      labels:
-        severity: critical
-    - alert: SurrealDBReplicasUnavailable
-      annotations:
-        description: Less than 2 SurrealDB replicas are running
-        summary: SurrealDB has insufficient replicas
-      expr: |
-        kube_deployment_status_replicas_available{deployment="surrealdb"} < 2
-      for: 5m
-      labels:
-        severity: warning
-    - alert: SurrealDBHighCPU
-      annotations:
-        description: SurrealDB pod {{ $labels.pod }} is using over 80% CPU
-        summary: High CPU usage detected
-      expr: |
-        (rate(container_cpu_usage_seconds_total{pod=~"surrealdb-.*"}[5m]) /
-         container_spec_cpu_quota{pod=~"surrealdb-.*"} * 100) > 80
-      for: 10m
-      labels:
-        severity: warning
-
--- kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb HTTPRoute: database/surrealdb

+++ kubernetes/apps/database/surrealdb/app Kustomization: database/surrealdb HTTPRoute: database/surrealdb

@@ -1,32 +0,0 @@

----
-apiVersion: gateway.networking.k8s.io/v1
-kind: HTTPRoute
-metadata:
-  annotations:
-    external-dns.alpha.kubernetes.io/target: internal.${SECRET_DOMAIN}
-    gatus.home-operations.com/endpoint: 'conditions: ["[STATUS] == 200"]'
-    gethomepage.dev/app: surrealdb
-    gethomepage.dev/description: surrealdb
-    gethomepage.dev/enabled: 'true'
-    gethomepage.dev/group: database
-    gethomepage.dev/name: surrealdb
-  labels:
-    app.kubernetes.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/name: surrealdb
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: surrealdb
-  namespace: database
-spec:
-  hostnames:
-  - surrealdb.${SECRET_DOMAIN}
-  - sdb.${SECRET_DOMAIN}
-  parentRefs:
-  - name: envoy-internal
-    namespace: network
-    sectionName: https
-  rules:
-  - backendRefs:
-    - name: surrealdb
-      namespace: database
-      port: 8000
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller HelmRelease: actions-runner-system/gha-runner-scale-set-controller

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller HelmRelease: actions-runner-system/gha-runner-scale-set-controller

@@ -1,49 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: gha-runner-scale-set-controller
-  namespace: actions-runner-system
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: gha-runner-scale-set-controller
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: 3
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-      strategy: rollback
-    strategy:
-      name: RemediateOnFailure
-  values:
-    fullnameOverride: gha-runner-scale-set-controller
-    metrics:
-      controllerManagerAddr: :8080
-      listenerAddr: :8080
-      listenerEndpoint: /metrics
-    priorityClassName: gha-runner-infrastructure
-    replicaCount: 2
-    resources:
-      limits:
-        cpu: 500m
-        memory: 512Mi
-      requests:
-        cpu: 100m
-        memory: 128Mi
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller OCIRepository: actions-runner-system/gha-runner-scale-set-controller

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller OCIRepository: actions-runner-system/gha-runner-scale-set-controller

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: gha-runner-scale-set-controller
-  namespace: actions-runner-system
-spec:
-  interval: 1h
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: 0.14.2
-  url: oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PodDisruptionBudget: actions-runner-system/gha-runner-scale-set-controller

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PodDisruptionBudget: actions-runner-system/gha-runner-scale-set-controller

@@ -1,17 +0,0 @@

----
-apiVersion: policy/v1
-kind: PodDisruptionBudget
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: gha-runner-scale-set-controller
-  namespace: actions-runner-system
-spec:
-  minAvailable: 1
-  selector:
-    matchLabels:
-      app.kubernetes.io/instance: gha-runner-scale-set-controller
-      app.kubernetes.io/name: gha-rs-controller
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PodMonitor: actions-runner-system/action-runner-controller

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PodMonitor: actions-runner-system/action-runner-controller

@@ -1,23 +0,0 @@

----
-apiVersion: monitoring.coreos.com/v1
-kind: PodMonitor
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: action-runner-controller
-  namespace: actions-runner-system
-spec:
-  namespaceSelector:
-    matchNames:
-    - actions-runner-system
-  podMetricsEndpoints:
-  - interval: 15s
-    path: /metrics
-    port: metrics
-    scrapeTimeout: 5s
-  selector:
-    matchLabels:
-      app.kubernetes.io/part-of: gha-rs-controller
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PrometheusRule: actions-runner-system/github-actions-runner-alerts

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PrometheusRule: actions-runner-system/github-actions-runner-alerts

@@ -1,93 +0,0 @@

----
-apiVersion: monitoring.coreos.com/v1
-kind: PrometheusRule
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-    prometheus: kube-prometheus
-  name: github-actions-runner-alerts
-  namespace: actions-runner-system
-spec:
-  groups:
-  - name: github-actions-runner
-    rules:
-    - alert: GithubActionsRunnerJobFailureRateHigh
-      annotations:
-        description: More than 20% of jobs have failed in the last hour
-        summary: GitHub Actions job failure rate is high
-      expr: |
-        (
-          sum(increase(gha_completed_jobs_total{job_result="failure"}[1h]))
-          /
-          sum(increase(gha_completed_jobs_total[1h]))
-        ) > 0.2
-      for: 15m
-      labels:
-        severity: warning
-    - alert: GithubActionsRunnerZeroIdleRunners
-      annotations:
-        description: All runners are busy with {{ $value }} jobs waiting
-        summary: No idle GitHub Actions runners available
-      expr: gha_idle_runners == 0 and gha_assigned_jobs > 0
-      for: 10m
-      labels:
-        severity: warning
-    - alert: GithubActionsRunnerControllerDown
-      annotations:
-        description: No healthy ARC controller scrape (job actions-runner-system/action-runner-controller)
-        summary: GitHub Actions Runner Controller is down
-      expr: (count(up{job=~".*action-runner-controller"} == 1) or vector(0)) == 0
-      for: 5m
-      labels:
-        severity: critical
-    - alert: GithubActionsRunnerJobStartupSlow
-      annotations:
-        description: 95th percentile job startup time exceeds 2 minutes
-        summary: GitHub Actions job startup is slow
-      expr: |
-        histogram_quantile(0.95,
-          sum(rate(gha_job_startup_duration_seconds_bucket[5m])) by (le)
-        ) > 120
-      for: 15m
-      labels:
-        severity: warning
-    - alert: GithubActionsRunnerShortLifetimeDetected
-      annotations:
-        description: '{{ $value }} runner pods completed in under 30 seconds - indicates
-          ghost job assignments'
-        summary: Multiple GitHub Actions runners exiting quickly
-      expr: |
-        count(
-          (time() - kube_pod_start_time{namespace="actions-runner-system", pod=~".*-runner-.*"})
-          < 30
-          and on(pod) kube_pod_status_phase{phase="Succeeded"}
-        ) > 3
-      for: 5m
-      labels:
-        severity: warning
-    - alert: GithubActionsRunnerListenerDisconnected
-      annotations:
-        description: Listener pod {{ $labels.pod }} has restarted {{ $value }} times
-          in 15 minutes - broker connection issues likely
-        summary: GitHub Actions listener pod restarting frequently
-      expr: |
-        increase(kube_pod_container_status_restarts_total{
-          namespace="actions-runner-system",
-          pod=~".*-listener-.*"
-        }[15m]) > 3
-      for: 5m
-      labels:
-        severity: critical
-    - alert: GithubActionsRunnerAssignedJobsStuck
-      annotations:
-        description: '{{ $value }} jobs are assigned but no runners are processing
-          them - possible ghost job state'
-        summary: GitHub Actions jobs assigned but not running
-      expr: |
-        gha_assigned_jobs > 0 and gha_running_jobs == 0 and gha_idle_runners == 0
-      for: 10m
-      labels:
-        severity: warning
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PriorityClass: actions-runner-system/gha-runner-infrastructure

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller PriorityClass: actions-runner-system/gha-runner-infrastructure

@@ -1,14 +0,0 @@

----
-apiVersion: scheduling.k8s.io/v1
-description: Priority class for GitHub Actions Runner infrastructure (controller,
-  listener)
-globalDefault: false
-kind: PriorityClass
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set-controller
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: gha-runner-infrastructure
-value: 1000000
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller ConfigMap: actions-runner-system/arc-dashboard

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set-controller/app Kustomization: actions-runner-system/gha-runner-scale-set-controller ConfigMap: actions-runner-system/arc-dashboard

@@ -1,1265 +0,0 @@

----
-apiVersion: v1
-data:
-  arc-dashboard.json: |
-    {
-      "__inputs": [
-        {
-          "name": "DS_PROMETHEUS",
-          "label": "Prometheus",
-          "description": "",
-          "type": "datasource",
-          "pluginId": "prometheus",
-          "pluginName": "Prometheus"
-        }
-      ],
-      "__elements": {},
-      "__requires": [
-        {
-          "type": "panel",
-          "id": "gauge",
-          "name": "Gauge",
-          "version": ""
-        },
-        {
-          "type": "grafana",
-          "id": "grafana",
-          "name": "Grafana",
-          "version": "10.0.0"
-        },
-        {
-          "type": "datasource",
-          "id": "prometheus",
-          "name": "Prometheus",
-          "version": "1.0.0"
-        },
-        {
-          "type": "panel",
-          "id": "stat",
-          "name": "Stat",
-          "version": ""
-        },
-        {
-          "type": "panel",
-          "id": "timeseries",
-          "name": "Time series",
-          "version": ""
-        }
-      ],
-      "annotations": {
-        "list": [
-          {
-            "builtIn": 1,
-            "datasource": {
-              "type": "grafana",
-              "uid": "-- Grafana --"
-            },
-            "enable": true,
-            "hide": true,
-            "iconColor": "rgba(0, 211, 255, 1)",
-            "name": "Annotations & Alerts",
-            "type": "dashboard"
-          }
-        ]
-      },
-      "description": "Starter dashboard to monitor the behavior of the autoscaling runner set mode of actions-runner-controller",
-      "editable": true,
-      "fiscalYearStartMonth": 0,
-      "graphTooltip": 0,
-      "id": null,
-      "links": [],
-      "liveNow": false,
-      "panels": [
-        {
-          "collapsed": false,
-          "gridPos": {
-            "h": 1,
-            "w": 24,
-            "x": 0,
-            "y": 0
-          },
-          "id": 4,
-          "panels": [],
-          "title": "Runtime",
-          "type": "row"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "${DS_PROMETHEUS}"
-          },
-          "description": "Number of active listener pods (in a running state)",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 8,
-            "w": 2,
-            "x": 0,
-            "y": 1
-          },
-          "id": 14,
-          "options": {
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "showThresholdLabels": false,
-            "showThresholdMarkers": true
-          },
-          "pluginVersion": "10.0.0",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "${DS_PROMETHEUS}"
-              },
-              "editorMode": "builder",
-              "expr": "sum by(namespace) (gha_controller_running_listeners)",
-              "instant": false,
-              "range": true,
-              "refId": "A"
-            }
-          ],
-          "title": "Active listeners",
-          "type": "gauge"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "${DS_PROMETHEUS}"
-          },
-          "description": "Total number of registered and running runners across namespaces",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 8,
-            "w": 3,
-            "x": 2,
-            "y": 1
-          },
-          "id": 2,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "10.0.0",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "${DS_PROMETHEUS}"
-              },
-              "editorMode": "builder",
-              "expr": "sum by(namespace) (gha_registered_runners)",
-              "hide": false,
-              "instant": false,
-              "legendFormat": "Registered",
-              "range": true,
-              "refId": "Registered"
-            },
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "${DS_PROMETHEUS}"
-              },
-              "editorMode": "builder",
-              "expr": "sum by(namespace) (gha_controller_running_ephemeral_runners)",
-              "hide": false,
-              "instant": false,
-              "interval": "",
-              "legendFormat": "Running",
-              "range": true,
-              "refId": "Running"
-            }
-          ],
-          "title": "Runners States",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "${DS_PROMETHEUS}"
-          },
-          "description": "Total number of failed runners across namespaces",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "#EAB839",
-                    "value": 1
-                  },
-                  {
-                    "color": "dark-red",
-                    "value": 5
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 8,
-            "w": 2,
-            "x": 5,
-            "y": 1
-          },
-          "id": 15,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "10.0.0",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "${DS_PROMETHEUS}"
-              },
-              "editorMode": "builder",
-              "exemplar": false,
-              "expr": "sum by(namespace) (gha_controller_failed_ephemeral_runners)",
-              "instant": false,
-              "interval": "",
-              "legendFormat": "__auto",
-              "range": true,
-              "refId": "Failed"
-            }
-          ],
-          "title": "Failed (total)",
-          "type": "stat"
-        },
-        {
-          "datasource": {
-            "type": "prometheus",
-            "uid": "${DS_PROMETHEUS}"
-          },
-          "description": "Total number of pending runners across namespaces.",
-          "fieldConfig": {
-            "defaults": {
-              "color": {
-                "mode": "thresholds"
-              },
-              "mappings": [],
-              "thresholds": {
-                "mode": "absolute",
-                "steps": [
-                  {
-                    "color": "green",
-                    "value": null
-                  },
-                  {
-                    "color": "orange",
-                    "value": 5
-                  }
-                ]
-              }
-            },
-            "overrides": []
-          },
-          "gridPos": {
-            "h": 8,
-            "w": 2,
-            "x": 7,
-            "y": 1
-          },
-          "id": 16,
-          "options": {
-            "colorMode": "value",
-            "graphMode": "area",
-            "justifyMode": "auto",
-            "orientation": "auto",
-            "reduceOptions": {
-              "calcs": [
-                "lastNotNull"
-              ],
-              "fields": "",
-              "values": false
-            },
-            "textMode": "auto"
-          },
-          "pluginVersion": "10.0.0",
-          "targets": [
-            {
-              "datasource": {
-                "type": "prometheus",
-                "uid": "${DS_PROMETHEUS}"
-              },
-              "editorMode": "builder",
-              "expr": "sum by(namespace) (gha_controller_pending_ephemeral_runners)",
-              "instant": false,
-              "range": true,
-              "refId": "A"
-            }
-          ],
[Diff truncated by flux-local]
--- kubernetes/apps/database/jetstream/streams Kustomization: database/jetstream-streams Stream: database/events

+++ kubernetes/apps/database/jetstream/streams Kustomization: database/jetstream-streams Stream: database/events

@@ -1,21 +0,0 @@

----
-apiVersion: jetstream.nats.io/v1beta2
-kind: Stream
-metadata:
-  labels:
-    app.kubernetes.io/name: jetstream-streams
-    kustomize.toolkit.fluxcd.io/name: jetstream-streams
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: events
-  namespace: database
-spec:
-  discard: old
-  maxAge: 168h
-  maxBytes: 5368709120
-  name: events
-  replicas: 3
-  retention: limits
-  storage: file
-  subjects:
-  - events.>
-
--- kubernetes/apps/database/emqx/operator Kustomization: database/emqx-operator HelmRelease: database/emqx-operator

+++ kubernetes/apps/database/emqx/operator Kustomization: database/emqx-operator HelmRelease: database/emqx-operator

@@ -1,44 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: emqx-operator
-    kustomize.toolkit.fluxcd.io/name: emqx-operator
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: emqx-operator
-  namespace: database
-spec:
-  chart:
-    spec:
-      chart: emqx-operator
-      interval: 5m
-      sourceRef:
-        kind: HelmRepository
-        name: emqx-charts
-        namespace: flux-system
-      version: 2.2.29
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: -1
-    strategy:
-      name: RetryOnFailure
-  interval: 1h
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    fullnameOverride: emqx
-    image:
-      repository: ghcr.io/emqx/emqx-operator
-    replicaCount: 1
-
--- kubernetes/apps/database/emqx/operator Kustomization: database/emqx-operator ExternalSecret: database/emqx

+++ kubernetes/apps/database/emqx/operator Kustomization: database/emqx-operator ExternalSecret: database/emqx

@@ -1,26 +0,0 @@

----
-apiVersion: external-secrets.io/v1
-kind: ExternalSecret
-metadata:
-  labels:
-    app.kubernetes.io/name: emqx-operator
-    kustomize.toolkit.fluxcd.io/name: emqx-operator
-    kustomize.toolkit.fluxcd.io/namespace: database
-  name: emqx
-  namespace: database
-spec:
-  dataFrom:
-  - extract:
-      key: EMQX
-  refreshInterval: 5m
-  secretStoreRef:
-    kind: ClusterSecretStore
-    name: onepassword
-  target:
-    creationPolicy: Owner
-    name: emqx-secret
-    template:
-      data:
-        EMQX_DASHBOARD__DEFAULT_PASSWORD: '{{ index . "EMQX_DEFAULT_PASSWORD" }}'
-        EMQX_DASHBOARD__DEFAULT_USERNAME: '{{ index . "EMQX_DEFAULT_USERNAME" }}'
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set OCIRepository: actions-runner-system/gha-runner-scale-set

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set OCIRepository: actions-runner-system/gha-runner-scale-set

@@ -1,19 +0,0 @@

----
-apiVersion: source.toolkit.fluxcd.io/v1
-kind: OCIRepository
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: gha-runner-scale-set
-  namespace: actions-runner-system
-spec:
-  interval: 1h
-  layerSelector:
-    mediaType: application/vnd.cncf.helm.chart.content.v1.tar+gzip
-    operation: copy
-  ref:
-    tag: 0.14.2
-  url: oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set ServiceAccount: actions-runner-system/actions-runner

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set ServiceAccount: actions-runner-system/actions-runner

@@ -1,14 +0,0 @@

----
-apiVersion: talos.dev/v1alpha1
-kind: ServiceAccount
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: actions-runner
-  namespace: actions-runner-system
-spec:
-  roles:
-  - os:operator
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set ExternalSecret: actions-runner-system/aviator-coding-runner-secret

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set ExternalSecret: actions-runner-system/aviator-coding-runner-secret

@@ -1,35 +0,0 @@

----
-apiVersion: external-secrets.io/v1
-kind: ExternalSecret
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: aviator-coding-runner-secret
-  namespace: actions-runner-system
-spec:
-  data:
-  - remoteRef:
-      key: github-acr-all-repositories
-      property: private key
-    secretKey: ACR_AVIATOR_CODING_PRIVATE_KEY
-  dataFrom:
-  - extract:
-      key: github
-  refreshInterval: 1h
-  secretStoreRef:
-    kind: ClusterSecretStore
-    name: onepassword
-  target:
-    name: aviator-coding-runner-secret
-    template:
-      data:
-        github_app_id: '{{ .ACR_AVIATOR_CODING_APP_ID }}'
-        github_app_installation_id: '{{ .ACR_AVIATOR_CODING_INSTALLATION_ID }}'
-        github_app_private_key: '{{ .ACR_AVIATOR_CODING_PRIVATE_KEY }}'
-      engineVersion: v2
-      metadata:
-        labels:
-          cnpg.io/reload: 'true'
-
--- kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set HelmRelease: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops

+++ kubernetes/apps/actions-runner-system/gha-runner-scale-set/app Kustomization: actions-runner-system/gha-runner-scale-set HelmRelease: actions-runner-system/gha-runner-scale-set-aviator-coding-home-ops

@@ -1,222 +0,0 @@

----
-apiVersion: helm.toolkit.fluxcd.io/v2
-kind: HelmRelease
-metadata:
-  labels:
-    app.kubernetes.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/name: gha-runner-scale-set
-    kustomize.toolkit.fluxcd.io/namespace: actions-runner-system
-  name: gha-runner-scale-set-aviator-coding-home-ops
-  namespace: actions-runner-system
-spec:
-  chartRef:
-    kind: OCIRepository
-    name: gha-runner-scale-set
-  driftDetection:
-    mode: enabled
-  install:
-    crds: CreateReplace
-    remediation:
-      retries: 3
-    strategy:
-      name: RetryOnFailure
-  interval: 30m
-  rollback:
-    cleanupOnFail: true
-    recreate: true
-  upgrade:
-    cleanupOnFail: true
-    crds: CreateReplace
-    remediation:
-      remediateLastFailure: true
-      retries: 2
-    strategy:
-      name: RemediateOnFailure
-  values:
-    annotations:
-      secret.reloader.stakater.com/reload: aviator-coding-runner-secret
-    controllerServiceAccount:
-      name: gha-runner-scale-set-controller
-      namespace: actions-runner-system
-    githubConfigSecret: aviator-coding-runner-secret
-    githubConfigUrl: https://github.com/aviator-coding/home-ops
-    listenerMetrics:
-      counters:
-        gha_completed_jobs_total:
-          labels:
-          - repository
-          - organization
-          - enterprise
-          - job_name
-          - event_name
-          - job_result
-        gha_started_jobs_total:
-          labels:
-          - repository
-          - organization
-          - enterprise
-          - job_name
-          - event_name
-      gauges:
-        gha_assigned_jobs:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_busy_runners:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_desired_runners:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_idle_runners:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_max_runners:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_min_runners:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_registered_runners:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-        gha_running_jobs:
-          labels:
-          - name
-          - namespace
-          - repository
-          - organization
-          - enterprise
-      histograms:
-        gha_job_execution_duration_seconds:
-          labels:
-          - repository
-          - organization
-          - enterprise
-          - job_name
-          - event_name
-          - job_result
-        gha_job_startup_duration_seconds:
-          labels:
-          - repository
-          - organization
-          - enterprise
-          - job_name
-          - event_name
-    listenerTemplate:
-      spec:
-        containers:
-        - name: listener
-          resources:
-            limits:
-              cpu: 200m
-              memory: 256Mi
-            requests:
-              cpu: 50m
-              memory: 64Mi
-        priorityClassName: gha-runner-infrastructure
-    maxRunners: 15
-    minRunners: 1
-    template:
-      metadata:
-        annotations:
-          secret.reloader.stakater.com/reload: aviator-coding-runner-secret
-      spec:
-        automountServiceAccountToken: false
-        containers:
-        - command:
-          - /home/runner/run.sh
-          env:
-          - name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
-            value: 'false'
-          - name: NODE_IP
-            valueFrom:
-              fieldRef:
-                fieldPath: status.hostIP
-          - name: NODE
-            valueFrom:
-              fieldRef:
-                fieldPath: status.hostIP
-          - name: TALOSCONFIG
-            value: /var/run/secrets/talos.dev/talosconfig
-          - name: ACTIONS_RUNNER_PRINT_LOG_TO_STDOUT
-            value: '1'
-          image: ghcr.io/home-operations/actions-runner:2.336.0@sha256:281a9a090522fafbf4967f158b8c97d03552b1978b688893c5f7cb194

Pure-rename S10 migration. Resources live under
kubernetes/apps/base/{actions-runner-system,database}/; Flux Kustomizations
live as the apps/main overlays, including multi-doc ks.yaml for
cloudnative-pg (x4), emqx (x3), and jetstream (x3). Leaf and normalised
Kustomization renders of kubernetes/clusters/main are identical to
pre-change (canon/split/normks empty diff); flux-local test
--all-namespaces: 118 passed.
@Aviator-Coding
Aviator-Coding force-pushed the fm/homeops-split-ns-lane2-s10 branch from efb521c to 193fc95 Compare August 24, 2026 23:43
@Aviator-Coding
Aviator-Coding merged commit 5e64162 into main Aug 24, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant