feat(helm): add PodMonitors for the workloads that serve metrics - #46
Open
QuentinBisson wants to merge 1 commit into
Open
QuentinBisson wants to merge 1 commit into
QuentinBisson wants to merge 1 commit into
Conversation
This was referenced Sep 21, 2026
QuentinBisson
force-pushed
the
feat/chart-podmonitors
branch
from
September 22, 2026 18:22
b38511f to
81c23d9
Compare
Author
|
@EItanya I had to force push |
EItanya
force-pushed
the
main
branch
2 times, most recently
from
September 23, 2026 18:41
0401cc1 to
08c930d
Compare
Six workloads serve a Prometheus endpoint on a pod port and nothing collects any of them. ate-api-server, atelet, the atenet router, the atenet egress and the k8s credential provider start the metrics server in serverboot; ate-controller serves controller-runtime's own on :8080, its default, since its ctrl.Options sets no Metrics field. The router and the egress each add a second port for their agentgateway container. Three of those pods carry prometheus.io/* annotations, which a Prometheus reads only when it is configured for pod-annotation discovery. A Prometheus Operator installation discovers PodMonitors instead and ignores the annotations, so on such an installation every one of these endpoints is served and none is collected. Add one PodMonitor per workload, off by default because the object needs the monitoring.coreos.com/v1 CRDs. The port name and the pod label are pinned per workload: no two metrics sources agree on the port name, and the credential provider's label is the substrate.fullname helper's output rather than the bare component name. A wrong name or label yields a monitor that matches nothing and reports no error. podcertificate-controller gets no monitor. It emits no metrics, which docs/metrics/substrate.yaml records under blind_spots. Run the new chart unit tests in helm-verify, which had no way to run them. Signed-off-by: Quentin Bisson <quentin@giantswarm.io>
QuentinBisson
force-pushed
the
feat/chart-podmonitors
branch
from
September 24, 2026 09:00
81c23d9 to
b67e433
Compare
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Six workloads serve Prometheus metrics, but the chart ships no monitor object. A Prometheus Operator installation ignores the
prometheus.io/*annotations, so none of these metrics are collected.This adds one
PodMonitorper workload that serves metrics, behindmetrics.podMonitor.enabled(off by default, because the object needs the Prometheus Operator CRDs), withintervalandlabels.podcertificate-controllergets none: it emits no metrics. The unit tests pin each workload's port name and pod label, because a wrong value matches nothing and reports no error.helm-verifygains ahelm-unitteststep to run them.The default render does not change (
make verify-helm-templatepasses).