fix(repartition): the MinIO metrics gate used the wrong port #2160

Merged
pipeline-bot merged 1 commit from fix/repartition-minio-metrics into trunk 2026-09-04 11:45:14 +00:00
Owner

The green gate fetched MinIO cluster metrics from minio.minio.svc.cluster.local:9000. The minio ClusterIP Service listens on 80 and forwards to the pods' 9000 — only the headless minio-hl is on 9000.

So the fetch always failed. The predicate is fail-closed, so the gate could never go green: the preflight held for its whole budget and the fleet loop never started.

Found by the first dry run, before any node was touched. That is exactly what dryRun defaulting to true is for.

Both surviving endpoints re-checked from inside the cluster:

endpoint code
minio.minio.svc.cluster.local:80/minio/v2/metrics/cluster 200
minio-hl...:9000/... 200 (headless, per-pod)
openbao-{0..4}.openbao-internal:8200/v1/sys/health?standbyok=true 200 x5

The guard now pins the full URL including the port, so a regression to :9000 is a red build rather than a gate that silently never passes. Verified by mutation:

FAIL: pipeline-repartition-node.yaml lacks: minio.minio.svc.cluster.local:80/minio/v2/metrics/cluster

tests/check.sh — 147/147.

https://claude.ai/code/session_01MdSbMhzabSbpG8TtP9Ur3H

The green gate fetched MinIO cluster metrics from `minio.minio.svc.cluster.local:9000`. The `minio` ClusterIP Service listens on **80** and forwards to the pods' 9000 — only the headless `minio-hl` is on 9000. So the fetch always failed. The predicate is fail-closed, so the gate could never go green: the preflight held for its whole budget and the fleet loop never started. **Found by the first dry run, before any node was touched.** That is exactly what `dryRun` defaulting to `true` is for. Both surviving endpoints re-checked from inside the cluster: | endpoint | code | | --- | --- | | `minio.minio.svc.cluster.local:80/minio/v2/metrics/cluster` | 200 | | `minio-hl...:9000/...` | 200 (headless, per-pod) | | `openbao-{0..4}.openbao-internal:8200/v1/sys/health?standbyok=true` | 200 x5 | The guard now pins the full URL **including the port**, so a regression to `:9000` is a red build rather than a gate that silently never passes. Verified by mutation: ``` FAIL: pipeline-repartition-node.yaml lacks: minio.minio.svc.cluster.local:80/minio/v2/metrics/cluster ``` `tests/check.sh` — 147/147. https://claude.ai/code/session_01MdSbMhzabSbpG8TtP9Ur3H
fix(repartition): the MinIO metrics gate used the wrong port
All checks were successful
pipeline/ci CI green @ e1a99c8fa0bd
e1a99c8fa0
The green gate fetched cluster metrics from
minio.minio.svc.cluster.local:9000. The `minio` ClusterIP Service listens on
80 and forwards to the pods' 9000; only the headless `minio-hl` is on 9000.
So the fetch always failed, the predicate is fail-closed, and the gate could
never go green — the preflight held for its whole budget and the fleet loop
never started.

Found by the first dry run, before any node was touched. That is exactly
what dryRun defaulting to true is for.

The guard now pins the full URL including the port, so a regression to :9000
is a red build rather than a gate that silently never passes. Verified by
mutation.

Both surviving endpoints were re-checked from inside the cluster:
  minio.minio.svc.cluster.local:80   -> 200
  minio-hl...:9000                   -> 200 (headless, per-pod)
  openbao-{0..4}.openbao-internal:8200/v1/sys/health?standbyok=true -> 200 x5

tests/check.sh: 147/147.

Claude-Session: https://claude.ai/code/session_01MdSbMhzabSbpG8TtP9Ur3H
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sean/pipelines!2160
No description provided.