fix(e2e): repair 5 structural defects that kept the suite red #263

Merged
k.renner merged 1 commits from fix/e2e-structural-defects into master 2026-07-16 14:21:44 +00:00
Member

All five defects from #262, verified against the live cluster before committing:

  1. e2e-helper → monitoring namespace — its only job is curling Loki/Prometheus/Alertmanager, and monitoring's default-deny-ingress admits intra-namespace traffic; running it in default timed out all three obs checks. Pod spec is restricted-PSA-clean (runAsNonRoot, drop ALL).
  2. Node count 4→3 — verified: k8s-1/2/3 Ready, no 4th node.
  3. CNPG primaries by label — new exported cnpg_primary() helper resolves cnpg.io/cluster=<c>,cnpg.io/instanceRole=primary; verified live it returns pprl-pg-3 (pprl-pg-1 is gone) and ak-pg-1. All three psql checks converted.
  4. no-failing-pods excludes woodpecker-ci — the check raced its own runner pod.
  5. purge_released_pvs without jq — jsonpath+awk; the jsonpath filter verified live.

Finding while verifying #5: there are currently 305 Released PVs pinning Ceph data — 38 default/e2e-pvc + 73 velero-e2e/* (both will be swept by the repaired purge on the first post-merge e2e run, since the patterns match the old leaks too), 191 woodpecker-ci/wp-* (CI runner workspace PVCs — a separate leak class nothing purges; needs its own decision: Delete-reclaim StorageClass for CI volumes or a cleanup job), and 1 each paperless/openbao (likely intentional Retain safety from instance replacements — untouched).

Suggest verifying with a manual run after merge: woodpecker pipeline create --branch master --var PIPELINE=e2e gitea_admin/homelab.

Closes #262

🤖 Generated with Claude Code

https://claude.ai/code/session_01NV7bZzZLeoFUEdAeCSLEei

All five defects from #262, verified against the live cluster before committing: 1. **e2e-helper → monitoring namespace** — its only job is curling Loki/Prometheus/Alertmanager, and monitoring's default-deny-ingress admits intra-namespace traffic; running it in `default` timed out all three obs checks. Pod spec is restricted-PSA-clean (runAsNonRoot, drop ALL). 2. **Node count 4→3** — verified: k8s-1/2/3 Ready, no 4th node. 3. **CNPG primaries by label** — new exported `cnpg_primary()` helper resolves `cnpg.io/cluster=<c>,cnpg.io/instanceRole=primary`; verified live it returns `pprl-pg-3` (pprl-pg-1 is gone) and `ak-pg-1`. All three psql checks converted. 4. **no-failing-pods excludes woodpecker-ci** — the check raced its own runner pod. 5. **purge_released_pvs without jq** — jsonpath+awk; the jsonpath filter verified live. **Finding while verifying #5: there are currently 305 Released PVs** pinning Ceph data — 38 `default/e2e-pvc` + 73 `velero-e2e/*` (both will be swept by the repaired purge on the first post-merge e2e run, since the patterns match the old leaks too), **191 `woodpecker-ci/wp-*`** (CI runner workspace PVCs — a separate leak class nothing purges; needs its own decision: Delete-reclaim StorageClass for CI volumes or a cleanup job), and 1 each paperless/openbao (likely intentional Retain safety from instance replacements — untouched). Suggest verifying with a manual run after merge: `woodpecker pipeline create --branch master --var PIPELINE=e2e gitea_admin/homelab`. Closes #262 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01NV7bZzZLeoFUEdAeCSLEei
claude-bot added 1 commit 2026-07-16 14:07:31 +00:00
- obs checks: run e2e-helper in the monitoring namespace — default is
  not on monitoring's default-deny-ingress allow-list, so every
  loki/prometheus/alertmanager check timed out (curl exit 28)
- node count: 4 -> 3 (k8s-1/2/3; there is no 4th node)
- CNPG exec targets: resolve the primary via
  cnpg.io/cluster + cnpg.io/instanceRole=primary labels instead of
  hardcoding pod names (pprl-pg-1 no longer exists; ak-pg-1 was one
  failover away from the same break)
- no-failing-pods: exclude the woodpecker-ci namespace — the check
  raced the e2e run's own runner pod (ContainerCreating, 4s old)
- purge_released_pvs: drop jq (not in ci-k8s image — the function has
  been a silent no-op, 305 Released PVs currently pinned); jsonpath +
  awk instead

Closes #262

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NV7bZzZLeoFUEdAeCSLEei
k.renner merged commit e903beb4d1 into master 2026-07-16 14:21:44 +00:00
Sign in to join this conversation.