Skip to content

Commit 0d389a6

Browse files
sionsmithclaude
andcommitted
refactor: rebrand to Kafka Backup Operator and change CRD API group
Per Strimzi maintainer feedback (discussion #8750), change the CRD API group from backup.strimzi.io to kafkabackup.com to avoid implying official Strimzi/CNCF affiliation or colliding with a future official Strimzi backup project. - API group: backup.strimzi.io -> kafkabackup.com - Project name: "Strimzi Backup Operator" -> "Kafka Backup Operator for Strimzi" - Add non-affiliation disclaimer to README and Helm chart - Rename Helm chart directory and all template helpers - Update Cargo package/binary name, Dockerfile, Makefile, CI workflows - Regenerate CRD YAMLs with new group - strimzi.io/cluster label intentionally kept (Strimzi convention) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 4ef8dc8 commit 0d389a6

39 files changed

Lines changed: 214 additions & 212 deletions

.github/workflows/release.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,12 +163,12 @@ jobs:
163163
with:
164164
name: v${{ needs.validate.outputs.version }}
165165
body: |
166-
## Strimzi Backup Operator v${{ needs.validate.outputs.version }}
166+
## Kafka Backup Operator for Strimzi v${{ needs.validate.outputs.version }}
167167
168168
### Docker Images
169169
170170
```bash
171-
docker pull ghcr.io/osodevops/strimzi-backup-operator:${{ needs.validate.outputs.version }}
171+
docker pull ghcr.io/osodevops/kafka-backup-operator:${{ needs.validate.outputs.version }}
172172
```
173173
174174
### Installation
@@ -179,7 +179,7 @@ jobs:
179179
helm repo update
180180
181181
# Install the operator
182-
helm install strimzi-backup-operator oso-devops/strimzi-backup-operator \
182+
helm install kafka-backup-operator oso-devops/kafka-backup-operator \
183183
--namespace kafka \
184184
--create-namespace \
185185
--version ${{ needs.validate.outputs.version }}
@@ -214,6 +214,6 @@ jobs:
214214
with:
215215
token: ${{ secrets.HELM_CHARTS_PAT }}
216216
repository: osodevops/helm-charts
217-
event-type: update-strimzi-backup-operator
217+
event-type: update-kafka-backup-operator
218218
client-payload: '{"version": "${{ needs.validate.outputs.version }}"}'
219219
continue-on-error: true

.github/workflows/sync-helm-chart.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ on:
55
branches:
66
- main
77
paths:
8-
- 'deploy/helm/strimzi-backup-operator/**'
8+
- 'deploy/helm/kafka-backup-operator/**'
99
workflow_dispatch:
1010

1111
env:
12-
SOURCE_CHART_PATH: deploy/helm/strimzi-backup-operator
12+
SOURCE_CHART_PATH: deploy/helm/kafka-backup-operator
1313
TARGET_REPO: osodevops/helm-charts
14-
TARGET_CHART_PATH: charts/strimzi-backup-operator
15-
BRANCH_NAME: sync/strimzi-backup-operator-chart
14+
TARGET_CHART_PATH: charts/kafka-backup-operator
15+
BRANCH_NAME: sync/kafka-backup-operator-chart
1616

1717
jobs:
1818
sync-helm-chart:
@@ -53,11 +53,11 @@ jobs:
5353
path: target-repo
5454
branch: ${{ env.BRANCH_NAME }}
5555
delete-branch: true
56-
title: "chore(strimzi-backup-operator): sync chart v${{ steps.chart-version.outputs.version }}"
56+
title: "chore(kafka-backup-operator): sync chart v${{ steps.chart-version.outputs.version }}"
5757
body: |
5858
## Summary
5959
60-
Automated sync of `strimzi-backup-operator` Helm chart.
60+
Automated sync of `kafka-backup-operator` Helm chart.
6161
6262
**Chart Version:** `${{ steps.chart-version.outputs.version }}`
6363
**App Version:** `${{ steps.chart-version.outputs.app_version }}`
@@ -66,7 +66,7 @@ jobs:
6666
---
6767
*Auto-generated by [Helm Chart Sync Workflow](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})*
6868
commit-message: |
69-
chore(strimzi-backup-operator): sync chart v${{ steps.chart-version.outputs.version }}
69+
chore(kafka-backup-operator): sync chart v${{ steps.chart-version.outputs.version }}
7070
7171
Source: ${{ github.repository }}@${{ github.sha }}
7272
labels: |

Cargo.lock

Lines changed: 27 additions & 27 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
[package]
2-
name = "strimzi-backup-operator"
2+
name = "kafka-backup-operator"
33
version = "0.1.0"
44
edition = "2021"
55
rust-version = "1.88"
66
license = "Apache-2.0"
7-
description = "Strimzi-native Kubernetes operator for Kafka backup and restore"
7+
description = "Kubernetes operator for Kafka backup and restore, integrated with Strimzi"
88
repository = "https://github.com/osodevops/strimzi-backup-operator"
99

1010
[[bin]]
11-
name = "strimzi-backup-operator"
11+
name = "kafka-backup-operator"
1212
path = "src/main.rs"
1313

1414
[[bin]]

Dockerfile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ COPY src ./src
2828
RUN touch src/main.rs
2929

3030
# Build the actual binary
31-
RUN cargo build --release --bin strimzi-backup-operator
31+
RUN cargo build --release --bin kafka-backup-operator
3232

3333
# Runtime stage
3434
FROM debian:bookworm-slim
@@ -44,16 +44,16 @@ RUN apt-get update && apt-get install -y \
4444
RUN useradd -r -u 1000 -g root operator
4545

4646
# Copy the binary
47-
COPY --from=builder /workspace/target/release/strimzi-backup-operator /usr/local/bin/strimzi-backup-operator
47+
COPY --from=builder /workspace/target/release/kafka-backup-operator /usr/local/bin/kafka-backup-operator
4848

4949
# Set ownership and permissions
50-
RUN chown operator:root /usr/local/bin/strimzi-backup-operator && \
51-
chmod 755 /usr/local/bin/strimzi-backup-operator
50+
RUN chown operator:root /usr/local/bin/kafka-backup-operator && \
51+
chmod 755 /usr/local/bin/kafka-backup-operator
5252

5353
USER 1000
5454

5555
# Expose metrics port
5656
EXPOSE 9090
5757

5858
ENTRYPOINT ["tini", "--"]
59-
CMD ["strimzi-backup-operator"]
59+
CMD ["kafka-backup-operator"]

Makefile

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
CARGO ?= cargo
44
DOCKER ?= docker
55
KUBECTL ?= kubectl
6-
IMAGE_NAME ?= ghcr.io/osodevops/strimzi-backup-operator
6+
IMAGE_NAME ?= ghcr.io/osodevops/kafka-backup-operator
77
IMAGE_TAG ?= latest
88
RUST_LOG ?= info
99

@@ -42,16 +42,16 @@ uninstall-crds:
4242
$(KUBECTL) delete -f deploy/crds/ --ignore-not-found
4343

4444
run:
45-
RUST_LOG=$(RUST_LOG) $(CARGO) run --bin strimzi-backup-operator
45+
RUST_LOG=$(RUST_LOG) $(CARGO) run --bin kafka-backup-operator
4646

4747
clean:
4848
$(CARGO) clean
4949

5050
helm-template:
51-
helm template strimzi-backup-operator deploy/helm/strimzi-backup-operator
51+
helm template kafka-backup-operator deploy/helm/kafka-backup-operator
5252

5353
helm-install:
54-
helm install strimzi-backup-operator deploy/helm/strimzi-backup-operator
54+
helm install kafka-backup-operator deploy/helm/kafka-backup-operator
5555

5656
helm-uninstall:
57-
helm uninstall strimzi-backup-operator
57+
helm uninstall kafka-backup-operator

README.md

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
1-
# Strimzi Backup Operator
1+
# Kafka Backup Operator for Strimzi
22

