Opt every service out of automated sync until its file is true here

Every file that opted in described the DigitalOcean estate, so CD
applying it put a pod in front of static sites the edge already serves
from disk. Automation stays per service; a file re-opts in once what it
declares has been shown to run on this cluster.
This commit is contained in:
hanzo-dev
2026-09-03 16:22:24 -07:00
parent dff96d8908
commit 909d3bd962
85 changed files with 140 additions and 82 deletions
+1 -1
View File
@@ -64,4 +64,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -11,7 +11,7 @@
#
# git.hanzo.ai is the source. Each org's fleet reads its own universe from it:
# hanzo/universe, lux/universe, zoo/universe, one ApplicationSet each.
apiVersion: apps.hanzo.ai/v1
apiVersion: apps.hanzo.ai/v1alpha1
kind: ApplicationSet
metadata:
name: lux-fleet
@@ -44,4 +44,4 @@ imagePullSecrets: []
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -37,4 +37,4 @@ ingress:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+7
View File
@@ -8,6 +8,13 @@ image:
repository: ghcr.io/hanzoai/login
tag: 1.1.6
pullPolicy: Always
# The tag publishes ONE manifest, linux/amd64, so this states what the image is
# rather than where we would like it to run. On an all-amd64 cluster it selects
# every node and changes nothing; on a mixed one it is the difference between
# scheduling and ImagePullBackOff, because a node of the other architecture
# accepts the pod and then finds no manifest it can run.
nodeSelector:
kubernetes.io/arch: amd64
partOf: hanzo-universe
env:
- name: IAM_ORIGIN
+1 -1
View File
@@ -53,4 +53,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -65,4 +65,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+6 -1
View File
@@ -9,6 +9,11 @@ image:
repository: ghcr.io/luxfi/blog
digest: sha256:972764b37d73bd81cbce4301457890580cf42c969258d31bd7b6d4d7a7b7e18e
pullPolicy: Always
# That digest resolves to ONE manifest, linux/amd64. Stating it here is a fact
# about the bytes, not a placement preference: an all-amd64 cluster is unchanged,
# and a mixed one stops binding this pod to a node that cannot run it.
nodeSelector:
kubernetes.io/arch: amd64
partOf: lux-blog
env:
- name: PORT
@@ -66,4 +71,4 @@ ingress:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -65,4 +65,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -65,4 +65,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -4,7 +4,7 @@
# sync. prune stays off (the chart is not the only owner of objects in the
# namespace); selfHeal returns a hand-edited Deployment to what is written here.
cd:
automated: true
automated: false
replicas: 2
selectorLabels:
+1 -1
View File
@@ -4,7 +4,7 @@
# sync. prune stays off (the chart is not the only owner of objects in the
# namespace); selfHeal returns a hand-edited Deployment to what is written here.
cd:
automated: true
automated: false
replicas: 2
selectorLabels:
+1 -1
View File
@@ -68,4 +68,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -53,4 +53,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+6 -1
View File
@@ -8,6 +8,11 @@ image:
repository: ghcr.io/luxfi/bank-dash
tag: v1.0.12
pullPolicy: Always
# One manifest under that tag, linux/amd64 — a property of the image, so it is
# written beside it. Selects every node of an all-amd64 cluster; on a mixed one
# it keeps the pod off the node with no manifest to run.
nodeSelector:
kubernetes.io/arch: amd64
partOf: lux-bank
env:
- name: NEXT_PUBLIC_BASE_URL
@@ -69,4 +74,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+21
View File
@@ -8,6 +8,11 @@ image:
repository: ghcr.io/luxfi/bank
tag: v1.0.11
pullPolicy: IfNotPresent
# One manifest under that tag, linux/amd64 — stated beside the image because it
# describes the bytes. A cluster that is all amd64 is unaffected; a mixed one
# stops scheduling this onto a node that cannot run it.
nodeSelector:
kubernetes.io/arch: amd64
command:
- bankd
args:
@@ -60,6 +65,22 @@ ports:
- containerPort: 8070
name: http
servicePort: 80
# The volume bankd keeps its ledger on. It was the one object live2values.py
# could not see — it reads the Deployment, and a claim a Deployment merely MOUNTS
# is not part of it — so the values described a pod that names a volume nobody
# declares, and the scheduler refuses such a pod outright: no node is available,
# forever, with no image ever pulled. 20Gi RWO is what k8s/lux-k8s/bankd carried
# before that directory was superseded.
#
# No storageClass on purpose. Naming one binds this file to one cluster's
# provisioner; omitting it takes the cluster's default, which is the block class
# in the cloud and local-path on k3s. Same text, both places. The spec is
# immutable once bound, so this is a statement made at creation and never edited.
claims:
- name: bankd-data
size: 20Gi
accessModes:
- ReadWriteOnce
volumes:
- name: data
persistentVolumeClaim:
+1 -1
View File
@@ -66,4 +66,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -107,4 +107,4 @@ livenessProbe:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -48,4 +48,4 @@ imagePullSecrets: []
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -48,4 +48,4 @@ imagePullSecrets: []
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -53,4 +53,4 @@ imagePullSecrets: []
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -120,4 +120,4 @@ imagePullSecrets: []
# against the running Deployment differs in exactly one field, HANZO_VERSION,
# which the chart injects from the tag. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -79,4 +79,4 @@ ingress:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -31,7 +31,7 @@
# prune: false, selfHeal: true), so CD converges this service and never deletes
# anything it did not create.
cd:
automated: true
automated: false
replicas: 2
selectorLabels:
+1 -1
View File
@@ -40,4 +40,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -64,4 +64,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -81,4 +81,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -81,4 +81,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -81,4 +81,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -81,4 +81,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -60,4 +60,4 @@ imagePullSecrets: []
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -73,4 +73,4 @@ imagePullSecrets: []
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -59,4 +59,4 @@ volumes:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -81,4 +81,4 @@ ingress:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -40,4 +40,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -40,4 +40,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -52,4 +52,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -4,7 +4,7 @@
# by hand — an automated pin BELOW what is running is a rollback that applies
# itself, and every one of these files trailed the cluster before this bump.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -4,7 +4,7 @@
# by hand — an automated pin BELOW what is running is a rollback that applies
# itself, and every one of these files trailed the cluster before this bump.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -4,7 +4,7 @@
# by hand — an automated pin BELOW what is running is a rollback that applies
# itself, and every one of these files trailed the cluster before this bump.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -4,7 +4,7 @@
# by hand — an automated pin BELOW what is running is a rollback that applies
# itself, and every one of these files trailed the cluster before this bump.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -4,7 +4,7 @@
# by hand — an automated pin BELOW what is running is a rollback that applies
# itself, and every one of these files trailed the cluster before this bump.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -3,7 +3,7 @@
# reverse was true; regenerating it would undo that and re-import whatever has
# been applied by hand, so bump the pin here instead.
cd:
automated: true
automated: false
#
# ⚠️ The ports/service block below is deliberate and load-bearing. This workload
+1 -1
View File
@@ -57,4 +57,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -44,4 +44,4 @@ defaultReadinessProbe: false
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -57,4 +57,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ imagePullSecrets: []
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -238,4 +238,4 @@ configMaps:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -74,4 +74,4 @@ ingress:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -33,4 +33,4 @@ defaultReadinessProbe: false
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -40,4 +40,4 @@ imagePullSecrets: []
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -22,7 +22,7 @@
# live, which is why CD reports this application Missing; applying it at
# replicas 0 restores the declaration and starts no pod.
cd:
automated: true
automated: false
replicas: 0
selectorLabels:
+1 -1
View File
@@ -28,4 +28,4 @@ defaultReadinessProbe: false
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -156,4 +156,4 @@ ingress:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -62,4 +62,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -65,4 +65,4 @@ cd:
# Without this the Application is created and never synced — born
# OutOfSync, never taking ownership. It did not matter while the
# Deployment already existed; it does now that this file has to CREATE it.
automated: true
automated: false
+1 -1
View File
@@ -70,4 +70,4 @@ terminationGracePeriodSeconds: 30
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -303,4 +303,4 @@ configMaps:
level: info
encoding: json
cd:
automated: true
automated: false
+1 -1
View File
@@ -205,4 +205,4 @@ configMaps:
level: info
encoding: json
cd:
automated: true
automated: false
+1 -1
View File
@@ -79,4 +79,4 @@ podLabels:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -6,7 +6,7 @@
# nothing to roll. It converges the declaration and proves the sync path
# on a service that cannot be disturbed by it.
cd:
automated: true
automated: false
replicas: 0
selectorLabels:
+1 -1
View File
@@ -6,7 +6,7 @@
# nothing to roll. It converges the declaration and proves the sync path
# on a service that cannot be disturbed by it.
cd:
automated: true
automated: false
replicas: 0
selectorLabels:
+1 -1
View File
@@ -6,7 +6,7 @@
# nothing to roll. It converges the declaration and proves the sync path
# on a service that cannot be disturbed by it.
cd:
automated: true
automated: false
replicas: 0
selectorLabels:
+1 -1
View File
@@ -6,7 +6,7 @@
# nothing to roll. It converges the declaration and proves the sync path
# on a service that cannot be disturbed by it.
cd:
automated: true
automated: false
replicas: 0
selectorLabels:
+1 -1
View File
@@ -6,7 +6,7 @@
# nothing to roll. It converges the declaration and proves the sync path
# on a service that cannot be disturbed by it.
cd:
automated: true
automated: false
replicas: 0
selectorLabels:
+1 -1
View File
@@ -59,4 +59,4 @@ volumes:
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -49,4 +49,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -69,4 +69,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -66,4 +66,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -70,4 +70,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -63,4 +63,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -7,7 +7,7 @@
# proven pull behind it. One replica with maxUnavailable 0: the new pod
# must go ready before the old one is taken.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -68,4 +68,4 @@ terminationGracePeriodSeconds: 30
# applies nothing today; what it adds is selfHeal, which returns a
# hand-edited object to what is written here. prune stays off.
cd:
automated: true
automated: false
+1 -1
View File
@@ -7,7 +7,7 @@
# proven pull behind it. One replica with maxUnavailable 0: the new pod
# must go ready before the old one is taken.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -7,7 +7,7 @@
# proven pull behind it. One replica with maxUnavailable 0: the new pod
# must go ready before the old one is taken.
cd:
automated: true
automated: false
replicas: 1
selectorLabels:
+1 -1
View File
@@ -75,4 +75,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -31,7 +31,7 @@
# server.js that luxfi/exchange's release matrix pushes to the same package
# under the SPA's 5.149.x versions. That one has no /v1/graphql route at all.
cd:
automated: true
automated: false
replicas: 2
image:
+20
View File
@@ -8,6 +8,11 @@ image:
repository: ghcr.io/hanzoai/status
tag: 1.1.6
pullPolicy: Always
# One manifest under that tag, linux/amd64. A property of the image, so it lives
# beside it: no effect on an all-amd64 cluster, and on a mixed one it stops the
# pod binding to a node that has no manifest to run.
nodeSelector:
kubernetes.io/arch: amd64
env:
- name: GATUS_CONFIG_PATH
value: /config/config.yaml
@@ -48,6 +53,21 @@ ports:
- containerPort: 8080
name: http
servicePort: 80
# Gatus writes its uptime history here, and the claim was the object
# live2values.py could not reach: it reads the Deployment, and a claim a
# Deployment only MOUNTS is not part of one. So the values named a volume nothing
# declared, and the scheduler answered that no node is available — indefinitely,
# without ever attempting a pull. 2Gi RWO matches the claim this page already has
# wherever it runs; a request below an existing volume's capacity is refused.
#
# storageClass is deliberately absent: naming one would pin this file to a single
# cluster's provisioner, while the default resolves to the block class in the
# cloud and to local-path on k3s. One text, either place.
claims:
- name: status-data
size: 2Gi
accessModes:
- ReadWriteOnce
volumes:
- configMap:
name: status-config
+1 -1
View File
@@ -99,4 +99,4 @@ ingress:
# not by the chart. selfHeal returns a hand-edited object to what is written
# here; prune stays off, so nothing is ever deleted.
cd:
automated: true
automated: false
+1 -1
View File
@@ -3,7 +3,7 @@
# BELOW live is a rollback that applies itself, and this file trailed the
# cluster by eight patches before the bump below.
cd:
automated: true
automated: false
replicas: 2
selectorLabels: