Skip to content

Commit 360b8d0

Browse files
feat: /metrics (#21)
Signed-off-by: Eoghan Lawless <[email protected]>
1 parent ce3469e commit 360b8d0

31 files changed

+619
-256
lines changed

.github/workflows/validate-openapi.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ jobs:
3131
run: |
3232
if [[ `git status --porcelain` ]]; then
3333
echo "### Error: Changes detected after running make generate-api"
34+
echo "### git status --porcelain"
35+
git status --porcelain
36+
echo "### git diff"
3437
git diff
3538
echo "### Error: Changes detected after running make generate-api" >> $GITHUB_STEP_SUMMARY
3639
exit 1

Makefile

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,8 @@ helm-clean: ## Clean helm chart build annotations.
290290

291291
.PHONY: helm-test
292292
helm-test: ## Template the charts.
293-
for d in $(HELM_DIRS); do \
294-
helm template intel $$d; \
293+
@for d in $(HELM_DIRS); do \
294+
helm --debug template --namespace orch-cluster intel $$d; \
295295
done
296296

297297
.PHONY: helm-build
@@ -504,9 +504,9 @@ redeploy: docker-build docker-load ## Redeploy the pod with the latest codes.
504504
generate-api: check-oapi-codegen-version ## Generate Go client, server, client and types from OpenAPI spec with oapi-codegen
505505
@echo "Generating..."
506506
oapi-codegen -generate spec -o pkg/api/spec.gen.go -package api api/openapi/openapi.yaml
507-
oapi-codegen -generate client -o pkg/api/client.gen.go -package api api/openapi/openapi.yaml
508-
oapi-codegen -generate types -o pkg/api/types.gen.go -package api api/openapi/openapi.yaml
509-
oapi-codegen -generate std-http,strict-server -o pkg/api/server.gen.go -package api api/openapi/openapi.yaml
507+
oapi-codegen -generate client -o pkg/api/client.gen.go -exclude-tags metrics -package api api/openapi/openapi.yaml
508+
oapi-codegen -generate types -o pkg/api/types.gen.go -exclude-tags metrics -package api api/openapi/openapi.yaml
509+
oapi-codegen -generate std-http,strict-server -exclude-tags metrics -o pkg/api/server.gen.go -package api api/openapi/openapi.yaml
510510

511511
.PHONY: check-oapi-codegen-version
512512
check-oapi-codegen-version: ## Check oapi-codegen version
@@ -538,8 +538,8 @@ dev-image: ## Build dev image and push to sandbox
538538
-f deployment/images/Dockerfile.cluster-manager
539539
${DOCKER_ENV} docker push ${DOCKER_DEV_IMG}
540540

541-
.PHONY: dev-helm # Build dev helm chart and push to sandbox
542-
dev-helm: ## Build dev helm chart and push to sandbox
541+
.PHONY: dev-chart # Build dev helm chart and push to sandbox
542+
dev-chart: ## Build dev helm chart and push to sandbox
543543
@if test -z $(DEV_TAG); \
544544
then echo "Please specify dev tag, make dev DEV_TAG=<dev-tag> " && exit 1; \
545545
fi

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
2.1.0-dev
1+
2.1.0

api/openapi/openapi.yaml

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ openapi: 3.0.3
66
info:
77
title: Cluster Manager 2.0
88
description: This document defines the schema for the Cluster Manager 2.0 REST API.
9-
version: 2.0.0
9+
version: 2.1.0
1010

1111
security:
1212
- HTTP: []
@@ -143,7 +143,6 @@ paths:
143143
"500":
144144
$ref: '#/components/responses/500-InternalServerError'
145145

146-
147146
/v2/clusters/{name}:
148147
parameters:
149148
- $ref: '#/components/parameters/ActiveProjectIdHeader'
@@ -186,6 +185,7 @@ paths:
186185
$ref: '#/components/responses/404-NotFound'
187186
"500":
188187
$ref: '#/components/responses/500-InternalServerError'
188+
189189
/v2/clusters/{nodeId}/clusterdetail:
190190
parameters:
191191
- $ref: '#/components/parameters/ActiveProjectIdHeader'
@@ -211,6 +211,7 @@ paths:
211211
$ref: '#/components/responses/400-BadRequest'
212212
"404":
213213
$ref: '#/components/responses/404-NotFound'
214+
214215
/v2/clusters/{name}/nodes:
215216
parameters:
216217
- $ref: '#/components/parameters/ActiveProjectIdHeader'
@@ -387,21 +388,6 @@ paths:
387388
$ref: '#/components/responses/404-NotFound'
388389
"500":
389390
$ref: '#/components/responses/500-InternalServerError'
390-
/v2/healthz:
391-
get:
392-
description: Gets the Cluster Manager REST API healthz status.
393-
security: [] # skips authentication
394-
tags:
395-
- Health Check
396-
responses:
397-
"200":
398-
description: OK
399-
content:
400-
application/json:
401-
schema:
402-
type: string
403-
"500":
404-
$ref: '#/components/responses/500-InternalServerError'
405391

406392
/v2/templates:
407393
parameters:
@@ -478,7 +464,6 @@ paths:
478464
$ref: '#/components/responses/404-NotFound'
479465
"500":
480466
$ref: '#/components/responses/500-InternalServerError'
481-
482467
post:
483468
description: Import templates
484469
tags:
@@ -553,6 +538,7 @@ paths:
553538
$ref: '#/components/responses/404-NotFound'
554539
"500":
555540
$ref: '#/components/responses/500-InternalServerError'
541+
556542
/v2/templates/{name}/versions:
557543
parameters:
558544
- $ref: '#/components/parameters/ActiveProjectIdHeader'
@@ -583,6 +569,7 @@ paths:
583569
$ref: '#/components/responses/404-NotFound'
584570
"500":
585571
$ref: '#/components/responses/500-InternalServerError'
572+
586573
/v2/templates/{name}/default:
587574
parameters:
588575
- $ref: '#/components/parameters/ActiveProjectIdHeader'
@@ -615,6 +602,38 @@ paths:
615602
"500":
616603
$ref: '#/components/responses/500-InternalServerError'
617604

605+
/v2/healthz:
606+
get:
607+
description: Gets the Cluster Manager REST API healthz status.
608+
security: [] # skips authentication
609+
tags:
610+
- Health Check
611+
responses:
612+
"200":
613+
description: OK
614+
content:
615+
application/json:
616+
schema:
617+
type: string
618+
"500":
619+
$ref: '#/components/responses/500-InternalServerError'
620+
621+
/metrics:
622+
get:
623+
description: Gets the Cluster Manager REST API prometheus metrics.
624+
security: [] # skips authentication
625+
tags:
626+
- metrics
627+
responses:
628+
"200":
629+
description: OK
630+
content:
631+
application/json:
632+
schema:
633+
type: string
634+
"500":
635+
$ref: '#/components/responses/500-InternalServerError'
636+
618637
components:
619638
securitySchemes:
620639
HTTP:

deployment/charts/cluster-manager/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ type: application
1616
# This is the chart version. This version number should be incremented each time you make changes
1717
# to the chart and its templates, including the app version.
1818
# Versions are expected to follow Semantic Versioning (https://semver.org/)
19-
version: 2.1.0-dev
20-
appVersion: 2.1.0-dev
19+
version: 2.1.0
20+
appVersion: 2.1.0
2121
annotations: {}

deployment/charts/cluster-manager/templates/_helpers.tpl

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -63,21 +63,3 @@ Create the name of the service account to use
6363
{{- default "default" .Values.serviceAccount.name }}
6464
{{- end }}
6565
{{- end }}
66-
67-
{{/*
68-
Metrics service labels
69-
*/}}
70-
{{- define "templateController.metricsServiceLabels" -}}
71-
{{- with .Values.templateController.metrics.service.labels }}
72-
{{ toYaml . }}
73-
{{- end }}
74-
{{- end }}
75-
76-
{{/*
77-
Service monitor labels
78-
*/}}
79-
{{- define "templateController.serviceMonitorLabels" -}}
80-
{{- with .Values.templateController.metrics.serviceMonitor.labels }}
81-
{{- toYaml . }}
82-
{{- end }}
83-
{{- end }}

deployment/charts/cluster-manager/templates/deployment-cluster-manager.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ spec:
5050
- -{{ $key }}={{ $value }}
5151
{{- end }}
5252
ports:
53-
- containerPort: {{ .Values.clusterManager.service.rest.port }}
53+
- name: rest
54+
containerPort: {{ .Values.clusterManager.service.rest.port }}
55+
protocol: TCP
5456
readinessProbe:
5557
httpGet:
5658
path: {{ .Values.clusterManager.readinessProbe.httpGet.path }}

deployment/charts/cluster-manager/templates/deployment-controller.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ spec:
4141
- --leader-elect
4242
- --health-probe-bind-address=:8081
4343
- --webhook-cert-path=/tmp/k8s-webhook-server/serving-certs
44-
{{- if .Values.templateController.metrics.service.enabled }}
45-
- --metrics-bind-address=:{{ .Values.templateController.metrics.service.port }}
44+
{{- if .Values.metrics.enabled }}
45+
- --metrics-bind-address=:{{ .Values.metrics.service.port }}
4646
- --metrics-secure=false
4747
{{- end }}
4848
{{- with .Values.templateController.extraArgs }}
@@ -63,8 +63,8 @@ spec:
6363
{{- toYaml . | nindent 8 }}
6464
{{- end }}
6565
ports:
66-
{{if .Values.templateController.metrics.service.enabled }}
67-
- containerPort: {{ .Values.templateController.metrics.service.port }}
66+
{{if .Values.metrics.enabled }}
67+
- containerPort: {{ .Values.metrics.service.port }}
6868
name: metrics
6969
protocol: TCP
7070
{{- end }}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# SPDX-FileCopyrightText: (C) 2025 Intel Corporation
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
{{ if .Values.metrics.enabled -}}
5+
apiVersion: monitoring.coreos.com/v1
6+
kind: ServiceMonitor
7+
metadata:
8+
name: cluster-manager-metrics
9+
namespace: {{ .Release.Namespace }}
10+
labels:
11+
{{- toYaml .Values.metrics.serviceMonitor.labels | indent 4 }}
12+
spec:
13+
endpoints:
14+
- port: metrics
15+
path: /metrics
16+
scheme: http
17+
- port: rest
18+
path: /metrics
19+
scheme: http
20+
namespaceSelector:
21+
matchNames:
22+
- {{ .Release.Namespace }}
23+
selector:
24+
matchExpressions:
25+
- key: prometheus.io/service-monitor
26+
operator: NotIn
27+
values:
28+
- "false"
29+
- key: app
30+
operator: In
31+
values:
32+
- "{{.Chart.Name}}-cm"
33+
- {{ .Values.metrics.service.labels.templateController.app | quote }}
34+
---
35+
apiVersion: v1
36+
kind: Service
37+
metadata:
38+
name: templates-metrics
39+
namespace: {{ .Release.Namespace }}
40+
labels:
41+
{{- toYaml .Values.metrics.service.labels.templateController | nindent 4 }}
42+
spec:
43+
ports:
44+
- name: metrics
45+
protocol: TCP
46+
port: {{ .Values.metrics.service.port }}
47+
targetPort: {{ .Values.metrics.service.port }}
48+
selector:
49+
app: "{{.Chart.Name}}-controller"
50+
{{- end -}}

deployment/charts/cluster-manager/templates/metrics_service.yaml

Lines changed: 0 additions & 20 deletions
This file was deleted.

0 commit comments

Comments
 (0)