github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/docs/release_notes/template.md (about) 1 # KubeBlocks $kubeblocks_version ($today) 2 3 We're happy to announce the release of KubeBlocks $kubeblocks_version! 🚀 🎉 🎈 4 5 This release introduces Redis, a key-value database, and MongoDB, a document-based database. It also supports the primary-secondary topology of PostgreSQL, adapts to more public cloud vendors' hosted Kubernetes versions, improves data backup and recovery experiences, and builds basic data migration capability. We noticed that some users may think that K8s reduces database performance. So in this release we include a comparison test result to explain the throughput and RT differences of various MySQL 8.0 deployment forms on AWS. 6 7 We would like to extend our appreciation to all contributors who helped make this release happen. 8 9 ## **Highlights** 10 11 - KubeBlocks supports the primary-secondary topology of PostgreSQL 12 Users can actively switch the primary-secondary role of the database cluster with kbcli, or passively trigger failover by deleting a specified Kubernetes pod with kubectl. Failover generally completes within 30 seconds when there are no long transactions and large table DDLs. 13 - KubeBlocks supports Redis v7.0 14 Redis is currently the most popular open-source key-value database, supporting data types such as key-value, string, list, set, hash table, and ordered set. It provides extremely fast data read and write operations and is suitable for cache scenarios in e-commerce, social communication, game, and other internet applications. To provide stable, secure, and efficient Redis services to users, KubeBlocks has adopted Redis 7.0 version, which is currently recommended officially, supporting standalone and primary-secondary topologies. Thus, users can perform operations such as creating, deleting, scaling, backing up, restoring, monitoring, alerting, and changing parameters of Redis clusters in development, testing, and production environments. 15 - KubeBlocks supports MongoDB v5.0 16 MongoDB is currently the most popular document-based database, using JSON data types and dynamic schema designs to maintain high flexibility and scalability. KubeBlocks supports the replica set topology of MongoDB v5.0, providing data redundancy and automatic failover capabilities, ensuring data availability and consistency in the event of a node failure. The replica set topology cluster has one primary node (Primary) and several secondary nodes (Secondary), with the primary node handling all write requests and the secondary nodes handling some read requests. If the primary node fails, one of the secondary nodes is elected as the new primary node. 17 - KubeBlocks supports the private deployment of ChatGPT retrieval plugin 18 For users who do not want to expose sensitive information (such as company documents, meeting minutes, emails), OpenAI has open-sourced the ChatGPT retrieval plugin to enhance the ChatGPT experience. As long as users meet OpenAI's requirements, they can run the ChatGPT retrieval plugin through KubeBlocks addon, store the vectorized data of sensitive information in a private database, and enable ChatGPT to have longer memory of the context while ensuring information security. 19 - KubeBlocks supports one-command launching of playgrounds on Alibaba Cloud, Tencent Cloud, and GCP 20 Public cloud vendors' hosted Kubernetes services have significant differences in version, functionality, and integration, so even if the deployment of stateful services is not difficult, but Kubernetes administrators have to do a lot of extra heavy lifting to run stateful services normally. After supporting AWS, KubeBlocks provides the ability to one-command launch playgrounds on Alibaba Cloud, Tencent Cloud, and GCP. Users only need to set up public cloud AK locally, and then execute the kbcli playground init command, and KubeBlocks will automatically apply for resources and configure permissions in the specified region, making it easy for users to experience complete functionality. After trying KubeBlocks out, you can clean up the playground environment with one command to avoid incurring costs. 21 22 ## **Breaking changes** 23 24 - Breaking changes between v0.5 and v0.4. Uninstall v0.4 (including any older version) before installing v0.5. 25 - Move the backupPolicyTemplate API from dataprotection group to apps group. 26 Before installing v0.5, please ensure that the resources have been cleaned up: 27 ``` 28 kubectl delete backuppolicytemplates.dataprotection.kubeblocks.io --all 29 kubectl delete backuppolicies.dataprotection.kubeblocks.io --all 30 ``` 31 - redefines the phase of cluster and component. 32 Before installing v0.5, please ensure that the resources have been cleaned up: 33 ``` 34 kubectl delete clusters.apps.kubeblocks.io --all 35 kubectl delete opsrequets.apps.kubeblocks.io --all 36 ``` 37 - `addons.extensions.kubeblocks.io` API deleted `spec.helm.valuesMapping.jsonMap.additionalProperties`, `spec.helm.valuesMapping.valueMap.additionalProperties`, `spec.helm.valuesMapping.extras.jsonMap.additionalProperties` and `spec.helm.valuesMapping.extras.valueMap.additionalProperties` attributes that was introduced by CRD generator, all existing Addons API YAML shouldn't have referenced these attributes. 38 39 40 ## **Known issues and limitations** 41 * Limitations of cluster's horizontal scale operation: 42 * Only support VolumeSnapshot API to make a clone of Cluster's PV for syncing data when horizontal scaling. 43 * Only 1st pod container and 1st volume mount associated PV will be processed for VolumeSnapshot, do assure that data volume is placed in 1st pod container's 1st volume mount. 44 * Unused PVCs will be deleted in 30 minutes after scale in. 45 46 If you're new to KubeBlocks, visit the [getting started](https://github.com/apecloud/kubeblocks/blob/v$kubeblocks_version/docs/user_docs/quick_start_guide.md) page and get a quick start with KubeBlocks. 47 48 $warnings 49 50 See [this](#upgrading-to-kubeblocks-$kubeblocks_version) section to upgrade KubeBlocks to version $kubeblocks_version. 51 52 ## Acknowledgements 53 54 Thanks to everyone who made this release possible! 55 56 $kubeblocks_contributors 57 58 ## What's Changed 59 ### New Features 60 #### MySQL 61 - Support ZEngine storage engine 62 - Account management supports creating, modifying, and deleting database accounts with different permissions 63 PostgreSQL 64 - Support migration from AWS RDS to KubeBlocks, supporting pre-checks, full migration, and incremental synchronization, verifying the data migration capabilities of CadenceWorkflow and OpenStreetMap 65 - Support for pgvector extension 66 - Support for the primary-secondary topology of PostgreSQL 67 - Automated failover and self-healing 68 - Support point-in-time recovery 69 - Account management supports creating, modifying, and deleting database accounts with different permissions 70 71 #### Redis 72 - Full lifecycle management, including creation, deletion, restart, horizontal/vertical scaling 73 - Support Redis primary-secondary topology 74 - Automated failover and self-healing 75 - Support snapshot backup and recovery 76 - Metric monitoring, including cluster's basic operation status, connection, OS resources, performance, primary-secondary replication status and other metrics 77 - Alerts including cluster downtime, OS resource, abnormal connection number, primary-secondary replication abnormality, etc. 78 - Parameter reconfigure 79 - Account management 80 81 #### MongoDB 82 - Full lifecycle management, including creation, deletion, restart, vertical scaling, and disk expansion 83 - Endpoint exposes the access addresses of all nodes 84 - File-based full backup and recovery 85 - Automated failover and self-healing 86 - Monitoring, alerting and logs 87 - Parameter reconfigure 88 89 $kubeblocks_changes 90 91 ### Easy of Use 92 - `kbcli playground` supports one-command launching on running environments of Alibaba Cloud, Tencent Cloud, and GCP to experience complete KubeBlocks functionality 93 - kbcli supports creating clusters by entering CPU, memory, or class type 94 - kbcli supports tagging related resources of cluster 95 - kbcli is compatible with macOS package manager `brew` 96 - kbcli supports `preflight` command to check whether the environment meets the requirements for installing KubeBlocks 97 - kbcli adds object storage addon for storing full file backups, logs, and other data 98 - `kbcli install` runs preflight to check whether the environment meets the requirements, including node taints, storage class, and other check rules 99 - kbcli addon adds timeout parameter, printing exception information when enable fails 100 - Addon inherits the affinity and tolerations configuration of KubeBlocks 101 - `kbcli uninstall` prompts information to delete backup files, printing log information if the deletion fails 102 - ClusterDefinition API `spec.connectionCredential` add following built-in variables: 103 - Headless service FQDN `$(HEADLESS_SVC_FQDN)` placeholder, value pattern - `$(CLUSTER_NAME)-$(1ST_COMP_NAME)-headless.$(NAMESPACE).svc`, where 1ST_COMP_NAME is the 1st component that provide `ClusterDefinition.spec.componentDefs[].service` attribute 104 105 #### Compatibility 106 - Compatible with AWS EKS v1.22/v1.23/v1.24/v1.25 107 - Compatible with Alibaba Cloud ACK v1.22/v1.24 108 - Compatible with Tencent Cloud TKE standard cluster v1.22/v1.24 109 - Compatible with GCP GKE standard cluster v1.24/v1.25 110 111 #### Stability 112 - KubeBlocks limits the combination of CPU and memory to avoid unreasonable configurations that reduce resource utilization or system stability 113 114 #### Performance 115 - High-availability MySQL 8.0 with 4C 8GB 500GB, throughput and RT differences of various products on AWS, including ApeCloud MySQL Raft group, AWS RDS operator, Operator for Percona Server for MySQL, Oracle MySQL Operator for Kubernetes 116 117 ### API changes 118 - New APIs: 119 - backuppolicytemplates.apps.kubeblocks.io 120 - componentclassdefinitions.apps.kubeblocks.io 121 - componentresourceconstraints.apps.kubeblocks.io 122 123 - Deleted APIs: 124 - backuppolicytemplates.dataprotection.kubeblocks.io 125 126 - New API attributes: 127 - clusterdefinitions.apps.kubeblocks.io API 128 - spec.type 129 - spec.componentDefs.customLabelSpecs 130 - clusterversions.apps.kubeblocks.io API 131 - spec.componentVersions.clientImage (EXPERIMENTAL) 132 - clusters.apps.kubeblocks.io API 133 - spec.componentSpecs.classDefRef 134 - spec.componentSpecs.serviceAccountName 135 - configconstraints.apps.kubeblocks.io API 136 - spec.reloadOptions.shellTrigger.namespace 137 - spec.reloadOptions.shellTrigger.scriptConfigMapRef 138 - spec.reloadOptions.tplScriptTrigger.sync 139 - spec.selector 140 - opsrequests.apps.kubeblocks.io API 141 - spec.restoreFrom 142 - spec.verticalScaling.class 143 - status.reconfiguringStatus.configurationStatus.updatePolicy 144 - backuppolicies.dataprotection.kubeblocks.io API 145 - spec.full 146 - spec.logfile 147 - spec.retention 148 - backups.dataprotection.kubeblocks.io 149 - status.manifests 150 - backuptools.dataprotection.kubeblocks.io 151 - spec.type 152 153 - Renamed API attributes: 154 - clusterdefinitions.apps.kubeblocks.io API 155 - spec.componentDefs.horizontalScalePolicy.backupTemplateSelector -> spec.componentDefs.horizontalScalePolicy.backupPolicyTemplateName 156 - spec.componentDefs.probe.roleChangedProbe -> spec.componentDefs.probe.roleProbe 157 - backuppolicies.dataprotection.kubeblocks.io API 158 - spec.full 159 - restorejobs.dataprotection.kubeblocks.io API 160 - spec.target.secret.passwordKeyword -> spec.target.secret.passwordKey 161 - spec.target.secret.userKeyword -> spec.target.secret.usernameKey 162 - addons.extensions.kubeblocks.io API 163 - spec.helm.installValues.secretsRefs -> spec.helm.installValues.secretRefs 164 165 - Deleted API attributes: 166 - opsrequests.apps.kubeblocks.io API 167 - status.observedGeneration 168 - backuppolicies.dataprotection.kubeblocks.io API 169 - spec.backupPolicyTemplateName 170 - spec.backupToolName 171 - spec.backupType 172 - spec.backupsHistoryLimit 173 - spec.hooks 174 - spec.incremental 175 - backups.dataprotection.kubeblocks.io API 176 - spec.ttl 177 - status.CheckPoint 178 - status.checkSum 179 - addons.extensions.kubeblocks.io API 180 - spec.helm.valuesMapping.jsonMap.additionalProperties 181 - spec.helm.valuesMapping.valueMap.additionalProperties 182 - spec.helm.valuesMapping.extras.jsonMap.additionalProperties 183 - spec.helm.valuesMapping.extras.valueMap.additionalProperties 184 185 - Updates API Status info: 186 - clusters.apps.kubeblocks.io API 187 - status.components.phase valid values are Running, Stopped, Failed, Abnormal, Creating, Updating; REMOVED phases are SpecUpdating, Deleting, Deleted, VolumeExpanding, Reconfiguring, HorizontalScaling, VerticalScaling, VersionUpgrading, Rebooting, Stopping, Starting. 188 - status.phase valid values are Running, Stopped, Failed, Abnormal, Creating, Updating; REMOVED phases are ConditionsError, SpecUpdating, Deleting, Deleted, VolumeExpanding, Reconfiguring, HorizontalScaling, VerticalScaling, VersionUpgrading, Rebooting, Stopping, Starting. 189 - opsrequests.apps.kubeblocks.io API 190 - status.components.phase valid values are Running, Stopped, Failed, Abnormal, Creating, Updating; REMOVED phases are SpecUpdating, Deleting, Deleted, VolumeExpanding, Reconfiguring, HorizontalScaling, VerticalScaling, VersionUpgrading, Rebooting, Stopping, Starting, Exposing. 191 - status.phase added 'Creating' phase. 192 193 ## Upgrading to KubeBlocks $kubeblocks_version 194 - N/A if upgrading from 0.4 or older version.