From b17f8d403a02d002feabc35021ecbfecc397e648 Mon Sep 17 00:00:00 2001 From: Stefan Reimer Date: Wed, 4 Dec 2024 18:38:21 +0000 Subject: [PATCH] feat: add strimzi Kafka operator --- charts/kubezero-operators/Chart.yaml | 7 +++- charts/kubezero-operators/README.md | 14 +++++++- .../{dashboards.yaml => dashboards-pg.yaml} | 4 +-- .../dashboards-strimzi.yaml | 10 ++++++ .../cloudnative-pg/grafana-dashboards.yaml | 4 +-- .../templates/strimzi/grafana-dashboards.yaml | 15 ++++++++ .../templates/strimzi/podMonitor.yaml | 35 +++++++++++++++++++ charts/kubezero-operators/update.sh | 3 +- charts/kubezero-operators/values.yaml | 25 +++++++++++++ 9 files changed, 110 insertions(+), 7 deletions(-) rename charts/kubezero-operators/{dashboards.yaml => dashboards-pg.yaml} (84%) create mode 100644 charts/kubezero-operators/dashboards-strimzi.yaml create mode 100644 charts/kubezero-operators/templates/strimzi/grafana-dashboards.yaml create mode 100644 charts/kubezero-operators/templates/strimzi/podMonitor.yaml diff --git a/charts/kubezero-operators/Chart.yaml b/charts/kubezero-operators/Chart.yaml index e10d302a..cba15726 100644 --- a/charts/kubezero-operators/Chart.yaml +++ b/charts/kubezero-operators/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: kubezero-operators description: Various operators supported by KubeZero type: application -version: 0.1.6 +version: 0.1.7 home: https://kubezero.com icon: https://cdn.zero-downtime.net/assets/kubezero/logo-small-64.png keywords: @@ -10,6 +10,7 @@ keywords: - operators - opensearch - postgres + - kafka maintainers: - name: Stefan Reimer email: stefan@zero-downtime.net @@ -29,4 +30,8 @@ dependencies: version: 0.22.1 repository: https://cloudnative-pg.github.io/charts condition: cloudnative-pg.enabled + - name: strimzi-kafka-operator + version: 0.44.0 + repository: "oci://quay.io/strimzi-helm" + condition: strimzi-kafka-operator.enabled kubeVersion: ">= 1.26.0" diff --git a/charts/kubezero-operators/README.md b/charts/kubezero-operators/README.md index ce628ac4..4ef2a2d1 100644 --- a/charts/kubezero-operators/README.md +++ b/charts/kubezero-operators/README.md @@ -1,6 +1,6 @@ # kubezero-operators -![Version: 0.1.6](https://img.shields.io/badge/Version-0.1.6-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) +![Version: 0.1.7](https://img.shields.io/badge/Version-0.1.7-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) Various operators supported by KubeZero @@ -22,6 +22,7 @@ Kubernetes: `>= 1.26.0` | https://cloudnative-pg.github.io/charts | cloudnative-pg | 0.22.1 | | https://helm.elastic.co | eck-operator | 2.15.0 | | https://opensearch-project.github.io/opensearch-k8s-operator/ | opensearch-operator | 2.7.0 | +| oci://quay.io/strimzi-helm | strimzi-kafka-operator | 0.44.0 | ## Values @@ -46,6 +47,17 @@ Kubernetes: `>= 1.26.0` | opensearch-operator.nodeSelector."node-role.kubernetes.io/control-plane" | string | `""` | | | opensearch-operator.tolerations[0].effect | string | `"NoSchedule"` | | | opensearch-operator.tolerations[0].key | string | `"node-role.kubernetes.io/control-plane"` | | +| strimzi-kafka-operator.enabled | bool | `false` | | +| strimzi-kafka-operator.leaderElection.enable | bool | `false` | | +| strimzi-kafka-operator.monitoring.podMonitorEnabled | bool | `false` | | +| strimzi-kafka-operator.nodeSelector."node-role.kubernetes.io/control-plane" | string | `""` | | +| strimzi-kafka-operator.resources.limits.memory | string | `"384Mi"` | | +| strimzi-kafka-operator.resources.requests.cpu | string | `"20m"` | | +| strimzi-kafka-operator.resources.requests.memory | string | `"256Mi"` | | +| strimzi-kafka-operator.revisionHistoryLimit | int | `3` | | +| strimzi-kafka-operator.tolerations[0].effect | string | `"NoSchedule"` | | +| strimzi-kafka-operator.tolerations[0].key | string | `"node-role.kubernetes.io/control-plane"` | | +| strimzi-kafka-operator.watchAnyNamespace | bool | `true` | | ---------------------------------------------- Autogenerated from chart metadata using [helm-docs v1.14.2](https://github.com/norwoodj/helm-docs/releases/v1.14.2) diff --git a/charts/kubezero-operators/dashboards.yaml b/charts/kubezero-operators/dashboards-pg.yaml similarity index 84% rename from charts/kubezero-operators/dashboards.yaml rename to charts/kubezero-operators/dashboards-pg.yaml index cf55d22c..a50331d3 100644 --- a/charts/kubezero-operators/dashboards.yaml +++ b/charts/kubezero-operators/dashboards-pg.yaml @@ -1,7 +1,7 @@ -configmap: grafana-dashboards +configmap: grafana-dashboards-pg gzip: true condition: 'index .Values "cloudnative-pg" "monitoring" "podMonitorEnabled"' -folder: KubeZero +folder: Operators dashboards: - name: Cloudnative-pg url: https://raw.githubusercontent.com/cloudnative-pg/grafana-dashboards/refs/heads/main/charts/cluster/grafana-dashboard.json diff --git a/charts/kubezero-operators/dashboards-strimzi.yaml b/charts/kubezero-operators/dashboards-strimzi.yaml new file mode 100644 index 00000000..7b0ea1ed --- /dev/null +++ b/charts/kubezero-operators/dashboards-strimzi.yaml @@ -0,0 +1,10 @@ +configmap: grafana-dashboards-strimzi +gzip: true +condition: 'index .Values "strimzi-kafka-operator" "monitoring" "podMonitorEnabled"' +folder: Operators +dashboards: +- name: strimzi-kafka-operator + url: https://raw.githubusercontent.com/strimzi/strimzi-kafka-operator/refs/heads/main/helm-charts/helm3/strimzi-kafka-operator/files/grafana-dashboards/strimzi-operators.json + tags: + - Kafka + - Strimzi diff --git a/charts/kubezero-operators/templates/cloudnative-pg/grafana-dashboards.yaml b/charts/kubezero-operators/templates/cloudnative-pg/grafana-dashboards.yaml index 724a8f8e..8279c103 100644 --- a/charts/kubezero-operators/templates/cloudnative-pg/grafana-dashboards.yaml +++ b/charts/kubezero-operators/templates/cloudnative-pg/grafana-dashboards.yaml @@ -2,13 +2,13 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ printf "%s-%s" (include "kubezero-lib.fullname" $) "grafana-dashboards" | trunc 63 | trimSuffix "-" }} + name: {{ printf "%s-%s" (include "kubezero-lib.fullname" $) "grafana-dashboards-pg" | trunc 63 | trimSuffix "-" }} namespace: {{ .Release.Namespace }} labels: grafana_dashboard: "1" {{- include "kubezero-lib.labels" . | nindent 4 }} annotations: - k8s-sidecar-target-directory: KubeZero + k8s-sidecar-target-directory: Operators binaryData: Cloudnative-pg.json.gz: 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 diff --git a/charts/kubezero-operators/templates/strimzi/grafana-dashboards.yaml b/charts/kubezero-operators/templates/strimzi/grafana-dashboards.yaml new file mode 100644 index 00000000..9c008715 --- /dev/null +++ b/charts/kubezero-operators/templates/strimzi/grafana-dashboards.yaml @@ -0,0 +1,15 @@ +{{- if index .Values "strimzi-kafka-operator" "monitoring" "podMonitorEnabled" }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ printf "%s-%s" (include "kubezero-lib.fullname" $) "grafana-dashboards-strimzi" | trunc 63 | trimSuffix "-" }} + namespace: {{ .Release.Namespace }} + labels: + grafana_dashboard: "1" + {{- include "kubezero-lib.labels" . | nindent 4 }} + annotations: + k8s-sidecar-target-directory: Operators +binaryData: + strimzi-kafka-operator.json.gz: + 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 +{{- end }} diff --git a/charts/kubezero-operators/templates/strimzi/podMonitor.yaml b/charts/kubezero-operators/templates/strimzi/podMonitor.yaml new file mode 100644 index 00000000..e253b80b --- /dev/null +++ b/charts/kubezero-operators/templates/strimzi/podMonitor.yaml @@ -0,0 +1,35 @@ +{{- if index .Values "cloudnative-pg" "monitoring" "podMonitorEnabled" }} +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: {{ printf "%s-%s" (include "kubezero-lib.fullname" $) "strimzi-kafka-operator" | trunc 63 | trimSuffix "-" }} + labels: + {{- include "kubezero-lib.labels" . | nindent 4 }} +spec: + selector: + matchLabels: + strimzi.io/kind: cluster-operator + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + podMetricsEndpoints: + - path: /metrics + port: http +--- +apiVersion: monitoring.coreos.com/v1 +kind: PodMonitor +metadata: + name: {{ printf "%s-%s" (include "kubezero-lib.fullname" $) "strimzi-kafka-entity" | trunc 63 | trimSuffix "-" }} + labels: + {{- include "kubezero-lib.labels" . | nindent 4 }} +spec: + selector: + matchLabels: + app.kubernetes.io/name: entity-operator + namespaceSelector: + matchNames: + - {{ .Release.Namespace }} + podMetricsEndpoints: + - path: /metrics + port: healthcheck +{{- end }} diff --git a/charts/kubezero-operators/update.sh b/charts/kubezero-operators/update.sh index 6f42f973..4ed77ca1 100755 --- a/charts/kubezero-operators/update.sh +++ b/charts/kubezero-operators/update.sh @@ -17,6 +17,7 @@ rm -rf charts/eck-operator/charts yq eval -Mi 'del(.dependencies)' charts/eck-operator/Chart.yaml # Create ZDT dashboard configmap -../kubezero-metrics/sync_grafana_dashboards.py dashboards.yaml templates/cloudnative-pg/grafana-dashboards.yaml +../kubezero-metrics/sync_grafana_dashboards.py dashboards-pg.yaml templates/cloudnative-pg/grafana-dashboards.yaml +../kubezero-metrics/sync_grafana_dashboards.py dashboards-strimzi.yaml templates/strimzi/grafana-dashboards.yaml update_docs diff --git a/charts/kubezero-operators/values.yaml b/charts/kubezero-operators/values.yaml index b6b47d12..77cf2b29 100644 --- a/charts/kubezero-operators/values.yaml +++ b/charts/kubezero-operators/values.yaml @@ -41,3 +41,28 @@ cloudnative-pg: # We pull in the dashboard via our pipeline ! grafanaDashboard: create: false + +strimzi-kafka-operator: + enabled: false + + revisionHistoryLimit: 3 + watchAnyNamespace: true + + leaderElection: + enable: false + + tolerations: + - key: node-role.kubernetes.io/control-plane + effect: NoSchedule + nodeSelector: + node-role.kubernetes.io/control-plane: "" + + resources: + requests: + cpu: 20m + memory: 256Mi + limits: + memory: 384Mi + + monitoring: + podMonitorEnabled: false