Releases: apecloud/kubeblocks
Releases · apecloud/kubeblocks
KubeBlocks v0.8.4
What's Changed
- fix: missing svc related feature gates in backup by @shanshanying in #7388
- chore: auto-sync cluster backup spec to backupSchedule by @wangyelei in #7469
- chore: clean up restoreFromBackup annotation by @wangyelei in #7515
- chore: wait for cluster to available when enable pitr by @wangyelei in #7517
- chore: ignore the schedule error when creating a pod by @wangyelei in #7548
- feat: support user-defined annotations, env and volumes by @leon-inf in #7587
- chore: support to run a opsRequest after the dependent opsRequests are succeed. by @wangyelei in #7595
- feat: support user-defined labels by @leon-inf in #7605
- chore: delete related running restore resource to release pvc when cancelling the horizontal scaling by @wangyelei in #7622
Full Changelog: v0.8.3...v0.8.4
KubeBlocks v0.9.0
We are thrilled to announce the release of KubeBlocks v0.9.0, which brings us one step closer to the highly anticipated v1.0 release. This version introduces several significant improvements and new features that enhance the overall functionality and user experience of the KubeBlocks platform.
API Highlights
- In KubeBlocks v0.9, with the introduction of topology support in KubeBlocks, the cluster building experience has become much more flexible and intuitive, akin to assembling a cluster using building blocks. The ClusterDefinition API has added the topologies field, allowing developers to provide various deployment patterns with different topologies. Database users can choose a topology when creating a Cluster through the topology field. For instance, the Redis Addon offers three topologies: Standalone, Replication, and Proxy. The Standalone topology only includes one Component - RedisServer, the Replication topology includes both RedisServer and Sentinel Components, and the Proxy topology adds a third Component, such as Twemproxy.
- KubeBlocks now supports managing horizontal scaling (Reshard) of distributed databases. You can represent a horizontal shard with a Component, and scale up or down this horizontal shard by adding or removing Components. This scaling capability will also be used in the distributed deployment of Redis and Pika.
- KubeBlocks now uses InstanceSet instead of StatefulSet to manage Pods. InstanceSet supports taking a specified Pod offline and Pod in-place update, and also the primary and secondary databases can adopt different pod specs in a database Replication architecture (StatefulSet doesn't support these features).
- Developers can add more custom event handlers for Components! The ComponentDefinition API, introduced in v0.8, includes the lifeCycleActions field, allowing you to define various custom event handlers. Building on this, KubeBlocks v0.9 provides more handlers for custom addon implementation, including roleprobe (node role probing), memberLeave (node offline), preTerminate (Component offline), and postProvision (Component online). The expansion of event handlers enhances KubeBlocks' expression capabilities. For example, preTerminate and postProvision can be used to execute cross-shard data redistribution (Rebalance) in distributed databases or initiate registration to third-party HA managers like Sentinel and Orchestrator.
Addon Highlights - KubeBlocks supports Redis Cluster mode (sharding mode) #5833
Redis Cluster is designed to provide horizontal write scalability and intelligent client high-availability strategies, in addition to its excellent failover capability. Redis Cluster distributes data across multiple Redis nodes, significantly enhancing system capacity, performance, and availability. - KubeBlocks introduces MySQL Replication mode #1330
Compared to MGR clusters, the MySQL Replication topology requires fewer resources (only two database replicas) and incurs less overhead for data replication. When there is no extreme demands for service availability and data reliability, the Replication topology is a more cost-effective choice. You can actively switch MySQL replica roles using kbcli or trigger a passive failover by deleting specified Kubernetes pods via kubectl. If there is no long transactions and large table DDLs, the failover generally can be completed within 30 seconds.
What's Changed
New Features
KubeBlocks - ClusterDefinition API
- Supports topology API, allowing developers to customize various topologies. #6582
- Cluster API
- ComponentDefinition API
- lifecycleActions API supports user-defined operation actions, including roleprobe, memberLeave, preTerminate, postProvision. #6037 #6582 #6720 #6774
- New Vars API for referencing instance-related dynamic resources and information, including secret, service, and service reference.
- Supports dynamic configuration, regenerating specified variables after vertical scaling or horizontal scaling is performed. #6273 #6690
- Component
- InstanceSet API
- OpsRequest API
- Supports NodeCountScaler. #7258
- Supports PITR. #6779
- Supports cross-Namespace restore. #6778
kbcli - Supports PostgreSQL point-in-time recovery. #329
- cluster supports the rebuild-instance subcommand to rebuild instances. #285
- cluster create subcommand supports elasticsearch. #389
- Supports specifying path prefix when creating a backup repository. #294
Addons
Redis
- Supports the official Redis Cluster topology. #301
- Enhances the functionality and stability of Redis.
- Redis sharding cluster supports backup and restore. #442
MySQL - Adds the open-source component Orchestrator Addon to manage MySQL. #625 #567
PostgreSQL - Supports PostgreSQL PITR. #361
- Supports PostgreSQL v15.7. #361
Qdrant - Qdrant sharding cluster supports backup and restore. #442
MogDB - Supports the creation, scaling, backup and switchover of MogDB Replication Cluster in v5.0.5. #343 #350
ElasticSearch - Supports Elasticsearch v7.7.1, v7.10.1, and v8.8.2. #767
Pulsar - Supports v3.0.2. #340
- Supports NodePort. #358
VictoriaMetrics - Supports VictoriaMetrics v1.100.1. #479
API deprecations, and other changes for Release 0.9
- ConfigConstraint API becomes stable and upgrades from v1alpha1 to v1beta1.
- The group of StorageProvider changes and is migrated from storage.kubeblocks.io to dataprotection.kubeblocks.io.
- ClusterVersion v1alpha1 CRD will be removed in Release 1.0.
- ComponentClassDefinition v1alpha1 CRD will be removed in Release 1.0.
- ComponentResourceConstraint v1alpha1 CRD will be removed in Release 1.0.
- ClusterDefinition API
- type, componentDefs, connectionCredential will be removed in Release 1.0.
- Cluster API
- Scheduling: tenancy and availabilityPolicy will be removed in Release 1.0.
- API simplification: replicas, resources, storage, and network will be removed in Release 1.0.
- ComponentDefintion API
- switchPolicy will be removed in Release 1.0. The same capability can be achieved using the componentDefinition.spec.lifecycleActions.switchover API.
- ServiceRef API
- Cluster will be removed in Release 1.0. The same capability can be achieved using serviceRef.clusterServiceSelector.
Additionally, all fields referencing the above APIs are also marked as deprecated and will be removed in Release 1.0.
- clusterVersionRef
- componentDefRef
- classDefRef
KubeBlocks Release 0.9 still maintains the compatibility with API marked as deprecated.
Dep...
KubeBlocks v0.8.4-beta.0
What's Changed
- fix: missing svc related feature gates in backup by @shanshanying in #7388
Full Changelog: v0.8.3...v0.8.4-beta.0
KubeBlocks v0.8.3
What's Changed
- fix: dual stack service reconcile error by @iziang in #6877
- feat: support expose dualstack service by @iziang in #6916
- feat: support to reference objects from multiple components by @leon-inf in #6918
- bugfix: use openapi v3.0.0 to fix excluseiveMiminum case by @shanshanying in #6926
- chore: update apis licence to Apache by @shanshanying in #6948
- chore: update api-reference doc by @sophon-zt in #6950
- chore: delete related-configmap and configuration resources by @sophon-zt in #7054
- fix: Serial UpdateStrategy not working without roles by @free6om in #7079
- chore: add cluster labels to continouns backup and support do postReady restore by @wangyelei in #7151
- chore: should report error when resolving partial required objects by @leon-inf in #7232
- chore: support to create backupPolicy with multi-components that refers the same componentDefinition by @wangyelei in #7305
- fix: configuration mounted in subpath mode do not support dynamic update for pick release-0.8 by @sophon-zt in #7332
- chore: add labels to distinguish kb and dataprotection (#7352) by @shanshanying in #7354
- fix: ob rebuild instance failed by @wangyelei in #7358
- fix: when a component does not specify componentDefRef, each component will create a backupPolicy by @wangyelei in #7375
Full Changelog: v0.8.2...v0.8.3
KubeBlocks v0.8.2
Highlights
- Supports Redis Cluster
KubeBlocks currently supports Redis Sentinel mode, which provides excellent failover experiences. However, since it does not inherently provide data sharding, it may limit the system's horizontal scalability when dealing with large datasets and high read/write operations. Thus, an analytics application that requires rapid aggregation and querying of large volumes of data is a top priority.
Although the Sentinel mode ensures failover and high availability, all the data still resides on a single Redis instance, subject to its memory and performance limitations. By implementing Redis Cluster support in KubeBlocks, the analytics application can distribute its dataset across multiple Redis nodes (shards), each handling a subset of the data. This not only allows for greater memory distribution but also enables parallel processing, significantly improving the performance of data-intensive operations.
New Features
KubeBlocks
- Sharding Topology.
- Support for IPV4/IPV6 dual stack.
Redis
- Supports camellia-redis-proxy.
- Currently running on Kubernetes v1.14 and requires testing on v1.24.
- Better to adopt MetalLB for providing access to cross-cluster applications.
- Supports exposing frontend connections (with username and password), and configuring external Redis (outside of the Kubernetes cluster).
- Provides high availability and monitoring features.
- Supports Redis Cluster.
MongoDB
- MongoDB Replicaset address supports high availability access from an external Kubernetes cluster (non-direct connection).
Lorry
- Supports custom command probing for roleProbe.
KubeBlocks v0.7.5
Full Changelog: v0.7.4...v0.7.5
KubeBlocks v0.7.4
Full Changelog: v0.7.3...v0.7.4
KubeBlocks v0.7.3
KubeBlocks v0.9.0-alpha.2
What's Changed
- chore: migrate dashboard to gemini and adjust dashboard job name by @sophon-zt in #6028
- fix: tls CA cert not working by @free6om in #6031
- docs: add cn docs by @michelle-0808 in #6052
- docs: adjust format metadata by @michelle-0808 in #6058
- chore: release addons charts after kubeblocks by @JashBook in #6064
- fix: force rsync status from configuration.status (#6045) by @sophon-zt in #6048
- docs: adjust cn docs format by @shenying1023 in #6067
- docs: adjust kafka docs format by @michelle-0808 in #6070
- docs: adjust content by @shenying1023 in #6072
- chore: support component lifecycle action postProvision by @Y-Rookie in #6037
- chore: move storage provider controller to the pod of DP by @leon-inf in #6078
- fix: mongodb config deepcopy by @xuriwuyun in #6076
- chore: fix component definition vars env render by @Y-Rookie in #6077
- chore: fixed the target pod for backup and restore by @wangyelei in #6085
- chore: add comment for backup deletionPolicy by @ldming in #6034
- fix: empty parameter update cause restart (#6090) by @sophon-zt in #6091
- docs: adjust en&cn docs by @shenying1023 in #6081
- fix: disable KB_COMP_REPLICAS envvar to prevent pods from being restarted at h-scale by @leon-inf in #6096
- chore: remove KubeBlocks type roleArbitrator and replace with Lorry by @Y-Rookie in #6107
- fix: inject initContainers and containers zero resources if they are empty by @wangyelei in #6113
- fix: add selectorLabel for addon CR by @ldming in #6121
- chore: support backup target for backupMethod by @wangyelei in #6122
- fix: foxlake connect command by @jairuigou in #6080
- chore: improve Lorry performance by @xuriwuyun in #6109
- chore: update openapischema and add lables for kbcli report subcommand by @sophon-zt in #6117
- chore: remove new cluster conn-credential API by @leon-inf in #6098
- chore: fix cluster connect Database Env by @1aal in #6093
- fix: etcd connect error by @xuriwuyun in #6133
- chore: set timezone for backup schedule by @ldming in #6138
- chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 by @dependabot in #6136
- feat: add switchover to lorry client by @xuriwuyun in #6139
- chore: upgrade lorry client switchover by @xuriwuyun in #6145
- fix: remove AppNameLabelKey label in reconfiguration to fix reconfigure does not take effect by @Y-Rookie in #6146
- chore: add clickhouse addon by @ldming in #6137
- fix: issues regarding the upgrade from 0.7 to 0.8 by @leon-inf in #6148
- fix: new different lorry client with different envs by @xuriwuyun in #6149
- fix: switchover before member leaving by @free6om in #6153
- chore: remove unused code of consensusSetStatus and replicationSetStatus by @Y-Rookie in #6155
- chore: update lorry new client by @xuriwuyun in #6158
- fix: invalid template in storageprovider/oss.yaml by @zjx20 in #6162
- chore: separate k3s and k8s by @JashBook in #6163
- chore(deps): bump github.com/containerd/containerd from 1.7.6 to 1.7.11 by @dependabot in #6159
- feat: add apis for rsm managing pods by @Somiacao in #5815
- fix: render pod template to pod when build pod by @Somiacao in #6174
- chore: auto approve by workflow by @JashBook in #6182
- fix: use empty priorityClassName for csi-driver-nfs when in GKE by @zjx20 in #6183
- chore: avoid using the latest image tag by @ldming in #6168
- chore: add flink e2e test by @JashBook in #6185
- chore: expand built-in envs in postProvision action by @Y-Rookie in #6170
- fix: backward compatible with TLS configuration render by @Y-Rookie in #6179
- feat: support pod-level service definition and variable reference by @Y-Rookie in #6116
- fix: role check failed after upgrade from 0.7 to 0.8 by @xuriwuyun in #6171
- fix: mongodb connect error by @xuriwuyun in #6190
- chore: remove create role from mysql super user by @shanshanying in #6191
- fix: watch the Configuration object in component controller by @leon-inf in #6192
- fix: size computation for allocation may overflow by @Y-Rookie in #6194
- fix: re-render config after tls config changed by @cjc7373 in #6189
- docs: helm-installation-docs by @TalktoCrystal in #6106
- bugfix: exec k8s config as input by @lynnleelhl in #6196
- feat: support compact mode in annotation by @free6om in #6176
- fix: backward compatible expose opsRequest with legacy services by @Y-Rookie in #6201
- fix: exec client empty panic by @lynnleelhl in #6207
- fix: cronjob schedule is overrided by @ldming in #6209
- chore: fix failed test case by @ldming in #6211
- feat: support manage host ports if the pod is in the host network by @iziang in #6208
- fix: multiple static port conflict by @iziang in #6215
- chore: improve config template render for hostNetwork by @wangyelei in #6213
- fix: watch but not owned configuration object by @leon-inf in #6202
- chore: handle update conflict by @iziang in #6218
- feat: support backup and restore for oceanbase by @wangyelei in #6217
- fix: distinguish the componentdef on different addons (#6219) by @sophon-zt in #6220
- feat: lorry support ob by @xuriwuyun in #6216
- fix: replace scrapePort if pod is in host network by @iziang in #6223
- fix: auto creating component obj when upgrade to KubeBlocks v0.8.0 by @Y-Rookie in #6221
- fix: watch but not own existed workload objects by @leon-inf in #6222
- fix: revert "distinguish the componentdef on different addons #6219" by @Y-Rookie in #6231
- chore: fix backup failed for oceanbase by @wangyelei in #6230
- feat: config-manager support host network (#6235) by @sophon-zt in #6237
- feat: lorry support host network by @xuriwuyun in #6226
- chore: incorrect conversion between integer types by @wangyelei in #6240
- chore: split kubeblocks and kbcli release workflow by @JashBook in #6229
- chore: support restore backoffLimit by @wangyelei in #6242
- chore: backward compatible with AppNameLabelKey label in KubeBlocks v0.8.0 by @Y-Rookie in #6243
- chore: change golang image to 1.21-alpine by @JashBook in #6241
- chore: fix oceanbase switchover by @xuriwuyun in #6246
- chore: adjust release crds by @JashBook in #6249
- chore: fix oceanbase lorry port adaptor by @xuriwuyun in #6248
- chore: update apecloud-mysql version by @kubeJocker in #6260
- chore: update OB addon version by @shans...