You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: restore topic selection and per-CR job service account
Two gaps reported against multi-purpose use of the operator:
KafkaRestore had no way to restore a subset of topics even though the
kafka-backup CLI honours target.topics include/exclude filtering. Add
spec.topics (shared TopicSelection: glob or ~-prefixed regex patterns,
matched against source topic names before topicMapping renames) and
emit target.topics in the generated restore config.
Backup/restore Jobs run in the CR's namespace but always referenced the
operator-wide service account (BACKUP_JOB_SERVICE_ACCOUNT), which is
namespace-scoped — so any CR outside the operator's namespace produced
Jobs whose pods could never be created. Add
spec.template.pod.serviceAccountName to both CRDs, applied as a pod
template override that takes precedence over the operator-wide default.
Sync the regenerated CRDs into the Helm chart, document the
multi-namespace service account behaviour, and add builder- and
config-level regression tests for both features.
Release 0.2.8. Fixes#26, #27.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,13 @@
2
2
3
3
All notable changes to this project will be documented in this file.
4
4
5
+
## 0.2.8 - 2026-06-11
6
+
7
+
### Added
8
+
9
+
- Add `spec.topics` with include/exclude glob (or `~`-prefixed regex) patterns to `KafkaRestore`, allowing specific topics to be restored from a backup. Fixes [#26](https://github.com/osodevops/strimzi-backup-operator/issues/26).
10
+
- Add `spec.template.pod.serviceAccountName` to `KafkaBackup` and `KafkaRestore` so job pods in namespaces other than the operator's can run with a service account that exists there. Fixes [#27](https://github.com/osodevops/strimzi-backup-operator/issues/27).
Copy file name to clipboardExpand all lines: README.md
+27-2Lines changed: 27 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,13 +26,13 @@ The **Kafka Backup Operator** solves these problems with a purpose-built Kuberne
26
26
-**Scheduled backups** — cron-based scheduling with timezone support via Kubernetes CronJobs
27
27
-**Point-in-time recovery (PITR)** — restore your Kafka cluster to any millisecond-precision timestamp
28
28
-**Multi-cloud storage** — back up to Amazon S3, Azure Blob Storage, Google Cloud Storage, or any S3-compatible store (MinIO, Ceph RGW)
29
-
-**Topic filtering** — include/exclude topics using regex patterns
29
+
-**Topic filtering** — include/exclude topics using glob or regex patterns, for both backup and restore
30
30
-**Topic mapping** — rename topics during restore for migration or testing scenarios
31
31
-**Consumer group offset restore** — restore consumer group offsets with optional group remapping
32
32
-**Retention policies** — automatic pruning of old backups by count or age
33
33
-**Compression** — gzip, snappy, lz4, or zstd compression for storage efficiency
34
34
-**Prometheus metrics** — built-in observability with backup/restore counters, duration histograms, and storage gauges
35
-
-**Pod template customisation** — full control over backup/restore Job pods (affinity, tolerations, host aliases, security context, environment variables)
35
+
-**Pod template customisation** — full control over backup/restore Job pods (affinity, tolerations, host aliases, service account, security context, environment variables)
36
36
-**Azure Workload Identity** — native support for passwordless Azure authentication
Copy file name to clipboardExpand all lines: deploy/crds/kafkabackups.yaml
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -718,6 +718,10 @@ spec:
718
718
description: Pod security context (pass-through to k8s PodSecurityContext)
719
719
type: object
720
720
x-kubernetes-preserve-unknown-fields: true
721
+
serviceAccountName:
722
+
description: Service account for job pods. Must exist in the namespace of this resource. Overrides the operator-wide default (BACKUP_JOB_SERVICE_ACCOUNT).
723
+
nullable: true
724
+
type: string
721
725
tolerations:
722
726
description: Pod tolerations (pass-through to k8s Tolerations)
Copy file name to clipboardExpand all lines: deploy/crds/kafkarestores.yaml
+19Lines changed: 19 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -516,6 +516,10 @@ spec:
516
516
description: Pod security context (pass-through to k8s PodSecurityContext)
517
517
type: object
518
518
x-kubernetes-preserve-unknown-fields: true
519
+
serviceAccountName:
520
+
description: Service account for job pods. Must exist in the namespace of this resource. Overrides the operator-wide default (BACKUP_JOB_SERVICE_ACCOUNT).
521
+
nullable: true
522
+
type: string
519
523
tolerations:
520
524
description: Pod tolerations (pass-through to k8s Tolerations)
521
525
items:
@@ -540,6 +544,21 @@ spec:
540
544
- targetTopic
541
545
type: object
542
546
type: array
547
+
topics:
548
+
description: Topics to restore, selected by include/exclude glob (or `~`-prefixed regex) patterns matched against source topic names in the backup. All topics are restored when omitted. Filtering is applied before topicMapping renames.
Copy file name to clipboardExpand all lines: deploy/helm/strimzi-backup-operator/crds/kafkabackups.yaml
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -718,6 +718,10 @@ spec:
718
718
description: Pod security context (pass-through to k8s PodSecurityContext)
719
719
type: object
720
720
x-kubernetes-preserve-unknown-fields: true
721
+
serviceAccountName:
722
+
description: Service account for job pods. Must exist in the namespace of this resource. Overrides the operator-wide default (BACKUP_JOB_SERVICE_ACCOUNT).
723
+
nullable: true
724
+
type: string
721
725
tolerations:
722
726
description: Pod tolerations (pass-through to k8s Tolerations)
Copy file name to clipboardExpand all lines: deploy/helm/strimzi-backup-operator/crds/kafkarestores.yaml
+19Lines changed: 19 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -516,6 +516,10 @@ spec:
516
516
description: Pod security context (pass-through to k8s PodSecurityContext)
517
517
type: object
518
518
x-kubernetes-preserve-unknown-fields: true
519
+
serviceAccountName:
520
+
description: Service account for job pods. Must exist in the namespace of this resource. Overrides the operator-wide default (BACKUP_JOB_SERVICE_ACCOUNT).
521
+
nullable: true
522
+
type: string
519
523
tolerations:
520
524
description: Pod tolerations (pass-through to k8s Tolerations)
521
525
items:
@@ -540,6 +544,21 @@ spec:
540
544
- targetTopic
541
545
type: object
542
546
type: array
547
+
topics:
548
+
description: Topics to restore, selected by include/exclude glob (or `~`-prefixed regex) patterns matched against source topic names in the backup. All topics are restored when omitted. Filtering is applied before topicMapping renames.
0 commit comments