feat: enabled multiple endpoints in servicemonitor #1646
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.
What this PR does
This PR updates the Capsule Helm chart ServiceMonitor template to support multiple endpoints instead of a single .endpoint.
Why
Currently, the chart only allows defining one .endpoint, which prevents using Prometheus blackbox-exporter probes or scraping additional targets like /healthz and /readyz.
For example, the following configuration in values.yaml does not render correctly today:
serviceMonitor: enabled: true endpoints: - interval: "15s" relabelings: - targetLabel: instance_name replacement: "demo" - port: http interval: 10s scrapeTimeout: 5s path: /probe scheme: http params: module: [http_2xx] target: [http://capsule-controller-manager-metrics-service.capsule-system.svc.cluster.local:10080/healthz] relabelings: - targetLabel: probe_type replacement: "livez"
How
Replaced .endpoint with .endpoints in the ServiceMonitor template.
Added a range loop to render each endpoint with support for:
port
interval
path
scheme
scrapeTimeout
params
metricRelabelings
relabelings
Ensured backward compatibility by allowing a single-item array in .endpoints.
Testing
Verified helm template works with:
Confirmed rendered ServiceMonitor CRD validates against monitoring.coreos.com/v1.
Example Rendered Output
spec: endpoints: - interval: 15s relabelings: - targetLabel: instance_name replacement: demo - port: http interval: 10s scrapeTimeout: 5s path: /probe scheme: http params: module: - http_2xx target: - http://capsule-controller-manager-metrics-service.capsule-system.svc.cluster.local:10080/healthz relabelings: - targetLabel: probe_type replacement: livez
Checklist
Chart template updated
values.yaml updated with endpoints examples
CHANGELOG entry added
Tested with Prometheus Operator
Thanks!!