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
Merged
Conversation
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
metrics-stackcould not complete a Helm upgrade:That failure stalled
apps-observability, which blockedapps-grafana-dashboardsandapps-observability-ruleson their dependency — three Kustomizations sat unreconciled.Root cause
The
kube-webhook-certgencreate 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
prometheusandalertmanagerto frankfurt but configured noprometheusOperatorblock at all, so the hook Jobs were scheduled wherever the scheduler put them. Caught in the act:A Pi pulling that image over the home connection takes well over the 5-minute hook timeout. The same omission left
metrics-stack-operatorandmetrics-stack-kube-state-metricsonenschede-gtx-960m-1while 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.nodeSelectorwas confirmed against kube-prometheus-stack 88.5.0, the pinned version, at line 3144 of itsvalues.yaml. The chart'smainbranch documents this differently — it presentsadmissionWebhooks.deployment.nodeSelectorand states the create/patch Jobs have no separate nodeSelector, which is not true of 88.5.0. Reading the pinned version rather thanmainis what produced a working path.Not included
kube-state-metricsis also unpinned and currently onenschede-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/productionbuilds clean.cd platform/tests && node --test— 58/58 pass.