Skip to content

Commit 686d15f

Browse files
fix: gate ServiceMonitor on CRD availability and add auth for secure metrics
Address review feedback: - Gate ServiceMonitor rendering on .Capabilities.APIVersions.Has to avoid failures on clusters without Prometheus Operator CRDs - Add bearerTokenFile for service account auth when secure metrics enabled - Add test for CRD unavailability scenario - Add test for bearerTokenFile in secure mode Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Optimus (AI Agent) <agent@fulcria.com>
1 parent 0c71d17 commit 686d15f

2 files changed

Lines changed: 28 additions & 1 deletion

File tree

helm/kagent/templates/controller-servicemonitor.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.serviceMonitor.enabled }}
1+
{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.serviceMonitor.enabled (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1") }}
22
apiVersion: monitoring.coreos.com/v1
33
kind: ServiceMonitor
44
metadata:
@@ -21,6 +21,7 @@ spec:
2121
scheme: https
2222
tlsConfig:
2323
insecureSkipVerify: true
24+
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
2425
{{- end }}
2526
{{- with .Values.controller.metrics.serviceMonitor.metricRelabelings }}
2627
metricRelabelings:

helm/kagent/tests/controller-servicemonitor_test.yaml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,18 @@ tests:
1515
- hasDocuments:
1616
count: 0
1717

18+
- it: should not render when CRD is not available
19+
set:
20+
controller.metrics.enabled: true
21+
controller.metrics.serviceMonitor.enabled: true
22+
asserts:
23+
- hasDocuments:
24+
count: 0
25+
1826
- it: should render when both metrics and serviceMonitor are enabled
27+
capabilities:
28+
apiVersions:
29+
- monitoring.coreos.com/v1
1930
set:
2031
controller.metrics.enabled: true
2132
controller.metrics.serviceMonitor.enabled: true
@@ -29,6 +40,9 @@ tests:
2940
value: RELEASE-NAME-controller
3041

3142
- it: should have correct endpoint configuration
43+
capabilities:
44+
apiVersions:
45+
- monitoring.coreos.com/v1
3246
set:
3347
controller.metrics.enabled: true
3448
controller.metrics.port: 9093
@@ -47,6 +61,9 @@ tests:
4761
value: 10s
4862

4963
- it: should use HTTPS scheme when metrics are secure
64+
capabilities:
65+
apiVersions:
66+
- monitoring.coreos.com/v1
5067
set:
5168
controller.metrics.enabled: true
5269
controller.metrics.secure: true
@@ -55,8 +72,14 @@ tests:
5572
- equal:
5673
path: spec.endpoints[0].scheme
5774
value: https
75+
- equal:
76+
path: spec.endpoints[0].bearerTokenFile
77+
value: /var/run/secrets/kubernetes.io/serviceaccount/token
5878

5979
- it: should include additional labels
80+
capabilities:
81+
apiVersions:
82+
- monitoring.coreos.com/v1
6083
set:
6184
controller.metrics.enabled: true
6285
controller.metrics.serviceMonitor.enabled: true
@@ -68,6 +91,9 @@ tests:
6891
value: prometheus
6992

7093
- it: should have correct selector labels
94+
capabilities:
95+
apiVersions:
96+
- monitoring.coreos.com/v1
7197
set:
7298
controller.metrics.enabled: true
7399
controller.metrics.serviceMonitor.enabled: true

0 commit comments

Comments
 (0)