Skip to content
This repository was archived by the owner on Aug 26, 2026. It is now read-only.

fix(observability): pin the prometheus operator and its admission hooks to frankfurt - #765

Merged
ExtraToast merged 1 commit into
mainfrom
fix/metrics-stack-hook-placement
Aug 19, 2026
Merged

fix(observability): pin the prometheus operator and its admission hooks to frankfurt#765
ExtraToast merged 1 commit into
mainfrom
fix/metrics-stack-hook-placement

Conversation

@ExtraToast

Copy link
Copy Markdown
Owner

Problem

metrics-stack could not complete a Helm upgrade:

pre-upgrade hooks failed: timeout waiting for:
[Job/observability/metrics-stack-admission-create status: 'InProgress']

That failure stalled apps-observability, which blocked apps-grafana-dashboards and apps-observability-rules on their dependency — three Kustomizations sat unreconciled.

Root cause

The kube-webhook-certgen create and patch Jobs run as Helm pre-upgrade hooks, so the release fails outright if they do not finish inside the timeout.

This release pinned prometheus and alertmanager to frankfurt but configured no prometheusOperator block at all, so the hook Jobs were scheduled wherever the scheduler put them. Caught in the act:

metrics-stack-admission-patch-9hmlw   ContainerCreating   enschede-pi-1
  Pulling image "ghcr.io/jkroepke/kube-webhook-certgen"

A Pi pulling that image over the home connection takes well over the 5-minute hook timeout. The same omission left metrics-stack-operator and metrics-stack-kube-state-metrics on enschede-gtx-960m-1 while the Prometheus they serve runs on frankfurt.

The upgrade eventually succeeded only because the certgen image ended up cached on that Pi. The next chart bump pulls a new tag and fails the same way, so this needs the pin rather than luck.

Change

Both the operator and the admission-hook Jobs now select personal-stack/site: frankfurt, alongside the Prometheus and Alertmanager they serve, where the image pulls in seconds.

On verifying the value path

prometheusOperator.admissionWebhooks.patch.nodeSelector was confirmed against kube-prometheus-stack 88.5.0, the pinned version, at line 3144 of its values.yaml. The chart's main branch documents this differently — it presents admissionWebhooks.deployment.nodeSelector and states the create/patch Jobs have no separate nodeSelector, which is not true of 88.5.0. Reading the pinned version rather than main is what produced a working path.

Not included

kube-state-metrics is also unpinned and currently on enschede-gtx-960m-1. It is healthy there and moving it is a placement decision rather than part of this failure, so it is left alone.

Validation

  • kubectl kustomize platform/cluster/flux/clusters/production builds clean.
  • cd platform/tests && node --test — 58/58 pass.
  • Cluster state after the manual recovery that preceded this change: every HelmRelease and every Kustomization reports Ready.

…ks to frankfurt

metrics-stack could not complete a Helm upgrade:

    pre-upgrade hooks failed: timeout waiting for:
    [Job/observability/metrics-stack-admission-create status: 'InProgress']

The kube-webhook-certgen create and patch Jobs run as Helm pre-upgrade
hooks, so the release fails outright if they do not finish inside the
timeout. The release pinned prometheus and alertmanager to frankfurt but
configured no prometheusOperator block at all, so the hook Jobs were
scheduled anywhere. They landed on enschede-pi-1 and spent longer than
the 5-minute timeout pulling ghcr.io/jkroepke/kube-webhook-certgen over
the home connection.

That failure stalled the apps-observability Kustomization, which in turn
blocked apps-grafana-dashboards and apps-observability-rules on their
dependency, so three Kustomizations sat unreconciled. The upgrade only
succeeded once the certgen image happened to be cached on that Pi — the
next chart bump would pull a new tag and fail the same way.

Both the operator and the admission-hook Jobs now select
`personal-stack/site: frankfurt`, alongside the Prometheus and
Alertmanager they serve, where the image pulls in seconds.

Value paths verified against kube-prometheus-stack 88.5.0 rather than
chart main, where `admissionWebhooks.patch.nodeSelector` no longer
appears in the same form.
@ExtraToast ExtraToast added the bug Something isn't working label Aug 19, 2026
@ExtraToast ExtraToast self-assigned this Aug 19, 2026
@ExtraToast
ExtraToast merged commit b79228b into main Aug 19, 2026
22 checks passed
@ExtraToast
ExtraToast deleted the fix/metrics-stack-hook-placement branch August 19, 2026 08:16
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant