Releases: m3db/m3db-operator
v0.14.0
0.14.0 is a significant release, making the operator compatible with Kubernetes 1.22. Other notable features include
supporting batch node adds and removals to speed up cluster membership changes.
Breaking Changes
As of this release, the operator no longer installs its own CRD. You must install the CRD manifest from this repo, which
includes a schema and is compatible with Kubernetes 1.22 by using v1
of the CRD API.
The upgrade steps are as follows:
- Change your existing operator deployment to set
-manage-crd=false
as a flag to the operator container. This will
ensure that the old operator will not overwrite the CRD if it restarts after the new CRD is applied. - Modify the YAML definition of the new CRD to set
spec.preserveUnknownFields=false
. This is required if upgrading an
older CRD that was created without a schema. - Apply the new CRD.
- Upgrade the operator image to
0.14.0
. You'll have to remove the-manage-crd=false
flag, as it is no longer
supported by the operator.
Change set:
- [API] Ensure schema has embedded metadata fields (#328)
- [FEATURE] Fix progress annotations on cluster expansion/shrinking (#324)
- [API] schema: extendedOptions as untyped object (#327)
- [FEATURE] [*] Make operator compatible with Kubernetes 1.22 (#325)
- [MISC] Update go version to 1.18 (#322)
- [ENHANCEMENT] prevent scaling down to 0 instances (#316)
- [FEATURE] batch node removal (#314)
- [MISC] use 8 sha length for docker tag (#315)
- [ENHANCEMENT] move to batch placement remove API (#312)
- [ENHANCEMENT] upgrade m3 version (#311)
- [MISC] regenerate mocks (#313)
- [MISC] [ci] Set PUSH_SHA_TAG env var to true (#308)
- [MISC] Update ci submodule (#307)
- [MISC] Use golang:1.16-alpine3.13 as build image (#306)
- [ENHANCEMENT] Updating API to use k8s v1.23 compatible api groups (#302)
- [MISC] [deps] Update k8s.io/kube-openapi dependency (#304)
- [MISC] Update to Go 1.16 (#305)
- [ENHANCEMENT] Update kubernetes client to v0.21.1 (#301)
- [DOCS] [docs] Fix redirect syntax (#300)
- [DOCS] [site] Add netlify redirect to main docs site (#297)
- [FEATURE] [api] Allow blocking cluster scale down (#294)
- [ENHANCEMENT] [controller] Include namespace with logs (#291)
- [ENHANCEMENT] [m3admin-client] Incorporate zone into client cache (#290)
- [ENHANCEMENT] [m3admin-client] Set zone header based on cluster spec (#289)
- [MISC] [build] Use --short in GITSHA calculation (#288)
- [ENHANCEMENT] [placement] Allow zone to be overridden (#287)
- [ENHANCEMENT] [k8sops] Remove liveness probes from DB (#286)
- [BUGFIX] Backwards compatibility when using the original update annoation with an OnDelete update strategy (#284)
- [FEATURE] Add support for parallel node updates within a statefulset (#283)
- [FEATURE] Support namespace ExtendedOptions in cluster spec (#282)
- [FEATURE] [controller] Support multi instance placement add (#275)
- [ENHANCEMENT] [gomod] Update M3DB dependency (#277)
- [BUGFIX] [cmd] Fix instrument package name (#280)
- [MISC] [ci] Switch to golangci-lint (#279)
- [MISC] [ci] Update kind; fix node image (#276)
- [DOCS] Fix autogenerated ToC (#274)
v0.13.0
v0.12.1
v0.12.0
0.12.0 adds support for running sidecar containers in the M3DB pods and ensures
clusters created by the operator use 1.0 M3DB configs by default.
Breaking Changes
0.12.0 updates the default configuration file for M3DB. This is a breaking
change as the operator will not be able to create a working default
configuration file for pre-v1.0.0 deployments of M3DB. To use the new version
of the operator with an older version of m3db you will have to provide a custom
ConfigMap.
v0.11.0
0.11.0 ensures the operator is compatible with clusters running M3 1.0. It removes usage of M3 APIs that were deprecated
as part of that release.
v0.10.0
0.10.0 adds initial support for safe, graceful cluster upgrades. See the upgrade
docs for more info.
This release also includes documentation enhancements, and adds the coldWritesEnabled
field on namespaces to allow
enabling M3DB cold writes.
Finally, this release includes two new API fields to make it easier for users to manage their clusters:
-
A new
freeze
field on clusters allows a user to stop all operations on a cluster while potentially performing
manual changes. -
The new
externalCoordinator.serviceEndpoint
field allows controlling the cluster via a coordinator in another
namespace, allowing users to have a single coordinator responsible for serving m3admin APIs for all clusters across
any namespace.- WARNING: The minumum required M3 version to use with this field is
v0.15.9
, which includes a fix for managing
namespaces in environments other than that for which the coordinator is provisioned.
- WARNING: The minumum required M3 version to use with this field is
Breaking Changes
0.10.0 makes the default pod management policy for StatefulSets created by the operator
Parallel
. This
should be transparent to most users, but means that when new pods are added to a cluster, or pods are manually deleted,
they will all be recreated at once rather than after each has bootstrapped. This should lead to faster upgrades and
cluster resizing operations.
Change set:
- [FEATURE] Allow setting static external coordinator (#242)
- [FEATURE] Add the
coldWritesEnabled
option to Namespace options (#233) - [ENHANCEMENT] Default Parallel pod management (#230)
- [FEATURE] Add frozen field to cluster spec that will suspend changes (#241)
- [DOCS] Add documentation on updating a cluster (#240)
- [ENHANCEMENT] Always remove update annotation after processing StatefulSet (#237)
- [ENHANCEMENT] Ignore replicas when checking for an update (#238)
- [MISC] Create constant for annotation value indicating enabled (#239)
- [MISC] Implement placement Set API (#234)
- [FEATURE] Add logic to update StatefulSets (#236)
- [MISC] Fix bug in TestHandleUpdateClusterCreatesStatefulSets (#235)
- [DOCS] Update helm install docs (#231)
v0.9.0
0.9.0 includes support for attaching a custom Kubernetes service account to M3DB pods (enabling use of
PodSecurityPolicies and the like), and an improvement in how new StatefulSets are created when others are unhealthy.
v0.8.0
0.8.0 includes changes to improve operator performance and reduce load on Kubernetes API servers. The operator will only watch Pods and StatefulSets with a non-empty operator.m3db.io/app
label (included on every StatefulSet the operator generates). Additionally the operator will not unnecessarily update a cluster's Status if there is no change. The operator now uses Kubernetes client v0.17.2.
v0.7.0
0.7.0 includes changes to allow an M3DB cluster to be administered with a coordinator external to the cluster. It also
supports passing annotations to pod templates, experimental support for using the Parallel
pod management policy on
M3DB StatefulSets, and support for InitContainers.
- [FEATURE] Break ext coord into separate config (#216)
- [FEATURE] Support Parallel pod management policies. (#211)
- [FEATURE] Added initial support for PodMetaData, handling Annotations only (#210)
- [FEATURE] Support custom InitContainers in cluster spec (#209)
- [FEATURE] Support an external controlling coordinator (#208)
v0.6.0
0.6.0 includes a fix to allow M3DB nodes to receive traffic while bootstrapping, and an option to limit what namespaces
the operator watches resources in, which should greatly help users running the operator in massive Kubernetes clusters.