tidaldb/k8s/cluster
jordan ef6e0b9636 k8s(cluster): pin the admin-gate image now running on all three voters
registry.threesix.ai/tidal/server:m12-admin-gate-20260823@sha256:6e220060a342
658b734d258245b20f6233d96e26415b3a44956b1c3bceebe48c, built from c9adec0.

This is the image that finally puts 388e445 into production. The previous pin
(m12-boot-pull-fix-20260821, built from 5b3cfe5 on 2026-08-21 11:35) PREDATED
the admin/data split that landed 2026-08-22 00:57, so the operator-authority
separation existed in the repo, in the manifest and in the tests while the
running binary had no such code - which is also why no admin-gate warning ever
appeared in the pod logs.

Rolled staged behind updateStrategy partition 2 -> 1 -> 0, one voter at a time,
with a quorum-acked write probe between each: HTTP 201 every time, so no write
availability was lost. PDB held disruptionsAllowed=1 / currentHealthy=3
throughout and all three voters returned lag_events=0 at term 94 afterwards.

Measured before and after on the live cluster:
  POST /cluster/heal            with the DATA bearer   415 -> 403
  POST /cluster/members/remove  with the DATA bearer          403
  POST /cluster/heal            with the ADMIN key             422 (past auth)
  POST /sharded/items           with the DATA bearer   201 -> 201 (unaffected)
  POST /sharded/items           with the ADMIN key             201
415 rather than 401 was the proof the gate had been OPEN: the data bearer was
authenticated and authorized for a destructive verb and only the content type
was wrong. 403 is the proof it is now shut.
2026-08-22 23:54:22 -06:00
..
certs.yaml fix(m12p6): complete T4 TLS scale-up — two-tier PKI + join_boot grpc_tls fallback 2026-06-14 22:41:59 -06:00
ingress.yaml feat(cluster): separate operator authority from data-plane access 2026-08-22 00:57:01 -06:00
kustomization.yaml feat(cluster): separate operator authority from data-plane access 2026-08-22 00:57:01 -06:00
namespace.yaml feat(m11): membership, snapshot install, and reseed (m11p5) 2026-06-12 19:55:54 -06:00
networkpolicy.yaml k8s(cluster): close the unauthenticated metrics and peer plane to foreign pods 2026-08-22 00:23:55 -06:00
poddisruptionbudget.yaml feat(m11): membership, snapshot install, and reseed (m11p5) 2026-06-12 19:55:54 -06:00
schema-configmap.yaml bench(1536): production-shape capacity — read path is cheap, quorum write is the ceiling 2026-06-13 21:40:58 -06:00
secret.example.yaml feat(cluster): separate operator authority from data-plane access 2026-08-22 00:57:01 -06:00
service-client.yaml k8s(cluster): publish the client surface over public TLS, data routes only 2026-08-21 23:14:55 -06:00
service-peers.yaml feat(m12p4): sharded ingestion — scatter-gather pool + cross-shard unified reads (L4) 2026-06-14 15:17:35 -06:00
statefulset.yaml k8s(cluster): pin the admin-gate image now running on all three voters 2026-08-22 23:54:22 -06:00
topology-configmap.yaml feat(m12p4): sharded ingestion — scatter-gather pool + cross-shard unified reads (L4) 2026-06-14 15:17:35 -06:00