All notable changes to this project will be documented in this file.
- Disable Vector agent by default (#526).
- Bump kube to 0.78.0 and k8s-openapi to 0.17.0. Bump k8s version from 1.24 to 1.26 (#533).
- Removed
affinity
property from the RoleGroup that was added in #520 but not intended to be there (#552).
- Extended the
PodBuilder
withpod_affinity
,pod_anti_affinity
,node_selector
and their*_opt
variants (#520)
- Modules for log aggregation added (#517).
- Added
AuthenticationClass
provider static (#514).
- Changed the separator character between operator and controller names (#507).
- Added product image selection struct (#476).
- BREAKING:
get_recommended_labels
andwith_recommended_labels
now takes a struct of named arguments (#501). - BREAKING:
get_recommended_labels
(and co) now takes the operator and controller names separately (#492). - BREAKING:
ClusterResources
now takes the operator and controller names separately (#492).- When upgrading, please use FQDN-style names for the operators (
{operator}.stackable.tech
).
- When upgrading, please use FQDN-style names for the operators (
- Bump kube to
0.76.0
(#476). - Bump opentelemetry crates (#502).
- Bump clap to 4.0 (#503).
- Builder for
EphemeralVolumeSource
s added which are used by the listener-operator (#496). - Exposed parser for Kubernetes
Quantity
values (#499).
- Added new Fragment (partial configuration) machinery (#445).
- kube-rs: 0.74.0 -> 0.75.0 (#490).
- BREAKING:
Client
methods now take the namespace as a&str
(for namespaced resources) or&()
(for cluster-scoped resources), rather than always taking anOption<&str>
(#490).
- Extended
ClusterResource
withSecret
,ServiceAccount
andRoleBinding
(#485).
This is a rerelease of 0.25.1 which some last-minute incompatible API changes to the additions that would have been released in 0.25.1.
- Use Volume as the primary mechanism for directing Listener traffic, rather than labels (#474).
- listener-operator CRDs (#469).
- YAML module added with a function to serialize a data structure as an
explicit YAML document. The YAML documents generated by the functions in
crd::CustomResourceExt
are now explicit documents and can be safely concatenated to produce a YAML stream (#450).
- Objects are now streamed rather than polled when waiting for them to be deleted (#452).
- serde_yaml 0.8.26 -> 0.9.9 (#450)
- Cluster resources can be added to a struct which determines the orphaned resources and deletes them (#436).
- Added
Client::get_opt
for trying to get an object that may not exist (#451).
- BREAKING: The
managed_by
label must be passed explicitly to theObjectMetaBuilder::with_recommended_labels
function (#436). - BREAKING: Renamed
#[merge(bounds)]
to#[merge(bound)]
(#445). - BREAKING: Added
Fragment
variants of most types instackable_operator::commons::resources
(#445).- serde impls have been moved to
FooFragment
variants, consumers that are not ready to use the full fragment machinery should switch to using these fragment variants.
- serde impls have been moved to
- Add
AuthenticationClass::resolve
helper function (#432).
- BREAKING:kube
0.73.1
->0.74.0
(#440). DeprecateResourceExt::name
in favour of safename_*
alternatives. kube-#945 ContainerBuilder::new
validates container name to be RFC 1123-compliant (#447).
startup_probe
added toContainerBuilder
(#430).
- BREAKING: Bump to k8s 1.24 and kube 0.73.1 (#408).
- Correctly propagate storage class in
PVCConfig::build_pvc()
(#412).
scale_to
andto_java_heap_value
inMemory
to scale units up or down (#407).
- Visibility of
Memory
inmemory.rs
to private (#407).
impl Into<Resourcerequirements> for Resources
set's fields toNone
instead ofSome(<empty map>)
when nothing is defined. (#398).- BREAKING: Change credentials of
S3ConnectionSpec
to use the commonSecretClassVolume
struct (#405).
- Added
config::merge::chainable_merge()
(#397). SecretClassVolume
andSecretOperatorVolumeSourceBuilder
now support secret-aware pod scheduling (#396, secret-#125).- New
memory
module (#400). S3AccessStyle
enum added tocommons::s3::S3ConnectionSpec
(#401)
- BREAKING:
SecretClassVolume::to_csi_volume
renamed toto_ephemeral_volume
and now returnsEphemeralVolumeSource
(#396). - BREAKING:
SecretOperatorVolumeSourceBuilder
now returnsEphemeralVolumeSource
(#396). - BREAKING: Secret-Operator-related features now require Secret-Operator 0.4.0 (#396).
- BREAKING: Memory and CPU resource definitions use quantity instead of String (#402)
- BREAKING: Removed
commons::s3::S3ConnectionImplementation
.commons::s3::InlinedBucketSpec::endpoint()
doesn't take arguments since the protocol decision is now based on the existance of TLS configuration (#390). - BREAKING: Changes to resource requirements structs to enable deep merging (#392)
- Changed fields in
Resources
to no longer be optional - Changed atomic fields in
MemoryLimits
,JvmHeapLimits
,CpuLimits
andPvcConfig
to be optional
- Changed fields in
- BREAKING: Removed
commons::tls::TlsMutualVerification
(#394).
- Typed
Merge
trait (#368). - New commons::s3 module with common S3 connection structs (#377).
- New
TlsAuthenticationProvider
forAuthenticationClass
(#387).
- Export logs to Jaeger (#360).
- Added common datastructures shared between all operators like
Tls
oderAuthenticationClass
(#366). - Added helpers for env variables from Secrets or ConfigMaps (#370).
- BREAKING:
initialize_logging
now takes an app name and tracing target (#360). - BREAKING: Move opa struct to commons (#369).
- Common
OpaConfig
to specify a config map and package name (#357).
- Split up the builder module into submodules. This is not breaking yet due to reexports. Deprecation warning has been added for
operator-rs
0.15.0
(#348). - Update to
kube
0.70.0
(Release Notes). The signature and the Ok action in reconcile fns has been simplified slightly. Because of this the signature ofreport_controller_reconciled
had to be changed slightly ([#359]).
- product-config 0.3.0 -> 0.3.1 (#346)
- Truncate k8s event strings correctly, when required (#337).
- BREAKING: Added CLI
watch_namespace
parameter to ProductOperatorRun in preparation for operators watching a single namespace (#332, #333). - More builder functionality (#331)
- builder for
SecurityContext
objects - add
EnvVar
s from field refs - set
serviceServiceAccountName
in pod templates
- builder for
- Build against Kubernetes 1.23 (#330).
- Reported K8s events are now limited to 1024 bytes (#327).
- Infrastructure for logging errors as K8s events (#322).
- BREAKING: kube 0.68 -> 0.69.1 ([#319, #322]).
- Unified
ClusterRef
type for referring to cluster objects (#307).
- Auto-generated service link environment variables for built pods (#305).
- Fixed
Client::apply_patch_status
always failing (#300).
- Allow adding custom CLI arguments to
run
subcommand (#291).
- BREAKING: clap 2.33.3 -> 3.0.4 (#289).
- BREAKING: kube 0.65 -> 0.66 (#293).
- BREAKING:
cli::Command::Run
now just wrapscli::ProductOperatorRun
rather than defining the struct inline (#291).
- BREAKING: Introduced proper (Result) error handling for
transform_all_roles_to_config
(#282). - BREAKING:
Configuration::compute_*
are now invoked even whenconfig
field is not provided onRole
/RoleGroup
(#282).CommonConfiguration::config
is no longerOption
alRole::config
is no longerOption
alRoleGroup::config
is no longerOption
al
- Fixed
cli::Command
including developer-facing docs in--help
output (#283)
- BREAKING: kube-rs 0.63.1 -> 0.65.0 (#277)
- strum 0.22.0 -> 0.23.0 (#277)
- Undeprecated
CustomResourceExt
(#279)
build_template
toPodBuilder
(#259).readiness_probe
andliveness_probe
toContainerBuilder
(#259).role_group_selector_labels
tolabels
(#261).role_selector_labels
tolabels
(#270).Box<T: Configurable>
is nowConfigurable
(#262).node_selector
toPodBuilder
(#267).role_utils::RoleGroupRef
(#272).- Add support for managing CLI commands via
StructOpt
(#273).
- BREAKING:
ObjectMetaBuilder::build
is no longer fallible (#259). - BREAKING:
PodBuilder::metadata_builder
is no longer fallible (#259). role_utils::transform_all_roles_to_config
now takes anyT: Configurable
, not justBox<T>
(#262).- BREAKING: Type-erasing
Role<T>
intoRole<Box<dyn Configurable>>
must now be done usingRole::erase
rather thanRole::into
(#262). - BREAKING: Changed all
&Option<T>
intoOption<&T>
, some code will need to be rewritten to useOption::as_ref
rather than&foo
(#263). - Promoted controller watch failures to WARN log level (from TRACE) (#269).
VolumeBuilder
andVolumeMountBuilder
(#253).image_pull_policy
toContainerBuilder
(#253).host_network
toPodBuilder
(#253).
- BREAKING: In builder:
add_stackable_agent_tolerations
toadd_tolerations
(#255). - Generic
VALUE
paramters toimpl Into<_>
arguments for consistency (#253).
krustlet.rs
(#255).find_nodes_that_fit_selectors
no longer adds labeltype=krustlet
to selector (#255).- BREAKING:
configmaps
field from container builder (#253). - BREAKING: Automatic
Volume
andVolumeMount
creation from theconfigmaps
field (#253).
- Bugfix: when scheduling a pod,
GroupAntiAffinityStrategy
should not skip nodes that are mapped by other pods from different role+group. (#222) - Bugfix: annotate
conditions
as map-list (#226)- Requires manual action: add
#[schemars(schema_with = "stackable_operator::conditions::conditions_schema")]
annotation toconditions
field in your status struct
- Requires manual action: add
- BREAKING:
Client::apply_patch
andClient::apply_patch_status
now take acontext
argument that scopes their fieldManager (#225) - Bugfix:
Client::set_condition
now scopes its fieldManager to the condition being applied (#225) - Bugfix: removed duplicate object identity from reconciler. (#228)
- Bugfix: added proper error handling for versioning. If versions are not supported or invalid an error is thrown which should stop further reconciliation (#236).
command.rs
module to handle common command operations (#184).- Traits for command handling (#184):
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
- Enum
ClusterExecutionStatus
to signal that the cluster is running or stopped (#184). - Default implementations for Restart, Start and Stop commands (#184).
identity.rs
a new module split out ofscheduler.rs
that bundles code for pod and node id management.identity::PodIdentityFactory
trait and one implementation calledidentity::LabeledPodIdentityFactory
.controller.rs
- Configurable requeue timeout
reconcile::create_config_maps
which is obsolete and replaced byconfigmap::create_config_maps
(#184)- BREAKING:
scheduler::PodToNodeMapping::from
(#222). - Reexport
kube
,k8s-openapi
,schemars
(#247)
- Getter for
scheduler::PodIdentity
fields (#215).
- Extracted the versioning support for up and downgrades from operators (#211).
- Added traits to access generic operator versions (#211).
- Added init_status method that uses the status default (#211).
- Implement StickyScheduler with two pod placement strategies and history stored as K8S status field. (#210)
BREAKING
: ChangedConditions
trait return value to not optional (#211).
- Initial release