github.com/1aal/kubeblocks@v0.0.0-20231107070852-e1c03e598921/docs/release_notes/v0.5.0/v0.5.0.md (about)

     1  # KubeBlocks 0.5.0 (2023-05-18)
     2  
     3  We're happy to announce the release of KubeBlocks 0.5.0! 🚀 🎉 🎈
     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/v0.5.0/docs/user_docs/quick_start_guide.md) page and get a quick start with KubeBlocks.
    47  
    48  > **Note: This release contains a few [breaking changes](#breaking-changes).**
    49  
    50  See [this](#upgrading-to-kubeblocks-0.5.0) section to upgrade KubeBlocks to version 0.5.0.
    51  
    52  ## Acknowledgements
    53  
    54  Thanks to everyone who made this release possible!
    55  
    56  @1aal, @free6om, @heng4fun, @iziang, @kizuna-lek, @ldming, @nashtsai, @nayutah, @sophon-zt, @TalktoCrystal, @xuriwuyun, @Y-Rookie, @yangmeilly, @ZhaoDiankui
    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  ### Improvements
    90  - add support of Redis cluster ([#1886](https://github.com/apecloud/kubeblocks/pull/1886), @heng4fun)
    91  - add support of ApeCloud MySQL-Scale (Vitess) cluster ([#2116](https://github.com/apecloud/kubeblocks/pull/2116), @ZhaoDiankui)
    92  - add support of MongoDB cluster ([#2182](https://github.com/apecloud/kubeblocks/pull/2182), [#2682](https://github.com/apecloud/kubeblocks/pull/2682), @xuriwuyun)
    93  - kbcli playground add supports of more cloud providers ([#2241](https://github.com/apecloud/kubeblocks/pull/2241), @ldming)
    94  - add support of standalone Milvus DB (VectorDB) ([#2310](https://github.com/apecloud/kubeblocks/pull/2310), @nayutah)
    95  - PostgreSQL add support of pgvector extension ([#2406](https://github.com/apecloud/kubeblocks/pull/2406), @ldming)
    96  - complete cleanup of KubeBlocks for playground destroy ([#2457](https://github.com/apecloud/kubeblocks/pull/2457), @ldming)
    97  - Addon resources add failed pod logs to status condition errors and events ([#3058](https://github.com/apecloud/kubeblocks/pull/3058), @nashtsai)
    98  
    99  ### Bug Fixes
   100  - cli playground use default kubeconfig file ([#2150](https://github.com/apecloud/kubeblocks/pull/2150), @ldming)
   101  - update running check ([#2174](https://github.com/apecloud/kubeblocks/pull/2174), @xuriwuyun)
   102  - set cluster default storage size to 20Gi ([#2254](https://github.com/apecloud/kubeblocks/pull/2254), @ldming)
   103  - cli kubeblocks upgrade command output dashboard info ([#2290](https://github.com/apecloud/kubeblocks/pull/2290), @ldming)
   104  - set default storage size to 10Gi for TKE ([#2317](https://github.com/apecloud/kubeblocks/pull/2317), @ldming)
   105  - cli playground pull latest cloud provider repo ([#2373](https://github.com/apecloud/kubeblocks/pull/2373), @ldming)
   106  - cli playground does not output error message when kubernetes cluster is not ready ([#2391](https://github.com/apecloud/kubeblocks/pull/2391), @ldming)
   107  - github action uploads kbcli asset for windows and add powershell script to install on windows ([#2449](https://github.com/apecloud/kubeblocks/pull/2449), @1aal)
   108  - trim single quotes for the parameters value in the pg config file (#2523) ([#2527](https://github.com/apecloud/kubeblocks/pull/2527), @sophon-zt)
   109  - config change does not take effect (#2511) ([#2543](https://github.com/apecloud/kubeblocks/pull/2543), @sophon-zt)
   110  - KB_MYSQL_FOLLOWERS env inconsistent with cluster status after scale-in ([#2565](https://github.com/apecloud/kubeblocks/pull/2565), @free6om)
   111  - BackupPolicyTemplate name of mysql-scale error ([#2583](https://github.com/apecloud/kubeblocks/pull/2583), @ZhaoDiankui)
   112  - probe pg checkrole ([#2638](https://github.com/apecloud/kubeblocks/pull/2638), @xuriwuyun)
   113  - adjust vtgate healthcheck options ([#2650](https://github.com/apecloud/kubeblocks/pull/2650), @ZhaoDiankui)
   114  - add secure sql type ([#2656](https://github.com/apecloud/kubeblocks/pull/2656), @kizuna-lek)
   115  - take cluster cmd 'kbcli cluster update --enabled-all-logs' effect ([#2663](https://github.com/apecloud/kubeblocks/pull/2663), @yangmeilly)
   116  - h-scale pvc unexpected deleting ([#2680](https://github.com/apecloud/kubeblocks/pull/2680), @free6om)
   117  - support mongodb backup ([#2683](https://github.com/apecloud/kubeblocks/pull/2683), @xuriwuyun)
   118  - replicationSet cluster stop failed fix ([#2691](https://github.com/apecloud/kubeblocks/pull/2691), @Y-Rookie)
   119  - h-scale pvc unexpected deleting (#2680) ([#2730](https://github.com/apecloud/kubeblocks/pull/2730), @free6om)
   120  - mongodb support addon ([#2758](https://github.com/apecloud/kubeblocks/pull/2758), @xuriwuyun)
   121  - mongodb support addon (#2758) ([#2764](https://github.com/apecloud/kubeblocks/pull/2764), @xuriwuyun)
   122  - h-scale volumesnapshot unexpected deleted ([#2789](https://github.com/apecloud/kubeblocks/pull/2789), @free6om)
   123  - set driver for bench config ([#2804](https://github.com/apecloud/kubeblocks/pull/2804), @ldming)
   124  - h-scale pvc pending with WaitForFirstConsumer ([#2836](https://github.com/apecloud/kubeblocks/pull/2836), @free6om)
   125  - cli list-instances throw error when node is not found ([#2936](https://github.com/apecloud/kubeblocks/pull/2936), @ldming)
   126  - wrong viper setting in ut ([#2937](https://github.com/apecloud/kubeblocks/pull/2937), @free6om)
   127  - mysql cluster execute ops VolumeExpansion Failed ([#2950](https://github.com/apecloud/kubeblocks/pull/2950), @free6om)
   128  - cluster always updating after termination-policy updated ([#2956](https://github.com/apecloud/kubeblocks/pull/2956), @free6om)
   129  - h-scale too many backup error warning events ([#2964](https://github.com/apecloud/kubeblocks/pull/2964), @free6om)
   130  - some command examples can not be executed ([#3034](https://github.com/apecloud/kubeblocks/pull/3034), @ldming)
   131  - adjust dependency resource deletion order when cluster deletion ([#3065](https://github.com/apecloud/kubeblocks/pull/3065), @Y-Rookie)
   132  - mongodb restart alert title is incorrect (#3171) ([#3173](https://github.com/apecloud/kubeblocks/pull/3173), @yangmeilly)
   133  - observed generation wrong patched ([#3184](https://github.com/apecloud/kubeblocks/pull/3184), @free6om)
   134  - cli playground failed ([#3240](https://github.com/apecloud/kubeblocks/pull/3240), @ldming)
   135  
   136  ### Miscellaneous
   137  - lifecycle dag ([#1571](https://github.com/apecloud/kubeblocks/pull/1571), @free6om)
   138  - add cluster default webhook for `PrimaryIndex` ([#1677](https://github.com/apecloud/kubeblocks/pull/1677), @heng4fun)
   139  - refactor labels usage ([#1696](https://github.com/apecloud/kubeblocks/pull/1696), @heng4fun)
   140  - update probe mysql tests ([#1808](https://github.com/apecloud/kubeblocks/pull/1808), @xuriwuyun)
   141  - update pg probe url ([#2115](https://github.com/apecloud/kubeblocks/pull/2115), @xuriwuyun)
   142  - cli support to output addon install progress ([#2132](https://github.com/apecloud/kubeblocks/pull/2132), @ldming)
   143  - rewrite overview ([#2266](https://github.com/apecloud/kubeblocks/pull/2266), @TalktoCrystal)
   144  - move loadbalancer sub-module to a separate repo https ([#2354](https://github.com/apecloud/kubeblocks/pull/2354), @iziang)
   145  - use gitlab helm repo if failed to get ip location ([#2421](https://github.com/apecloud/kubeblocks/pull/2421), @ldming)
   146  - update redis role probe ([#2554](https://github.com/apecloud/kubeblocks/pull/2554), @xuriwuyun)
   147  - update mongodb helm ([#2575](https://github.com/apecloud/kubeblocks/pull/2575), @xuriwuyun)
   148  - kbcli support mongodb ([#2580](https://github.com/apecloud/kubeblocks/pull/2580), @xuriwuyun)
   149  - support xengine for apecloud-mysql ([#2608](https://github.com/apecloud/kubeblocks/pull/2608), @sophon-zt)
   150  - support postgresql 14.7 instead of 15.2 ([#2613](https://github.com/apecloud/kubeblocks/pull/2613), @ldming)
   151  - improve cluster create examples ([#2641](https://github.com/apecloud/kubeblocks/pull/2641), @ldming)
   152  - ut for nil backup policy ([#2654](https://github.com/apecloud/kubeblocks/pull/2654), @free6om)
   153  - sqlchannel add test ([#2694](https://github.com/apecloud/kubeblocks/pull/2694), @xuriwuyun)
   154  - configure does not take effect ([#2735](https://github.com/apecloud/kubeblocks/pull/2735), @sophon-zt)
   155  - remove default postgresql metrics service and optimize redis sentinel configuration ([#2741](https://github.com/apecloud/kubeblocks/pull/2741), @Y-Rookie)
   156  - cli set default cluster value based on workload and component type ([#2743](https://github.com/apecloud/kubeblocks/pull/2743), @ldming)
   157  - disable hook when uninstall KubeBlocks ([#2795](https://github.com/apecloud/kubeblocks/pull/2795), @ldming)
   158  - refine kbcli for mongodb ([#2834](https://github.com/apecloud/kubeblocks/pull/2834), @xuriwuyun)
   159  - refine kbcli for mongodb (#2834) ([#2841](https://github.com/apecloud/kubeblocks/pull/2841), @xuriwuyun)
   160  - improve cli cluster describe ([#2860](https://github.com/apecloud/kubeblocks/pull/2860), @ldming)
   161  - refine kbcli for mongodb ([#2927](https://github.com/apecloud/kubeblocks/pull/2927), @xuriwuyun)
   162  - cli supports to create additional resource for postgresql ([#3009](https://github.com/apecloud/kubeblocks/pull/3009), @ldming)
   163  - add kbcli connect example support for mongodb ([#3023](https://github.com/apecloud/kubeblocks/pull/3023), @xuriwuyun)
   164  - improve kubeblocks install and uninstall command ([#3053](https://github.com/apecloud/kubeblocks/pull/3053), @ldming)
   165  - local playground with one replica ([#3255](https://github.com/apecloud/kubeblocks/pull/3255), @ldming)
   166  - improve ApeCloud mysql description ([#3292](https://github.com/apecloud/kubeblocks/pull/3292), @ldming)
   167  
   168  ### Easy of Use
   169  - `kbcli playground` supports one-command launching on running environments of Alibaba Cloud, Tencent Cloud, and GCP to experience complete KubeBlocks functionality
   170  - kbcli supports creating clusters by entering CPU, memory, or class type
   171  - kbcli supports tagging related resources of cluster
   172  - kbcli is compatible with macOS package manager `brew`
   173  - kbcli supports `preflight` command to check whether the environment meets the requirements for installing KubeBlocks
   174  - kbcli adds object storage addon for storing full file backups, logs, and other data
   175  - `kbcli install` runs preflight to check whether the environment meets the requirements, including node taints, storage class, and other check rules
   176  - kbcli addon adds timeout parameter, printing exception information when enable fails
   177  - Addon inherits the affinity and tolerations configuration of KubeBlocks
   178  - `kbcli uninstall` prompts information to delete backup files, printing log information if the deletion fails
   179  - ClusterDefinition API `spec.connectionCredential` add following built-in variables:
   180      - 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
   181  
   182  #### Compatibility
   183  - Compatible with AWS EKS v1.22/v1.23/v1.24/v1.25
   184  - Compatible with Alibaba Cloud ACK v1.22/v1.24
   185  - Compatible with Tencent Cloud TKE standard cluster v1.22/v1.24
   186  - Compatible with GCP GKE standard cluster v1.24/v1.25
   187  
   188  #### Stability
   189  - KubeBlocks limits the combination of CPU and memory to avoid unreasonable configurations that reduce resource utilization or system stability
   190  
   191  #### Performance
   192  - 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
   193  
   194  ### API changes
   195  - New APIs:
   196      - backuppolicytemplates.apps.kubeblocks.io
   197      - componentclassdefinitions.apps.kubeblocks.io
   198      - componentresourceconstraints.apps.kubeblocks.io
   199  
   200  - Deleted APIs:
   201      - backuppolicytemplates.dataprotection.kubeblocks.io
   202  
   203  - New API attributes:
   204      - clusterdefinitions.apps.kubeblocks.io API
   205          - spec.type
   206          - spec.componentDefs.customLabelSpecs
   207      - clusterversions.apps.kubeblocks.io API
   208          - spec.componentVersions.clientImage (EXPERIMENTAL)
   209      - clusters.apps.kubeblocks.io API
   210          - spec.componentSpecs.classDefRef
   211          - spec.componentSpecs.serviceAccountName
   212      - configconstraints.apps.kubeblocks.io API
   213          - spec.reloadOptions.shellTrigger.namespace
   214          - spec.reloadOptions.shellTrigger.scriptConfigMapRef
   215          - spec.reloadOptions.tplScriptTrigger.sync
   216          - spec.selector
   217      - opsrequests.apps.kubeblocks.io API
   218          - spec.restoreFrom
   219          - spec.verticalScaling.class
   220          - status.reconfiguringStatus.configurationStatus.updatePolicy
   221      - backuppolicies.dataprotection.kubeblocks.io API
   222          - spec.full
   223          - spec.logfile
   224          - spec.retention
   225      - backups.dataprotection.kubeblocks.io
   226          - status.manifests
   227      - backuptools.dataprotection.kubeblocks.io
   228          - spec.type
   229  
   230  - Renamed API attributes:
   231      - clusterdefinitions.apps.kubeblocks.io API
   232          - spec.componentDefs.horizontalScalePolicy.backupTemplateSelector -> spec.componentDefs.horizontalScalePolicy.backupPolicyTemplateName
   233          - spec.componentDefs.probe.roleChangedProbe -> spec.componentDefs.probe.roleProbe
   234      - backuppolicies.dataprotection.kubeblocks.io API
   235          - spec.full
   236      - restorejobs.dataprotection.kubeblocks.io API
   237          - spec.target.secret.passwordKeyword -> spec.target.secret.passwordKey
   238          - spec.target.secret.userKeyword -> spec.target.secret.usernameKey
   239      - addons.extensions.kubeblocks.io API
   240          - spec.helm.installValues.secretsRefs -> spec.helm.installValues.secretRefs
   241  
   242  - Deleted API attributes:
   243      - opsrequests.apps.kubeblocks.io API
   244          - status.observedGeneration
   245      - backuppolicies.dataprotection.kubeblocks.io API
   246          - spec.backupPolicyTemplateName
   247          - spec.backupToolName
   248          - spec.backupType
   249          - spec.backupsHistoryLimit
   250          - spec.hooks
   251          - spec.incremental
   252      - backups.dataprotection.kubeblocks.io API
   253          - spec.ttl
   254          - status.CheckPoint
   255          - status.checkSum
   256      - addons.extensions.kubeblocks.io API
   257          - spec.helm.valuesMapping.jsonMap.additionalProperties
   258          - spec.helm.valuesMapping.valueMap.additionalProperties
   259          - spec.helm.valuesMapping.extras.jsonMap.additionalProperties
   260          - spec.helm.valuesMapping.extras.valueMap.additionalProperties
   261  
   262  - Updates API Status info:
   263      - clusters.apps.kubeblocks.io API
   264          - 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.
   265          - 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.
   266      - opsrequests.apps.kubeblocks.io API
   267          - 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.
   268          - status.phase added 'Creating' phase.
   269  
   270  ## Upgrading to KubeBlocks 0.5.0
   271  - N/A if upgrading from 0.4 or older version.