33
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
44
[![Rust](https://img.shields.io/badge/rust-1.88%2B-orange.svg)](https://www.rust-lang.org)
55
[![Kubernetes](https://img.shields.io/badge/kubernetes-1.27%2B-326ce5.svg)](https://kubernetes.io)
66

7-
A Strimzi-native Kubernetes operator for **Strimzi backup** and disaster recovery of Apache Kafka clusters. Provides dedicated CRDs for automated Kafka backup scheduling, point-in-time recovery, and multi-cloud storage — fully integrated with the Strimzi ecosystem.
7+
> **Disclaimer:** This project is not part of the [Strimzi](https://strimzi.io/) project or the CNCF. It is an independent, community-built operator designed to work with Strimzi-managed Kafka clusters.
88
9-
## Why Strimzi Backup?
9+
A Kubernetes operator for **Kafka backup** and disaster recovery of Strimzi-managed Apache Kafka clusters. Provides dedicated CRDs for automated Kafka backup scheduling, point-in-time recovery, and multi-cloud storage — designed for the Strimzi ecosystem.
10+
11+
## Why Kafka Backup?
1012

1113
Strimzi makes running Apache Kafka on Kubernetes straightforward, but **backup and disaster recovery remain unsolved problems** in the Strimzi ecosystem:
1214

1315
- **MirrorMaker2 is not a backup** — it requires a full secondary cluster, expensive cross-cluster replication, and complex client failover procedures.
1416
- **PVC snapshots are fragile** — deleting Strimzi CRDs triggers garbage collection of PVCs, and node failures can result in permanent data loss.
1517
- **No point-in-time recovery** — there is no native mechanism to restore a Strimzi Kafka cluster to a specific moment in time.
16-
- **No Strimzi-native backup CRD** — backup workflows are entirely manual or require external tools that don't integrate with the Strimzi operator model.
18+
- **No Strimzi-compatible backup CRD** — backup workflows are entirely manual or require external tools that don't integrate with the Strimzi operator model.
1719

18-
The **Strimzi Backup Operator** solves these problems with a purpose-built Kubernetes operator that follows Strimzi conventions and extends the Strimzi ecosystem with first-class backup and restore capabilities.
20+
The **Kafka Backup Operator** solves these problems with a purpose-built Kubernetes operator that follows Strimzi conventions and is designed to work with Strimzi-managed clusters, providing first-class backup and restore capabilities.
1921

2022
## Features
2123

22-
- **Strimzi-native CRDs**`KafkaBackup` and `KafkaRestore` custom resources under the `backup.strimzi.io` API group, following Strimzi conventions for status conditions, labels, and finalizers
24+
- **Strimzi-compatible CRDs**`KafkaBackup` and `KafkaRestore` custom resources under the `kafkabackup.com` API group, following Strimzi conventions for status conditions, labels, and finalizers
2325
- **Auto-discovery of Strimzi resources** — automatically resolves bootstrap servers, TLS certificates, and KafkaUser credentials from your existing Strimzi `Kafka` CRs
24-
- **Scheduled Strimzi backups** — cron-based scheduling with timezone support via Kubernetes CronJobs
25-
- **Point-in-time recovery (PITR)** — restore your Strimzi Kafka cluster to any millisecond-precision timestamp
26+
- **Scheduled backups** — cron-based scheduling with timezone support via Kubernetes CronJobs
27+
- **Point-in-time recovery (PITR)** — restore your Kafka cluster to any millisecond-precision timestamp
2628
- **Multi-cloud storage** — back up to Amazon S3, Azure Blob Storage, Google Cloud Storage, or any S3-compatible store (MinIO, Ceph RGW)
2729
- **Topic filtering** — include/exclude topics using regex patterns
2830
- **Topic mapping** — rename topics during restore for migration or testing scenarios
@@ -35,14 +37,14 @@ The **Strimzi Backup Operator** solves these problems with a purpose-built Kuber
3537

3638
## Architecture
3739

38-
The Strimzi Backup Operator creates Kubernetes Jobs (or CronJobs for scheduled backups) that run the `kafka-backup` CLI to perform backup and restore operations. This provides resource isolation, failure isolation, and pod-level customisation.
40+
The Kafka Backup Operator creates Kubernetes Jobs (or CronJobs for scheduled backups) that run the `kafka-backup` CLI to perform backup and restore operations. This provides resource isolation, failure isolation, and pod-level customisation.
3941

4042
```
4143
+------------------------------------------------------------+
4244
| Kubernetes Cluster |
4345
| |
4446
| +------------------+ +------------------------+ |
45-
| | Strimzi | | Strimzi Backup | |
47+
| | Strimzi | | Kafka Backup | |
4648
| | Cluster | <------ | Operator | |
4749
| | Operator | reads | (watches KafkaBackup | |
4850
| | | Kafka | & KafkaRestore CRs) | |
@@ -79,15 +81,15 @@ helm repo add oso-devops https://osodevops.github.io/helm-charts/
7981
helm repo update
8082

8183
# Install the operator
82-
helm install strimzi-backup-operator oso-devops/strimzi-backup-operator \
84+
helm install kafka-backup-operator oso-devops/kafka-backup-operator \
8385
--namespace kafka \
8486
--create-namespace
8587
```
8688

87-
### Create a Strimzi Backup
89+
### Create a Backup
8890

8991
```yaml
90-
apiVersion: backup.strimzi.io/v1alpha1
92+
apiVersion: kafkabackup.com/v1alpha1
9193
kind: KafkaBackup
9294
metadata:
9395
name: my-cluster-backup
@@ -121,10 +123,10 @@ spec:
121123
pruneOnSchedule: true
122124
```
123125
124-
### Restore a Strimzi Backup
126+
### Restore from a Backup
125127
126128
```yaml
127-
apiVersion: backup.strimzi.io/v1alpha1
129+
apiVersion: kafkabackup.com/v1alpha1
128130
kind: KafkaRestore
129131
metadata:
130132
name: my-cluster-restore
@@ -147,8 +149,8 @@ spec:
147149
148150
| CRD | Short Name | API Group | Description |
149151
|-----|-----------|-----------|-------------|
150-
| `KafkaBackup` | `kb` | `backup.strimzi.io/v1alpha1` | Defines a Strimzi backup configuration with scheduling, retention, and storage |
151-
| `KafkaRestore` | `kr` | `backup.strimzi.io/v1alpha1` | Defines a restore operation with PITR, topic mapping, and consumer group restore |
152+
| `KafkaBackup` | `kb` | `kafkabackup.com/v1alpha1` | Defines a backup configuration with scheduling, retention, and storage |
153+
| `KafkaRestore` | `kr` | `kafkabackup.com/v1alpha1` | Defines a restore operation with PITR, topic mapping, and consumer group restore |
152154

153155
## Storage Configuration
154156

@@ -207,7 +209,7 @@ storage:
207209
key: credentials
208210
```
209211

210-
## Strimzi Backup Authentication
212+
## Authentication
211213

212214
The operator automatically discovers TLS certificates and authentication credentials from your Strimzi cluster. You can also reference `KafkaUser` CRs directly:
213215

@@ -251,12 +253,12 @@ spec:
251253

252254
| Parameter | Description | Default |
253255
|-----------|-------------|---------|
254-
| `image.repository` | Operator container image | `ghcr.io/osodevops/strimzi-backup-operator` |
256+
| `image.repository` | Operator container image | `ghcr.io/osodevops/kafka-backup-operator` |
255257
| `image.tag` | Image tag | Chart `appVersion` |
256258
| `image.pullPolicy` | Image pull policy | `Always` |
257259
| `replicaCount` | Number of operator replicas | `1` |
258260
| `watchNamespaces` | Namespaces to watch (empty = all) | `[]` |
259-
| `logging.level` | Rust log filter | `info,strimzi_backup_operator=debug` |
261+
| `logging.level` | Rust log filter | `info,kafka_backup_operator=debug` |
260262
| `logging.format` | Log output format | `json` |
261263
| `serviceAccount.create` | Create a service account | `true` |
262264
| `azureWorkloadIdentity.enabled` | Enable Azure Workload Identity | `false` |
@@ -338,7 +340,7 @@ cargo clippy --all-features -- -D warnings
338340
cargo run --release --bin crdgen
339341
340342
# Build Docker image
341-
docker build -t strimzi-backup-operator .
343+
docker build -t kafka-backup-operator .
342344
```
343345

344346
### Local Development

config/examples/kafka-backup-s3.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
apiVersion: backup.strimzi.io/v1alpha1
1+
apiVersion: kafkabackup.com/v1alpha1
22
kind: KafkaBackup
33
metadata:
44
name: daily-backup

config/examples/kafka-restore-pitr.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
apiVersion: backup.strimzi.io/v1alpha1
1+
apiVersion: kafkabackup.com/v1alpha1
22
kind: KafkaRestore
33
metadata:
44
name: pitr-restore

deploy/crds/kafkabackups.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
apiVersion: apiextensions.k8s.io/v1
22
kind: CustomResourceDefinition
33
metadata:
4-
name: kafkabackups.backup.strimzi.io
4+
name: kafkabackups.kafkabackup.com
55
spec:
6-
group: backup.strimzi.io
6+
group: kafkabackup.com
77
names:
88
categories: []
99
kind: KafkaBackup

0 commit comments

Comments
 (0)