All notable changes to this project will be documented in this file.
- The lifetime of auto generated TLS certificates is now configurable with the role and roleGroup
config property
requestedSecretLifetime
. This helps reduce frequent Pod restarts (#892). - Run a
containerdebug
process in the background of each Zookeeper container to collect debugging information (#881).
- BREAKING: Use distinct ServiceAccounts for the Stacklets, so that multiple Stacklets can be deployed in one namespace. Existing Stacklets will use the newly created ServiceAccounts after restart (#889).
- The operator can now run on Kubernetes clusters using a non-default cluster domain.
Use the env var
KUBERNETES_CLUSTER_DOMAIN
or the operator Helm chart propertykubernetesClusterDomain
to set a non-default cluster domain (#870).
- Reduce CRD size from
483KB
to57KB
by accepting arbitrary YAML input instead of the underlying schema for the following fields (#853):podOverrides
affinity
- Remove ZooKeeper 3.8.4 from tests and docs (#857).
- Failing to parse one
ZookeeperCluster
/ZookeeperZnode
should no longer cause the whole operator to stop functioning (#872).
- Allow overriding ZNode path by setting
status.znodePath
(#799).
- Processing of corrupted log events fixed; If errors occur, the error messages are added to the log event (#821).
- Support for
3.8.3
, which was deprecated in SDP24.3
(#832).
- More CRD documentation (#749).
- Helm: support labels in values.yaml (#763).
- Support for
3.8.4
(#783) - Support for
3.9.2
(#788).
configOverrides
are now able to overwrite configs written by the operator (#762).
- Default stackableVersion to operator version (#711).
- Configuration overrides for the JVM security properties, such as DNS caching (#715).
- Support PodDisruptionBudgets (#730, #731).
- Support for ZooKeeper 3.8.3 added (#732).
- Support graceful shutdown (#740).
vector
0.26.0
->0.33.0
(#709, #732).- Let secret-operator handle certificate conversion (#695).
- [BREAKING]: removed the
logging
layer in theclusterConfig
CRD to make logging config consistent with other operators (#739).
- Support for ZooKeeper 3.5.8, 3.6.3, 3.7.0, 3.8.0 (#732).
- Generate OLM bundle for Release 23.4.0 (#672).
- Expose
ZOOKEEPER_CLIENT_PORT
in discovery CM (#675, #676). - Support for ZooKeeper
3.8.1
(#689). - Set explicit resources on all containers (#693, #699).
- Added kuttl test suites (#696).
- Support podOverrides (#698, #702).
- Missing CRD defaults for
status.conditions
field (#682). - Increase the size limit of the log volume (#704).
- Operator-rs:
0.40.2
->0.44.0
(#673, #693, #697, #704). - Use 0.0.0-dev product images for testing (#674)
- Use testing-tools 0.2.0 (#674)
- Run as root group (#680)
- Generate OLM bundle (#645).
- Cluster status conditions (#658)
- Extend cluster resources for status and cluster operation (paused, stopped) (#660).
- [BREAKING] Support specifying Service type.
This enables us to later switch non-breaking to using
ListenerClasses
for the exposure of Services. This change is breaking, because - for security reasons - we default to thecluster-internal
ListenerClass
. If you need your cluster to be accessible from outside of Kubernetes you need to setclusterConfig.listenerClass
toexternal-unstable
(#661). - Deploy default and support custom affinities (#649).
- Operator-rs:
0.36.0
->0.40.2
(#660, #663, #665). - Use operator-rs
build_rbac_resources
method (#665).
- Bugfix: java heap format (#651).
- Fixed operator error when creating the ZNode in a different namespace than the ZookeeperCluster (#653).
- Avoid empty log events dated to 1970-01-01 and improve the precision of the log event timestamps (#663).
- Log aggregation added (#588).
- [BREAKING] Use Product image selection instead of version.
spec.version
has been replaced byspec.image
(#599). - Updated stackable image versions (#586).
- Operator-rs: 0.25.3 -> 0.27.1 (#591).
- Fixed bug where ZNode ConfigMaps were not created due to labeling issues (#592).
- tokio-zookeeper: 0.1.3 -> 0.2.1 (#593).
- Don't run init container as root and avoid chmod and chowning (#603).
- Fixed the RoleGroup
selector
. It was not used before. (#611). - [BREAKING] Moved
spec.authentication
,spec.tls
andspec.logging
tospec.clusterConfig
. Consolidated sub field names liketls.client.secretClass
totls.serverSecretClass
(#612). - Changes to be compatible with crate2nix (#647).
- Default resource requests (memory and cpu) for ZooKeeper pods (#563).
- Resources associated with rolegroups that have since been removed from the ZookeeperCluster will now be deleted (#569).
- Operator-rs: 0.22.0 -> 0.25.3 (#569).
- Operator-rs: 0.21.1 -> 0.22.0 (#516).
- Include chart name when installing with a custom release name (#517, #518).
- Fixed bug where client TLS could not be disabled (#529).
- Switched init container to tools image (#533).
- Fixed client authentication. Now only the provided secretClass is eligible. Split up tls (client/quorum) dirs into separate directories and create key/truststores in different directory (#533).
- Replaced python image with testing-tools image for integration tests (#535).
- Reconciliation errors are now reported as Kubernetes events (#408).
- Use cli argument
watch-namespace
/ env varWATCH_NAMESPACE
to specify a single namespace to watch (#434). - Support for ZooKeeper 3.8.0 added (#464).
- Integration tests for all supported ZooKeeper versions added (#464).
- TLS encryption and authentication support for quorum and client (#479).
- PVCs for data storage, cpu and memory limits are now configurable (#490).
- OpenShift compatibility: use custom service account and cluster role for product pods (#505).
- Operator-rs: 0.10.0 -> 0.21.1 (#408, #431, #434, #454, #479, #490).
- [BREAKING] Specifying the product version has been changed to adhere to ADR018 instead of just specifying the product version you will now have to add the Stackable image version as well, so
version: 3.5.8
becomes (for example)version: 3.5.8-stackable0.1.0
(#487)
- Enabled Prometheus scraping (#380).
- ZookeeperZnode.spec.clusterRef.namespace now defaults to .metadata.namespace (#382).
- PodSecurityContext.fsGroup to allow write access to mounted volumes (#406).
- Added
ZOOKEEPER_HOSTS
andZOOKEEPER_CHROOT
to discovery config maps, for clients that do not support the composite connection string (#421).
- Shut down gracefully (#338).
- Fixed ACL incompatibility with certain managed K8s providers (#340).
- Operator-rs: 0.6.0 -> 0.10.0 (#352, #383).
- Cleanup for
ZookeeperZnode
now succeeds if the linkedZookeeperCluster
was already deleted (#384).
- Migrated to StatefulSet rather than direct Pod management (#263).
- Migrated to PersistentVolumeClaim rather than manual sticky scheduling (#263).
operator-rs
0.3.0
→0.4.0
(#255).- Adapted pod image and container command to docker image (#255).
- Adapted documentation to represent new workflow with docker images (#255).
process_command
to reconcile loop for command handling (#223).rust/crd/lib/command.rs
for command CRDs- Trait implementations for command handling for the cluster and status (#223):
HasCurrentCommand
to manipulate the current_command in the statusHasClusterExecutionStatus
to access cluster_execution_status in the statusHasRoleRestartOrder
to determine the restart order of different rolesHasCommands
to provide all supported commands like Restart, Start, Stop ...CanBeRolling
to perform a rolling restartHasRoles
to run a command only on a subset of roles
- Generated CRDs for Restart, Start, Stop (#223).
- Example custom resources for Restart, Start, Stop (#223).
- Switched to operator-rs tag 0.3.0 (#251)
- Use
identity::LabeledPodIdentityFactory
to generate pod ids. (#217) - Fix
ZookeeperCluster
conditions overwriting each other (#228) - BREAKING: renamed crd/util.rs to crd/discovery.rs (#230).
- Fixed a bug where
wait_until_crds_present
only reacted to the main CRD, not the commands (#251). - The ZooKeeper discovery now correctly uses the "client" container port from the pod instead of defaulting to 2181 which will only work if the default port is used (#230).
- Added versioning code from operator-rs for up and downgrades (#210).
- Added
ProductVersion
to status (#210). - Added
PodToNodeMapping
to status (#209).
- Using scheduler with history from operator-rs instead of random node selection(#209).
- Code for version handling (#210).
- Removed
current_version
andtarget_version
from cluster status (#210). - Removed
assign_ids
,read_pod_information
and anything id related which is now covered by the scheduler (#209). - Removed warning for replicas and node id problems from docs (#209).
- Set right yaml indentation for the usage examples in docs (#209).
- Breaking: Repository structure was changed and the -server crate renamed to -binary. As part of this change the -server suffix was removed from both the package name for os packages and the name of the executable (#197).
- Initial release