From 2ff4f3e51b0cc4647b6dbd8de094adfe4064a5bc Mon Sep 17 00:00:00 2001 From: Marco Maurer Date: Tue, 4 Feb 2025 09:55:10 +0100 Subject: [PATCH] feat: Dedicated metrics service with basic customization options Signed-off-by: Marco Maurer --- charts/argo-cd/README.md | 7 ++++ .../argocd-commit-server/metrics.yaml | 35 +++++++++++++++++++ .../argocd-commit-server/service.yaml | 4 --- charts/argo-cd/values.yaml | 17 +++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 charts/argo-cd/templates/argocd-commit-server/metrics.yaml diff --git a/charts/argo-cd/README.md b/charts/argo-cd/README.md index 6c7b573a..f1140f1f 100644 --- a/charts/argo-cd/README.md +++ b/charts/argo-cd/README.md @@ -1650,6 +1650,13 @@ To read more about this component, please read [Argo CD Manifest Hydrator] and [ | commitServer.livenessProbe.initialDelaySeconds | int | `30` | Number of seconds after the container has started before [probe] is initiated | | commitServer.livenessProbe.periodSeconds | int | `30` | How often (in seconds) to perform the [probe] | | commitServer.livenessProbe.timeoutSeconds | int | `5` | Number of seconds after which the [probe] times out | +| commitServer.metrics.enabled | bool | `false` | Enables prometheus metrics server | +| commitServer.metrics.service.annotations | object | `{}` | Metrics service annotations | +| commitServer.metrics.service.clusterIP | string | `""` | Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) | +| commitServer.metrics.service.labels | object | `{}` | Metrics service labels | +| commitServer.metrics.service.portName | string | `"metrics"` | Metrics service port name | +| commitServer.metrics.service.servicePort | int | `8087` | Metrics service port | +| commitServer.metrics.service.type | string | `"ClusterIP"` | Metrics service type | | commitServer.name | string | `"commit-server"` | Commit server name | | commitServer.nodeSelector | object | `{}` (defaults to global.nodeSelector) | [Node selector] | | commitServer.podAnnotations | object | `{}` | Annotations for the commit server pods | diff --git a/charts/argo-cd/templates/argocd-commit-server/metrics.yaml b/charts/argo-cd/templates/argocd-commit-server/metrics.yaml new file mode 100644 index 00000000..7d198a70 --- /dev/null +++ b/charts/argo-cd/templates/argocd-commit-server/metrics.yaml @@ -0,0 +1,35 @@ +{{- if and .Values.commitServer.enabled .Values.commitServer.metrics.enabled }} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "argo-cd.commitServer.fullname" . }}-metrics + namespace: {{ include "argo-cd.namespace" . }} + labels: + {{- include "argo-cd.labels" (dict "context" . "component" .Values.commitServer.name "name" "metrics") | nindent 4 }} + {{- with .Values.commitServer.metrics.service.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if or .Values.commitServer.metrics.service.annotations .Values.global.addPrometheusAnnotations }} + annotations: + {{- if .Values.global.addPrometheusAnnotations }} + prometheus.io/port: {{ .Values.commitServer.metrics.service.servicePort | quote }} + prometheus.io/scrape: "true" + {{- end }} + {{- range $key, $value := .Values.commitServer.metrics.service.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} +spec: + type: {{ .Values.commitServer.metrics.service.type }} + {{- if and .Values.commitServer.metrics.service.clusterIP (eq .Values.commitServer.metrics.service.type "ClusterIP") }} + clusterIP: {{ .Values.commitServer.metrics.service.clusterIP }} + {{- end }} + {{- include "argo-cd.dualStack" . | indent 2 }} + ports: + - name: {{ .Values.commitServer.metrics.service.portName }} + protocol: TCP + port: {{ .Values.commitServer.metrics.service.servicePort }} + targetPort: 8087 + selector: + {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 4 }} +{{- end }} diff --git a/charts/argo-cd/templates/argocd-commit-server/service.yaml b/charts/argo-cd/templates/argocd-commit-server/service.yaml index 1e6a915d..7b0bf878 100644 --- a/charts/argo-cd/templates/argocd-commit-server/service.yaml +++ b/charts/argo-cd/templates/argocd-commit-server/service.yaml @@ -21,10 +21,6 @@ spec: protocol: TCP port: 8086 targetPort: 8086 - - name: metrics - protocol: TCP - port: 8087 - targetPort: 8087 selector: {{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.commitServer.name) | nindent 4 }} {{- end }} diff --git a/charts/argo-cd/values.yaml b/charts/argo-cd/values.yaml index 3b6f9581..93e480ad 100644 --- a/charts/argo-cd/values.yaml +++ b/charts/argo-cd/values.yaml @@ -3796,6 +3796,23 @@ commitServer: # -- List of extra volumes to add extraVolumes: [] + metrics: + # -- Enables prometheus metrics server + enabled: false + service: + # -- Metrics service type + type: ClusterIP + # -- Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) + clusterIP: "" + # -- Metrics service annotations + annotations: {} + # -- Metrics service labels + labels: {} + # -- Metrics service port + servicePort: 8087 + # -- Metrics service port name + portName: metrics + ## commit server service configuration service: # -- commit server service annotations