Skip to content

Dynamic namespace handling for ServiceMonitor serverName in operator metrics scraping #6846

@iblancasa

Description

@iblancasa

Feature Request

Describe the problem you need a feature to resolve.

We have the /metrics endpoint for the operator, and we create a ServiceMonitor to scrape those metrics. However, the ServiceMonitor requires a CA and a serverName. The serverName field depends on the namespace where the operator is installed.

If the user installs the operator in a namespace different from the default one, the serverName field is incorrect. This leads to the certificate being invalid, and as a result, the ServiceMonitor cannot scrape the metrics.

For example:

 tlsConfig:
   ca: {}
   caFile: /etc/prometheus/configmaps/serving-certs-ca-bundle/service-ca.crt
   cert: {}
   serverName: my-operator-controller-manager-metrics-service.my-namespace.svc

The current solution is to create the ServiceMonitor from the operator at runtime, but this solution is not ideal because it introduces OpenShift-specific logic in upstream operators.

Describe the solution you'd like.

We want the operator-sdk to dynamically handle the serverName configuration for the ServiceMonitor based on the namespace where the operator is installed. This would ensure that the correct serverName is used, regardless of the installation namespace, making the certificate valid and allowing the ServiceMonitor to scrape the metrics properly.

Or any alternative solution that can help with this use case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions