Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,21 @@ All notable changes to this project will be documented in this file.

## [Unreleased]

### Added

- BREAKING: Add required CLI argument and env var to set the image repository used to construct final product image names: `IMAGE_REPOSITORY` (`--image-repository`), eg. `oci.example.org/my/namespace` ([#1028]).

### Changed

- Document Helm deployed RBAC permissions and remove unnecessary permissions ([#1020]).
- BREAKING: `configOverrides` now only accepts the known config files (`zoo.cfg` and
`security.properties`).
Previously, arbitrary file names were silently accepted and ignored ([#1027]).
- Bump `stackable-operator` to 0.110.1 ([#1027]).
- Bump `stackable-operator` to 0.111.1 ([#1027], [#1028]).

[#1020]: https://github.com/stackabletech/zookeeper-operator/pull/1020
[#1027]: https://github.com/stackabletech/zookeeper-operator/pull/1027
[#1028]: https://github.com/stackabletech/zookeeper-operator/pull/1028

## [26.3.0] - 2026-03-16

Expand Down
25 changes: 13 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

30 changes: 18 additions & 12 deletions Cargo.nix

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ repository = "https://github.com/stackabletech/zookeeper-operator"

[workspace.dependencies]
product-config = { git = "https://github.com/stackabletech/product-config.git", tag = "0.8.0" }
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.110.1", features = ["webhook"] }
stackable-operator = { git = "https://github.com/stackabletech/operator-rs.git", tag = "stackable-operator-0.111.1", features = ["webhook"] }

anyhow = "1.0"
built = { version = "0.8", features = ["chrono", "git2"] }
Expand Down
18 changes: 9 additions & 9 deletions crate-hashes.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 12 additions & 5 deletions extra/crds.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,9 @@ spec:
properties:
custom:
description: |-
Overwrite the docker image.
Specify the full docker image name, e.g. `oci.stackable.tech/sdp/superset:1.4.1-stackable2.1.0`
Provide a custom container image.

Specify the full container image name, e.g. `oci.example.tech/namespace/superset:1.4.1-my-tag`
type: string
productVersion:
description: Version of the product, e.g. `1.4.1`.
Expand All @@ -173,14 +174,20 @@ spec:
nullable: true
type: array
repo:
description: Name of the docker repo, e.g. `oci.stackable.tech/sdp`
description: |-
The repository on the container image registry where the container image is located, e.g.
`oci.example.com/namespace`.

If not specified, the operator will use the image registry provided via the operator
environment options.
nullable: true
type: string
stackableVersion:
description: |-
Stackable version of the product, e.g. `23.4`, `23.4.1` or `0.0.0-dev`.
If not specified, the operator will use its own version, e.g. `23.4.1`.
When using a nightly operator or a pr version, it will use the nightly `0.0.0-dev` image.

If not specified, the operator will use its own version, e.g. `23.4.1`. When using a nightly
operator or a PR version, it will use the nightly `0.0.0-dev` image.
nullable: true
type: string
type: object
Expand Down
63 changes: 62 additions & 1 deletion rust/operator-binary/src/crd/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ pub const MAX_PREPARE_LOG_FILE_SIZE: MemoryQuantity = MemoryQuantity {
unit: BinaryMultiple::Mebi,
};

pub const DOCKER_IMAGE_BASE_NAME: &str = "zookeeper";
pub const CONTAINER_IMAGE_BASE_NAME: &str = "zookeeper";

const DEFAULT_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT: Duration = Duration::from_minutes_unchecked(2);
pub const DEFAULT_LISTENER_CLASS: &str = "cluster-internal";
Expand Down Expand Up @@ -750,6 +750,8 @@ impl v1alpha1::ZookeeperCluster {

#[cfg(test)]
mod tests {
use stackable_operator::versioned::test_utils::RoundtripTestData;

use super::*;

fn get_server_secret_class(zk: &v1alpha1::ZookeeperCluster) -> Option<&str> {
Expand Down Expand Up @@ -929,4 +931,63 @@ mod tests {
tls::quorum_tls_default().as_str()
);
}

impl RoundtripTestData for v1alpha1::ZookeeperClusterSpec {
fn roundtrip_test_data() -> Vec<Self> {
stackable_operator::utils::yaml_from_str_singleton_map(indoc::indoc! {r#"
- image:
productVersion: 1.2.3
pullPolicy: IfNotPresent
clusterOperation:
reconciliationPaused: false
stopped: true
clusterConfig:
authentication:
- authenticationClass: my-auth-class
tls:
quorumSecretClass: null
serverSecretClass: tls
vectorAggregatorConfigMapName: vector-aggregator-discovery
servers:
envOverrides:
COMMON_VAR: role-value
ROLE_VAR: role-value
config:
logging:
enableVectorAgent: true
requestedSecretLifetime: 7d
gracefulShutdownTimeout: 30s
initLimit: 5
syncLimit: 2
tickTime: 2000
myidOffset: 1
configOverrides:
zoo.cfg:
maxClientCnxns: "60"
roleConfig:
listenerClass: cluster-internal
roleGroups:
default:
replicas: 1
configOverrides:
zoo.cfg:
maxClientCnxns: "120"
envOverrides:
COMMON_VAR: group-value
GROUP_VAR: group-value
"#})
.expect("Failed to parse ZookeeperClusterSpec YAML")
}
}

impl RoundtripTestData for v1alpha1::ZookeeperZnodeSpec {
fn roundtrip_test_data() -> Vec<Self> {
stackable_operator::utils::yaml_from_str_singleton_map(indoc::indoc! {"
- clusterRef:
name: test-zk
namespace: default
"})
.expect("Failed to parse ZookeeperZnodeSpec YAML")
}
}
}
2 changes: 2 additions & 0 deletions rust/operator-binary/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ async fn main() -> anyhow::Result<()> {
zk_controller::reconcile_zk,
zk_controller::error_policy,
Arc::new(zk_controller::Ctx {
operator_environment: operator_environment.clone(),
client: client.clone(),
product_config,
}),
Expand Down Expand Up @@ -224,6 +225,7 @@ async fn main() -> anyhow::Result<()> {
znode_controller::error_policy,
Arc::new(znode_controller::Ctx {
client: client.clone(),
operator_environment,
}),
)
// We can let the reporting happen in the background
Expand Down
Loading
Loading