Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions helm/kagent/templates/controller-configmap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ data:
STREAMING_MAX_BUF_SIZE: {{ .Values.controller.streaming.maxBufSize | quote }}
STREAMING_TIMEOUT: {{ .Values.controller.streaming.timeout | quote }}
WATCH_NAMESPACES: {{ include "kagent.watchNamespaces" . | quote }}
{{- if .Values.controller.metrics.enabled }}
METRICS_BIND_ADDRESS: ":{{ .Values.controller.metrics.port }}"
METRICS_SECURE: {{ .Values.controller.metrics.secure | quote }}
{{- end }}
ZAP_LOG_LEVEL: {{ .Values.controller.loglevel | quote }}
{{- $agentHost := "" }}
{{- if and .Values.controller.agentDeployment .Values.controller.agentDeployment.host (not (eq .Values.controller.agentDeployment.host "")) }}
Expand Down
5 changes: 5 additions & 0 deletions helm/kagent/templates/controller-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,11 @@ spec:
- name: http
containerPort: {{ .Values.controller.service.ports.targetPort }}
protocol: TCP
{{- if .Values.controller.metrics.enabled }}
- name: metrics
containerPort: {{ .Values.controller.metrics.port }}
protocol: TCP
{{- end }}
resources:
{{- toYaml .Values.controller.resources | nindent 12 }}
{{- with (.Values.controller.securityContext | default .Values.securityContext) }}
Expand Down
6 changes: 6 additions & 0 deletions helm/kagent/templates/controller-service.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,11 @@ spec:
targetPort: {{ .Values.controller.service.ports.targetPort }}
protocol: TCP
name: controller
{{- if .Values.controller.metrics.enabled }}
- port: {{ .Values.controller.metrics.port }}
targetPort: {{ .Values.controller.metrics.port }}
protocol: TCP
name: metrics
Comment on lines +15 to +19
{{- end }}
selector:
{{- include "kagent.controller.selectorLabels" . | nindent 4 }}
25 changes: 25 additions & 0 deletions helm/kagent/templates/controller-servicemonitor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{{- if and .Values.controller.metrics.enabled .Values.controller.metrics.serviceMonitor.enabled (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor") }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "kagent.fullname" . }}-controller
namespace: {{ include "kagent.namespace" . }}
labels:
{{- include "kagent.labels" . | nindent 4 }}
{{- with .Values.controller.metrics.serviceMonitor.labels }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
selector:
matchLabels:
{{- include "kagent.controller.selectorLabels" . | nindent 6 }}
endpoints:
- port: metrics
interval: {{ .Values.controller.metrics.serviceMonitor.interval }}
scrapeTimeout: {{ .Values.controller.metrics.serviceMonitor.scrapeTimeout }}
Comment on lines +17 to +19
{{- if .Values.controller.metrics.secure }}
scheme: https
tlsConfig:
insecureSkipVerify: true
{{- end }}
{{- end }}
23 changes: 23 additions & 0 deletions helm/kagent/tests/controller-deployment_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,29 @@ tests:
- equal:
path: spec.template.spec.containers[0].ports[0].containerPort
value: 8083
- lengthEqual:
path: spec.template.spec.containers[0].ports
count: 1

- it: should add metrics port and env vars when enabled
set:
controller.metrics.enabled: true
asserts:
- contains:
path: spec.template.spec.containers[0].ports
content:
name: metrics
containerPort: 9093
protocol: TCP
template: controller-deployment.yaml
- equal:
path: data.METRICS_BIND_ADDRESS
value: ":9093"
template: controller-configmap.yaml
- equal:
path: data.METRICS_SECURE
value: "false"
template: controller-configmap.yaml

- it: should set A2A_BASE_URL with computed default value
template: controller-configmap.yaml
Expand Down
17 changes: 16 additions & 1 deletion helm/kagent/tests/controller-service_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ tests:
- equal:
path: spec.ports[0].protocol
value: TCP
- lengthEqual:
path: spec.ports
count: 1

- it: should have correct selector labels
asserts:
Expand Down Expand Up @@ -68,4 +71,16 @@ tests:
asserts:
- equal:
path: metadata.namespace
value: custom-namespace
value: custom-namespace

- it: should expose metrics port when enabled
set:
controller.metrics.enabled: true
asserts:
- contains:
path: spec.ports
content:
port: 9093
targetPort: 9093
protocol: TCP
name: metrics
46 changes: 46 additions & 0 deletions helm/kagent/tests/controller-servicemonitor_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
suite: test controller servicemonitor
templates:
- controller-servicemonitor.yaml
tests:
- it: should not render by default
asserts:
- hasDocuments:
count: 0

- it: should not render when CRD is not installed
set:
controller.metrics.enabled: true
controller.metrics.serviceMonitor.enabled: true
asserts:
- hasDocuments:
count: 0

- it: should render ServiceMonitor when both enabled and CRD present
set:
controller.metrics.enabled: true
controller.metrics.serviceMonitor.enabled: true
capabilities:
apiVersions:
- monitoring.coreos.com/v1/ServiceMonitor
asserts:
- isKind:
of: ServiceMonitor
- equal:
path: spec.endpoints[0].port
value: metrics

- it: should add TLS config when secure is true
set:
controller.metrics.enabled: true
controller.metrics.serviceMonitor.enabled: true
controller.metrics.secure: true
capabilities:
apiVersions:
- monitoring.coreos.com/v1/ServiceMonitor
asserts:
- equal:
path: spec.endpoints[0].scheme
value: https
- equal:
path: spec.endpoints[0].tlsConfig.insecureSkipVerify
value: true
11 changes: 11 additions & 0 deletions helm/kagent/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,17 @@ controller:
ports:
port: 8083
targetPort: 8083
metrics:
enabled: false
port: 9093
# -- The controller binary defaults to secure=true. Set to false for plain HTTP scraping (most common).
# Note: when the controller Service type is NodePort or LoadBalancer the metrics port will be externally reachable.
secure: false
serviceMonitor:
enabled: false
interval: 30s
scrapeTimeout: 10s
labels: {}
env: []
envFrom: []

Expand Down
Loading