From 179bec4bf61fad72a52e64972f8bbce8eedcbfc4 Mon Sep 17 00:00:00 2001
From: Adrian Coman <1664229+azun@users.noreply.github.com>
Date: Thu, 13 Aug 2026 13:25:20 +0300
Subject: [PATCH] Release 0.29.1
---
.github/workflows/operator-release.yml | 6 +--
README.md | 10 ++--
charts/kafka-operator/Chart.yaml | 4 +-
charts/kafka-operator/README.md | 66 ++++++++++++------------
charts/kafka-operator/README.md.gotmpl | 6 +--
charts/kafka-operator/values.schema.json | 25 +++++++--
charts/kafka-operator/values.yaml | 10 ++--
scripts/bump-release-version.sh | 12 ++---
8 files changed, 80 insertions(+), 59 deletions(-)
diff --git a/.github/workflows/operator-release.yml b/.github/workflows/operator-release.yml
index c394f88ea..4919111f9 100644
--- a/.github/workflows/operator-release.yml
+++ b/.github/workflows/operator-release.yml
@@ -37,9 +37,9 @@ jobs:
- name: Determine if this is a canonical dated release
id: canonical
run: |
- # Only dated releases (e.g. 0.28.0-adobe-20260622) get their version
- # references synced back into git; rc/topic/experimental tags don't.
- if [[ "${{ steps.vars.outputs.tag }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+-adobe-[0-9]{8}$ ]]; then
+ # Only X.Y.Z versions get their version references synced back into git;
+ # all other combinations are treated as non-canonical.
+ if [[ "${{ steps.vars.outputs.tag }}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "is_canonical=true" >> $GITHUB_OUTPUT
else
echo "is_canonical=false" >> $GITHUB_OUTPUT
diff --git a/README.md b/README.md
index 006d4779d..ddd10eeaf 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@



-
+
@@ -42,7 +42,7 @@ Some of the main features of Koperator are:
## AI Code Wiki
Google indexes this repo at:
-https://codewiki.google/github.com/adobe/koperator
+https://codewiki.google/github.com/adobe/koperator
## Architecture
@@ -127,17 +127,17 @@ kubectl apply -f https://raw.githubusercontent.com/adobe/koperator/refs/heads/ma
OCI registries have no floating "latest" tag, so `--version` is required (replace with your desired version, see available versions above):
```sh
-helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator --version 0.28.0-adobe-20260731 --namespace=kafka --create-namespace --skip-crds
+helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator --version 0.29.1 --namespace=kafka --create-namespace --skip-crds
```
#### Pull and inspect the chart before installation
```sh
# Pull the chart locally
-helm pull oci://ghcr.io/adobe/helm-charts/kafka-operator --version 0.28.0-adobe-20260731
+helm pull oci://ghcr.io/adobe/helm-charts/kafka-operator --version 0.29.1
# Extract and inspect
-tar -xzf kafka-operator-0.28.0-adobe-20260731.tgz
+tar -xzf kafka-operator-0.29.1.tgz
helm template kafka-operator ./kafka-operator/
# Install from local chart
diff --git a/charts/kafka-operator/Chart.yaml b/charts/kafka-operator/Chart.yaml
index 0aa5a2d6a..7276fff7b 100644
--- a/charts/kafka-operator/Chart.yaml
+++ b/charts/kafka-operator/Chart.yaml
@@ -1,7 +1,7 @@
apiVersion: v1
name: kafka-operator
-version: "0.28.0-adobe-20260731"
+version: "0.29.1"
description: kafka-operator manages Kafka deployments on Kubernetes
sources:
- https://github.com/adobe/koperator
-appVersion: "0.28.0-adobe-20260731"
+appVersion: "0.29.1"
diff --git a/charts/kafka-operator/README.md b/charts/kafka-operator/README.md
index 6fffc03a5..6e406e521 100644
--- a/charts/kafka-operator/README.md
+++ b/charts/kafka-operator/README.md
@@ -29,13 +29,13 @@ OCI registries have no floating "latest" tag, so `--version` is required (see av
```bash
helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator \
- --version 0.28.0-adobe-20260731 --namespace=kafka --create-namespace --skip-crds
+ --version 0.29.1 --namespace=kafka --create-namespace --skip-crds
```
To install the operator using an already installed cert-manager:
```bash
helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator \
- --version 0.28.0-adobe-20260731 \
+ --version 0.29.1 \
--set certManager.namespace= --namespace=kafka --create-namespace --skip-crds
```
@@ -46,7 +46,7 @@ If this value is not set your CRDs might be deleted. `--version` is required, sa
```bash
helm upgrade kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator \
- --version 0.28.0-adobe-20260731 --namespace=kafka
+ --version 0.29.1 --namespace=kafka
```
## Uninstalling the Chart
@@ -63,44 +63,46 @@ The command removes all the Kubernetes components associated with the chart and
| Key | Type | Default | Description |
|-----|------|---------|-------------|
-| replicaCount | int | `1` | Operator replica count can be set |
+| additionalEnv | list | `[]` | Additional Environment Variables |
+| additionalSidecars | list | `[]` | Additional Sidecars Configuration |
+| additionalVolumes | list | `[]` | Additional volumes required for sidecars |
+| affinity | object | `{}` | Operator pod affinity can be set |
+| alertManager.enable | bool | `true` | AlertManager can be enabled |
+| alertManager.permissivePeerAuthentication.create | bool | `false` | Permissive PeerAuthentication (Istio resource) for AlertManager can be created |
+| alertManager.port | int | `9001` | AlertManager port |
+| certManager.enabled | bool | `false` | Operator will integrate with the cert manager |
+| certManager.namespace | string | `"cert-manager"` | Operator will look for the cert manager in this namespace namespace field specifies the Cert-manager's Cluster Resource Namespace. https://cert-manager.io/docs/configuration/ |
+| certSigning.enabled | bool | `true` | Enable native certificate signing integration |
+| containerSecurityContext | object | `{}` | Container Security Context |
+| contour.enabled | bool | `false` | Enable Project Contour ingress integration. Only enable this when the Kafka cluster uses `ingressController: contour`. When enabled, Project Contour's HTTPProxy CRD (projectcontour.io/v1) must be installed in the cluster, otherwise the operator fails to start. https://projectcontour.io |
+| fullnameOverride | string | `""` | Release full name can be overwritten |
+| healthProbes | object | `{}` | Health probes configuration |
+| nameOverride | string | `""` | Release name can be overwritten |
+| nodeSelector | object | `{}` | Operator pod node selector can be set |
| operator.annotations | object | `{}` | Operator pod annotations can be set |
-| operator.image.repository | string | `"ghcr.io/adobe/koperator"` | Operator container image repository |
-| operator.image.tag | string | `"0.28.0-adobe-20260731"` | Operator container image tag |
+| operator.developmentLogging | bool | `false` | Enable development logging |
| operator.image.pullPolicy | string | `"IfNotPresent"` | Operator container image pull policy |
+| operator.image.repository | string | `"ghcr.io/adobe/koperator"` | Operator container image repository |
+| operator.image.tag | string | `"0.29.1"` | Operator container image tag |
| operator.namespaces | string | `"kafka, cert-manager"` | List of namespaces where Operator watches for custom resources.
**Note** that the operator still requires to read the cluster-scoped `Node` labels to configure `rack awareness`. Make sure the operator ServiceAccount is granted `get` permissions on this `Node` resource when using limited RBACs. |
-| operator.verboseLogging | bool | `false` | Enable verbose logging |
-| operator.developmentLogging | bool | `false` | Enable development logging |
| operator.resources.limits | object | `{"cpu":"200m","memory":"256Mi"}` | CPU/Memory limits |
| operator.resources.requests | object | `{"cpu":"200m","memory":"256Mi"}` | CPU/Memory requests |
| operator.serviceAccount.create | bool | `true` | If true, create the `operator.serviceAccount.name` service account |
| operator.serviceAccount.name | string | `"kafka-operator"` | ServiceAccount used by the operator pod |
-| webhook.enabled | bool | `true` | Operator will activate the admission webhooks for custom resources |
-| webhook.certs.generate | bool | `true` | Helm chart will generate cert for the webhook |
-| webhook.certs.secret | string | `"kafka-operator-serving-cert"` | Helm chart will use the secret name applied here for the cert |
-| certManager.enabled | bool | `false` | Operator will integrate with the cert manager |
-| certManager.namespace | string | `"cert-manager"` | Operator will look for the cert manager in this namespace namespace field specifies the Cert-manager's Cluster Resource Namespace. https://cert-manager.io/docs/configuration/ |
-| contour.enabled | bool | `false` | Enable Project Contour ingress integration. Only enable this when the Kafka cluster uses `ingressController: contour`. When enabled, Project Contour's HTTPProxy CRD (projectcontour.io/v1) must be installed in the cluster, otherwise the operator fails to start. https://projectcontour.io |
-| certSigning.enabled | bool | `true` | Enable native certificate signing integration |
-| alertManager.enable | bool | `true` | AlertManager can be enabled |
-| alertManager.port | int | `9001` | AlertManager port |
-| alertManager.permissivePeerAuthentication.create | bool | `false` | Permissive PeerAuthentication (Istio resource) for AlertManager can be created |
-| prometheusMetrics.enabled | bool | `true` | If true, use direct access for Prometheus metrics |
+| operator.verboseLogging | bool | `false` | Enable verbose logging |
+| podSecurityContext | object | `{}` | Pod Security Context See https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ |
| prometheusMetrics.authProxy.enabled | bool | `true` | If true, use auth proxy for Prometheus metrics |
-| prometheusMetrics.authProxy.image.repository | string | `"quay.io/brancz/kube-rbac-proxy"` | Auth proxy container image repository |
-| prometheusMetrics.authProxy.image.tag | string | `"v0.20.0"` | Auth proxy container image tag |
| prometheusMetrics.authProxy.image.pullPolicy | string | `"IfNotPresent"` | Auth proxy container image pull policy |
+| prometheusMetrics.authProxy.image.repository | string | `"quay.io/brancz/kube-rbac-proxy"` | Auth proxy container image repository |
+| prometheusMetrics.authProxy.image.tag | string | `"v0.22.1"` | Auth proxy container image tag |
| prometheusMetrics.authProxy.serviceAccount.create | bool | `true` | If true, create the service account (see `prometheusMetrics.authProxy.serviceAccount.name`) used by prometheus auth proxy |
| prometheusMetrics.authProxy.serviceAccount.name | string | `"kafka-operator-authproxy"` | ServiceAccount used by prometheus auth proxy |
-| healthProbes | object | `{}` | Health probes configuration |
-| nameOverride | string | `""` | Release name can be overwritten |
-| fullnameOverride | string | `""` | Release full name can be overwritten |
+| prometheusMetrics.enabled | bool | `true` | If true, use direct access for Prometheus metrics |
+| prometheusMetrics.podMonitor.enabled | bool | `false` | If true, create a PodMonitor for Prometheus metrics |
+| prometheusMetrics.podMonitor.interval | string | `"30s"` | |
| rbac.enabled | bool | `true` | Create rbac service account and roles |
-| nodeSelector | object | `{}` | Operator pod node selector can be set |
-| tolerances | list | `[]` | Operator pod tolerations can be set |
-| affinity | object | `{}` | Operator pod affinity can be set |
-| additionalSidecars | object | `{}` | Additional Sidecars Configuration |
-| additionalEnv | object | `{}` | Additional Environment Variables |
-| additionalVolumes | object | `{}` | Additional volumes required for sidecars |
-| podSecurityContext | object | `{}` | Pod Security Context See https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ |
-| containerSecurityContext | object | `{}` | Container Security Context |
+| replicaCount | int | `1` | Operator replica count can be set |
+| tolerations | list | `[]` | Operator pod tolerations can be set |
+| webhook.certs.generate | bool | `true` | Helm chart will generate cert for the webhook |
+| webhook.certs.secret | string | `"kafka-operator-serving-cert"` | Helm chart will use the secret name applied here for the cert |
+| webhook.enabled | bool | `true` | Operator will activate the admission webhooks for custom resources |
diff --git a/charts/kafka-operator/README.md.gotmpl b/charts/kafka-operator/README.md.gotmpl
index 465e384e9..c1efecf93 100644
--- a/charts/kafka-operator/README.md.gotmpl
+++ b/charts/kafka-operator/README.md.gotmpl
@@ -29,13 +29,13 @@ OCI registries have no floating "latest" tag, so `--version` is required (see av
```bash
helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator \
- --version 0.28.0-adobe-20260731 --namespace=kafka --create-namespace --skip-crds
+ --version 0.29.1 --namespace=kafka --create-namespace --skip-crds
```
To install the operator using an already installed cert-manager:
```bash
helm install kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator \
- --version 0.28.0-adobe-20260731 \
+ --version 0.29.1 \
--set certManager.namespace= --namespace=kafka --create-namespace --skip-crds
```
@@ -46,7 +46,7 @@ If this value is not set your CRDs might be deleted. `--version` is required, sa
```bash
helm upgrade kafka-operator oci://ghcr.io/adobe/helm-charts/kafka-operator \
- --version 0.28.0-adobe-20260731 --namespace=kafka
+ --version 0.29.1 --namespace=kafka
```
## Uninstalling the Chart
diff --git a/charts/kafka-operator/values.schema.json b/charts/kafka-operator/values.schema.json
index d9067fc2e..866dc182b 100644
--- a/charts/kafka-operator/values.schema.json
+++ b/charts/kafka-operator/values.schema.json
@@ -3,13 +3,13 @@
"type": "object",
"properties": {
"additionalEnv": {
- "type": "object"
+ "type": "array"
},
"additionalSidecars": {
- "type": "object"
+ "type": "array"
},
"additionalVolumes": {
- "type": "object"
+ "type": "array"
},
"affinity": {
"type": "object"
@@ -55,6 +55,14 @@
"containerSecurityContext": {
"type": "object"
},
+ "contour": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ }
+ }
+ },
"fullnameOverride": {
"type": "string"
},
@@ -177,6 +185,17 @@
},
"enabled": {
"type": "boolean"
+ },
+ "podMonitor": {
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "interval": {
+ "type": "string"
+ }
+ }
}
}
},
diff --git a/charts/kafka-operator/values.yaml b/charts/kafka-operator/values.yaml
index 638cfe3a2..040017c27 100644
--- a/charts/kafka-operator/values.yaml
+++ b/charts/kafka-operator/values.yaml
@@ -18,7 +18,7 @@ operator:
# -- Operator container image repository
repository: ghcr.io/adobe/koperator
# -- Operator container image tag
- tag: "0.28.0-adobe-20260731"
+ tag: "0.29.1"
# -- Operator container image pull policy
pullPolicy: IfNotPresent
# In constrained environments where operator cannot
@@ -136,21 +136,21 @@ rbac:
nodeSelector: {}
# -- Operator pod tolerations can be set
-tolerances: []
+tolerations: []
# -- Operator pod affinity can be set
affinity: {}
# -- Additional Sidecars Configuration
-additionalSidecars: {}
+additionalSidecars: []
# - name: nginx
# image: nginx:latest
# -- Additional Environment Variables
-additionalEnv: {}
+additionalEnv: []
# -- Additional volumes required for sidecars
-additionalVolumes: {}
+additionalVolumes: []
# - name: volume1
# emptyDir: {}
# - name: volume2
diff --git a/scripts/bump-release-version.sh b/scripts/bump-release-version.sh
index d936c6f1b..e3cfe624b 100755
--- a/scripts/bump-release-version.sh
+++ b/scripts/bump-release-version.sh
@@ -20,7 +20,7 @@
set -euo pipefail
-: ${1?"Usage: $0 e.g. 0.28.0-adobe-20260622"}
+: ${1?"Usage: $0 e.g. 0.29.0"}
TAG="$1"
CHART_DIR="charts/kafka-operator"
@@ -33,10 +33,10 @@ sed -i 's/\t/ /g' "${CHART_DIR}/values.yaml"
sed -i "/# -- Operator container image tag/{n;s/^[[:space:]]*tag:.*/ tag: \"${TAG}\"/}" "${CHART_DIR}/values.yaml"
for f in "${CHART_DIR}/README.md" "${CHART_DIR}/README.md.gotmpl"; do
- sed -i "s/--version [0-9]\+\.[0-9]\+\.[0-9]\+-[a-zA-Z0-9-]\+/--version ${TAG}/g" "$f"
- sed -i "s/\`\"\?[0-9]\+\.[0-9]\+\.[0-9]\+-[a-zA-Z0-9-]\+\"\?\`/\`\"${TAG}\"\`/g" "$f"
+ sed -i "s/--version [0-9]\+\.[0-9]\+\.[0-9]\+/--version ${TAG}/g" "$f"
+ sed -i "s/\`\"\?[0-9]\+\.[0-9]\+\.[0-9]\+\"\?\`/\`\"${TAG}\"\`/g" "$f"
done
-sed -i "s/--version [0-9]\+\.[0-9]\+\.[0-9]\+-[a-zA-Z0-9-]\+/--version ${TAG}/g" README.md
-sed -i "s#img.shields.io/github/go-mod/go-version/adobe/koperator/[0-9]\+\.[0-9]\+\.[0-9]\+-[a-zA-Z0-9-]\+#img.shields.io/github/go-mod/go-version/adobe/koperator/${TAG}#" README.md
-sed -i "s/kafka-operator-[0-9]\+\.[0-9]\+\.[0-9]\+-[a-zA-Z0-9-]\+\.tgz/kafka-operator-${TAG}.tgz/g" README.md
+sed -i "s/--version [0-9]\+\.[0-9]\+\.[0-9]\+/--version ${TAG}/g" README.md
+sed -i "s#img.shields.io/github/go-mod/go-version/adobe/koperator/[0-9]\+\.[0-9]\+\.[0-9]\+#img.shields.io/github/go-mod/go-version/adobe/koperator/${TAG}#" README.md
+sed -i "s/kafka-operator-[0-9]\+\.[0-9]\+\.[0-9]\+\.tgz/kafka-operator-${TAG}.tgz/g" README.md