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

     1  # KubeBlocks 0.6.0 (2023-08-18)
     2  
     3  We are happy to announce the official release of KubeBlocks 0.6.0! 🚀 🎉 🎈
     4  
     5  This version supports stream computing engines Kafka and Pulsar and supports MySQL read-write splitting, introduces an interactive parameter configuration method.
     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 Kafka v3.3 
    12    - Apache Kafka is an open-source distributed event storage and streaming computing system that provides high reliability, throughput, and low latency for data pipelines, streaming analysis, and data integration. It is widely used in log collection and metric monitoring scenarios. KubeBlocks supports Kafka v3.3, which announced that KRaft meets production requirements, providing better partition scalability and resilience, and saving the additional costs of ZooKeeper. In addition, KubeBlocks also supports pushing data changes from MySQL and PostgreSQL to Kafka, making it easier for users to further process and handle the data.
    13  - KubeBlocks supports Pulsar v2.11 
    14    - Apache Pulsar is an open-source distributed messaging and stream processing platform. It aims to provide scalability, high performance, and reliability to meet the needs of modern data processing and real-time messaging. KubeBlocks supports Apache Pulsar v2.11, and compared to traditional deployment methods, KubeBlocks can automate fault tolerance, scaling, and other day2 operations.
    15  - KubeBlocks supports MySQL read-write splitting 
    16    - Read-write splitting is designed to improve the read-only processing capability of a MySQL database cluster. All write queries are sent to the master node, while read-only queries that do not modify data are distributed to multiple slave nodes. Read-write splitting is used together with the MySQL Raft Group cluster, which automatically detects changes in the master node and uses the current master node of the cluster to achieve failover. Set `read_write_splitting_policy`  as read-write splitting at the global or session level, and the default policy is `LEAST_CURRENT_OPERATIONS`, which routes read-only queries to the slave node with the least active operations. The MySQL Raft Group cluster supports up to 5 nodes.
    17  
    18  ## Breaking changes
    19  
    20  - For KubeBlocks v0.6, newly created Redis and PG clusters need password to connect, while v0.5 used to allow password-free login
    21  - For KubeBlocks v0.6, the backup and restore function is updated greatly. You need to manually upgrade the 0.5 version cluster to 0.6 and update backupPolicy to use the new function.
    22  - For KubeBlocks v0.6, since password-free login function is not supported for Postgres cluster, when restoring cluster upgraded from v0.5, if the new restored cluster is in creating status for a long time, you can check the pod logs to see whether there is `password authentication failed` error, you can update password to fix this.
    23  
    24  
    25  ## Acknowledgements
    26  
    27  Thanks to everyone who made this release possible!
    28  
    29  ## What's New
    30  
    31  ### Pulsar
    32  
    33  - Cluster lifecycle management and operation management, supporting the creation of Pulsar clusters, cluster deletion, cluster restarting, horizontal scaling, vertical scaling, volume expanding, and parameter modifying.
    34  - For monitoring,  support performance monitoring of CPU, memory, network read/write traffic, and more for ZooKeeper, BookKeeper, and Broker.
    35  
    36  ### Kafka
    37  
    38  - Cluster lifecycle management and operation management, supporting cluster creation, deletion, horizontal scaling, vertical scaling, volume expanding, and modifying parameters.
    39      - Horizontal scaling: In combined mode, broker replicas support 1, 3, or 5 copies. In separated mode, brokers support 1 to 100 copies and Kafka controllers support 1, 3, or 5 copies.
    40  - For monitoring, supports performance monitoring of Broker's CPU, memory, network read/write traffic, etc.
    41  
    42  ### MySQL
    43  
    44  - MySQL RaftGroup Cluster supports Switchover
    45  - MySQL RaftGroup Cluster supports MySQL read-write splitting.
    46  - Data Recovery, Non-Destructive Recovery by Point-in-time(PITR). It's a beta feature.
    47  - Support proxy enable when creating cluster. (Beta)
    48      - The default specification of Vitess proxy can meet the vast majority of user scenarios. Vitess proxy automatically triggers resource increase or decrease based on changes in database nodes and node specifications, without manual operation. The CPU of Vitess proxy is 1/6 of the total number of CPU cores in the cluster nodes (three nodes), rounded up to 0.5c granularity, with a minimum of 0.5c and a maximum of 64c. The default number of replicas is 1, and currently, modifying the number of replicas is not supported
    49      - Connection Address: The proxy has a default connection address that supports read-write splitting. The expose command can generate VPC addresses and public network addresses for the proxy connection address.
    50      - Supports setting Vitess proxy read-write splitting policies.
    51  
    52  ### PostgreSQL
    53  
    54  - Support switchover for PG Replication Cluster
    55  - Built-in pgBouncer
    56  
    57  ### MongoDB
    58  
    59  - MongoDB replicaset supports switchover
    60  - Data recovery, non-destructive PITR (Beta)
    61  
    62  ### Data migration
    63  
    64  - Add `kbcli migration` command, including creating migration tasks, viewing migration task list, viewing migration task details, terminating migration tasks, viewing logs, viewing migration templates, and other functions. Supports full migration and incremental synchronization.
    65  - Support MySQL data migration from MySQL 8.0 to MySQL 8.0.
    66  - Support PostgreSQL data migration from PostgreSQL 14 to PostgreSQL 14.
    67  - Support MongoDB data migration from MongoDB5.X/6.0 to MongoDB 5.X/6.0.
    68  
    69  ### Compatibility
    70  
    71  - Support remote write to Prometheus server through Prometheus v2.41 - 2.45 compatibility testing
    72  - Adapt kbcli to package managers of Ubuntu and Amazon Linux 2
    73  - Adapt kbcli to Windows PowerShell and package managers
    74  - Support local environment running on Ubuntu and Amazon Linux 2 for kbcli playground
    75  - Support local environment running on Windows for kbcli playground
    76  
    77  ### Usability
    78  
    79  - kbcli supports users to modify KubeBlocks parameters with local editing tools on the operating system
    80  - kbcli supports the "fault-inject" extension for fault injection
    81  - kbcli supports the "report" command to package cluster context information into a compressed file for problem troubleshooting assistance
    82  - kbcli supports interactive editing of configuration information for DB clusters. For cluster create, support --edit to interactively edit the yaml, and show the cluster summary before create.
    83  - Support canceling Hscale/Vscale OpsRequest that are running (Beta)
    84  - Add kbcli playground Grafana overview page
    85  - Kbcli alert can set email server
    86  - Support initializing the creation of databases and users
    87  - Specify a configuration file for initialization settings when installing KubeBlocks
    88  - Disk full lock for MySQL, PostgreSQL, MongoDB: When the database storage space is about to be full (disk usage is more than 90%), set the database to a read-only state.
    89  
    90  ### Backup and Restore
    91  
    92  - The backup storage repository (backupRepo) refers to the target path where backup files are stored. KubeBlocks supports public cloud object storage and S3-compatible object storage.
    93  - Support modifying cluster configuration when restoring a new cluster
    94  - Add "describe-backup"  command to view backup details
    95  
    96  ### Observability
    97  
    98  - Support integration with external monitoring systems include Prometheus, VictoriaMetrics, and AMP. Cluster performance monitoring metrics are output to the target monitoring system through remote write.
    99  - Real-time dumping of operation logs for K8s/KubeBlocks clusters to object storage, divided by time and size, and providing read-only addresses
   100  - Real-time dumping of error logs for K8s/KubeBlocks clusters to object storage, divided by time and size, and providing read-only addresses
   101  
   102  ### Bug Fixes
   103  
   104  - There is a quota problem, no default resource limits are set for containers such as metrics. ([#2738](https://github.com/apecloud/kubeblocks/pull/2738), @nashtsai)
   105  - cli ops command output lost ops name ([#2904](https://github.com/apecloud/kubeblocks/pull/2904), @ldming)
   106  - probe event lost ([#3172](https://github.com/apecloud/kubeblocks/pull/3172), @xuriwuyun)
   107  - update probe internal module ([#3414](https://github.com/apecloud/kubeblocks/pull/3414), @xuriwuyun)
   108  - cli playground init cluster without sa, role and rolebinding ([#3428](https://github.com/apecloud/kubeblocks/pull/3428), @ldming)
   109  - cli created cluster with wrong sa name ([#3500](https://github.com/apecloud/kubeblocks/pull/3500), @ldming)
   110  - The cluster status and pod status are inconsistent. clusters can terminate faster than pods. ([#3558](https://github.com/apecloud/kubeblocks/pull/3558), @lynnleelhl)
   111  - enable consensus_set controller by feature gate ([#3616](https://github.com/apecloud/kubeblocks/pull/3616), @free6om)
   112  - licensing description ([#3664](https://github.com/apecloud/kubeblocks/pull/3664), @free6om)
   113  - change preflight checks rule for low spec machine in test case ([#3722](https://github.com/apecloud/kubeblocks/pull/3722), @yangmeilly)
   114  - redis prohibits passwordless access by default ([#3726](https://github.com/apecloud/kubeblocks/pull/3726),@Y-Rookie)
   115  - mongodb post start script ([#3956](https://github.com/apecloud/kubeblocks/pull/3956), @xuriwuyun)
   116  - mongodb pod terminating takes too long time ([#3971](https://github.com/apecloud/kubeblocks/pull/3971), @xuriwuyun)
   117  - mongodb restore problem, reset password ([#3987](https://github.com/apecloud/kubeblocks/pull/3987), @xuriwuyun)
   118  - MongoDB does not receive signals when terminating pods. ([#3990](https://github.com/apecloud/kubeblocks/pull/3990), @xuriwuyun)
   119  - add more judgements for mongodb replset initialization ([#4034](https://github.com/apecloud/kubeblocks/pull/4034), @xuriwuyun)
   120  - parallel_transformer concurrent map writes ([#4079](https://github.com/apecloud/kubeblocks/pull/4079), @free6om)
   121  - probe mysql binding test fail ([#4082](https://github.com/apecloud/kubeblocks/pull/4082), @xuriwuyun)
   122  - kbcli set componentserviceaccontName ([#4276](https://github.com/apecloud/kubeblocks/pull/4276), @xuriwuyun)
   123  - create a default sa if probes is required and serviceaccountname not set ([#4280](https://github.com/apecloud/kubeblocks/pull/4280), @xuriwuyun)
   124  - The processing logic of WeSQL scaling is not stable enough, and downsizing can easily lead to inconsistent kernel and cluster states. ([#4372](https://github.com/apecloud/kubeblocks/pull/4372), [#4293](https://github.com/apecloud/kubeblocks/pull/4293), [#3202](https://github.com/apecloud/kubeblocks/pull/3202), @leon-inf)
   125  - replicationSet cluster phase is abnormal during h/v-scale operations. ([#4377](https://github.com/apecloud/kubeblocks/pull/4377), @Y-Rookie)
   126  - PVCs are occasionally not deleted after scale-in. ([#4378](https://github.com/apecloud/kubeblocks/pull/4378), @lynnleelhl)
   127  - kbcli cluster connect show example error 4403 ([#4404](https://github.com/apecloud/kubeblocks/pull/4404), @fengluodb)
   128  - if cluster backup field is nil, do nothing ([#4435](https://github.com/apecloud/kubeblocks/pull/4435), @ldming)
   129  - failed to enable kafka addon ([#4474](https://github.com/apecloud/kubeblocks/pull/4474), @ldming)
   130  - unstable data protection test case ([#4497](https://github.com/apecloud/kubeblocks/pull/4497), @ldming)
   131  - shutdown redis-server when create replication relationship failed and update postgresql start scripts ([#4568](https://github.com/apecloud/kubeblocks/pull/4568), @Y-Rookie)
   132  - sa creation problem for template ([#4626](https://github.com/apecloud/kubeblocks/pull/4626), @xuriwuyun)
   133  - mongodb restore problem ([#4690](https://github.com/apecloud/kubeblocks/pull/4690), @xuriwuyun)
   134  
   135  ## API changes
   136  
   137  - New APIs:
   138      - backuprepos.dataprotection.kubeblocks.io
   139      - replicatedstatemachines.workloads.kubeblocks.io
   140      - storageproviders.storage.kubeblocks.io
   141  - New API attributes:
   142      - clusters.apps.kubeblocks.io API
   143          - spec.availabilityPolicy
   144          - spec.backup
   145          - spec.tenancy
   146          - spec.replicas
   147          - spec.resources
   148          - spec.storage
   149          - spec.mode
   150          - spec.parameters
   151          - spec.monitor
   152          - spec.network
   153          - spec.componentSpecs.noCreatePDB
   154      - clusterdefinitions.apps.kubeblocks.io API
   155          - spec.componentDefs.componentDefRef
   156          - spec.componentDefs.configSpecs.asEnvfrom
   157          - spec.componentDefs.configSpecs.lazyRenderedConfigSpec
   158          - spec.componentDefs.statelessSpec
   159          - spec.componentDefs.statefulSpec
   160          - spec.componentDefs.switchoverSpec
   161          - spec.componentDefs.volumeProtectionSpec
   162          - spec.componentDefs.systemAccounts.accounts.provisionPolicy.statements.update
   163          - spec.componentDefs.consensusSpec.LLPodManagementPolicy
   164          - spec.componentDefs.consensusSpec.LLUpdateStrategy
   165      - clusterversions.apps.kubeblocks.io API
   166          - spec.componentVersions.configSpecs.asEnvFrom
   167          - spec.componentVersions.configSpecs.lazyRenderedConfigSpec
   168          - spec.componentVersions.systemAccountSpec
   169          - spec.componentVersions.switchoverSpec
   170      - configconstraint.apps.kubeblocks.io API
   171          - spec.toolsImageSpec
   172          - spec.scriptConfigs
   173          - spec.downwardAPIOptions
   174      - opsrequests.apps.kubeblocks.io API
   175          - spec.cancel
   176          - spec.switchover
   177          - spec.ttlSecondsBeforeAbort
   178          - spec.scriptSpec
   179          - status.components.reason
   180          - status.components.message
   181          - spec.verticalScaling.classDefRef
   182          - status.lastConfiguration.components.classDefRef
   183      - backuppolicytemplates.apps.kubeblocks.io API
   184          - spec.backupPolicies.schedule.StartingDeadlineMinutes
   185          - spec.backupPolicies.[snapshot|datafile|logfile].backupStatusUpdates.useTargetPodServiceAccount
   186      - backups.dataprotection.kubeblocks.io API
   187          - status.sourceCluster
   188          - status.availableReplicas
   189          - status.manifests.backupTool.VolumeName
   190      - backuppolicies.dataprotection.kubeblocks.io API
   191          - spec.[logfile|datafile].backupRepoName
   192          - spec.schedule.StartingDeadlineMinutes
   193          - spec.[snapshot|datafile|logfile].backupStatusUpdates.useTargetPodServiceAccount
   194      - backuptools.dataprotection.kubeblocks.io API
   195          - spec.logical.podScope
   196      - addons.extensions.kubeblocks.io API
   197          - spec.cliPlugins
   198          - spec.helm.chartsImage
   199          - spec.helm.chartsPathInImage
   200  - Modified API attributes:
   201      - clusters.apps.kubeblocks.io API
   202          - spec.clusterDefinitionRef add validation MaxLength=63
   203          - spec.clusterVersionRef add validation MaxLength=63
   204          - spec.componentSpecs.name update validation MaxLength: `15` -> `22`
   205          - spec.componentSpecs.name update validation Pattern: `^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$` -> `^[a-z]([a-z0-9\-]*[a-z0-9])?$`
   206          - spec.componentSpecs.componentDefRef update validation MaxLength: `63` -> `22`
   207          - spec.componentSpecs.componentDefRef update validation Pattern: `^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$` -> `^[a-z]([a-z0-9\-]*[a-z0-9])?$`
   208          - spec.componentSpecs.classDefRef.name add validation MaxLength=63
   209          - spec.componentSpecs.classDefRef.name add validation Pattern=`^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$`
   210          - spec.componentSpecs.switchPolicy default value: `MaximumAvailability -> Noop`,  enum values`{MaximumAvailability, MaximumDataProtection, Noop} -> {Noop}`
   211      - clusterdefinitions.apps.kubeblocks.io API
   212          - spec.componentDefs.name update validation MaxLength: `18` -> `22`
   213          - spec.componentDefs.name update validation Pattern:  `^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$` -> `^[a-z]([a-z0-9\-]*[a-z0-9])?$`
   214          - spec.componentDefs.scriptSpecs.namespace add validation Pattern=`^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$`
   215          - spec.componentDefs.scriptSpecs.volumeName update validation MaxLength:  `32` -> `63`
   216          - spec.componentDefs.scriptSpecs.volumeName add validation Pattern=`^[a-z]([a-z0-9\-]*[a-z0-9])?$`
   217          - spec.componentDefs.replicationSpec update type:  `ReplicationSpec` -> `ReplicationSetSpec`
   218          - spec.componentDefs.horizontalScalePolicy.type: delete Snapshot type and add CloneVolume type
   219      - clusterversions.apps.kubeblocks.io API
   220          - spec.componentVersions.configSpecs.namespace  add validation Pattern=`^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$`
   221          - spec.componentVersions.configSpecs.volumeName update validation MaxLength:  `32` -> `63`
   222          - spec.componentVersions.configSpecs.volumeName add validation Pattern=`^[a-z]([a-z0-9\-]*[a-z0-9])?$`
   223      - componentclassdefinition.apps.kubeblocks.io API
   224          - status.classes update type `ComponentClassInstance` -> `ComponentClass`
   225      - componentresourceconstraint.apps.kubeblocks.io API
   226          - spec
   227      - configconstraint.apps.kubeblocks.io API
   228          - spec.reloadOptions.unixSignalTrigger.processName delete validation Pattern=`^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$`
   229          - spec.reloadOptions.shellTrigger
   230          - spec.reloadOptions.tplScriptTrigger.namespace add validation Pattern=`^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$`
   231          - spec.formatterConfig.format add type props-plus
   232      - opsrequests.apps.kubeblocks.io API
   233          - spec.clusterRef add validation XValidation:rule="self == oldSelf"
   234          - spec.type add type Switchover and DataScript
   235          - spec.type add validation XValidation:rule="self == oldSelf"
   236          - spec.upgrade add validation XValidation:rule="self == oldSelf"
   237          - spec.horizontalScaling add validation XValidation:rule="self == oldSelf"
   238          - spec.restart add validation XValidation:rule="self == oldSelf"
   239          - spec.reconfigure add validation XValidation:rule="self == oldSelf"
   240          - spec.expose add validation XValidation:rule="self == oldSelf"
   241          - spec.restoreFrom add validation XValidation:rule="self == oldSelf"
   242          - status.phase add type Cancelling and Cancelled
   243      - backuppolicytemplates.apps.kubeblocks.io API
   244          - spec.backupPolicies.componentDefRef update validation MaxLength:  `63` -> `22`
   245          - spec.backupPolicies.componentDefRef  update validation Pattern: `^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$` -> `^[a-z]([a-z0-9\-]*[a-z0-9])?$`
   246          - spec.backupPolicies.[snapshot|datafile|logfile].backupStatusUpdates.updateStage update validation: optional -> required
   247      - backups.dataprotection.kubeblocks.io API
   248          - status.phase add type Running and Deleting
   249          - status.manifests.backupTool rename `checkSum` -> `checksum` and `CheckPoint` -> `checkpoint`
   250      - backuppolicies.dataprotection.kubeblocks.io API
   251          - spec.[logfile|datafile].persistentVolumeClaim update validation: `required` -> `optional`
   252          - spec.[logfile|datafile].persistentVolumeClaim.name update validation: `required` -> `optional`
   253          - spec.[logfile|datafile].persistentVolumeClaim.storageClassName add validation Pattern:`^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$`
   254          - spec.[logfile|datafile].persistentVolumeClaim.persistentVolumeConfigMap.name add validation Pattern: `^[a-z0-9]([a-z0-9\.\-]*[a-z0-9])?$`
   255          - spec.[logfile|datafile].persistentVolumeClaim.persistentVolumeConfigMap.namespace add validation Pattern: `^[a-z0-9]([a-z0-9\-]*[a-z0-9])?$`
   256      - backuptools.dataprotection.kubeblocks.io API
   257          - spec.deployKind update value `{job,daemon}` -> `{job, statefulSet}`
   258  - Deleted API attributes:
   259      - clusters.apps.kubeblocks.io API
   260          - spec.componentSpecs.primaryIndex
   261      - clusterdefinitions.apps.kubeblocks.io API
   262          - spec.componentDefs.maxUnavailable
   263      - clusterversions.apps.kubeblocks.io API
   264          - spec.componentVersions.clientImage
   265      - componentclassdefinition.apps.kubeblocks.io API
   266          - spec.groups.resourceConstraintRef
   267      - opsrequests.apps.kubeblocks.io API
   268          - spec.verticalScaling.class
   269          - status.lastConfiguration.components.class