diff --git a/charts/redis-operator/README.md b/charts/redis-operator/README.md index 97f02ea2bd..7672f4a07a 100644 --- a/charts/redis-operator/README.md +++ b/charts/redis-operator/README.md @@ -115,8 +115,14 @@ kubectl create secret tls --key tls.key --cert tls.crt -n | redisOperator.imagePullPolicy | string | `"Always"` | | | redisOperator.imagePullSecrets | list | `[]` | | | redisOperator.imageTag | string | `""` | | -| redisOperator.metrics.bindAddress | string | `":8080"` | | -| redisOperator.metrics.enabled | bool | `true` | | +| redisOperator.metrics.bindAddress | string | `":8080"` | The address the metrics endpoint binds to | +| redisOperator.metrics.enabled | bool | `true` | Enable metrics server | +| redisOperator.metrics.port | string | `"8080"` | The port the metrics endpoint binds to | +| redisOperator.metrics.serviceMonitor.enabled | bool | `false` | | +| redisOperator.metrics.serviceMonitor.extraLabels | object | `{}` | extraLabels are added to the servicemonitor when enabled set to true | +| redisOperator.metrics.serviceMonitor.interval | string | `"30s"` | | +| redisOperator.metrics.serviceMonitor.namespace | string | `""` | Namespace where servicemonitor resource will be created, if empty it will be created in the same namespace as the operator | +| redisOperator.metrics.serviceMonitor.scrapeTimeout | string | `"10s"` | | | redisOperator.name | string | `"redis-operator"` | | | redisOperator.podAnnotations | object | `{}` | | | redisOperator.podLabels | object | `{}` | | diff --git a/charts/redis-operator/templates/service-metrics.yaml b/charts/redis-operator/templates/service-metrics.yaml new file mode 100644 index 0000000000..123aacea21 --- /dev/null +++ b/charts/redis-operator/templates/service-metrics.yaml @@ -0,0 +1,23 @@ +{{ if .Values.redisOperator.metrics.enabled }} +apiVersion: v1 +kind: Service +metadata: + labels: + app.kubernetes.io/name : {{ .Values.redisOperator.name | default .Release.Name }}-metrics + helm.sh/chart : {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + app.kubernetes.io/managed-by : {{ .Release.Service }} + app.kubernetes.io/instance : {{ .Release.Name }} + app.kubernetes.io/version : {{ .Chart.AppVersion }} + app.kubernetes.io/component: metrics + app.kubernetes.io/part-of : {{ .Release.Name }} + name: {{ .Values.redisOperator.name | default .Release.Name }}-metrics + namespace: {{ .Release.Namespace }} +spec: + ports: + - name: redis-operator-metrics + port: 8080 + protocol: TCP + targetPort: {{ .Values.redisOperator.metrics.port }} + selector: + name: {{ .Values.redisOperator.name }} +{{ end }} diff --git a/charts/redis-operator/templates/servicemonitor.yaml b/charts/redis-operator/templates/servicemonitor.yaml new file mode 100644 index 0000000000..679dc8fdb7 --- /dev/null +++ b/charts/redis-operator/templates/servicemonitor.yaml @@ -0,0 +1,30 @@ +{{- if eq .Values.redisOperator.metrics.serviceMonitor.enabled true }} +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ .Values.redisOperator.name | default .Release.Name }}-prometheus-monitoring + namespace: {{ .Values.redisOperator.metrics.serviceMonitor.namespace | default .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ .Values.redisOperator.name | default .Release.Name }} + helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Values.redisOperator.name | default .Release.Name }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} + app.kubernetes.io/component: middleware + {{- with .Values.redisOperator.metrics.serviceMonitor.extraLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + app.kubernetes.io/name : {{ .Values.redisOperator.name | default .Release.Name }}-metrics + app.kubernetes.io/component: metrics + endpoints: + - port: redis-operator-metrics + interval: {{ .Values.redisOperator.metrics.serviceMonitor.interval }} + scrapeTimeout: {{ .Values.redisOperator.metrics.serviceMonitor.scrapeTimeout }} + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} +{{- end }} diff --git a/charts/redis-operator/values.yaml b/charts/redis-operator/values.yaml index f5b9288f64..6bea2ba516 100644 --- a/charts/redis-operator/values.yaml +++ b/charts/redis-operator/values.yaml @@ -33,10 +33,23 @@ redisOperator: # metrics configuration for monitoring metrics: - # Enable metrics server + # -- Enable metrics server enabled: true - # The address the metrics endpoint binds to + # -- The address the metrics endpoint binds to bindAddress: ":8080" + # -- The port the metrics endpoint binds to + port: "8080" + # serviceMonitor configuration + serviceMonitor: + enabled: false + interval: 30s + scrapeTimeout: 10s + # -- Namespace where servicemonitor resource will be created, if empty it will be created in the same namespace as the operator + namespace: "" + # -- extraLabels are added to the servicemonitor when enabled set to true + extraLabels: {} + # foo: bar + # team: devops resources: limits: