Repository: apecloud/kubeblocks

Issue:
[Improvement] update kb docs and examples


Hints from issue comments:

Solution patch:
diff --git a/.gitignore b/.gitignore
index 68760cede..b6ad2a885 100644
--- a/.gitignore
+++ b/.gitignore
@@ -71,4 +71,8 @@ pkg/cli/cluster/charts/
 .mirrord
 
 # ignore client-sdk-gen temp directory
-hack/github.com/
\ No newline at end of file
+hack/github.com/
+
+
+# ignore kubeblocks-docs directory
+docs/kubeblocks-docs
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..48d5af098
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "docs/kubeblocks-docs"]
+	path = docs/kubeblocks-docs
+	url = https://github.com/apecloud/kubeblocks-docs.git
diff --git a/Makefile b/Makefile
index f42b6d663..b79af01dc 100644
--- a/Makefile
+++ b/Makefile
@@ -439,6 +439,10 @@ else
 KUBECTL=$(shell which kubectl)
 endif
 
+.PHONY: sync-examples
+sync-examples: ## Sync examples from kubeblocks-addons.
+	@./hack/sync-examples.sh
+
 # go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist
 # $1 - target path with name of binary (ideally with version)
 # $2 - package url which can be installed
diff --git a/docs/developer_docs/api-reference/_category_.yml b/docs/developer_docs/api-reference/_category_.yml
deleted file mode 100644
index f49b2aa79..000000000
--- a/docs/developer_docs/api-reference/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: API Reference
-collapsible: true
-collapsed: true
diff --git a/docs/developer_docs/external-component/_category_.yml b/docs/developer_docs/external-component/_category_.yml
deleted file mode 100644
index 25c8f2771..000000000
--- a/docs/developer_docs/external-component/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: External Component
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/developer_docs/external-component/reference-external-component.md b/docs/developer_docs/external-component/reference-external-component.md
deleted file mode 100644
index 46f0c8951..000000000
--- a/docs/developer_docs/external-component/reference-external-component.md
+++ /dev/null
@@ -1,279 +0,0 @@
----
-title: Reference external component
-description: KubeBlocks supports referencing the external component to manage cluster flexibly.
-keywords: [external component]
-sidebar_position: 1
-sidebar_label: Reference external component
----
-
-# Reference an external component
-
-:::note
-
-The external component function is an alpha version and there might be major revisions and changes in the future.
-
-:::
-
-## What is referencing an external component?
-
-Some database clusters rely on metadata storage for distributed coordination and dynamic configuration. However, as the number of database clusters increases, the metadata storage itself can consume a significant amount of resources. Examples of such components include ZooKeeper in Pulsar. To reduce overhead, you can reference the same external component in multiple database clusters now.
-
-Referencing an external component in KubeBlocks means referencing an external or KubeBlocks-based component in a declarative manner in a KubeBlocks cluster.
-
-As its definition indicates, referencing the external component can be divided into two types:
-
-* Referencing an external component
-
-  This external component can be Kubernetes-based or non-Kubernetes. When referencing this component, first create a ServiceDescriptor CR (custom resources) which defines both the service and resources for referencing.
-
-* Referencing a KubeBlocks-based component
-
-  This type of component is based on KubeBlocks clusters. When referencing this component, just fill in the referenced Cluster and no ServiceDescriptor is required.
-
-## Examples of referencing an external component
-
-The following examples show how a Pulsar cluster created by the KubeBlocks add-on references ZooKeeper as an external component. The instructions below include two parts:
-
-1. [Create an external component reference declaration](#create-an-external-component-reference-declaration) when installing KubeBlocks or enabling an add-on.
-2. [Define the mapping relation of the external component](#define-the-mapping-relation-of-the-external-component) when creating a cluster.
-
-A KubeBlocks Pulsar cluster is composed of components including proxy, broker, bookies, and ZooKeeper and broker and bookies rely on ZooKeeper to provide metadata storage and interaction.
-
-:::note
-
-For more information about the KubeBlocks Pulsar cluster, refer to [KubeBlocks for Pulsar](./../../user_docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kubeblocks.md).
-
-:::
-
-### Create an external component reference declaration
-
-1. Declare the referenced component in `componentDefs` in the ClusterDefinition.
-
-    In this example, the broker and bookies components of the Pulsar cluster rely on the ZooKeeper component, so you need to add the declaration of ZooKeeper in the `componentDefs` of broker and bookies.
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: ClusterDefinition
-    metadata:
-      name: pulsar
-      labels:
-        {{- include "pulsar.labels" . | nindent 4 }}
-    spec:
-      type: pulsar
-      # Here omit other definitions
-      componentDefs:
-        - name: pulsar-broker
-          workloadType: Stateful
-          characterType: pulsar-broker
-          serviceRefDeclarations:
-          - name: pulsarZookeeper
-            serviceRefDeclarationSpecs:
-              - serviceKind: zookeeper
-                serviceVersion: ^3.8.\d{1,2}$
-          # Here omit other definitions
-        - name: bookies
-          workloadType: Stateful
-          characterType: bookkeeper
-          statefulSpec:
-            updateStrategy: BestEffortParallel
-          serviceRefDeclarations:
-          - name: pulsarZookeeper
-            serviceRefDeclarationSpecs:
-            - serviceKind: zookeeper
-              serviceVersion: ^3.8.\d{1,2}$
-        # Here omit other component definitions
-    ```
-
-    `serviceRefDeclarations` above describe the external component referencing declarations, in which both `pulsar-broker` and `bookies` declare a component named `pulsarZookeeper`. It means `pulsar-broker` and `bookies` require a component whose name is `pulsarZookeeper`, `serviceKind` is `zookeeper`, and `serviceVersion` matches the `^3.8.\d{1,2}$` regular expression.
-
-    This `pulsarZookeeper` reference declaration will be mapped to your specified ZooKeeper cluster when you create a Pulsar cluster.
-
-2. Define the usage of this ZooKeeper component in the component provider.
-
-    After the external component is declared in the ClusterDefinition, you can use the pre-defined `pulsarZookeeper` in any definition in the ClusterDefinition.
-
-    For example, when starting the pulsar-broker and bookies components, upload the address of the ZooKeeper component to the configuration of pulsar-broker and bookies. Then you can reference this ZooKeeper component when rendering the pulsar-broker and bookies configuration templates. Below is an example of generating zookeeperServers in the `broker-env.tpl`.
-
-    :::note
-
-    From the above declaration, ClusterDefinition only knows this is a ZooKeeper component but has no idea of which ZooKeeper is provided by whom. Therefore, you need to map this ZooKeeper component when creating a cluster. Follow the instructions in the next section.
-
-    :::
-
-    ```yaml
-    {{- $clusterName := $.cluster.metadata.name }}
-    {{- $namespace := $.cluster.metadata.namespace }}
-    {{- $pulsar_zk_from_service_ref := fromJson "{}" }}
-    {{- $pulsar_zk_from_component := fromJson "{}" }}
-
-    {{- if index $.component "serviceReferences" }}
-      {{- range $i, $e := $.component.serviceReferences }}
-        {{- if eq $i "pulsarZookeeper" }}
-          {{- $pulsar_zk_from_service_ref = $e }}
-          {{- break }}
-        {{- end }}
-      {{- end }}
-    {{- end }}
-    {{- range $i, $e := $.cluster.spec.componentSpecs }}
-      {{- if eq $e.componentDefRef "zookeeper" }}
-        {{- $pulsar_zk_from_component = $e }}
-      {{- end }}
-    {{- end }}
-
-    # Try to get zookeeper from service reference first, if zookeeper service reference is empty, get default zookeeper componentDef in ClusterDefinition
-    {{- $zk_server := "" }}
-    {{- if $pulsar_zk_from_service_ref }}
-      {{- if and (index $pulsar_zk_from_service_ref.spec "endpoint") (index $pulsar_zk_from_service_ref.spec "port") }}
-        {{- $zk_server = printf "%s:%s" $pulsar_zk_from_service_ref.spec.endpoint.value $pulsar_zk_from_service_ref.spec.port.value }}
-      {{- else }}
-        {{- $zk_server = printf "%s-%s.%s.svc:2181" $clusterName $pulsar_zk_from_component.name $namespace }}
-      {{- end }}
-    {{- else }}
-      {{- $zk_server = printf "%s-%s.%s.svc:2181" $clusterName $pulsar_zk_from_component.name $namespace }}
-    {{- end }}
-    zookeeperServers: {{ $zk_server }}
-    configurationStoreServers: {{ $zk_server }}
-    ```
-
-    :::note
-
-    Currently, KubeBlocks only supports referencing the endpoint and port of the declared components when rendering the configuration templates. Other referencing options and paradigms will be supported in the future, for example, directly referencing the account and password of the component in `env`.
-
-    :::
-
-### Define the mapping relation of the external component
-
-Based on the above example, when creating a Pulsar cluster, the ZooKeeper component mapping can be divided into two types:
-
-* Mapping the external ZooKeeper component.
-* Mapping the ZooKeeper component deployed by an individual cluster provided by KubeBlocks.
-
-#### Mapping the external ZooKeeper component
-
-1. Create a ServiceDescriptor CR object in a Kubernetes cluster.
-
-   In KubeBlocks, ServiceDescriptor is used to describe the API object of the component reference information. ServiceDescriptor can separate a Kubernetes-based or non-Kubernetes component and provide it to other cluster objects in KubeBlocks for referencing.
-
-   ServiceDescriptor can be used to solve issues like service dependency, component dependency, and component sharing in KubeBlocks.
-
-   Below is an example of CR object.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: ServiceDescriptor
-   metadata:
-     name: zookeeper-service-descriptor
-     namespace: default
-   spec:
-     serviceKind: zookeeper
-     serviceVersion: 3.8.0
-     endpoint: pulsar-zookeeper.default.svc // Replace the example value with the actual endpoint of the external zookeeper
-     port: 2181
-   ```
-
-2. Reference the external ZooKeeper component when creating a Pulsar cluster.
-
-   The following example shows how to create a Pulsar cluster referencing the external ZooKeeper component mentioned above.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: pulsar
-     namespace: default
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-2.11.2
-     componentSpecs:
-     - componentDefRef: pulsar-broker
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         serviceDescriptor: zookeeper-service-descriptor
-       # Here omit other definitions
-     - componentDefRef: bookies
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         serviceDescriptor: zookeeper-service-descriptor
-       # Here omit other definitions
-   ```
-
-   When creating the Pulsar Cluster object, `serviceRefs` maps `pulsarZookeeper` in the declaration to the specific `serviceDescriptor`. `name` in `serviceRefs` corresponds to the component referencing name defined in the ClusterDefinition and the value of `serviceDescriptor` is the name of `ServiceDescriptor` in Step 1.
-
-#### Mapping the ZooKeeper component deployed by an individual cluster provided by KubeBlocks
-
-This mapping relation refers to mapping an external component to an individual KubeBlocks ZooKeeper cluster.
-
-1. Create a KubeBlocks ZooKeeper cluster named `kb-zookeeper-for-pulsar`.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: kb-zookeeper-for-pulsar
-     namespace: default
-   spec:
-     clusterDefinitionRef: pulsar-zookeeper
-     clusterVersionRef: pulsar-2.11.2
-     componentSpecs:
-     - componentDefRef: zookeeper
-       disableExporter: true
-       name: zookeeper
-       noCreatePDB: false
-       replicas: 3
-       resources:
-         limits:
-           memory: 512Mi
-         requests:
-           cpu: 100m
-           memory: 512Mi
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-           - ReadWriteOnce
-           resources:
-             requests:
-               storage: 20Gi
-   terminationPolicy: WipeOut
-   ```
-
-2. Reference the above ZooKeeper cluster when creating a Pulsar cluster.
-
-   Fill in the value of `cluster` in `serviceRefs` with the name of the KubeBlocks ZooKeeper cluster in Step 1.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: pulsar
-     namespace: default
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-2.11.2
-     componentSpecs:
-     - componentDefRef: pulsar-broker
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         cluster: kb-zookeeper-for-pulsar
-       # Here omit other definitions
-     - componentDefRef: bookies
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         cluster: kb-zookeeper-for-pulsar
-       # Here omit other definitions
-   ```
-
-## Cautions and limits
-
-KubeBlocks v0.7.0 only provides an alpha version of the external component referencing function and there are several limits.
-
-* The `name` in the ClusterDefinition of component referencing declaration maintains the semantic consistency on the cluster level, which means the same names are identified as the same component referencing and they cannot be mapped to different clusters.
-* If both serviceDescriptor-based and cluster-based mapping are specified when creating a cluster, the cluster-based one enjoys higher priority and the serviceDescriptor-based one will be ignored.
-* If the cluster-based mapping is used when creating a cluster, the `serviceKind` and `serviceVersion` defined in the ClusterDefinition will not be verified.
-
-  If the serviceDescriptor-based mapping is adopted, KubeBlocks will verify the `serviceKind` and `serviceVersion` in the `serviceDescriptor` by comparing the `serviceKind` and `serviceVersion` defined in the ClusterDefinition. Mapping then is performed only when the values match.
-* For v0.7.0, the usage of component referencing in the ClusterDefinition is supported only by rendering the configuration templates. Other usage options will be supported in the future.
diff --git a/docs/developer_docs/integration/_category_.yaml b/docs/developer_docs/integration/_category_.yaml
deleted file mode 100644
index 1fa36036d..000000000
--- a/docs/developer_docs/integration/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Add an add-on to KubeBlocks
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/developer_docs/integration/add-ons-of-kubeblocks.md b/docs/developer_docs/integration/add-ons-of-kubeblocks.md
deleted file mode 100644
index a3a2a57d6..000000000
--- a/docs/developer_docs/integration/add-ons-of-kubeblocks.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Overview
-description: An overview of add an database add-on to KubeBlocks
-keywords: [add-on, integration]
-sidebar_position: 1
-sidebar_label: Add-ons of KubeBlocks
----
-
-# Add-ons of KubeBlocks
-
-KubeBlocks is a control and management platform to manage a bunch of database engines and other add-ons.
-
-This series provides basic knowledge of add-ons, so you can get a quick start and become a member of the KubeBlocks community.
-
-KubeBlocks features a rich add-on ecosystem with major databases, streaming and vector databases, including:
-
-- Relational Database: ApeCloud-MySQL (MySQL RaftGroup cluster), PostgreSQL (Replication cluster) 
-- NoSQL Database: MongoDB, Redis
-- Graph Database: Nebula (from community contributors)
-- Time Series Database: TDengine, Greptime (from community contributors)
-- Vector Database: Milvus, Qdrant, Weaviate, etc.
-- Streaming: Kafka, Pulsar, ElasticSearch
-
-Adding an add-on to KubeBlocks is easy, you can just follow this guide to add the add-on to KubeBlocks as long as you know the followings: 
-1. How to write a YAML file (e.g., You should know how many spaces to add when indenting with YAML).
-2. Knowledge about Helm (e.g. What is Helm and Helm chart).
-3. Have tried K8s (e.g., You should know what a pod is, or have installed an operator on K8s with Helm).
-4. Grasp basic concepts of KubeBlocks, such as ClusterDefinition, ClusterVersion and Cluster.
-
-If you have any question, you can join our [slack channel](https://join.slack.com/t/kubeblocks/shared_invite/zt-22cx2f84x-BPZvnLRqBOGdZ_XSjELh4Q) to ask.
\ No newline at end of file
diff --git a/docs/developer_docs/integration/backup-and-restore.md b/docs/developer_docs/integration/backup-and-restore.md
deleted file mode 100644
index 0d5ead32d..000000000
--- a/docs/developer_docs/integration/backup-and-restore.md
+++ /dev/null
@@ -1,313 +0,0 @@
----
-title: Backup and restore
-description: Create backup and restore
-keywords: [add-on, backup, restore]
-sidebar_position: 3
-sidebar_label: Backup and restore
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Backup and restore
-
-This tutorial takes Oracle MySQL as an example and introduces how to create backups and restore data in KubeBlocks. The full PR can be found at [Learn KubeBlocks Add-on](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-2-backup-restore/).
-
-Different classification results in different types of backups, including volume snapshot backup and file backup, data backup and log backup, full backup and incremental backup, as well as scheduled backup and on-demand backup, which differ in terms of their methods, contents, volumes, and timing.
-
-This tutorial illustrates how to realize the most frequently used snapshot backup and file backup in KubeBlocks.
-
-- Snapshot backup relies on the volume snapshot capability of Kubernetes.
-- File backup relies on backup tools provided by database engines.
-
-Now take a quick look at the basic concepts of KubeBlocks in the table below, which also are elaborated in the following tutorial.
-
-:paperclip: Table 1. Terminology
-
-| Term | Description | Scope |
-| :--- | :---------- | :---- |
-| Backup | Backup object <br /> It defines the entity to be backed up. | Namespace |
-| BackupPolicy | Backup policy <br /> It defines the policy for each backup type, such as scheduling, retention time, and tools. | Namespace |
-| BackupTool | Backup tool <br /> It is the carrier of backup tools in KubeBlocks and should realize the backup and restoration logic of corresponding tools. | Cluster |
-| BackupPolicyTemplate | Template of backup policy <br /> It is the bridge between the backup and ClusterDefinition. When creating a cluster, KubeBlocks automatically generates a default backup policy for each cluster according to BackupPolicyTemplate. | Cluster |
-
-## Before you start
-
-- Finish the configuration in [Add an add-on to KubeBlocks](./how-to-add-an-add-on.md).
-- Grasp the basics of K8s concepts, such as Pod, PVC, PV, VolumeSnapshot, etc.
-
-## Step 1. Prepare environment
-
-1. Install CSI Driver.
-
-   Since volume snapshot is only available for CSI Drivers, make sure your Kubernetes is properly configured.
-
-   - For the localhost, you can quickly install `csi-host-driver` by KubeBlocks add-on.
-
-     ```bash
-     kbcli addon enable csi-hostpath-driver
-     ```
-
-   - For a cloud environment, configure the corresponding CSI Driver based on your environment.
-
-2. Set the `storageclass` to the default to make it easier to create clusters.
-
-   ```bash
-   kubectl get sc
-   >
-   NAME                        PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
-   csi-hostpath-sc (default)   hostpath.csi.k8s.io     Delete          WaitForFirstConsumer   true                   35s
-   ```
-
-## Step 2. Specify a volume type
-
-Specify a volume type in the ClusterDefinition and it is required.
-
-```yaml
-  componentDefs:
-    - name: mysql-compdef
-      characterType: mysql
-      workloadType: Stateful
-      service:
-        ports:
-          - name: mysql
-            port: 3306
-            targetPort: mysql
-      volumeTypes:
-        - name: data
-          type: data
-```
-
-`volumeTypes` is used to specify volume type and name.
-
-There are mainly two kinds of volume types (`volumeTypes.type`):
-
-- `data`: Data information
-- `log`: Log information
-
-KubeBlocks supports different backup methods for data and logs. In this tutorial, only data volume information is configured.
-
-## Step 3. Add backup configuration
-
-Prepare `BackupPolicyTemplate.yml` and `BackupTool.yml` to add the backup configuration.
-
-### BackupPolicy template
-
-It is a template of backup policy, and covers:
-
-1. Which cluster components to back up
-2. Whether the backups are scheduled
-3. How to set up snapshot backup
-4. How to set up file backup
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: BackupPolicyTemplate
-metadata:
-  name: oracle-mysql-backup-policy-template
-  labels:
-    clusterdefinition.kubeblocks.io/name: oracle-mysql # Specify scope through labels (Required)
-spec:
-  clusterDefinitionRef: oracle-mysql  # Specify the scope, indicating which ClusterDef generates the cluster
-  backupPolicies:
-  - componentDefRef: mysql-compdef    # Specify the scope, indicating which component is involved
-    schedule:                         # Specify the timing of scheduled backups and startup status
-      snapshot:
-        enable: true                  # Enable scheduled snapshot backups
-        cronExpression: "0 18 * * *"
-      datafile:                       # Disable scheduled datafile backups
-        enable: false
-        cronExpression: "0 18 * * *"        
-    snapshot:                         # Snapshot backup, which keeps the latest 5 versions by default
-      backupsHistoryLimit: 5
-    datafile:                         # Datafile backup which depends on backup tools
-      backupToolName: oracle-mysql-xtrabackup
-```
-
-If a scheduled task is enabled, KubeBlocks creates a CronJob in the background.
-
-After a new cluster is created, KubeBlocks discovers the corresponding template name by `clusterdefinition.kubeblocks.io/name` and creates the corresponding BackupPolicy.
-
-:::note
-
-If you have added `BackupPolicyTemplate` but there is no default BackupPolicy for the new cluster, check whether the following requirements:
-
-1. Whether `ClusterDefinitionRef` is correct.
-2. Whether the `BackupPolicyTemplate` label is correct.
-3. Whether there are multiple BackupPolicyTemplates. If yes, mark one as the default template using annotations.
-
-   ```yaml
-     annotations:
-      dataprotection.kubeblocks.io/is-default-policy-template: "true"
-   ```
-
-:::
-
-### BackupTool
-
-:::note
-
-`BackupTool` mainly serves datafile backup. If you only need snapshot backups, there is no need to configure BackupTool.
-
-:::
-
-`BackTool.yml` describes the detailed execution logic of a backup tool and mainly serves datafile backup. It should cover:
-
-1. Image of backup tools
-2. Scripts of backup
-3. Scripts of restore
-
-```yaml
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: BackupTool
-metadata:
-  name: oracle-mysql-xtrabackup
-  labels:
-spec:
-  image: docker.io/perconalab/percona-xtrabackup:8.0.32  # Back up via xtrabackup
-  env:                         # Inject the name of dependent environment variables
-    - name: DATA_DIR
-      value: /var/lib/mysql
-  physical:
-    restoreCommands:           # Restore commands
-      - sh
-      - -c
-      ...
-  backupCommands:             # Backup commands
-    - sh
-    - -c
-    ...
-```
-
-The configuration of `BackupTool` is closely related to the tools used.
-
-For example, if you back up via Percona Xtrabackup, you need to fill in scripts in `backupCommands` and `restoreCommands`.
-
-## Step 4. Back up and restore a cluster
-
-With everything ready, try to back up a cluster and restore data to a new cluster.
-
-### 4.1 Create a cluster
-
-Since `BackupPolicyTemplate` has been added, after a cluster is created, KubeBlocks can discover the backup policy and create a `BackupPolicy` for this cluster.
-
-1. Create a cluster.
-
-   <Tabs>
-
-   <TabItem value="kbcli" label="kbcli" default>
-
-   ```bash
-   kbcli cluster create mycluster --cluster-definition oracle-mysql 
-   ```
-
-   </TabItem>
-
-   <TabItem value="Helm" label="Helm">
-
-   ```bash
-   helm install mysql ./tutorial-2-backup-restore/oracle-mysql
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. View the backup policy of this cluster.
-
-   ```bash
-   kbcli cluster list-backup-policy mycluster
-   ```
-
-### 4.2 Snapshot backups
-
-```bash
-kbcli cluster backup mycluster --type snapshot
-```
-
-`type` specifies the backup type, indicating whether it is a snapshot or datafile.
-
-If there are multiple backup policies, specify it with the `--policy` flag.
-
-### 4.3 Datafile backups
-
-KubeBlocks supports backup to local storage and cloud object storage. The following is an example of backing up to your localhost.
-
-1. Modify BackupPolicy and specify the PVC name.
-
-   As shown below in `spec.datafile.persistentVolumeClaim.name`, specify the PVC name.
-
-   ```yaml
-     spec:
-       datafile:
-         backupToolName: oracle-mysql-xtrabackup
-         backupsHistoryLimit: 7
-         persistentVolumeClaim:
-           name: mycluster-backup-pvc
-           createPolicy: IfNotPresent
-           initCapacity: 20Gi
-   ```
-
-2. Set `--type` to `datafile`.
-
-   ```bash
-   kbcli cluster backup mycluster  --type datafile
-   ```
-
-### 4.4 Create a cluster from backups
-
-1. Check the backups.
-
-   ```bash
-   kbcli cluster list-backups
-   ```
-
-2. Select a backup and create a cluster.
-
-   ```bash
-   kbcli cluster restore <clusterName> --backup <backup-name>
-   ```
-
-And a new cluster is created.
-
-:::caution
-
-It should be noted that some databases only create the root account and password during the first initialization.
-
-Therefore, although a new root account and password are created when restoring a cluster from backups, they are not effective. You still need to log in with the root account and password of the original cluster.
-
-:::
-
-## Reference
-
-- For more details on the backup and restore function of KubeBlocks, refer to [Backup and Restore](./../../user_docs/maintenance/backup-and-restore/introduction.md).
-
-## Appendix
-
-### A.1 Cluster data protection policies
-
-KubeBlocks provides various data protection policies for stateful clusters, each offering various data options. Try the following scenarios:
-
-1. If you delete a cluster using `kbcli cluster delete`, will the backup still be available?
-2. If you change the `terminationPolicy` of a cluster to `WipeOut` and then delete it, will the backup still be available?
-3. If you change the `terminationPolicy` of a cluster to `DoNotTerminate` and then delete it, what will happen?
-
-:::note
-
-Refer to the data protection policies of KubeBlocks via [Termination Policy](./../../user_docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md#termination-policy).
-
-:::
-
-### A.2 Monitor backup progress
-
-In [Step 4](#step-4-back-up-and-restore-a-cluster), you have created a backup using the backup subcommand.
-
-```bash
-kbcli cluster backup mycluster  --type snapshot
-```
-
-A new backup object is generated and you can view the progress by running the `describe-backup` subcommand.
-
-```bash
-kbcli cluster describe-backup <your-back-up-name>
-```
diff --git a/docs/developer_docs/integration/environment-variables-and-placeholders.md b/docs/developer_docs/integration/environment-variables-and-placeholders.md
deleted file mode 100644
index 55410dd63..000000000
--- a/docs/developer_docs/integration/environment-variables-and-placeholders.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: Environment variables and placeholders
-description: KubeBlocks Environment Variables and Placeholders
-keywords: [environment variables, placeholders]
-sidebar_position: 10
-sidebar_label: Environment variables and placeholders
----
-
-# Environment variables and placeholders
-
-## Environment variables
-
-### Pod container environment variables
-
-The following variables are injected by KubeBlocks into each pod.
-
-| Name | Description |
-| :--- | :---------- |
-| `KB_POD_NAME` | K8s Pod Name |
-| `KB_NAMESPACE` | K8s Pod Namespace |
-| `KB_SA_NAME` | KubeBlocks Service Account Name |
-| `KB_NODENAME` | K8s Node Name |
-| `KB_HOSTIP` | K8s Host IP address |
-| `KB_PODIP` | K8s Pod IP address |
-| `KB_PODIPS` | K8s Pod IP addresses |
-| `KB_POD_UID` | POD UID (`pod.metadata.uid`) |
-| `KB_CLUSTER_NAME` | KubeBlocks Cluster API object name |
-| `KB_COMP_NAME` | Running pod's KubeBlocks Cluster API object's `.spec.components.name` |
-| `KB_CLUSTER_COMP_NAME` | Running pod's KubeBlocks Cluster API object's `<.metadata.name>-<.spec.components.name>` |
-| `KB_REPLICA_COUNT` | Running pod's component's replica |
-| `KB_CLUSTER_UID` | Running pods' KubeBlocks Cluster API object's `metadata.uid` |
-| `KB_CLUSTER_UID_POSTFIX_8` | Last eight digits of KB_CLUSTER_UID |
-| `KB_{ordinal}_HOSTNAME` | Running pod's hostname, where `{ordinal}` is the ordinal of pod. <br /> N/A if workloadType=Stateless. |
-| `KB_POD_FQDN` | Running pod's fully qualified domain name (FQDN). <br /> N/A if workloadType=Stateless. |
-
-## Built-in Place-holders
-
-### ComponentValueFrom API
-
-| Name | Description |
-| :--- | :---------- |
-| `POD_ORDINAL` | Pod ordinal |
-| `POD_FQDN` | Pod FQDN (fully qualified domain name) |
-| `POD_NAME` | Pod Name |
-
-### ConnectionCredential API
-
-| Name | Description |
-| :--- | :---------- |
-| `UUID` | Generate a random UUID v4 string. |
-| `UUID_B64` | Generate a random UUID v4 BASE64 encoded string. |
-| `UUID_STR_B64` | Generate a random UUID v4 string then BASE64 encoded. |
-| `UUID_HEX` | Generate a random UUID v4 HEX representation. |
-| `HEADLESS_SVC_FQDN` | Headless service 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. |
-| `SVC_FQDN` | Service FQDN  placeholder, value pattern - `$(CLUSTER_NAME)-$(1ST_COMP_NAME).$(NAMESPACE).svc`, where 1ST_COMP_NAME is the 1st component that provide `ClusterDefinition.spec.componentDefs[].service` attribute. |
-| `SVC_PORT_{PORT_NAME}` | A ServicePort's port value with specified port name, i.e, a servicePort JSON struct: <br /> `{"name": "mysql", "targetPort": "mysqlContainerPort", "port": 3306}`, and `"$(SVC_PORT_mysql)"` in the connection credential value is 3306. |
-| `RANDOM_PASSWD` | Random 8 characters |
diff --git a/docs/developer_docs/integration/how-to-add-an-add-on.md b/docs/developer_docs/integration/how-to-add-an-add-on.md
deleted file mode 100644
index eec196e98..000000000
--- a/docs/developer_docs/integration/how-to-add-an-add-on.md
+++ /dev/null
@@ -1,434 +0,0 @@
----
-title: Add an add-on
-description: Add an add-on to KubeBlocks
-keywords: [add-on, add an add-on]
-sidebar_position: 2
-sidebar_label: Add an add-on
----
-
-# Add an add-on to KubeBlocks
-
-This tutorial explains how to integrate an add-on to KubeBlocks, and takes Oracle MySQL as an example. You can also find the [PR here](https://github.com/apecloud/learn-kubeblocks-addon).
-
-There are altogether 3 steps to integrate an add-on:
-
-1. Design cluster blueprint.
-2. Prepare cluster templates.
-3. Add an `addon.yaml` file.
-
-## Step 1. Design a blueprint for cluster
-
-Before getting started, make sure to design your cluster blueprint. Think about what you want your cluster to look like. For example:
-
-- What components it has
-- What format each component takes
-  - stateful/stateless
-  - Standalone/Replication/RaftGroup
-
-In this tutorial you will learn how to deploy a cluster with one Stateful component which has only one node. The design configuration of the cluster is shown in the following table.
-
-Cluster Format: Deploying a MySQL 8.0 Standalone.
-
-:paperclip: Table 1. Blueprint for Oracle MySQL Cluster
-
-| Term              | Settings                                                                                                     |
-|-------------------|--------------------------------------------------------------------------------------------------------------|
-| ClusterDefinition | Startup Scripts: Default <br /> Configuration Files: Default <br />Service Port: 3306 <br />Number of Components: 1, i.e. MySQL |
-| ClusterVersion    | Image: docker.io/mysql:8.0.34                                                                                |
-| Cluster.yaml      | Specified by the user during creation                                                                        |
-
-## Step 2. Prepare cluster templates
-
-### 2.1 Create a Helm chart
-
-Opt 1.`helm create oracle-mysql`
-
-Opt 2. Directly create `mkdir oracle-mysql`
-
-It should contain the following information:
-
-```bash
-> tree oracle-mysql
-.
-├── Chart.yaml        #  A YAML file containing information about the chart
-├── templates         # A directory of templates that, when combined with values, will generate valid Kubernetes manifest files.
-│   ├── NOTES.txt     # OPTIONAL: A plain text file containing short usage notes
-│   ├── _helpers.tpl  # A place to put template helpers that you can re-use throughout the chart
-│   ├── clusterdefinition.yaml
-│   └── clusterversion.yaml
-└── values.yaml       # The default configuration values for this chart
-
-2 directories, 6 files
-```
-
-There are two YAML files under `templates`, `clusterDefinition.yaml` and `clusterVersion.yaml`, which is about the component topology and version.
-
-- `clusterDefinition.yaml`
-
-  This YAML file is very long, and each field is explained as follows.
-
-  - `ConnectionCredential`
-
-    ```yaml
-      connectionCredential:
-        username: root
-        password: "$(RANDOM_PASSWD)"
-        endpoint: "$(SVC_FQDN):$(SVC_PORT_mysql)"
-        host: "$(SVC_FQDN)"
-        port: "$(SVC_PORT_mysql)"
-    ```
-
-    It generates a secret, whose naming convention is `{clusterName}-conn-credential`.
-
-    The field contains general information such as username, password, endpoint and port, and will be used when other services access the cluster (The secret is created before other resources, which can be used elsewhere).
-
-    `$(RANDOM_PASSWD)` will be replaced with a random password when created.
-
-    `$(SVC_PORT_mysql)` specifies the port number to be exposed by selecting the port name. Here the port name is mysql.
-
-    For more information, please refer to KubeBlocks [Environment Variables](./environment-variables-and-placeholders.md).
-
-  - `ComponentDefs`
-
-      ```yaml
-        componentDefs:
-          - name: mysql-compdef
-            characterType: mysql
-            workloadType: Stateful
-            service:
-              ports:
-                - name: mysql
-                  port: 3306
-                  targetPort: mysql
-            podSpec:
-              containers:
-              ...
-      ```
-
-    `componentDefs` (Component Definitions) defines the basic information required for each component, including startup scripts, configurations and ports.
-
-    Since there is only one MySQL component, you can just name it `mysql-compdef`, which stands for a component definition for MySQL.
-
-  - `name` [Required]
-
-    It is the name of the component. As there are no specific criteria, you can just choose a distinguishable and expressive one.
-
-    Remember the equation in the previous article?
-
-    $$
-    Cluster = ClusterDefinition.yaml \Join ClusterVersion.yaml \Join ...
-    $$
-
-    `name` here is the join key.
-
-    Remember the `name`; it will be useful.
-
-  - `characterType` [Optional]
-
-    `characterType` is a string type used to identify the engine. For example, `mysql`, `postgresql` and `redis` are several predefined engine types used for database connection. When operating a database, it helps to quickly recognize the engine type and find the matching operation command.
-
-    It can be an arbitrary string, or a unique name as you define. The fact is that people seldom have engine-related operations in the early stage, so you can just leave it blank.
-
-  - `workloadType` [Required]
-
-    It is the type of workload. Kubernetes is equipped with several basic workload types, such as Deployment and StatefulSet.
-
-    On top of that, KubeBlocks makes abstractions and provides more choices, such as:
-
-    - Stateless, meaning it has no stateful services
-    - Stateful, meaning it has stateful services
-    - Consensus, meaning it has stateful services with self-election capabilities and roles.
-
-    A more in-depth introduction to workloads will be presented later (including design, implementation, usage, etc.).
-
-    For a MySQL Standalone, `Stateful` will do.
-
-  - `service` [Optional]
-
-    ```yaml
-          service:
-            ports:
-              - name: mysql  #The port name is mysql, so connectionCredential will look for it to find the corresponding port
-                port: 3306
-                targetPort: mysql
-    ```
-
-    It defines how to create a service for a component and which ports to expose.
-
-    Remember that in the `ConnectionCredential` section, it is mentioned that a cluster will expose ports and endpoints?
-
-    You can invoke `$(SVC_PORT_mysql)$` to select a port, where `mysql` is the `service.ports[0].name` here.
-
-    :::note
-
-    If the `connectionCredential` is filled with a port name, make sure the port name appears here.
-
-    :::
-
-  - `podSpec`
-
-    The definition of podSpec is the same as that of the Kubernetes.
-
-    ```yaml
-          podSpec:
-            containers:
-              - name: mysql-container
-                imagePullPolicy: IfNotPresent
-                volumeMounts:
-                  - mountPath: /var/lib/mysql
-                    name: data
-                ports:
-                  - containerPort: 3306
-                    name: mysql
-                env:
-                  - name: MYSQL_ROOT_HOST
-                    value: {{ .Values.auth.rootHost | default "%" | quote }}
-                  - name: MYSQL_ROOT_USER
-                    valueFrom:
-                      secretKeyRef:
-                        name: $(CONN_CREDENTIAL_SECRET_NAME)
-                        key: username
-                  - name: MYSQL_ROOT_PASSWORD
-                    valueFrom:
-                      secretKeyRef:
-                        name: $(CONN_CREDENTIAL_SECRET_NAME)
-                        key: password
-    ```
-
-    As is shown above, a pod is defined with a single container named `mysql-container`, along with other essential information, such as environment variables and ports.
-
-    Yet here is something worth noting: `$(CONN_CREDENTIAL_SECRET_NAME)`.
-
-    The username and password are obtained as pod environment variables from the secret in `$(CONN_CREDENTIAL_SECRET_NAME)`.
-
-    This is a placeholder for ConnectionCredential Secret mentioned earlier.
-
-- `clusterVersion.yaml`
-
-   All version-related information is configured in `clusterVersion.yaml`.
-
-   Now you can add the required image information for each container needed for each component.
-
-   ```yaml
-     clusterDefinitionRef: oracle-mysql
-     componentVersions:
-     - componentDefRef: mysql-compdef
-       versionsContext:
-         containers:
-         - name: mysql-container
-           image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}
-           imagePullPolicy: {{ default .Values.image.pullPolicy "IfNotPresent" }}
-   ```
-
-   Remember the ComponentDef Name used in ClusterDefinition? Yes, `mysql-compdef`, fill in the image information here.
-
-:::note
-
-Now you've finished with ClusterDefinition and ClusterVersion, try to do a quick test by installing them locally.
-
-:::
-
-### 2.2 Install Helm chart
-
-Install Helm.
-
-```bash
-helm install oracle-mysql ./oracle-mysql
-```
-
-After successful installation, you can see the following information:
-
-```yaml
-NAME: oracle-mysql
-LAST DEPLOYED: Wed Aug  2 20:50:33 2023
-NAMESPACE: default
-STATUS: deployed
-REVISION: 1
-TEST SUITE: None
-```
-
-### 2.3 Create a cluster
-
-Create a MySQL cluster with `kbcli cluster create`.
-
-```bash
-kbcli cluster create mycluster --cluster-definition oracle-mysql
->
-Info: --cluster-version is not specified, ClusterVersion oracle-mysql-8.0.34 is applied by default
-Cluster mycluster created
-```
-
-You can specify the name of ClusterDefinition by using `--cluster-definition`.
-
-:::note
-
-If only one ClusterVersion object is associated with this ClusterDefinition, kbcli will use it when creating the cluster.
-
-However, if there are multiple ClusterVersion objects associated, you will need to explicitly specify which one to use.
-
-:::
-
-After the creating, you can:
-
-**A. Check cluster status**
-
-   ```bash
-   kbcli cluster list mycluster
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION               TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   default     oracle-mysql         oracle-mysql-8.0.34   Delete               Running   Aug 02,2023 20:52 UTC+0800
-   ```
-
-**B. Connect to the cluster**
-
-   ```bash
-   kbcli cluster connect mycluster
-   >
-   Connect to instance mycluster-mysql-compdef-0
-   mysql: [Warning] Using a password on the command line interface can be insecure.
-   Welcome to the MySQL monitor.  Commands end with ; or \g.
-   Your MySQL connection id is 8
-   Server version: 8.0.34 MySQL Community Server - GPL
-
-   Copyright (c) 2000, 2023, Oracle and/or its affiliates.
-
-   Oracle is a registered trademark of Oracle Corporation and/or its
-   affiliates. Other names may be trademarks of their respective
-   owners.
-
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql>
-   ```
-
-**C. Scale up a cluster**
-
-   ```bash
-   kbcli cluster vscale mycluster --components mysql-compdef --cpu='2' --memory=2Gi
-   ```
-
-**D. Stop a cluster**
-
-   Stopping the cluster releases all computing resources.
-
-   ```bash
-   kbcli cluster stop mycluster
-   ```
-
-## Step 3. Add an addon.yaml file
-
-This is the last step to integrate an add-on to KubeBlocks. After creating this addon.yaml file, this add-on is in the KubeBlocks add-on family. Please refer to `tutorial-1-create-an-addon/oracle-mysql-addon.yaml`.
-
-```bash
-apiVersion: extensions.kubeblocks.io/v1alpha1
-kind: Addon
-metadata:
-  name: tutorial-mysql
-spec:
-  description: 'MySQL is a widely used, open-source....'
-  type: Helm
-  helm:
-    chartsImage: registry-of-your-helm-chart
-  installable:
-    autoInstall: false
-
-  defaultInstallValues:
-    - enabled: true
-```
-
-And then configure your Helm chart remote repository address with `chartsImage`.
-
-## Step 4. (Optional) Publish to Kubeblocks community
-
-You can contribute the Helm chart to the [KubeBlocks add-ons](https://github.com/apecloud/kubeblocks-addons) and `addon.yaml` to the [KubeBlocks](https://github.com/apecloud/kubeblocks). The `addon.yaml` can be found in the `kubeblocks/deploy/helm/templates/addons` directory.
-
-## Appendix
-
-### A.1 How to configure multiple versions for the same engine?
-
-To support multiple versions is one of the common problems in the daily production environment. And the problem can be solved by **associating multiple ClusterVersions with the same ClusterDefinition**.
-
-Take MySQL as an example.
-
-1. Modify `ClusterVersion.yaml` file to support multiple versions.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: ClusterVersion
-   metadata:
-     name: oracle-mysql-8.0.32
-   spec:
-     clusterDefinitionRef: oracle-mysql   ## Associate the same clusterdefinition: oracle-mysql
-     componentVersions:
-     - componentDefRef: mysql-compdef
-       versionsContext:
-         containers:
-           - name: mysql-container
-             image: <image-of-mysql-8.0.32> ## The mirror address is 8.0.32
-   ---
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: ClusterVersion
-   metadata:
-     name: oracle-mysql-8.0.18
-   spec:
-     clusterDefinitionRef: oracle-mysql  ## Associate the same clusterdefinition: oracle-mysql
-     componentVersions:
-     - componentDefRef: mysql-compdef
-       versionsContext:
-         containers:
-           - name: mysql-container
-             image: <image-of-mysql-8.0.18> ## The mirror address is 8.0.18
-   ```
-
-2. Specify the version information when creating a cluster.
-
-   - Create a cluster with version 8.0.32
-
-     ```bash
-     kbcli cluster create mycluster --cluster-definition oracle-mysql --cluster-version oracle-mysql-8.0.32
-     ```
-
-   - Create a cluster with version 8.0.18
-
-     ```bash
-     kbcli cluster create mycluster --cluster-definition oracle-mysql --cluster-version oracle-mysql-8.0.18
-     ```
-
-   It allows you to quickly configure multiple versions for your engine.
-
-### A.2 What if kbcli cannot meet your needs?
-
-While kbcli provides a convenient and generic way to create clusters, it may not meet the specific needs of every engine, especially when a cluster contains multiple components and needs to be used according to different requirements.
-
-In that case, try to use a Helm chart to render the cluster, or create it through a cluster.yaml file.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: default
-spec:
-  clusterDefinitionRef: oracle-mysql        # Specify ClusterDefinition
-  clusterVersionRef: oracle-mysql-8.0.32    # Specify ClusterVersion
-  componentSpecs:                           # List required components
-  - componentDefRef: mysql-compdef          # The type of the first component: mysql-compdef
-    name: mysql-comp                        # The name of the first component: mysql-comp
-    replicas: 1
-    resources:                              # Specify CPU and memory size
-      limits:
-        cpu: "1"
-        memory: 1Gi
-      requests:
-        cpu: "1"
-        memory: 1Gi
-    volumeClaimTemplates:                   # Set the PVC information, where the name must correspond to that of the Component Def.
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  terminationPolicy: Delete
-```
diff --git a/docs/developer_docs/integration/monitoring.md b/docs/developer_docs/integration/monitoring.md
deleted file mode 100644
index 3f7b16a91..000000000
--- a/docs/developer_docs/integration/monitoring.md
+++ /dev/null
@@ -1,267 +0,0 @@
----
-title: Monitoring
-description: How to configure monitoring function in KubeBlocks 
-keywords: [monitoring]
-sidebar_position: 6
-sidebar_label: Monitoring
----
-
-# Configure monitoring
-
-This tutorial takes Oracle MySQL as an example and explains how to configure monitoring in KubeBlocks. You can refer to [the full PR](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-4-monitor-cluster/oracle-mysql).
-
-## Before you start
-
-1. Knowledge about basic Kubernetes concepts, such as Pod and Sidecar.
-2. Finish [Tutorial 1](./how-to-add-an-add-on.md).
-3. Knowledge about basic monitoring system concepts, such as Prometheus and Grafana.
-
-## Introduction
-
-Monitoring is an essential part of Kubernetes observability. It helps developers check the system's operational status to quickly identify issues.
-
-Kubeblocks currently integrates Prometheus and Grafana as add-ons. In this tutorial, you will learn how to integrate the Prometheus/Grafana solution.
-
-### Prometheus Overview
-
-Prometheus provides an open-source monitoring solution that integrates metric collection, metric storage, and alert capabilities.
-
-It is widely used in cloud-native, containerized, and microservices architectures. With Prometheus, developers and operations teams can monitor the performance and health status of applications in real-time, so as to quickly identify and resolve issues to ensure application reliability and availability. Prometheus is usually used with Grafana to create powerful monitoring and observability solutions.
-
-### Grafana Overview
-
-Grafana is an open-source analytics and monitoring platform widely used for visualizing time series data. It allows users to create interactive and customizable dashboards to monitor and analyze data from various sources.
-
-:paperclip: Table 1. Terminology
-
-| Term | Description |
-| :--  | :---------- |
-| Prometheus Exporter | Prometheus Exporter is a component that collects monitoring data and provides data to external entities using the Prometheus monitoring specification. <br /> For more details, refer to [Prometheus  Exporter List](https://prometheus.io/docs/instrumenting/exporters/). |
-| Prometheus Metrics | Prometheus Metrics are data points used for monitoring and performance analysis. They typically include request counts, response times, CPU usage, and memory usage. |
-| Grafana Dashboard | Grafana Dashboard is a visualization interface used to present data. It is commonly used for monitoring and analyzing various time series data. |
-
-Prometheus in KubeBlocks has already been configured with scraping jobs, so developers only need to configure the Exporter. In KubeBlocks, the Exporter is deployed as a sidecar alongside the main container of the database engine in the same Pod.
-
-## Configure Exporter
-
-First, choose an Exporter. This tutorial is based on Oracle MySQL, so a MySQL Exporter is needed.
-
-### Configure Exporter version
-
-Modify ClusterVersion (`clusterversion.yaml`).
-
-You can find an appropriate Exporter from open-source communities(e.g., [Prometheus in Docker](https://hub.docker.com/u/prom)).
-
-```yaml
-componentVersions:
-- componentDefRef: mysql-compdef
-  versionsContext:
-    containers:
-    - name: mysql-container
-      image: ...
-      imagePullPolicy: ..
-    - name: mysql-exporter               
-      image: prom/mysqld-exporter:v0.14.0
-```
-
-Specify the image of mysql-exporter as prom/mysqld-exporter with the version 0.14.0.
-
-### Add an Exporter container
-
-Modify `clusterdefinition.yaml` and configure mysql-exporter in Sidecar form.
-
-```yaml
-podSpec:
-  containers:
-    # mysql container and other containers ->
-    - name: mysql-exporter
-      ports:
-        - name: metrics
-          containerPort: 9104
-          protocol: TCP
-      env:
-        - name: "MYSQL_MONITOR_USER"
-          valueFrom:
-            secretKeyRef:
-              name: $(CONN_CREDENTIAL_SECRET_NAME)
-              key: username
-        - name: "MYSQL_MONITOR_PASSWORD"
-          valueFrom:
-            secretKeyRef:
-              name: $(CONN_CREDENTIAL_SECRET_NAME)
-              key: password          
-        - name: "DATA_SOURCE_NAME"
-          value: "$(MYSQL_MONITOR_USER):$(MYSQL_MONITOR_PASSWORD)@(localhost:3306)/"
-```
-
-As shown, a new container has been added to the original PodSpec. `DATA_SOURCE_NAME` is an environment variable specific to the mysql-exporter.
-
-:::caution
-
-Different Exporters require different environment variables, and they need to be configured based on specific features of each Exporter.
-
-As mentioned, this tutorial uses mysql exporter 0.14.0. In the latest mysql exporter version 0.15.0, the variable `DATA_SOURCE_NAME` is no longer supported.
-
-:::
-
-### Configure monitor parameters
-
-Modify `clusterdefinition.yaml` and configure `monitor` parameters.
-
-```yaml
-componentDefs:
-  - name: mysql-compdef
-    characterType: mysql
-    service: ..
-    monitor:
-      exporterConfig:
-        scrapePort: 9104        # Listening port of the Exporter, used by Prometheus to pull data
-        scrapePath: "/metrics"  # Path of the Exporter path, used by Prometheus to pull data
-```
-
-KubeBlocks supports multiple monitoring solutions. To use the open-source Prometheus/Grafana solution, configure the listening port and metrics path in `monitor`, which should correspond to the container-port specified in [2. Add an Exporter container](#2-add-an-exporter-container).
-
-## Configure Grafana Dashboard
-
-### Obtain Grafana Dashboard configurations
-
-Grafana Dashboard can help users monitor, analyze, and understand data in real-time. For popular databases, various dashboard configuration files (in JSON format) can be easily found.
-
-- [Official Website of Grafana](https://grafana.com/grafana/dashboards).
-- [KubeBlocks Dashboard](https://github.com/apecloud/kubeblocks-mixin).
-
-### Add to your cluster
-
-Import the downloaded JSON files on the Grafana Dashboard page or configure them in your cluster template.
-
-The latter option is more versatile, as the same configuration can be reused for any cluster generated through the template.
-
-Therefore, two files are added to the existing Helm chart.
-
-- dashboards: Save dashboard JSON files.
-- grafana: Create a ConfigMap to store the contents of dashboard JSON files.
-
-```yaml
-tree oracle-mysql
-.
-├── Chart.yaml
-├── dashboards
-│   └── mysql.json
-├── templates
-│   ├── NOTES.txt   
-│   ├── _helpers.tpl
-│   ├── clusterdefinition.yaml
-│   └── clusterversion.yaml
-│   └── grafana
-│       └── configmap-dashboards.yaml
-└── values.yaml
-
-4 directories, 8 files
-```
-
-## Monitor cluster data
-
-### Prepare the environment and enable Prometheus monitoring components
-
-Run `kbcli addon list` to check if the following add-ons are enabled (status: Enabled):
-
-```bash
-kbcli addon list
->
-...
-grafana                        Helm   Enabled                   true  
-alertmanager-webhook-adaptor   Helm   Enabled                   true    
-prometheus                     Helm   Enabled    alertmanager   true
-...
-```
-
-If not (status: `Disabled`), enable them one by one.
-
-```bash
-kbcli addon enable prometheus
-kbcli addon enable alertmanager-webhook-adaptor
-kbcli addon enable grafana
-```
-
-Then you can have access to the integrated three dashboards:
-
-```bash
-kbcli dashboard list
->
-NAME                                 NAMESPACE   PORT    CREATED-TIME
-kubeblocks-grafana                   kb-system   13000   Jul 24,2023 11:38 UTC+0800
-kubeblocks-prometheus-alertmanager   kb-system   19093   Jul 24,2023 11:38 UTC+0800
-kubeblocks-prometheus-server         kb-system   19090   Jul 24,2023 11:38 UTC+0800
-```
-
-### Create a database cluster
-
-1. Install a cluster template.
-
-   ```bash
-   helm install oracle-mysql ./path-to-your-helm-chart/oracle-mysql
-   ```
-
-2. Enable monitoring function.
-
-   Opt 1. Enable when creating a cluster
-
-   ```bash
-   kbcli cluster create mycluster --cluster-definition='oracle-mysql' --monitor='true'
-   ```
-
-   Opt 2. Enable in an existing cluster
-
-   ```bash
-   kbcli cluster update mycluster --monitor='true'
-   ```
-
-### Open the dashboard
-
-   ```bash
-   # View available dashboards
-   kbcli dashboard list
-   >
-   NAME                                      NAMESPACE        PORT        CREATED-TIME
-   kubeblocks-grafana                        default          3000        Jan 13,2023 10:53 UTC+0800
-   kubeblocks-prometheus-alertmanager        default          9093        Jan 13,2023 10:53 UTC+0800
-   kubeblocks-prometheus-server              default          9090        Jan 13,2023 10:53 UTC+0800
-
-   # Select Grafana and open the web console in the default browser
-   kbcli dashboard open kubeblocks-grafana
-   ```
-
-### Sign in to the dashboard
-
-![Grafana Homepage](./../../img/addon-monitoring-signin.png)
-
-:::note
-
-If the dashboard requires a login, use the following username and password.
-
-```bash
-Username: admin 
-Password: kubeblocks
-```
-
-:::
-
-## Summary
-
-This tutorial explains how to quickly adapt the Prometheus/Grafana solution to monitor your database cluster. KubeBlocks will also introduce a monitoring solution based on OpenTelemetry in the future. Stay tuned for updates.
-
-## References
-
-1. [Prometheus](https://prometheus.io/).
-2. [Grafana Dashboard](https://grafana.com/grafana/dashboards/).
-3. [Create a dashboard](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/create-dashboard/).
-
-## Appendix
-
-### A.1 Disable cluster monitoring
-
-In KubeBlocks, you can enable or disable monitoring for a specific cluster using kbcli.
-
-```bash
-kbcli cluster update mycluster --monitor='false'
-```
diff --git a/docs/developer_docs/integration/multi-component.md b/docs/developer_docs/integration/multi-component.md
deleted file mode 100644
index 14237ef3f..000000000
--- a/docs/developer_docs/integration/multi-component.md
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title: Multi-component configuration
-description: How to configure multi-component in KubeBlocks with NebulaGraph as an example
-keywords: [multi-component,add-on]
-sidebar_position: 7
-sidebar_label: Multi-component configuration
----
-
-# Multi-component configuration
-
-So far, you've learned the definition, backup, and configuration of single-component clusters (e.g., Oracle-MySQL).
-
-This tutorial takes NebulaGraph as an example to demonstrate how to integrate a multi-component cluster and address several common issues in multi-component configurations. You can find more details in [this repository](https://github.com/apecloud/kubeblocks-addons/tree/main/addons/nebula).
-
-## Before you start
-
-- Finish [Tutorial 1](./how-to-add-an-add-on.md).
-- Knowledge about basic KubeBlocks concepts, such as ClusterDefinition, Cluster, ComponentRef, and Component.
-
-## NebulaGraph Architecture
-
-First, take a look at the overall architecture of NebulaGraph.
-
-NebulaGraph applies the separation of storage and computing architecture and consists of three services: the Graph Service, the Meta Service, and the Storage Service. The following figure shows the architecture of a typical NebulaGraph cluster.
-
-![NebulaGraph Architecture (source: https://github.com/vesoft-inc/nebula)](./../../img/nebula-aichitecture.png)
-
-- Metad: It is a component based on the Raft protocol and is responsible for data management tasks such as Schema operations, cluster management, and user permission management.
-- Graphd: It is the compute component and is responsible for handling query requests, including query parsing, validation, and generating and executing query plans.
-- Storaged: It is the distributed storage component based on Multi Group Raft, responsible for storing data.
-
-If the client is considered, the fourth component is:
-
-- Client: It is a stateless component used to connect to Graphd and send graph queries.
-
-## Configure cluster typology
-
-Now you've learned the four components of NebulaGraph, and how each component is started and configured.
-
-Similar to a single-component cluster, you can quickly assemble the definition for a multi-component cluster.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterDefinition
-metadata:
-  name: nebula
-spec:
-  componentDefs:
-    - name: nebula-console    # client
-      workloadType: Stateless
-      characterType: nebula
-      podSpec: ...
-    - name: nebula-graphd     # graphd
-      workloadType: Stateful
-      podSpec: ...
-    - name: nebula-metad      # metad
-      workloadType: Stateful
-      podSpec: ...
-    - name: nebula-storaged   # storaged
-      workloadType: Stateful
-      podSpec: ...
----
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterVersion
-metadata:
-  name: nebula-3.5.0
-spec:
-  clusterDefinitionRef: nebula   # clusterdef name
-  componentVersions:
-    - componentDefRef: nebula-console  # Specify image for client
-      versionsContext:
-        containers:
-        - name: nebula-console
-          image: ...
-    - componentDefRef: nebula-graphd  # Specify image for graphd
-      versionsContext:
-        containers:
-        - name: nebula-graphd
-          image: 
-    - componentDefRef: nebula-metad   # Specify image for metad
-      versionsContext:
-        containers:
-        - name: nebula-metad
-          image: ...
-    - componentDefRef: nebula-storaged  # Specify image for storaged
-      versionsContext:
-        containers:
-        - name: nebula-storaged
-          image: ...
-```
-
-The above YAML file provides an outline of the ClusterDefinition and ClusterVersion for NebulaGraph. Corresponding to the first figure, four components (including the client) and their version information are specified.
-
-If each component can be started independently, the information provided in the above YAML file would be sufficient.
-
-However, it can be observed that in a multi-component cluster, there are often inter-component references. So, how to specify the references thereof?
-
-## Configure inter-component references
-
-As discovered, components may refer to each other and the figure below shows the inter-component references in a NebulaGraph cluster. For example,
-
-1. Nebula-Console needs to know the port number and service name of Nebula-Graphd.
-2. Nebula-Graphd needs to know the DNS of each Pod of Nebula-Metad. 
-3. Nebula-Storaged also needs to know the DNS of each Pod of Nebula-Metad.
-
-![Nebula Inter-Component References](./../../img/nebula-inter-component-ref.png)
-
-Therefore, three common types of inter-component references are:
-
-1. **Service Reference**
-
-   E.g., Nebula-Console needs to obtain the service name of Nebula-Graphd.
-2. **HostName Reference**
-
-   E.g., Nebula-Graphd needs to configure the DNS of all Pods of Nebula-metad. This reference typically points to a stateful component.
-3. **Field Reference**
-
-   E.g., Nebula-Console needs to obtain a service port name of Nebula-Graphd.
-
-To ensure that the cluster starts normally, the above information needs to be injected into the Pod through environment variables (whether it is loaded through configmap or defined as pod env).
-
-In KubeBlocks, the `ComponentDefRef` API can be used to achieve the goal. It introduces the following APIs:
-
-- `componentDefName`, used to specify the name of the component definition that is being referenced to.
-- `componentRefEnv`, which defines a set of environment variables that need to be injected.
-  - `name` defines the name of the injected environment variable.
-  - `valueFrom` defines the source of the variable value.
-
-Next, you will learn how `ComponentDefRef` deals with the three types of references mentioned above.
-
-### Service Reference
-
-Case 1: Nebula-Console needs to obtain the service name of Nebula-Graphd.
-
-When defining `nebula-console`, add the following definitions (as `componentDefRef` shows):
-
-```yaml
-    - name: nebula-console
-      workloadType: Stateless
-      characterType: nebula
-      componentDefRef:
-        - componentDefName: nebula-graphd
-          componentRefEnv:
-            - name: GRAPHD_SVC_NAME
-              valueFrom:
-                type: ServiceRef
-```
-
-- Specify the component that is being referenced to as `nebula-graphd`.
-- The name of the injected environment variable is `GRAPHD_SVC_NAME`.
-- The value type of the variable is `ServerRef`, indicating that the value comes from the service name of the referenced component.
-
-:::note
-
-In KubeBlocks, if you've defined the `service` for a component, when you create a cluster, KubeBlocks will create a service named `{clusterName}-{componentName}` for that component.
-
-:::
-
-### HostName Reference
-
-Case 2: Nebula-Graphd needs to configure the DNS of all PODs of Nebula-Metad.
-
-```yaml
-    - name: nebula-graphd
-      workloadType: Statelful    
-      componentDefRef:
-        - componentDefName: nebula-metad
-          componentRefEnv:
-            - name: NEBULA_METAD_SVC
-              valueFrom:
-                type: HeadlessServiceRef
-                format: $(POD_FQDN):9559    # Optional, specify value format
-```
-
-- Specify the component that is being referenced to as `nebula-metad`.
-- The name of the injected environment variable is `NEBULA_METAD_SVC`.
-- The value type of the variable is `HeadlessServiceRef`.
-  - It indicates that the value comes from the FQDN of all Pods of the referenced component, and multiple values are connected with , by default.
-  - If the default FQDN format does not meet your needs, customize the format through format (as shown in Line 9).
-
-:::note
-
-KubeBlocks provides three built-in variables as placeholders and they will be replaced with specific values when the cluster is created:
-- `${POD_ORDINAL}`, which is the ordinal number of the Pod.
-- `${POD_NAME}`, which is the name of the Pod, formatted as `{clusterName}-{componentName}-{podOrdinal}`.
-- `${POD_FQDN}`, which is the Fully Qualified Domain Name (FQDN) of the Pod.
-
-In KubeBlocks, each stateful component has a Headless Service named `headlessServiceName = {clusterName}-{componentName}-headless` by default.
-
-Therefore, the format of the Pod FQDN of each stateful component is:
-`POD_FQDN = {clusterName}-{componentName}-{podIndex}.{headlessServiceName}.{namespace}.svc`.
-
-:::
-
-### Field Reference
-
-Case 3: Nebula-Console needs to obtain a service port name of Nebula-Graphd.
-
-When defining `nebula-console`, add the following configurations (as `componentDefRef` shows):
-
-```yaml
-    - name: nebula-console
-      workloadType: Stateless
-      characterType: nebula
-      componentDefRef:
-        - componentDefName: nebula-graphd
-          componentRefEnv:
-            - name: GRAPHD_SVC_PORT
-              valueFrom:
-                type: FieldRef
-                fieldPath: $.componentDef.service.ports[?(@.name == "thrift")].port
-```
-
-- Specify the component that is being referenced to as `nebula-graphd`.
-- The name of the injected environment variable is `GRAPHD_SVC_PORT`.
-- The value type of the variable is `FieldRef`, indicating that the value comes from a certain property value of the referenced component and is specified by `fieldPath`.
-
-`fieldPath` provides a way to parse property values through JSONPath syntax.
-When parsing JSONPath, KubeBlocks registers two root objects by default:
-
-- **componentDef**, the componentDef object being referenced.
-- **components**, all components corresponding to the componentDef in the created cluster.
-
-Therefore, in `fieldPath`, you can use `$.componentDef.service.ports[?(@.name == "thrift")].port` to obtain the port number named `thrift` in the service defined by this component.
-
-## Summary
-
-This tutorial takes NebulaGraph as an example and introduces several types and solutions of inter-component references.
-
-In addition to NebulaGraph, engines like GreptimeDB, Pulsar, RisingWave and StarRocks also adopt `componentDefRef` API to deal with component references. You can also refer to their solutions.
-
-For more information about the `componentDefRef`, refer to [ComponentDefRef API](https://kubeblocks.io/docs/release-0.6/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1alpha1.ComponentDefRef).
-
-## Appendix
-
-### A1. YAML tips
-
-Since Nebula-Graphd, Nebula-Metad and Nebula-Storaged all require the FQDN of each Pod in Nebula-Metad, you don't need to configure them repeatedly.
-
-Quickly configure them with YAML anchors.
-
-```yaml
-- name: nebula-graphd
-  # ...
-  componentDefRef:
-    - &metadRef # Define an anchor with `&`
-      componentDefName: nebula-metad
-      componentRefEnv:
-        - name: NEBULA_METAD_SVC
-          valueFrom:
-            type: HeadlessServiceRef
-            format: $(POD_FQDN){{ .Values.clusterDomain }}:9559
-            joinWith: ","
-- name: nebula-storaged
-  componentDefRef:
-    - *metadRef # Use the anchor with `*` to avoid duplication
-```
diff --git a/docs/developer_docs/integration/parameter-configuration.md b/docs/developer_docs/integration/parameter-configuration.md
deleted file mode 100644
index f316de1bd..000000000
--- a/docs/developer_docs/integration/parameter-configuration.md
+++ /dev/null
@@ -1,356 +0,0 @@
----
-title: Parameter configuration
-description: How to configure parameter templates and update parameters in KubeBlocks 
-keywords: [parameter configuration]
-sidebar_position: 5
-sidebar_label: Parameter configuration
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Parameter configuration
-
-This tutorial takes Oracle MySQL as an example and explains how to configure parameter templates and parameters in KubeBlocks. You can find [the full PR here](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-3-config-and-reconfig/).
-
-## Before you start
-
-1. Grasp basic concepts of Kubernetes, such as Pod and ConfigMap.
-2. Finish configurations in [Configure parameter template](./parameter-template.md).
-3. (Optional) Know something about Go Template.
-4. (Optional)Know something about CUE Lang.
-
-## Introduction
-
-KubeBlocks adds configurations by mounting the ConfigMap to the volume. With a Kubernetes-Native concept that `ConfigMap is the only source of truth`, it centralizes entry for parameter changes in the ConfigMap to prevent configuration drifting. Therefore, the order below illustrates how KubeBlocks performs parameter reconfiguration:
-
-1. Configure parameter values in the ConfigMap.
-2. Derive parameter configurations (add/delete/update) based on ConfigMap modifications.
-3. Apply the parameter configurations to the engine.
-
-Different parameters require different configuration methods:
-
-- Static parameters require a cluster restart (cold update).
-- Dynamic parameters require a parameter refresh (hot update).
-
-Table 1 lists four common hot update methods, including UNIX Signal, SQL, Auto, etc. Currently, engines in KubeBlocks can implement one or more of these methods. For example, to apply dynamic configuration in PostgreSQL, you can use:
-
-- UNIX Signal: Send a `SIGHUP` signal.
-- Tools: Call `pg_ctl` command.
-- SQL: Execute SQL statements to directly update parameters.
-
-:paperclip: Table 1. Summary of Parameter Hot Updates
-
-| Methods     | Descriptions | Applicability |
-| :---------- | :----------- | :------------ |
-| Unix Signal | For example, PostgreSQL. <br /> If you need to reload the configuration file after parameter configuration, send a `SIGHUP` signal to PG. | Applicable to engines that support Unix Signal updates. |
-| SQL         | For example, MySQL. <br /> Perform parameter configurations through the SQL statement `SET GLOBAL <var> =<value>`. | Applicable to most RDBMS engines. <br /> **Note**: The `execSQL` interface is required. Currently, KubeBlocks only supports MySQL and PostgreSQL. |
-| Tools       | For example, Redis or MongoDB. <br /> Related tools are provided for configuring parameters. | Implemented via custom scripts or local tools, highly versatile. |
-| Auto        | The engine itself watches for changes in configuration files, and updates automatically when a change is detected. | Dependent on whether the engine supports automatic loading. |
-
-As mentioned in [Parameter template](./parameter-template.md), Kubernetes does not synchronously update ConfigMap changes to the Pod. For KubeBlocks, it not only needs to distinguish the way parameters are configured but also needs to watch whether the corresponding configurations are synchronized to the Pod.
-
-Now take a look at how KubeBlocks manages parameter configurations through the `ConfigConstraint` API.
-
-## ConfigConstraint
-
-As a multi-engine platform, KubeBlocks needs to get the following information to better support parameter configuration:
-
-1. Format of configuration files:
-
-   Different configuration files have different structures. KubeBlocks parses files based on their structure to deduce the information about each configuration (add/delete/update).
-
-2. Effect scope of parameters:
-
-   Be clear which parameters are dynamic, which are static, and which are immutable. KubeBlocks specifies the effect scope of parameters to determine how they quickly take effect.
-
-3. Methods for dynamic parameter changes:
-
-   As shown in Table 1., parameters can be dynamically configured in various ways. Therefore, specify different dynamic configuration methods for different engines.
-
-4. Definition of parameter validation rules:
-
-   It's important to define validation rules for parameters. In a production environment, developers often fail to start databases due to typos in parameter values. Parameter validation therefore adds a layer of protection by performing checks in advance to prevent such mistakes.
-
-:::note
-
-KubeBlocks creates a config-manager sidecar for components that have configured ConfigConstraint. It is used to detect file updates, send signals, and execute updated scripts.
-
-:::
-
-The information is included in `ConfigConstraint` (parameter constraints) as shown below. The four sections correspond to the four key configuration details mentioned above.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ConfigConstraint
-metadata:
-  name: oracle-mysql-config-constraints
-spec:
-  #1. Specify the file format as INI and only focus on the `mysqld` section
-  formatterConfig:
-    format: ini
-    iniConfig:
-      sectionName: mysqld
-
-  #2. Specify the dynamic parameter configuration method for MySQL, using `reload-script` to execute SQL statements
-  reloadOptions:
-    tplScriptTrigger:
-      sync: true
-      # Specify which script file to use for configuration
-      scriptConfigMapRef: oracle-mysql-reload-script
-      namespace: {{ .Release.Namespace }}
-
-  ##3.1 Configure static parameters
-  staticParameters:
-    - open_files_limit
-    - performance_schema
-    - enforce_gtid_consistency
-
-  ##3.2 Configure dynamic parameters
-  dynamicParameters:
-    - innodb_buffer_pool_size
-    - max_connections
-    - gtid_mode
-
-  ##4. Define parameter validation rules with a CUE template
-  cfgSchemaTopLevelName: MysqlParameter
-  configurationSchema:
-    cue: |-
-      {{- .Files.Get "config/oracle-mysql-config-constraint.cue" | nindent 6 }}
-```
-
-Each API is to be explained in the following tutorial.
-
-### FormatterConfig
-
-FormatterConfig describes the configuration file format, such as `ini`, `yaml`, `json`, `xml`, `properties`.
-
-The file itself is just a text and requires different parsers.
-
-When KubeBlocks detects a configuration file change, it deduces the parameter configuration (add/delete/update) based on the format and notifies the Pod to update.
-
-For example, MySQL's adjustable parameters take the `ini` format and only parse the `mysqld` information.
-
-```bash
-  formatterConfig:
-    format: ini               # Format of the configuration file and ini, xml, yaml, json and hcl are supported
-    iniConfig:
-      sectionName: mysqld     # If the ini format is adopted, there might be multiple sections and sectionName is required
-```
-
-### ReloadOptions
-
-ReloadOptions describes the method of dynamic parameter configuration.
-
-Table 1 above summarizes 4 common methods of dynamic parameter configuration. KubeBlocks, accordingly, supports multiple configuration methods.
-
-- tplScriptTrigger: Configures parameter by template files.
-- shellTrigger: Configures parameters by executing scripts.
-- unixSignalTrigger: Configures parameters through UNIX Signal.
-- None: AutoLoad mode, which is automatically configured by the database engine.
-
-***Example***
-
-- tplScriptTrigger
-
-  This example chooses `tplScriptTrigger` to configure parameters by defining the content in the template file.
-
-  ```bash
-    reloadOptions:
-      tplScriptTrigger:                                 # Configure parameters by template file
-        sync: true                                      # Synchronou reloading
-        scriptConfigMapRef: oracle-mysql-reload-script  # The referenced template file 
-        namespace: {{ .Release.Namespace }}
-  ```
-
-- shellTrigger
-
-  `shellTrigger` performs dynamic parameter configuration by shell scripts, which is a general method since most databases support configuring parameters through clients.
-
-  ```yaml
-    reloadOptions:
-      shellTrigger:
-        sync: true
-        command:
-          - "update-dynamic-config.sh" 
-  ```
-
-:::note
-
-The scripts in Reloadptions will be loaded to the Pod and executed by the config-manager sidecar mentioned before.
-
-:::
-
-### Static/Dynamic Parameters
-
-KubeBlocks supports configuring dynamic, static and immutable parameters and such effect scope is used to identify the parameter type and to determine how the parameter reconfiguration takes effect.
-
-KubeBlocks includes multiple parameter reloading strategies and applies the appropriate strategy based on the reconfiguration contents.
-
-This example lists some common MySQL parameters, such as the static parameter `performance_schema` and the dynamic parameter `max_connection`.
-
-If the parameter list is too long, it is recommended to use the `.Files.Get` function.
-
-```yaml
-  ##3.1 Configure static parameter list
-  staticParameters:
-    - open_files_limit
-    - performance_schema
-    - enforce_gtid_consistency
-
-  ##3.2 Configure dynamic parameter list
-  dynamicParameters:
-    - innodb_buffer_pool_size
-    - max_connections
-    - gtid_mode
-```
-
-### ConfigurationSchema
-
-During the configuration process, starting a cluster may fail due to entering an invalid parameter value.
-
-KubeBlocks provides ConfigurationSchema for validating parameter effectiveness. KubeBlocks uses CUE for verification. It works by describing the type, default value and range of each parameter to prevent problems caused by an invalid parameter value.
-
-This example illustrates the configuration for verifying MySQL parameter values.
-
-```yaml
-#MysqlParameter: {
-
-    // Sets the autocommit mode
-    autocommit?: string & "0" | "1" | "OFF" | "ON"
-
-    open_files_limit: int | *5000
-
-    // Enables or disables the Performance Schema
-    performance_schema: string & "0" | "1" | "OFF" | "ON" | *"0"
-    
-    // The number of simultaneous client connections allowed.
-    max_connections?: int & >=1 & <=100000    
-    ...
- }
-```
-
-For example, the example above defines some constraints for the parameter `performance_schema` in MySQL.
-
-- Type: string
-- Available values: ON, OFF, 0, 1
-- Default value: 0
-
-```yaml
-    // Enables or disables the Performance Schema
-    performance_schema: string & "0" | "1" | "OFF" | "ON" | *"0"
-```
-
-## How to configure parameters
-
-Better user experience, KubeBlocks offers kbcli for your convenient parameter management.
-
-### Create a cluster
-
-Both kbcli and Helm are supported.
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create mycluster --cluster-definition='oracle-mysql' --cluster-version oracle-mysql-8.0.32
-```
-
-</TabItem>
-
-<TabItem value="Helm" label="Helm">
-
-```bash
-helm install oracle-mysql path-to-your-helm-chart/oracle-mysql
-```
-
-</TabItem>
-
-</Tabs>
-
-### View parameter configuration
-
-View the detailed configuration of a cluster, including the configuration template name and constraint name.
-
-```bash
-kbcli cluster describe-config mycluster
->
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME   FILE     ENABLED   TEMPLATE                       CONSTRAINT                        RENDERED                            COMPONENT    CLUSTER
-mysql-config       my.cnf   true      oracle-mysql-config-template   oracle-mysql-config-constraints   mycluster-mysql-comp-mysql-config   mysql-comp   mycluster
-
-History modifications:
-OPS-NAME   CLUSTER   COMPONENT   CONFIG-SPEC-NAME   FILE   STATUS   POLICY   PROGRESS   CREATED-TIME   VALID-UPDATED
-```
-
-### Configure parameters
-
-For example, configure the max_connection of MySQL.
-
-Based on the above configuration,
-
-- max_connection is a dynamic parameter.
-- The value range is [1, 10000].
-
-:::note
-
-For KubeBlocks v0.6.0 and above, run `kbcli cluster edit-config` to configure the parameter.
-
-:::
-
-```bash
-kbcli cluster edit-config mycluster
-```
-
-In the interactive editing interface, edit max_connection as 1000.
-
-![Interactive Config Editor](./../../img/addon-interactive-config-editor.png)
-
-Save the changes and confirm the information to realize the parameter reconfiguration.
-
-![Confirm Config Changes](./../../img/addon-confirm-config-changes.png)
-
-### View the change history
-
-View the parameter configurations again. Besides the parameter template, the history and detailed information are also recorded.
-
-```bash
-kbcli cluster describe-config mycluster
->
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME   FILE     ENABLED   TEMPLATE                       CONSTRAINT                        RENDERED                            COMPONENT    CLUSTER
-mysql-config       my.cnf   true      oracle-mysql-config-template   oracle-mysql-config-constraints   mycluster-mysql-comp-mysql-config   mysql-comp   mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT    CONFIG-SPEC-NAME   FILE     STATUS    POLICY   PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-7p442   mycluster   mysql-comp   mysql-config       my.cnf   Succeed            1/1        Aug 25,2023 18:27 UTC+0800   {"my.cnf":"{\"mysqld\":{\"max_connections\":\"1000\"}}"}
-```
-
-## Reference
-
-- [Configure a Pod to Use a ConfigMap](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/)
-- [CUE Lang Overview](https://cuetorials.com/zh/overview/)
-- [KubeBlocks ApeCloud MySQL Configuration](https://kubeblocks.io/docs/preview/user_docs/kubeblocks-for-mysql/configuration)
-
-## Appendix
-
-### A.1 How to view the reconfiguration process
-
-Parameter configuration is a type of KubeBlocks operations, shorten as ops.
-
-After the kbcli reconfiguration command is performed, a Configuration ops is generated in KubeBlocks.
-
-As shown in [View the change history](#view-the-change-history), an ops named `mycluster-reconfiguring-7p442` is generated and you can run the command below to view the process, including the changes, policy and time.
-
-```bash
-kbcli cluster describe-op <your-reconfig-ops-name>
-```
-
-### A.2 Compare the difference between two changes
-
-Run `diff-config` to view the difference between two changes
-
-```bash
-kbcli cluster diff-config <your-reconfig-ops1> <your-reconfig-ops2>
-```
diff --git a/docs/developer_docs/integration/parameter-template.md b/docs/developer_docs/integration/parameter-template.md
deleted file mode 100644
index e222ac909..000000000
--- a/docs/developer_docs/integration/parameter-template.md
+++ /dev/null
@@ -1,231 +0,0 @@
----
-title: Parameter template
-description: How to configure parameter templates in KubeBlocks 
-keywords: [parameter template]
-sidebar_position: 4
-sidebar_label: Parameter template
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Parameter template
-
-This tutorial demonstrates how to configure parameter templates in KubeBlocks with Oracle MySQL as an example. You can find [the full PR here](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-3-config-and-reconfig/).
-
-## Before you start
-
-1. Grasp basic concepts of Kubernetes, such as Pod and ConfigMap.
-2. Finish [Tutorial 1](./how-to-add-an-add-on.md).
-3. Know something about Go Template (Optional).
-
-## Introduction
-
-When creating a cluster, developers typically configure parameters according to resource availability, performance needs, environment, etc. Cloud database providers like AWS and Alibaba Cloud have therefore offered various parameter templates (such as high-performance and asynchronous templates for RDS) to facilitate a quick startup for users.
-
-In this tutorial, you will learn how to configure parameters in KubeBlocks, which includes adding parameter templates, configuring parameters, and configuring parameter validation.
-
-Although Kubernetes allows users to mount parameter files as ConfigMap on volumes of the Pod, it only manages ConfigMap updates and synchronizes them to the volume. Therefore, if the database engine (such as MySQL and Postgres) fails to support dynamic loading of configuration files, you can only log in to the database to perform update operations, which can easily lead to configuration drift.
-
-To prevent that, KubeBlocks manages all parameters through ConfigMap with the principle that `ConfigMap is the only source-of-truth`. It means that all parameter configurations are first applied to ConfigMap, and then, depending on different ways the parameters take effect, applied to each Pod in the cluster. A comprehensive guide on how to configure parameters will be provided in the next tutorial.
-
-## ConfigTemplate
-
-KubeBlocks renders parameter templates with ***Go Template***. Apart from common functions, it also includes some frequently-used calculation functions such as `callBufferSizeByResource` and `getContainerCPU`.
-
-With KubeBlocks's enhanced rendering capabilities, you can quickly create an ***Adaptive ConfigTemplate*** and generate appropriate configuration files based on the context, such as memory and CPU.
-
-### Add a parameter template
-
-```yaml
-1 apiVersion: v1
-2 kind: ConfigMap
-3 metadata:
-4   name: oracle-mysql-config-template
-5   labels:
-6     {{- include "oracle-mysql.labels" . | nindent 4 }}
-7 data:
-8   my.cnf: |-
-9     {{`
-10      [mysqld]
-11      port=3306
-12      {{- $phy_memory := getContainerMemory ( index $.podSpec.containers 0 ) }}
-13      {{- $pool_buffer_size := ( callBufferSizeByResource ( index $.podSpec.containers 0 ) ) }}
-14      {{- if $pool_buffer_size }}
-15      innodb_buffer_pool_size={{ $pool_buffer_size }}
-16      {{- end }}
-17 
-18      # If the memory is less than 8Gi, disable performance_schema
-19      {{- if lt $phy_memory 8589934592 }}
-20      performance_schema=OFF
-21      {{- end }}
-22 
-23      [client]
-24      port=3306
-25      socket=/var/run/mysqld/mysqld.sock
-26      `
-27    }}
-```
-
-The above example illustrates an adaptive ConfigTemplate for MySQL defined through ConfigMap. It includes several common MySQL parameters, such as `port` and `innodb_buffer_pool_size`.
-
-Based on the memory parameter configured when the container is started, it can:
-
-- Calculate the size of `innodb_buffer_size` (Line 11 to 15);
-- Disable `performance_schema` when the memory is less than 8Gi to reduce performance impact (Line 19 to 21).
-
-`callBufferSizeByResource` is a predefined bufferPool calculation rule, primarily for MySQL. You can also customize your calculation formulas by querying memory and CPU:
-
-- `getContainerMemory` retrieves the memory size of a particular container in the Pod.
-- `getContainerCPU` retrieves the CPU size of a particular container in the Pod.
-
-:::note
-
-Tailor additional parameter calculation options as you wish:
-
-- Calculate an appropriate `max_connection` value based on memory size.
-- Calculate reasonable configurations for other components based on the total memory available.
-
-:::
-
-### Use a parameter template
-
-#### Modify ClusterDefinition
-
-Specify parameter templates through `configSpecs` in `ClusterDefinition` and quote the ConfigMap defined in [Add a parameter template](#add-a-parameter-template).
-
-```yaml
-  componentDefs:
-    - name: mysql-compdef
-      configSpecs:
-        - name: mysql-config
-          templateRef: oracle-mysql-config-template # Defines the ConfigMap name for the parameter template
-          volumeName: configs                       # Name of the mounted volume          
-          namespace: {{ .Release.Namespace }}       # Namespace of the ConfigMap
-      podSpec:
-        containers:
-         - name: mysql-container
-           volumeMounts:
-             - mountPath: /var/lib/mysql
-               name: data
-             - mountPath: /etc/mysql/conf.d       # Path to the mounted configuration files, engine-related  
-               name: configs                      # Corresponds to the volumeName on Line 6    
-           ports:
-            ...
-```
-
-As shown above, you need to modify `ClusterDefinition.yaml` file by adding `configSpecs`. Remember to specify the following:
-
-- templateRef: The name of the ConfigMap where the template is.
-- volumeName: The name of the volume mounted to the Pod.
-- namespace: The namespace of the template file (ConfigMap is namespace-scoped, usually in the namespace where KubeBlocks is installed).
-
-#### View configuration info
-
-When a new cluster is created, KubeBlocks renders the corresponding ConfigMap based on configuration templates and mounts it to the `configs` volume.
-
-1. Install a Helm chart.
-
-   ```bash
-   helm install oracle-mysql path-to-your-helm-char/oracle-mysql
-   ```
-
-2. Create a cluster.
-
-   ```bash
-   kbcli cluster create mycluster --cluster-definition oracle-mysql --cluster-version oracle-mysql-8.0.32
-   ```
-
-3. View configuration.
-
-   kbcli provides the subcommand `describe-config` to view the configuration of a cluster.
-
-   ```bash
-   kbcli cluster describe-config mycluster --component mysql-compdef
-   >
-   ConfigSpecs Meta:
-   CONFIG-SPEC-NAME   FILE     ENABLED   TEMPLATE                       CONSTRAINT   RENDERED                               COMPONENT       CLUSTER
-   mysql-config       my.cnf   false     oracle-mysql-config-template                mycluster-mysql-compdef-mysql-config   mysql-compdef   mycluster
-
-   History modifications:
-   OPS-NAME   CLUSTER   COMPONENT   CONFIG-SPEC-NAME   FILE   STATUS   POLICY   PROGRESS   CREATED-TIME   VALID-UPDATED
-   ```
-
-You can view:
-
-- Name of the configuration template: oracle-mysql-config-template
-- Rendered ConfigMap: mycluster-mysql-compdef-mysql-config
-- Name of the file loaded: my.cnf
-
-## Summary
-
-This tutorial introduces how to render "adaptive" parameters with configuration templates in KubeBlocks.
-
-In Kubernetes, ConfigMap changes are periodically synchronized to Pods, but most database engines (such as MySQL, PostgreSQL, and Redis) do not actively load new configurations. This is because modifying ConfigMap alone does not provide the capability to Reconfig (parameter changes).
-
-## Appendix
-
-### A.1 How to configure multiple parameter templates?
-
-To meet various requirements, developers often need to configure multiple parameter templates in a production environment. For example, Alibaba Cloud provides many high-performance parameter templates and asynchronous templates for customized needs.
-
-In KubeBlocks, developers can use multiple `ClusterVersion` to achieve their goals.
-
-$$
-Cluster = ClusterDefinition.yaml \Join ClusterVersion.yaml \Join Cluster.yaml
-$$
-
-The JoinKey is the Component Name.
-
-As the cluster definition formula indicates, multiple ClusterVersion can be combined with the same ClusterDefinition to set up different configurations.
-
-```yaml
-## The first ClusterVersion, uses configurations from ClusterDefinition
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterVersion
-metadata:
-  name: oracle-mysql
-spec:
-  clusterDefinitionRef: oracle-mysql
-  componentVersions:
-  - componentDefRef: mysql-compdef
-    versionsContext:
-      containers:
-        - name: mysql-container
-          ...
----
-## The second ClusterDefinition, defines its own configSpecs and overrides the configuration of ClusterDefinition
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterVersion
-metadata:
-  name: oracle-mysql-perf
-spec:
-  clusterDefinitionRef: oracle-mysql
-  componentVersions:
-  - componentDefRef: mysql-compdef
-    versionsContext:
-      containers:
-        - name: mysql-container
-         ...
-    # The name needs to be consistent with that of the ConfigMap defined in ClusterDefinition
-    configSpecs:
-      - name: mysql-config    
-        templateRef: oracle-mysql-perf-config-template
-        volumeName: configs
-```
-
-As shown above, two ClusterVersion objects are created.
-
-The first one uses the default parameter template (without any configuration), and the second one specifies a new parameter template `oracle-mysql-perf-config-template` through `configSpecs`.
-
-When creating a cluster, you can specify `ClusterVersion` to create clusters with different configurations, such as:
-
-```bash
-kbcli cluster create mysqlcuster --cluster-definition oracle-mysql --cluster-version  oracle-mysql-perf
-```
-
-:::note
-
-KubeBlocks merges configurations from ClusterVersion and ClusterDefinition via `configSpecs.name`. Therefore, make sure that `configSpecs.name` defined in ClusterVersion matches the name defined in ClusterDefinition.
-
-:::
diff --git a/docs/developer_docs/overview.md b/docs/developer_docs/overview.md
deleted file mode 100644
index e33bd7e0c..000000000
--- a/docs/developer_docs/overview.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: Overview
-description: An overview of developer docs
-keywords: [developer docs]
-sidebar_position: 1
-sidebar_label: Developer guides
----
-
-# Overview
-
-Guides and resources to unleash your development potential. Developer docs include integration tutorials for how to add an add-on to KubeBlocks, API reference, guides for referencing external components and simulating fault injections.
-
-* [Terminology](./terminology.md)
-* [Integration](./integration/add-ons-of-kubeblocks.md)
-* [API Reference](./api-reference/cluster.md)
-* [External Component](./external-component/reference-external-component.md)
diff --git a/docs/developer_docs/terminology.md b/docs/developer_docs/terminology.md
deleted file mode 100644
index b07380a02..000000000
--- a/docs/developer_docs/terminology.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-title: Terminology
-description: Terms you should know of KubeBlocks
-keywords: [terminology]
-sidebar_position: 2
-sidebar_label: Terminology
----
-# Terminology
-
-##### Addon
-
-An addon is an efficient and open extension mechanism. With the KubeBlocks addon, developers can quickly add a new database engine to KubeBlocks and obtain specific foundational management functionalities of that database engine, including but not limited to lifecycle management, data backup and recovery, metrics and log collection, etc.
-##### ActionSet
-
-An ActionSet declares a set of commands to perform backup and restore operations using specific tools, such as commands to backup MySQL using xtrabackup, as well as commands to restore data from the backup.
-
-##### BackupPolicy
-
-A BackupPolicy represents a backup strategy for a Cluster, including details such as the backup repository (BackupRepo), backup targets, and backup methods. Multiple backup methods can be defined within a backup policy, with each method referring to a corresponding ActionSet. When creating a backup, the backup policy and backup method can be specified for the backup process.
-
-##### BackupRepo
-
-BackupRepo is the storage repository for backup data. Its principle involves using a CSI driver to upload backup data to various storage systems, such as object storage systems like S3, GCS, as well as storage servers like FTP, NFS, and others.
-
-##### BackupSchedule
-
-BackupSchedule declares the configuration for automatic backups in a Cluster, including backup frequency, retention period, backup policy, and backup method. The BackupSchedule Controller creates a CronJob to automatically backup the Cluster based on the configuration specified in the Custom Resource (CR).
-
-##### Cluster 
-
-Cluster is composed by [components](#component-is-the-fundamental-assembly-component-used-to-build-a-data-storage-and-processing-system-a-component-utilizes-a-statefulset-either-native-to-kubernetes-or-specified-by-the-customer-such-as-openkruise-to-manage-one-to-multiple-pods).
-
-##### Component
-
-A component is the fundamental assembly component used to build a data storage and processing system. A Component utilizes a StatefulSet (either native to Kubernetes or specified by the customer, such as OpenKruise) to manage one to multiple Pods.
-
-##### ComponentRef
-
-ComponentRef is used to select the component and its fields to be referenced.
-
-##### ConfigConstraint
-
-KubeBlocks abstracts engine configuration files into ConfigConstraints to better support configuration changes. The abstracted information within ConfigConstraints includes the following content:
- - the format of the configuration file;
- - the dynamic and static parameters and the immutable parameters;
- - the dynamically changing parameters;
- - the parameter parity rules.
-
-##### CRD (Custom Resource Definition)
-
-CRD (Custom Resource Definition) extends the Kubernetes API, empowering developers to introduce new data types and objects known as custom resources.
-
-##### Operator
-
-Operator, a type of custom resource, automates tasks typically performed by human operators when managing one or more applications or services. By ensuring that a resource's defined state consistently aligns with its observed state, an operator supports Kubernetes in its management responsibilities.
-
-##### OpsDefinition
-
-Ops is short for "Operations," representing database maintenance operations. It defines the operations tasks related to database management, specifying which operations are supported by the cluster and components.
-
-##### OpsRequest
-
-An OpsRequest represents a single operation request.
-
-##### RBAC (Role-Based Access Control)
-
-RBAC (Role-Based Access Control), also known as role-based security, is a methodology employed in computer systems security to limit access to a system's network and resources exclusively to authorized users. Kubernetes features a built-in API for managing roles within namespaces and clusters, enabling their association with specific resources and individuals.
-
-##### RSM （ReplicatedStateMachines）
-
-ReplicatedStateMachines is a workload that manages native Kubernetes objects such as StatefulSet and Pods.
-
-##### ServiceDescriptor
-
-The ServiceDescriptor is a Custom Resource (CR) object used to describe API objects that reference storage services. It allows users to abstract a service provided either by Kubernetes or non-Kubernetes environments, making it available for referencing by other Cluster objects within KubeBlocks. The "ServiceDescriptor" can be used to address issues such as service dependencies, component dependencies, and component sharing within KubeBlocks.
-
-The management of containerized distributed database by KubeBlocks is mapped to objects at four levels: Cluster, Component, InstanceSet, and Instance, forming a layered architecture:
-
-##### Cluster layer
-
-A Cluster object represents a complete distributed database cluster. Cluster is the top-level abstraction, including all components and services of the database.
-
-##### Component layer
-
-A Component represents logical components that make up the Cluster object, such as metadata management, data storage, query engine, etc. Each Component object has its specific task and functions. A Cluster object contains one or more Component objects.
-
-##### InstanceSet layer
-
- An InstanceSet object manages the workload required for multiple replicas inside a Component object, perceiving the roles of the replicas. A Component object contains an InstanceSet object.
-
-##### Instance layer
-
-An Instance object represents an actual running instance within an InstanceSet object, corresponding to a Pod in Kubernetes. An InstanceSet object can manage zero to multiple Instance objects.
-
-##### ComponentDefinition
-
- ComponentDefinition is an API used to define components of a distributed database, describing the implementation details and behavior of the components. With ComponentDefinition, you can define key information about components such as container images, configuration templates, startup scripts, storage volumes, etc. They can also set the behavior and logic of components for different events (e.g., node joining, node leaving, addition of components, removal of components, role switching, etc.). Each component can have its own independent ComponentDefinition or share the same ComponentDefinition.
-
-##### ClusterDefinition
-
- ClusterDefinition is an API used to define the overall structure and topology of a distributed database cluster. Within ClusterDefinition, you can reference ComponentDefinitions of its included components, and define dependencies and references between components.
diff --git a/docs/img/addon-confirm-config-changes.png b/docs/img/addon-confirm-config-changes.png
deleted file mode 100644
index 634c09887..000000000
Binary files a/docs/img/addon-confirm-config-changes.png and /dev/null differ
diff --git a/docs/img/addon-interactive-config-editor.png b/docs/img/addon-interactive-config-editor.png
deleted file mode 100644
index df5ab9df0..000000000
Binary files a/docs/img/addon-interactive-config-editor.png and /dev/null differ
diff --git a/docs/img/addon-monitoring-signin.png b/docs/img/addon-monitoring-signin.png
deleted file mode 100644
index 1cc5c4cec..000000000
Binary files a/docs/img/addon-monitoring-signin.png and /dev/null differ
diff --git a/docs/img/apecloud-mysql-intro-role-changing.jpg b/docs/img/apecloud-mysql-intro-role-changing.jpg
deleted file mode 100644
index 36032638f..000000000
Binary files a/docs/img/apecloud-mysql-intro-role-changing.jpg and /dev/null differ
diff --git a/docs/img/api-delete-single-follower-pod-status.png b/docs/img/api-delete-single-follower-pod-status.png
deleted file mode 100644
index d265da5bc..000000000
Binary files a/docs/img/api-delete-single-follower-pod-status.png and /dev/null differ
diff --git a/docs/img/api-ha-all-pods-connect-after.png b/docs/img/api-ha-all-pods-connect-after.png
deleted file mode 100644
index 2b71649a2..000000000
Binary files a/docs/img/api-ha-all-pods-connect-after.png and /dev/null differ
diff --git a/docs/img/api-ha-all-pods-delete.png b/docs/img/api-ha-all-pods-delete.png
deleted file mode 100644
index e046235b4..000000000
Binary files a/docs/img/api-ha-all-pods-delete.png and /dev/null differ
diff --git a/docs/img/api-ha-all-pods-get-status.png b/docs/img/api-ha-all-pods-get-status.png
deleted file mode 100644
index 1dc316e99..000000000
Binary files a/docs/img/api-ha-all-pods-get-status.png and /dev/null differ
diff --git a/docs/img/api-ha-all-pods-grep-role-after.png b/docs/img/api-ha-all-pods-grep-role-after.png
deleted file mode 100644
index b47b27220..000000000
Binary files a/docs/img/api-ha-all-pods-grep-role-after.png and /dev/null differ
diff --git a/docs/img/api-ha-all-pods-grep-role.png b/docs/img/api-ha-all-pods-grep-role.png
deleted file mode 100644
index 9539be61f..000000000
Binary files a/docs/img/api-ha-all-pods-grep-role.png and /dev/null differ
diff --git a/docs/img/api-ha-connect-single-follower-pod.png b/docs/img/api-ha-connect-single-follower-pod.png
deleted file mode 100644
index 0fb0f61fb..000000000
Binary files a/docs/img/api-ha-connect-single-follower-pod.png and /dev/null differ
diff --git a/docs/img/api-ha-delete-leader-pod-after.png b/docs/img/api-ha-delete-leader-pod-after.png
deleted file mode 100644
index 25797237a..000000000
Binary files a/docs/img/api-ha-delete-leader-pod-after.png and /dev/null differ
diff --git a/docs/img/api-ha-delete-leader-pod.png b/docs/img/api-ha-delete-leader-pod.png
deleted file mode 100644
index 25eee2c51..000000000
Binary files a/docs/img/api-ha-delete-leader-pod.png and /dev/null differ
diff --git a/docs/img/api-ha-grep-role-single-follower-pod.png b/docs/img/api-ha-grep-role-single-follower-pod.png
deleted file mode 100644
index ae560f414..000000000
Binary files a/docs/img/api-ha-grep-role-single-follower-pod.png and /dev/null differ
diff --git a/docs/img/api-ha-grep-role.png b/docs/img/api-ha-grep-role.png
deleted file mode 100644
index 6d1f56e39..000000000
Binary files a/docs/img/api-ha-grep-role.png and /dev/null differ
diff --git a/docs/img/api-ha-leader-pod-connect-check.png b/docs/img/api-ha-leader-pod-connect-check.png
deleted file mode 100644
index e65b2c973..000000000
Binary files a/docs/img/api-ha-leader-pod-connect-check.png and /dev/null differ
diff --git a/docs/img/api-ha-pg-after.png b/docs/img/api-ha-pg-after.png
deleted file mode 100644
index 24c3c13b8..000000000
Binary files a/docs/img/api-ha-pg-after.png and /dev/null differ
diff --git a/docs/img/api-ha-pg-original-status.png b/docs/img/api-ha-pg-original-status.png
deleted file mode 100644
index d8b374064..000000000
Binary files a/docs/img/api-ha-pg-original-status.png and /dev/null differ
diff --git a/docs/img/api-ha-pg-replication-info.png b/docs/img/api-ha-pg-replication-info.png
deleted file mode 100644
index 8e8f38b97..000000000
Binary files a/docs/img/api-ha-pg-replication-info.png and /dev/null differ
diff --git a/docs/img/api-ha-single-follower-pod-delete.png b/docs/img/api-ha-single-follower-pod-delete.png
deleted file mode 100644
index 30aa26b96..000000000
Binary files a/docs/img/api-ha-single-follower-pod-delete.png and /dev/null differ
diff --git a/docs/img/api-ha-single-follower-pod-grep-role-after.png b/docs/img/api-ha-single-follower-pod-grep-role-after.png
deleted file mode 100644
index 82ab8d926..000000000
Binary files a/docs/img/api-ha-single-follower-pod-grep-role-after.png and /dev/null differ
diff --git a/docs/img/api-ha-two-pod-get-status.png b/docs/img/api-ha-two-pod-get-status.png
deleted file mode 100644
index bf07416d7..000000000
Binary files a/docs/img/api-ha-two-pod-get-status.png and /dev/null differ
diff --git a/docs/img/api-ha-two-pods-connect-after.png b/docs/img/api-ha-two-pods-connect-after.png
deleted file mode 100644
index 133146baf..000000000
Binary files a/docs/img/api-ha-two-pods-connect-after.png and /dev/null differ
diff --git a/docs/img/api-ha-two-pods-grep-role-after.png b/docs/img/api-ha-two-pods-grep-role-after.png
deleted file mode 100644
index bc15b37ca..000000000
Binary files a/docs/img/api-ha-two-pods-grep-role-after.png and /dev/null differ
diff --git a/docs/img/api-ha-two-pods-grep-role.png b/docs/img/api-ha-two-pods-grep-role.png
deleted file mode 100644
index 5800c232f..000000000
Binary files a/docs/img/api-ha-two-pods-grep-role.png and /dev/null differ
diff --git a/docs/img/api-monitoring.png b/docs/img/api-monitoring.png
deleted file mode 100644
index f9e1e8612..000000000
Binary files a/docs/img/api-monitoring.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-both-pods-grep-role-after.png b/docs/img/api-mysql-ha-both-pods-grep-role-after.png
deleted file mode 100644
index 8b0aa6d2e..000000000
Binary files a/docs/img/api-mysql-ha-both-pods-grep-role-after.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-both-pods-grep-role.png b/docs/img/api-mysql-ha-both-pods-grep-role.png
deleted file mode 100644
index 789f06dff..000000000
Binary files a/docs/img/api-mysql-ha-both-pods-grep-role.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-both-pods-status.png b/docs/img/api-mysql-ha-both-pods-status.png
deleted file mode 100644
index 57e74c463..000000000
Binary files a/docs/img/api-mysql-ha-both-pods-status.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-delete-both-pods.png b/docs/img/api-mysql-ha-delete-both-pods.png
deleted file mode 100644
index 1f89fedb5..000000000
Binary files a/docs/img/api-mysql-ha-delete-both-pods.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-delete-primary-pod-after.png b/docs/img/api-mysql-ha-delete-primary-pod-after.png
deleted file mode 100644
index 5262c9fc8..000000000
Binary files a/docs/img/api-mysql-ha-delete-primary-pod-after.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-delete-primary-pod.png b/docs/img/api-mysql-ha-delete-primary-pod.png
deleted file mode 100644
index e1f9635fb..000000000
Binary files a/docs/img/api-mysql-ha-delete-primary-pod.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-grep-role-secondary-pod.png b/docs/img/api-mysql-ha-grep-role-secondary-pod.png
deleted file mode 100644
index 1c6db7fc0..000000000
Binary files a/docs/img/api-mysql-ha-grep-role-secondary-pod.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-grep-role.png b/docs/img/api-mysql-ha-grep-role.png
deleted file mode 100644
index 2c14759bc..000000000
Binary files a/docs/img/api-mysql-ha-grep-role.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-secondary-pod-grep-role-after.png b/docs/img/api-mysql-ha-secondary-pod-grep-role-after.png
deleted file mode 100644
index 19e2a1224..000000000
Binary files a/docs/img/api-mysql-ha-secondary-pod-grep-role-after.png and /dev/null differ
diff --git a/docs/img/api-mysql-ha-secondary-pod-status.png b/docs/img/api-mysql-ha-secondary-pod-status.png
deleted file mode 100644
index 771e51031..000000000
Binary files a/docs/img/api-mysql-ha-secondary-pod-status.png and /dev/null differ
diff --git a/docs/img/api-ysql-ha-delete-secondary-pod.png b/docs/img/api-ysql-ha-delete-secondary-pod.png
deleted file mode 100644
index 471f36ec8..000000000
Binary files a/docs/img/api-ysql-ha-delete-secondary-pod.png and /dev/null differ
diff --git a/docs/img/backup-and-restore-backup-repo-1.png b/docs/img/backup-and-restore-backup-repo-1.png
deleted file mode 100644
index c8df5b889..000000000
Binary files a/docs/img/backup-and-restore-backup-repo-1.png and /dev/null differ
diff --git a/docs/img/backup-and-restore-backup-repo-2.png b/docs/img/backup-and-restore-backup-repo-2.png
deleted file mode 100644
index d293f9805..000000000
Binary files a/docs/img/backup-and-restore-backup-repo-2.png and /dev/null differ
diff --git a/docs/img/backup-and-restore-backup-repo-3.png b/docs/img/backup-and-restore-backup-repo-3.png
deleted file mode 100644
index 9ae8f8a55..000000000
Binary files a/docs/img/backup-and-restore-backup-repo-3.png and /dev/null differ
diff --git a/docs/img/backup-and-restore-configure-backuprepo-minio-bucket-0.png b/docs/img/backup-and-restore-configure-backuprepo-minio-bucket-0.png
deleted file mode 100644
index 1da4d965b..000000000
Binary files a/docs/img/backup-and-restore-configure-backuprepo-minio-bucket-0.png and /dev/null differ
diff --git a/docs/img/backup-and-restore-configure-backuprepo-minio-bucket-1.png b/docs/img/backup-and-restore-configure-backuprepo-minio-bucket-1.png
deleted file mode 100644
index 0b28637ea..000000000
Binary files a/docs/img/backup-and-restore-configure-backuprepo-minio-bucket-1.png and /dev/null differ
diff --git a/docs/img/backup-and-restore-configure-backuprepo-minio.png b/docs/img/backup-and-restore-configure-backuprepo-minio.png
deleted file mode 100644
index c8df5b889..000000000
Binary files a/docs/img/backup-and-restore-configure-backuprepo-minio.png and /dev/null differ
diff --git a/docs/img/banner-readme.jpeg b/docs/img/banner-readme.jpeg
deleted file mode 100644
index 28cf36081..000000000
Binary files a/docs/img/banner-readme.jpeg and /dev/null differ
diff --git a/docs/img/banner_image.jpg b/docs/img/banner_image.jpg
deleted file mode 100644
index 0cbfc3bbe..000000000
Binary files a/docs/img/banner_image.jpg and /dev/null differ
diff --git a/docs/img/banner_image_with_ape.jpg b/docs/img/banner_image_with_ape.jpg
deleted file mode 100644
index 3be1b7793..000000000
Binary files a/docs/img/banner_image_with_ape.jpg and /dev/null differ
diff --git a/docs/img/banner_image_with_ape_space.jpg b/docs/img/banner_image_with_ape_space.jpg
deleted file mode 100644
index 27e1d5c88..000000000
Binary files a/docs/img/banner_image_with_ape_space.jpg and /dev/null differ
diff --git a/docs/img/banner_website_version.png b/docs/img/banner_website_version.png
deleted file mode 100644
index 3fe485873..000000000
Binary files a/docs/img/banner_website_version.png and /dev/null differ
diff --git a/docs/img/configuration.png b/docs/img/configuration.png
deleted file mode 100644
index c49c59ca3..000000000
Binary files a/docs/img/configuration.png and /dev/null differ
diff --git a/docs/img/connect-to-kafka-cluster-gain-elb-address.png b/docs/img/connect-to-kafka-cluster-gain-elb-address.png
deleted file mode 100644
index 17df59e03..000000000
Binary files a/docs/img/connect-to-kafka-cluster-gain-elb-address.png and /dev/null differ
diff --git a/docs/img/connect_database.png b/docs/img/connect_database.png
deleted file mode 100644
index 3f35804df..000000000
Binary files a/docs/img/connect_database.png and /dev/null differ
diff --git a/docs/img/connect_database_in_a_production_environment.png b/docs/img/connect_database_in_a_production_environment.png
deleted file mode 100644
index 35596f21b..000000000
Binary files a/docs/img/connect_database_in_a_production_environment.png and /dev/null differ
diff --git a/docs/img/connect_database_with_CLI_or_SDK_client.png b/docs/img/connect_database_with_CLI_or_SDK_client.png
deleted file mode 100644
index e181fca85..000000000
Binary files a/docs/img/connect_database_with_CLI_or_SDK_client.png and /dev/null differ
diff --git a/docs/img/failure_simulation_connect_cluster_after.png b/docs/img/failure_simulation_connect_cluster_after.png
deleted file mode 100644
index cf2efc148..000000000
Binary files a/docs/img/failure_simulation_connect_cluster_after.png and /dev/null differ
diff --git a/docs/img/failure_simulation_connect_cluster_follower.png b/docs/img/failure_simulation_connect_cluster_follower.png
deleted file mode 100644
index 7ee397a5d..000000000
Binary files a/docs/img/failure_simulation_connect_cluster_follower.png and /dev/null differ
diff --git a/docs/img/failure_simulation_connect_three_pods.png b/docs/img/failure_simulation_connect_three_pods.png
deleted file mode 100644
index c379be4ba..000000000
Binary files a/docs/img/failure_simulation_connect_three_pods.png and /dev/null differ
diff --git a/docs/img/failure_simulation_connect_two_pods.png b/docs/img/failure_simulation_connect_two_pods.png
deleted file mode 100644
index 35b2e474b..000000000
Binary files a/docs/img/failure_simulation_connect_two_pods.png and /dev/null differ
diff --git a/docs/img/failure_simulation_delete_follower_pod.png b/docs/img/failure_simulation_delete_follower_pod.png
deleted file mode 100644
index 91979e509..000000000
Binary files a/docs/img/failure_simulation_delete_follower_pod.png and /dev/null differ
diff --git a/docs/img/failure_simulation_delete_pod.png b/docs/img/failure_simulation_delete_pod.png
deleted file mode 100644
index d7d39db04..000000000
Binary files a/docs/img/failure_simulation_delete_pod.png and /dev/null differ
diff --git a/docs/img/failure_simulation_delete_three_pods.png b/docs/img/failure_simulation_delete_three_pods.png
deleted file mode 100644
index 5ea90978f..000000000
Binary files a/docs/img/failure_simulation_delete_three_pods.png and /dev/null differ
diff --git a/docs/img/failure_simulation_delete_two_pods.png b/docs/img/failure_simulation_delete_two_pods.png
deleted file mode 100644
index dba597a52..000000000
Binary files a/docs/img/failure_simulation_delete_two_pods.png and /dev/null differ
diff --git a/docs/img/failure_simulation_describe_cluster.png b/docs/img/failure_simulation_describe_cluster.png
deleted file mode 100644
index a0a74049a..000000000
Binary files a/docs/img/failure_simulation_describe_cluster.png and /dev/null differ
diff --git a/docs/img/failure_simulation_describe_cluster_2.png b/docs/img/failure_simulation_describe_cluster_2.png
deleted file mode 100644
index 42ec0d5ed..000000000
Binary files a/docs/img/failure_simulation_describe_cluster_2.png and /dev/null differ
diff --git a/docs/img/failure_simulation_describe_cluster_after.png b/docs/img/failure_simulation_describe_cluster_after.png
deleted file mode 100644
index fcdb23dc3..000000000
Binary files a/docs/img/failure_simulation_describe_cluster_after.png and /dev/null differ
diff --git a/docs/img/failure_simulation_describe_cluster_follower.png b/docs/img/failure_simulation_describe_cluster_follower.png
deleted file mode 100644
index d37269dad..000000000
Binary files a/docs/img/failure_simulation_describe_cluster_follower.png and /dev/null differ
diff --git a/docs/img/failure_simulation_describe_three_pods.png b/docs/img/failure_simulation_describe_three_pods.png
deleted file mode 100644
index c5bff9e66..000000000
Binary files a/docs/img/failure_simulation_describe_three_pods.png and /dev/null differ
diff --git a/docs/img/failure_simulation_describe_two_pods.png b/docs/img/failure_simulation_describe_two_pods.png
deleted file mode 100644
index 4f2390036..000000000
Binary files a/docs/img/failure_simulation_describe_two_pods.png and /dev/null differ
diff --git a/docs/img/ha-mysql-delete-both-pods-after.png b/docs/img/ha-mysql-delete-both-pods-after.png
deleted file mode 100644
index d03c199ac..000000000
Binary files a/docs/img/ha-mysql-delete-both-pods-after.png and /dev/null differ
diff --git a/docs/img/ha-mysql-delete-both-pods.png b/docs/img/ha-mysql-delete-both-pods.png
deleted file mode 100644
index c37f7a0ec..000000000
Binary files a/docs/img/ha-mysql-delete-both-pods.png and /dev/null differ
diff --git a/docs/img/ha-mysql-delete-primary-pod.png b/docs/img/ha-mysql-delete-primary-pod.png
deleted file mode 100644
index 6105ddc85..000000000
Binary files a/docs/img/ha-mysql-delete-primary-pod.png and /dev/null differ
diff --git a/docs/img/ha-mysql-delete-secondary-after.png b/docs/img/ha-mysql-delete-secondary-after.png
deleted file mode 100644
index e32ee9908..000000000
Binary files a/docs/img/ha-mysql-delete-secondary-after.png and /dev/null differ
diff --git a/docs/img/ha-mysql-delete-secondary.png b/docs/img/ha-mysql-delete-secondary.png
deleted file mode 100644
index 6d1f6febd..000000000
Binary files a/docs/img/ha-mysql-delete-secondary.png and /dev/null differ
diff --git a/docs/img/ha-mysql-describe-cluster.png b/docs/img/ha-mysql-describe-cluster.png
deleted file mode 100644
index dd61fd7c5..000000000
Binary files a/docs/img/ha-mysql-describe-cluster.png and /dev/null differ
diff --git a/docs/img/ha-mysql-primary-pod-describe-after.png b/docs/img/ha-mysql-primary-pod-describe-after.png
deleted file mode 100644
index 79e0840df..000000000
Binary files a/docs/img/ha-mysql-primary-pod-describe-after.png and /dev/null differ
diff --git a/docs/img/intro_role_changing.png b/docs/img/intro_role_changing.png
deleted file mode 100644
index 75d145841..000000000
Binary files a/docs/img/intro_role_changing.png and /dev/null differ
diff --git a/docs/img/kafka-connect-cross-vpc.png b/docs/img/kafka-connect-cross-vpc.png
deleted file mode 100644
index 329ef7bfb..000000000
Binary files a/docs/img/kafka-connect-cross-vpc.png and /dev/null differ
diff --git a/docs/img/kbcli-fault-local-code.png b/docs/img/kbcli-fault-local-code.png
deleted file mode 100644
index 1d15db764..000000000
Binary files a/docs/img/kbcli-fault-local-code.png and /dev/null differ
diff --git a/docs/img/kubeblocks-architecture-ha.png b/docs/img/kubeblocks-architecture-ha.png
deleted file mode 100644
index c63e839d2..000000000
Binary files a/docs/img/kubeblocks-architecture-ha.png and /dev/null differ
diff --git a/docs/img/kubeblocks-architecture.png b/docs/img/kubeblocks-architecture.png
deleted file mode 100644
index f60f2da10..000000000
Binary files a/docs/img/kubeblocks-architecture.png and /dev/null differ
diff --git a/docs/img/kubeblocks-logo-black-font.png b/docs/img/kubeblocks-logo-black-font.png
deleted file mode 100644
index 5df4a7c61..000000000
Binary files a/docs/img/kubeblocks-logo-black-font.png and /dev/null differ
diff --git a/docs/img/kubeblocks-logo-short-version.png b/docs/img/kubeblocks-logo-short-version.png
deleted file mode 100644
index 9dc582484..000000000
Binary files a/docs/img/kubeblocks-logo-short-version.png and /dev/null differ
diff --git a/docs/img/kubeblocks-logo-white-font.png b/docs/img/kubeblocks-logo-white-font.png
deleted file mode 100644
index a5573a108..000000000
Binary files a/docs/img/kubeblocks-logo-white-font.png and /dev/null differ
diff --git a/docs/img/logs-grafana.png b/docs/img/logs-grafana.png
deleted file mode 100644
index bc823f64e..000000000
Binary files a/docs/img/logs-grafana.png and /dev/null differ
diff --git a/docs/img/mysql_cluster_expand_volume.png b/docs/img/mysql_cluster_expand_volume.png
deleted file mode 100644
index 8bc820091..000000000
Binary files a/docs/img/mysql_cluster_expand_volume.png and /dev/null differ
diff --git a/docs/img/mysql_cluster_horizontal_scaling.png b/docs/img/mysql_cluster_horizontal_scaling.png
deleted file mode 100644
index f1e8cbb91..000000000
Binary files a/docs/img/mysql_cluster_horizontal_scaling.png and /dev/null differ
diff --git a/docs/img/mysql_cluster_restart.png b/docs/img/mysql_cluster_restart.png
deleted file mode 100644
index d733e2caa..000000000
Binary files a/docs/img/mysql_cluster_restart.png and /dev/null differ
diff --git a/docs/img/mysql_cluster_start.png b/docs/img/mysql_cluster_start.png
deleted file mode 100644
index 9e434e2a1..000000000
Binary files a/docs/img/mysql_cluster_start.png and /dev/null differ
diff --git a/docs/img/mysql_cluster_stop.png b/docs/img/mysql_cluster_stop.png
deleted file mode 100644
index 357a3c939..000000000
Binary files a/docs/img/mysql_cluster_stop.png and /dev/null differ
diff --git a/docs/img/mysql_cluster_vertical_scaling.png b/docs/img/mysql_cluster_vertical_scaling.png
deleted file mode 100644
index 7797233c5..000000000
Binary files a/docs/img/mysql_cluster_vertical_scaling.png and /dev/null differ
diff --git a/docs/img/mysql_migration_active.png b/docs/img/mysql_migration_active.png
deleted file mode 100644
index 277172914..000000000
Binary files a/docs/img/mysql_migration_active.png and /dev/null differ
diff --git a/docs/img/mysql_migration_application_cdc.png b/docs/img/mysql_migration_application_cdc.png
deleted file mode 100644
index a1cbe96c2..000000000
Binary files a/docs/img/mysql_migration_application_cdc.png and /dev/null differ
diff --git a/docs/img/mysql_migration_application_status.png b/docs/img/mysql_migration_application_status.png
deleted file mode 100644
index a6ec9dc1a..000000000
Binary files a/docs/img/mysql_migration_application_status.png and /dev/null differ
diff --git a/docs/img/mysql_migration_batch_optimized_apply.png b/docs/img/mysql_migration_batch_optimized_apply.png
deleted file mode 100644
index 8a978e1bb..000000000
Binary files a/docs/img/mysql_migration_batch_optimized_apply.png and /dev/null differ
diff --git a/docs/img/mysql_migration_create_endpoints.png b/docs/img/mysql_migration_create_endpoints.png
deleted file mode 100644
index 4bd6600ea..000000000
Binary files a/docs/img/mysql_migration_create_endpoints.png and /dev/null differ
diff --git a/docs/img/mysql_migration_create_task.png b/docs/img/mysql_migration_create_task.png
deleted file mode 100644
index a198ba9d7..000000000
Binary files a/docs/img/mysql_migration_create_task.png and /dev/null differ
diff --git a/docs/img/mysql_migration_full_load_tuning_settings.png b/docs/img/mysql_migration_full_load_tuning_settings.png
deleted file mode 100644
index dff09f81d..000000000
Binary files a/docs/img/mysql_migration_full_load_tuning_settings.png and /dev/null differ
diff --git a/docs/img/mysql_migration_migration_type.png b/docs/img/mysql_migration_migration_type.png
deleted file mode 100644
index 32f344e41..000000000
Binary files a/docs/img/mysql_migration_migration_type.png and /dev/null differ
diff --git a/docs/img/mysql_migration_replication_instance.png b/docs/img/mysql_migration_replication_instance.png
deleted file mode 100644
index c4ed76a9a..000000000
Binary files a/docs/img/mysql_migration_replication_instance.png and /dev/null differ
diff --git a/docs/img/mysql_migration_select_rds_db_instance.png b/docs/img/mysql_migration_select_rds_db_instance.png
deleted file mode 100644
index 0a9fb6beb..000000000
Binary files a/docs/img/mysql_migration_select_rds_db_instance.png and /dev/null differ
diff --git a/docs/img/mysql_migration_target_table_preparation_mode.png b/docs/img/mysql_migration_target_table_preparation_mode.png
deleted file mode 100644
index 790a0ad1a..000000000
Binary files a/docs/img/mysql_migration_target_table_preparation_mode.png and /dev/null differ
diff --git a/docs/img/mysql_migration_test_connection.png b/docs/img/mysql_migration_test_connection.png
deleted file mode 100644
index b1d51cc82..000000000
Binary files a/docs/img/mysql_migration_test_connection.png and /dev/null differ
diff --git a/docs/img/mysql_migration_turn_on_validation.png b/docs/img/mysql_migration_turn_on_validation.png
deleted file mode 100644
index 8d05b0904..000000000
Binary files a/docs/img/mysql_migration_turn_on_validation.png and /dev/null differ
diff --git a/docs/img/nebula-aichitecture.png b/docs/img/nebula-aichitecture.png
deleted file mode 100644
index 941d049f8..000000000
Binary files a/docs/img/nebula-aichitecture.png and /dev/null differ
diff --git a/docs/img/nebula-inter-component-ref.png b/docs/img/nebula-inter-component-ref.png
deleted file mode 100644
index f6733465b..000000000
Binary files a/docs/img/nebula-inter-component-ref.png and /dev/null differ
diff --git a/docs/img/network location.png b/docs/img/network location.png
deleted file mode 100644
index 35596f21b..000000000
Binary files a/docs/img/network location.png and /dev/null differ
diff --git a/docs/img/observability-loki-dashboard.png b/docs/img/observability-loki-dashboard.png
deleted file mode 100644
index 0dd284201..000000000
Binary files a/docs/img/observability-loki-dashboard.png and /dev/null differ
diff --git a/docs/img/observability_alert.png b/docs/img/observability_alert.png
deleted file mode 100644
index b91893d52..000000000
Binary files a/docs/img/observability_alert.png and /dev/null differ
diff --git a/docs/img/pg-migration-sink.png b/docs/img/pg-migration-sink.png
deleted file mode 100644
index 8ade5825d..000000000
Binary files a/docs/img/pg-migration-sink.png and /dev/null differ
diff --git a/docs/img/pgsql-ha-after.png b/docs/img/pgsql-ha-after.png
deleted file mode 100644
index e39fe235f..000000000
Binary files a/docs/img/pgsql-ha-after.png and /dev/null differ
diff --git a/docs/img/pgsql-ha-before.png b/docs/img/pgsql-ha-before.png
deleted file mode 100644
index 3051246e1..000000000
Binary files a/docs/img/pgsql-ha-before.png and /dev/null differ
diff --git a/docs/img/pgsql-ha-pg_stat_replication.png b/docs/img/pgsql-ha-pg_stat_replication.png
deleted file mode 100644
index f45ff5c79..000000000
Binary files a/docs/img/pgsql-ha-pg_stat_replication.png and /dev/null differ
diff --git a/docs/img/pgsql-migration-describe-task.png b/docs/img/pgsql-migration-describe-task.png
deleted file mode 100644
index a28ef5594..000000000
Binary files a/docs/img/pgsql-migration-describe-task.png and /dev/null differ
diff --git a/docs/img/pgsql-migration-timestamp.png b/docs/img/pgsql-migration-timestamp.png
deleted file mode 100644
index aa233a030..000000000
Binary files a/docs/img/pgsql-migration-timestamp.png and /dev/null differ
diff --git a/docs/img/pgsql_cluster_expand_volume.png b/docs/img/pgsql_cluster_expand_volume.png
deleted file mode 100644
index 8bc820091..000000000
Binary files a/docs/img/pgsql_cluster_expand_volume.png and /dev/null differ
diff --git a/docs/img/pgsql_cluster_horizontal_scaling.png b/docs/img/pgsql_cluster_horizontal_scaling.png
deleted file mode 100644
index f1e8cbb91..000000000
Binary files a/docs/img/pgsql_cluster_horizontal_scaling.png and /dev/null differ
diff --git a/docs/img/pgsql_cluster_restart.png b/docs/img/pgsql_cluster_restart.png
deleted file mode 100644
index d733e2caa..000000000
Binary files a/docs/img/pgsql_cluster_restart.png and /dev/null differ
diff --git a/docs/img/pgsql_cluster_start.png b/docs/img/pgsql_cluster_start.png
deleted file mode 100644
index 9e434e2a1..000000000
Binary files a/docs/img/pgsql_cluster_start.png and /dev/null differ
diff --git a/docs/img/pgsql_cluster_stop.png b/docs/img/pgsql_cluster_stop.png
deleted file mode 100644
index 357a3c939..000000000
Binary files a/docs/img/pgsql_cluster_stop.png and /dev/null differ
diff --git a/docs/img/pgsql_vertical_scaling.png b/docs/img/pgsql_vertical_scaling.png
deleted file mode 100644
index 7797233c5..000000000
Binary files a/docs/img/pgsql_vertical_scaling.png and /dev/null differ
diff --git a/docs/img/proxy-architecture.png b/docs/img/proxy-architecture.png
deleted file mode 100644
index 98059f839..000000000
Binary files a/docs/img/proxy-architecture.png and /dev/null differ
diff --git a/docs/img/quick-start-alibaba-cloud-ak-management.png b/docs/img/quick-start-alibaba-cloud-ak-management.png
deleted file mode 100644
index 70610af08..000000000
Binary files a/docs/img/quick-start-alibaba-cloud-ak-management.png and /dev/null differ
diff --git a/docs/img/quick_start_dashboards.png b/docs/img/quick_start_dashboards.png
deleted file mode 100644
index 628048908..000000000
Binary files a/docs/img/quick_start_dashboards.png and /dev/null differ
diff --git a/docs/img/quick_start_mysql_panel.png b/docs/img/quick_start_mysql_panel.png
deleted file mode 100644
index 8b2f79716..000000000
Binary files a/docs/img/quick_start_mysql_panel.png and /dev/null differ
diff --git a/docs/img/quick_start_nyan_cat.png b/docs/img/quick_start_nyan_cat.png
deleted file mode 100644
index b5b476cf5..000000000
Binary files a/docs/img/quick_start_nyan_cat.png and /dev/null differ
diff --git a/docs/img/reconfigure-cr-relationship.drawio.png b/docs/img/reconfigure-cr-relationship.drawio.png
deleted file mode 100644
index def3e3936..000000000
Binary files a/docs/img/reconfigure-cr-relationship.drawio.png and /dev/null differ
diff --git a/docs/img/redis-ha-after.png b/docs/img/redis-ha-after.png
deleted file mode 100644
index b1c06f1d3..000000000
Binary files a/docs/img/redis-ha-after.png and /dev/null differ
diff --git a/docs/img/redis-ha-before.png b/docs/img/redis-ha-before.png
deleted file mode 100644
index 8f30a1824..000000000
Binary files a/docs/img/redis-ha-before.png and /dev/null differ
diff --git a/docs/img/redis-ha-info-replication.png b/docs/img/redis-ha-info-replication.png
deleted file mode 100644
index 234671fec..000000000
Binary files a/docs/img/redis-ha-info-replication.png and /dev/null differ
diff --git a/docs/img/redis-high-availability-get-pod.jpg b/docs/img/redis-high-availability-get-pod.jpg
deleted file mode 100644
index 24e24d55d..000000000
Binary files a/docs/img/redis-high-availability-get-pod.jpg and /dev/null differ
diff --git a/docs/img/wechat-assistant.jpg b/docs/img/wechat-assistant.jpg
deleted file mode 100644
index d49ef98a4..000000000
Binary files a/docs/img/wechat-assistant.jpg and /dev/null differ
diff --git a/docs/kubeblocks-docs b/docs/kubeblocks-docs
new file mode 160000
index 000000000..2cfff87f6
--- /dev/null
+++ b/docs/kubeblocks-docs
@@ -0,0 +1 @@
+Subproject commit 2cfff87f6db9e26a063f9e04f57c737511a44c3d
diff --git a/docs/node_modules/.yarn-integrity b/docs/node_modules/.yarn-integrity
deleted file mode 100644
index 20d6d4881..000000000
--- a/docs/node_modules/.yarn-integrity
+++ /dev/null
@@ -1,10 +0,0 @@
-{
-  "systemParams": "darwin-arm64-108",
-  "modulesFolders": [],
-  "flags": [],
-  "linkedModules": [],
-  "topLevelPatterns": [],
-  "lockfileEntries": {},
-  "files": [],
-  "artifacts": {}
-}
\ No newline at end of file
diff --git a/docs/release_notes/v0.1.0/_category_.yml b/docs/release_notes/v0.1.0/_category_.yml
deleted file mode 100644
index 3e3e5d5ad..000000000
--- a/docs/release_notes/v0.1.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 9
-label: v0.1.0
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/release_notes/v0.1.0/template.md b/docs/release_notes/v0.1.0/template.md
deleted file mode 100644
index cab736d94..000000000
--- a/docs/release_notes/v0.1.0/template.md
+++ /dev/null
@@ -1,168 +0,0 @@
-# KubeBlocks $kubeblocks_version ($today)
-
-We're happy to announce the release of KubeBlocks $kubeblocks_version! 🚀 🎉 🎈
-
-We would like to extend our appreciation to all contributors who helped make this release happen.
-
-**Breaking changes**
-* Reconstructed existing "dbaas.kubeblocks.io" API group to new "apps.kubeblocks.io" API group, affected following APIs:
-  - ClusterDefinition
-  - ClusterVersion
-  - Cluster
-  - ConfigConstraint
-  - OpsRequest
-* Refactored ConfigTemplate related API, affected following APIs:
-    - ClusterDefinition
-    - ClusterVersion
-
-* Existing APIs will no longer be functional, please make sure you have removed the deprecated APIs and transformed CRDs before upgrade. Please refer to the upgrade notes under this release notes.
-
-**Highlights**
-  * Automatic pod container environment variables updates:
-    * [NEW] KB_POD_FQDN - KubeBlocks Cluster component workload associated headless service name, N/A if workloadType=Stateless.
-    * [NEW] KB_POD_IP -  Pod IP address
-    * [NEW] KB_POD_IPS - Pod IP addresses
-    * [NEW] KB_HOST_IP - Host IP address
-    * [DEPRECATED] KB_PODIPS - Pod IP addresses
-    * [DEPRECATED] KB_PODIP -  Pod IP address
-    * [DEPRECATED] KB_HOSTIP - Host IP address
-    * KB_POD_NAME - Pod Name
-    * KB_NAMESPACE - Namespace
-    * KB_SA_NAME - Service Account Name
-    * KB_NODENAME - Node Name
-    * KB_CLUSTER_NAME - KubeBlocks Cluster API object name
-    * KB_COMP_NAME - Running pod's KubeBlocks Cluster API object's `.spec.components.name`
-    * KB_CLUSTER_COMP_NAME - Running pod's KubeBlocks Cluster API object's `<.metadata.name>-<.spec.components.name>`, same name is used for Deployment or StatefulSet workload name, and Service object name
-  * New KubeBlocks addon extensions management (an addon components are part of KubeBlocks control plane extensions). Highlights include: 
-    * New addons.extensions.kubeblocks.io API that provide running cluster installable check and auto-installation settings.
-    * Following addons are provided:
-      * Prometheus and Alertmanager
-      * AlertManager Webhook Adaptor
-      * Grafana
-      * KubeBlocks CSI driver
-      * S3 CSI driver
-      * Snapshot Controller
-      * KubeBlocks private network Load Balancer
-      * ApeCloud MySQL ClusterDefinition API
-      * Community PostgreSQL ClusterDefinition API
-      * Community Redis ClusterDefinition API
-      * Cluster availability demo application named NyanCat
-  * ClusterDefinition API `spec.connectionCredential` add following built-in variables:
-    * A random UUID v4 generator `$(UUID)`
-    * A random UUID v4 generator with BASE64 encoded `$(UUID_B64)`
-    * A random UUID v4 generator in UUID string then BASE64 encoded `$(UUID_STR_B64)`
-    * A random UUID v4 generator in HEX representation `$(UUID_HEX)`
-    * Service FQDN `$(SVC_FQDN)` placeholder, value pattern - $(CLUSTER_NAME)-$(1ST_COMP_NAME).$(NAMESPACE).svc, where 1ST_COMP_NAME is the 1st component that provide `ClusterDefinition.spec.componentDefs[].service` attribute
-    * Service ports `$(SVC_PORT_<NAME>)` placeholder
-    * example usage:
-    
-  ```yaml
-  # ClusterDefinition API
-  kind: ClusterDefinition
-    metadata:
-    name: my-clusterdefinition
-  spec:
-    connectionCredential:
-      username: "admin" 
-      "admin-password": "$(RANDOM_PASSWD)"
-      endpoint: "http://$(SVC_FQDN):$(SVC_PORT_http)"
-
-    componentsDefs:
-      - name: my-comp-type
-        service:
-          ports:
-            - name: http
-              port: 8123
-
-  # Cluster API
-  kind: Cluster
-  metadata:
-    name: my-cluster
-    namespace: my-ns
-  spec:
-    clusterDefinitionRef: my-clusterdefinition
-    componentSpecs:
-      - name: my-comp
-        type: my-comp-type
-
-  # output:
-  kind: Secret
-  metadata:
-    name: my-cluster-conn-credential
-    namespace: my-ns
-    labels:
-      "app.kubernetes.io/instance": my-cluster
-  stringData:
-    username: "admin"
-    admin-password: "<some random 8 characters password>"
-    endpoint: "http://my-cluster-my-comp.my-ns.svc:8123"
-  ```
-
-**Known issues and limitations**
-  * Limitations of cluster's horizontal scale operation:
-    * Only support VolumeSnapshot API to make a clone of Cluster's PV for syncing data when horizontal scaling.
-    * 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.
-    * Unused PVCs will be deleted in 30 minutes after scale in.
-
-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.
-
-$warnings
-
-See [this](#upgrading-to-kubeblocks-$kubeblocks_version) section to upgrade KubeBlocks to version $kubeblocks_version.
-
-## Acknowledgements
-
-Thanks to everyone who made this release possible!
-
-$kubeblocks_contributors
-
-## What's Changed
-$kubeblocks_changes
-
-## Upgrading to KubeBlocks $kubeblocks_version
-
-To upgrade to this release of KubeBlocks, follow the steps here to ensure a smooth upgrade.
-
-Release Notes for `v0.3.0`:
-- Rename CRD name `backupjobs.dataprotection.kubeblocks.io` to `backups.dataprotection.kubeblocks.io`
-  - upgrade KubeBlocks with the following command:
-    ```
-    helm upgrade --install kubeblocks kubeblocks/kubeblocks --version 0.3.0
-    ```
-  - after you upgrade KubeBlocks, check CRD `backupjobs.dataprotection.kubeblocks.io` and delete it
-    ```
-    kubectl delete crd backupjobs.dataprotection.kubeblocks.io
-    ```
-- Rename CRD name `appversions.dbaas.kubeblocks.io` to `clusterversions.dbaas.kubeblocks.io`
-  - before you upgrade KubeBlocks, please backup your Cluster CR yaml first.
-    ```
-    kubectl get cluster -oyaml > clusters.yaml
-    ```
-    then replace all spec.appVersionRef to spec.clusterVersionRef in the clusters.yaml.
-
-    Then, handle OpsRequest CR the same way.
-  - after you upgrade KubeBlocks, you can delete the CRD `appversions.dbaas.kubeblocks.io`
-    ```
-    kubectl delete crd appversions.dbaas.kubeblocks.io
-    ```
-    the last step, use the above backup of Clusters and OpsRequests to apply them.
-    ```
-    kubectl apply -f clusters.yaml
-      ```
-- Rename group name `dbaas.kubeblocks.io` to `apps.kubeblocks.io`
-    - upgrade kubeblocks to create new CRDs, after that, you can delete the CRDs with group name`dbaas.kubeblocks.io`
-
-## Breaking Changes
-
-$kubeblocks_breaking_changes
-* Refactored the use of labels. Existing clusters or config need to manually update their labels to ensure proper functionality. The following are specific changes:
-  - Pods of `statefulset` and `deployment`
-    - Replace label name from `app.kubernetes.io/component-name` to `apps.kubeblocks.io/component-name`
-    - Replace label name from `app.kubeblocks.io/workload-type` to `apps.kubeblocks.io/workload-type`
-    - Add label `app.kubernetes.io/version` with value `Cluster.Spec.ClusterVersionRef`
-    - Add label `app.kubernetes.io/component` with value `Cluster.Spec.ComponentSpecs.ComponentDefRef`
-  - CR `backuppolicytemplate`
-    - Replace label name from `app.kubernetes.io/created-by` to `app.kubernetes.io/managed-by`
-  - Configmap hosted by KubeBlocks and named with `*-env` suffix
-    - Replace label name from `app.kubernetes.io/config-type` to `apps.kubeblocks.io/config-type`
-* With KubeBlocks Helm chart replaced its optional components install using sub-charts dependencies with Addons extensions API, previous version upgrade to this version will uninstall the optional components completely.
diff --git a/docs/release_notes/v0.2.0/_category_.yml b/docs/release_notes/v0.2.0/_category_.yml
deleted file mode 100644
index 259777b53..000000000
--- a/docs/release_notes/v0.2.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 8
-label: v0.2.0
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/release_notes/v0.3.0/_category_.yml b/docs/release_notes/v0.3.0/_category_.yml
deleted file mode 100644
index 5c564ab78..000000000
--- a/docs/release_notes/v0.3.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 7
-label: v0.3.0
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/release_notes/v0.4.0/_category_.yml b/docs/release_notes/v0.4.0/_category_.yml
deleted file mode 100644
index 2f995ac64..000000000
--- a/docs/release_notes/v0.4.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: v0.4.0
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/release_notes/v0.5.0/_category_.yml b/docs/release_notes/v0.5.0/_category_.yml
deleted file mode 100644
index 07acdd33e..000000000
--- a/docs/release_notes/v0.5.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: v0.5.0
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/release_notes/v0.6.0/_category_.yml b/docs/release_notes/v0.6.0/_category_.yml
deleted file mode 100644
index aacd760cb..000000000
--- a/docs/release_notes/v0.6.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: v0.6.0
-collapsible: true 
-collapsed: true
diff --git a/docs/release_notes/v0.7.0/_category_.yml b/docs/release_notes/v0.7.0/_category_.yml
deleted file mode 100644
index 657214404..000000000
--- a/docs/release_notes/v0.7.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: v0.7.0
-collapsible: true 
-collapsed: true
diff --git a/docs/release_notes/v0.8.0/_category_.yml b/docs/release_notes/v0.8.0/_category_.yml
deleted file mode 100644
index 555e2cd55..000000000
--- a/docs/release_notes/v0.8.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: v0.8.0
-collapsible: true 
-collapsed: true
diff --git a/docs/release_notes/v0.9.0/0.9.4.md b/docs/release_notes/v0.9.0/0.9.4.md
new file mode 100644
index 000000000..d27fee368
--- /dev/null
+++ b/docs/release_notes/v0.9.0/0.9.4.md
@@ -0,0 +1,67 @@
+# KubeBlocks 0.9.4 (2025-06-30)
+
+We are delighted to announce the release of KubeBlocks v0.9.4. This release includes several new features, bug fixes, and various improvements. Here are the detailed update contents.
+
+## KubeBlocks
+
+### Features
+
+* **Cluster supports specifying PVC annotations and labels** By applying different annotations/labels to different types of PVC, CSI Drivers can set different IO quotas for various volumes. [(#8799)](https://github.com/apecloud/kubeblocks/pull/8799)
+
+* **Add annotation key to skip the pre-terminate action** Annotation: `apps.kubeblocks.io/skip-pre-terminate` [(#9121)](https://github.com/apecloud/kubeblocks/pull/9121)
+
+* **Support re-rendering configs on sharding component hscale** Re-render configs after horizontal scaling of shard components. [(#9195)](https://github.com/apecloud/kubeblocks/pull/9195)
+
+## KubeBlocks Addons
+
+### MySQL
+
+* Update parameter scope for `innodb_redo_log_capacity` and `secure_file_priv` [(#1510)](https://github.com/apecloud/kubeblocks-addons/pull/1510) [(#1585)](https://github.com/apecloud/kubeblocks-addons/pull/1585)
+
+### PostgreSQL
+
+* Fix missing `backupPolicy` for PostgreSQL 15 & 16 [(#1546)](https://github.com/apecloud/kubeblocks-addons/pull/1546)
+
+### Redis
+
+* Improve Redis cluster on stop-start [(#1554)](https://github.com/apecloud/kubeblocks-addons/pull/1554)
+* Improve member leave logic (do not rely on announce address) [(#1548)](https://github.com/apecloud/kubeblocks-addons/pull/1548)
+* Refine Redis host network variables [(#1603)](https://github.com/apecloud/kubeblocks-addons/pull/1603)
+
+### MongoDB
+
+* Add support for MongoDB exporter [(#1721)](https://github.com/apecloud/kubeblocks-addons/pull/1721)
+
+
+### RabbitMQ
+
+* Fix RabbitMQ startup failure [(#1479)](https://github.com/apecloud/kubeblocks-addons/pull/1479)
+* Fix RabbitMQ member leave issue [(#1657)](https://github.com/apecloud/kubeblocks-addons/pull/1657)
+
+
+### ZooKeeper
+
+* Add new CMPD definition for ZooKeeper [(#1514)](https://github.com/apecloud/kubeblocks-addons/pull/1514)
+* Fix snapshot log loss [(#1509)](https://github.com/apecloud/kubeblocks-addons/pull/1509)
+* Add `minSessionTimeout` [(#1535)](https://github.com/apecloud/kubeblocks-addons/pull/1535)
+* Fix backup and restore logic [(#1550)](https://github.com/apecloud/kubeblocks-addons/pull/1550)
+* Improve ZooKeeper role probe [(#1542)](https://github.com/apecloud/kubeblocks-addons/pull/1542)
+* Enhance ZooKeeper trace logging [(#1693)](https://github.com/apecloud/kubeblocks-addons/pull/1693)
+
+
+### VictoriaMetrics
+
+* Support environment variable when creating VictoriaMetrics clusters [(#1622)](https://github.com/apecloud/kubeblocks-addons/pull/1622)
+
+
+### ClickHouse
+
+* Persist log files for ClickHouse and Keeper [(#1560)](https://github.com/apecloud/kubeblocks-addons/pull/1560)
+
+## Upgrade to v0.9.4
+
+Refer to [Upgrade to KubeBlocks v0.9.x](https://kubeblocks.io/docs/preview/user_docs/upgrade/upgrade-to-v09-version).
+
+## Full Changelog
+
+You can check the [full changelog](https://github.com/apecloud/kubeblocks/compare/v0.9.3...v0.9.4) for additional changes.
\ No newline at end of file
diff --git a/docs/release_notes/v0.9.0/_category_.yml b/docs/release_notes/v0.9.0/_category_.yml
deleted file mode 100644
index 29e856b50..000000000
--- a/docs/release_notes/v0.9.0/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: v0.9.0
-collapsible: true 
-collapsed: true
diff --git a/docs/release_notes/v1.0.0/v1.0.0.md b/docs/release_notes/v1.0.0/v1.0.0.md
new file mode 100644
index 000000000..d5c14806c
--- /dev/null
+++ b/docs/release_notes/v1.0.0/v1.0.0.md
@@ -0,0 +1,180 @@
+# KubeBlocks 1.0.0 (2025-05-28)
+
+We are glad to announce the release of KubeBlocks 1.0.0.
+
+KubeBlocks 1.0.0 marks a significant milestone, with key APIs graduating to stable (v1) and substantial enhancements in cluster management, data protection, and operational stability—bringing greater flexibility and reliability to production environments.
+
+## Highlights
+
+### APIs Graduated to Stable
+
+KubeBlocks 0.9 introduced flexible topologies, advanced pod management (InstanceSet), and lifecycle hooks. Many of these features have now **graduated to stable**.
+
+The following CRDs are now **`v1` and considered stable**, with long-term support:
+
+**`apps.kubeblocks.io` API Group:**
+
+* `ClusterDefinition`
+* `Cluster`
+* `ComponentDefinition`
+* `Component`
+* `ComponentVersion`
+* `ServiceDescriptor`
+* `ShardingDefinition`
+* `SidecarDefinition`
+
+**`workloads.kubeblocks.io` API Group:**
+
+* `InstanceSet`
+
+### KubeBlocks Features
+
+* **Rolling Updates**: Supports rolling upgrades via the Cluster API, minimizing downtime during updates
+* **Incremental Backups**: Introduces support for incremental backups to improve performance and reduce storage usage
+
+### KubeBlocks Addon Highlights
+
+* **MySQL Enhancements**: Adds TLS, group replication with ProxySQL, and PITR using WAL-G—boosting security and recovery
+* **MongoDB PITR & Versioning**: Introduces Point-in-Time Recovery and new version support for MongoDB
+* **Kafka Improvements**: Supports external ZooKeeper, custom Prometheus metrics, and multi-network access for better flexibility and observability
+* **Redis Enhancements**: Adds cluster switchover, instance rebuild, and external config support to improve operational robustness
+
+---
+
+## What's Changed
+
+### KubeBlocks
+
+#### Cluster Management
+
+* **Rolling Upgrades**: Enables zero-downtime upgrades via Cluster API [#8973](https://github.com/apecloud/kubeblocks/pull/8973)
+* **Dynamic Image Registry**: Supports dynamic image registry replacement for more flexible deployments [#8018](https://github.com/apecloud/kubeblocks/pull/8018)
+* **Shard Pod Anti-Affinity**: Adds anti-affinity rules for shard components [#8705](https://github.com/apecloud/kubeblocks/pull/8705)
+* **Pod Metadata Updates**: Allows updating labels and annotations for underlying pods [#8571](https://github.com/apecloud/kubeblocks/pull/8571)
+* **PVC Volume Attributes**: Enables setting volumeAttributesClass for PVCs [#8783](https://github.com/apecloud/kubeblocks/pull/8783)
+* **PolicyRules for Component Definitions**: Adds granular policy control [#8328](https://github.com/apecloud/kubeblocks/pull/8328)
+* **Component Role Refactoring**: Improves role definition for component management [#8416](https://github.com/apecloud/kubeblocks/pull/8416)
+
+#### Data Protection
+
+* **Incremental Backups**: Adds support for efficient, incremental backups [#8693](https://github.com/apecloud/kubeblocks/pull/8693)
+* **Backup/Restore Parameters**: Ensures config consistency during backup/restore [#8472](https://github.com/apecloud/kubeblocks/pull/8472)
+* **Retain Latest Backup**: Adds option to retain the latest backup [#9088](https://github.com/apecloud/kubeblocks/pull/9088)
+
+#### Operations
+
+* **OpsRequest Validation**: Introduces validation policies to enforce operation correctness [#8232](https://github.com/apecloud/kubeblocks/pull/8232)
+
+---
+
+### KubeBlocks Addons
+
+#### MySQL
+
+* **TLS Support**: Adds TLS for secure connections [#1462](https://github.com/apecloud/kubeblocks-addons/pull/1462)
+* **Group Replication with ProxySQL**: Enhances HA via ProxySQL integration [#1467](https://github.com/apecloud/kubeblocks-addons/pull/1467)
+* **PITR Support**: Enables Point-in-Time Recovery using WAL-G [#1451](https://github.com/apecloud/kubeblocks-addons/pull/1451)
+* **Continuous & Incremental Backups**: Improves backup strategy with WAL-G [#1456](https://github.com/apecloud/kubeblocks-addons/pull/1456)
+
+#### Redis
+
+* **Cluster Switchover & Sentinel Optimization**: Enhances failover capabilities [#1414](https://github.com/apecloud/kubeblocks-addons/pull/1414)
+* **Instance Rebuild**: Adds support for rebuilding Redis instances [#1417](https://github.com/apecloud/kubeblocks-addons/pull/1417)
+
+#### MongoDB
+
+* **PITR Support**: Adds Point-in-Time Recovery [#1487](https://github.com/apecloud/kubeblocks-addons/pull/1487)
+* **New Version Support**: Adds support for MongoDB versions 8.0.8 and 8.0.6 [#1431](https://github.com/apecloud/kubeblocks-addons/pull/1431), [#1590](https://github.com/apecloud/kubeblocks-addons/pull/1590)
+
+#### Kafka
+
+* **External ZooKeeper**: Adds external ZooKeeper support for Kafka 2.7 [#1297](https://github.com/apecloud/kubeblocks-addons/pull/1297)
+* **Custom Prometheus Metrics**: Allows configuring custom metrics [#1544](https://github.com/apecloud/kubeblocks-addons/pull/1544)
+* **Skip Advertise Port Parsing**: Avoids parsing when using Pod IP [#1569](https://github.com/apecloud/kubeblocks-addons/pull/1569)
+* **Custom Security Context**: Adds support for custom security settings [#1337](https://github.com/apecloud/kubeblocks-addons/pull/1337)
+
+#### RabbitMQ
+
+* **New Versions**: Adds support for RabbitMQ versions 4.0.9 [#1596](https://github.com/apecloud/kubeblocks-addons/pull/1596)
+
+#### ClickHouse
+
+* **22.9.4 Support**: Adds compatibility with ClickHouse 22.9.4 [#1376](https://github.com/apecloud/kubeblocks-addons/pull/1376)
+
+#### TiDB
+
+* **8.4 Version Support**: Adds support for TiDB 8.4 [#1384](https://github.com/apecloud/kubeblocks-addons/pull/1384)
+* **Upgrade to 6.5.12**: Updates TiDB 6 to v6.5.12 [#1664](https://github.com/apecloud/kubeblocks-addons/pull/1664)
+
+---
+
+### API Graduations, Deprecations, and Removals
+
+#### GA (v1) API Promotions
+
+The following CRDs are now **promoted to `v1` and considered stable**, with long-term support:
+
+**`apps.kubeblocks.io` API Group**
+
+- `ClusterDefinition`
+- `Cluster`
+- `ComponentDefinition`
+- `Component`
+- `ComponentVersion`
+- `ServiceDescriptor`
+- `ShardingDefinition`
+- `SidecarDefinition`
+
+**`workloads.kubeblocks.io` API Group**
+
+- `InstanceSet`
+
+> `v1alpha1` and `v1beta1` versions of these resources are now deprecated and may be dropped in a future release.
+
+#### Deprecations
+
+The following CRDs are deprecated and will be **removed in upcoming releases**. Migrate your configurations accordingly:
+
+* `ConfigConstraint`
+* `Configuration`
+
+> These resources are no longer maintained or receiving updates.
+
+#### New Alpha APIs (Experimental)
+
+A new **`parameters.kubeblocks.io`** API group introduces fine-grained configuration APIs:
+
+* `ComponentParameter`
+* `ParamConfigRenderer`
+* `Parameter`
+* `ParametersDefinition`
+
+> These are intended to replace the deprecated `ConfigConstraint` and `Configuration`.
+
+#### API Group Realignment
+
+Several APIs have moved to new groups to better reflect their domain responsibilities. Update your manifests accordingly:
+
+| Resource                       | Old API Group        | New API Group                  |
+| ------------------------------ | -------------------- | ------------------------------ |
+| `OpsDefinition` / `OpsRequest` | `apps.kubeblocks.io` | `operations.kubeblocks.io`     |
+| `BackupPolicyTemplate`         | `apps.kubeblocks.io` | `dataprotection.kubeblocks.io` |
+
+
+## Upgrade Notice
+
+:::note
+Please note that direct upgrades from version 0.9 to 1.0 are NOT currently supported.
+:::
+
+We are actively developing a robust and tested upgrade path, which will be included in the upcoming release.
+
+## Acknowledgments
+
+As we celebrate the release of KubeBlocks 1.0.0, we’d like to extend our sincere thanks to all the engineers, contributors, and partners who have helped shape the project into what it is today.
+
+Special thanks to Kuaishou, China Mobile Cloud, Vipshop, Tencent, and 360 for their technical contributions, in-depth feedback, and real-world use cases that have significantly advanced the project’s architecture, performance, and production readiness.
+
+We’re also deeply grateful to our community contributors — your code contributions, issue reports, discussions, and reviews have been instrumental in driving the project forward with quality and innovation.
+
+With 1.0.0, we’ve reached a major milestone in building a robust, cloud-native database platform. We look forward to continuing this journey with all of you — growing the ecosystem, tackling new challenges, and pushing the boundaries of what’s possible in data infrastructure.
\ No newline at end of file
diff --git a/docs/user_docs/cli/_category_.yml b/docs/user_docs/cli/_category_.yml
deleted file mode 100644
index dff53aca8..000000000
--- a/docs/user_docs/cli/_category_.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-position: 30
-label: Command Line
-collapsible: true 
-collapsed: true 
-className: hide-children
\ No newline at end of file
diff --git a/docs/user_docs/cli/cli.md b/docs/user_docs/cli/cli.md
deleted file mode 100644
index 56b5b50b7..000000000
--- a/docs/user_docs/cli/cli.md
+++ /dev/null
@@ -1,211 +0,0 @@
----
-title: KubeBlocks CLI Overview
-description: KubeBlocks CLI overview
-sidebar_position: 1
----
-
-## [addon](kbcli_addon.md)
-
-Addon command.
-
-* [kbcli addon delete-resources-with-version](kbcli_addon_delete-resources-with-version.md)	 - Delete the sub-resources of specified addon and versions
-* [kbcli addon describe](kbcli_addon_describe.md)	 - Describe an addon specification.
-* [kbcli addon disable](kbcli_addon_disable.md)	 - Disable an addon.
-* [kbcli addon enable](kbcli_addon_enable.md)	 - Enable an addon.
-* [kbcli addon index](kbcli_addon_index.md)	 - Manage custom addon indexes
-* [kbcli addon install](kbcli_addon_install.md)	 - Install KubeBlocks addon
-* [kbcli addon list](kbcli_addon_list.md)	 - List addons.
-* [kbcli addon search](kbcli_addon_search.md)	 - Search the addon from index
-* [kbcli addon uninstall](kbcli_addon_uninstall.md)	 - Uninstall an existed addon
-* [kbcli addon upgrade](kbcli_addon_upgrade.md)	 - Upgrade an existed addon to latest version or a specified version
-
-
-## [backuprepo](kbcli_backuprepo.md)
-
-BackupRepo command.
-
-* [kbcli backuprepo create](kbcli_backuprepo_create.md)	 - Create a backup repository
-* [kbcli backuprepo delete](kbcli_backuprepo_delete.md)	 - Delete a backup repository.
-* [kbcli backuprepo describe](kbcli_backuprepo_describe.md)	 - Describe a backup repository.
-* [kbcli backuprepo list](kbcli_backuprepo_list.md)	 - List Backup Repositories.
-* [kbcli backuprepo list-storage-provider](kbcli_backuprepo_list-storage-provider.md)	 - List storage providers.
-* [kbcli backuprepo update](kbcli_backuprepo_update.md)	 - Update a backup repository.
-
-
-## [cluster](kbcli_cluster.md)
-
-Cluster command.
-
-* [kbcli cluster backup](kbcli_cluster_backup.md)	 - Create a backup for the cluster.
-* [kbcli cluster cancel-ops](kbcli_cluster_cancel-ops.md)	 - Cancel the pending/creating/running OpsRequest which type is vscale or hscale.
-* [kbcli cluster configure](kbcli_cluster_configure.md)	 - Configure parameters with the specified components in the cluster.
-* [kbcli cluster connect](kbcli_cluster_connect.md)	 - Connect to a cluster or instance.
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-* [kbcli cluster delete](kbcli_cluster_delete.md)	 - Delete clusters.
-* [kbcli cluster delete-backup](kbcli_cluster_delete-backup.md)	 - Delete a backup.
-* [kbcli cluster delete-ops](kbcli_cluster_delete-ops.md)	 - Delete an OpsRequest.
-* [kbcli cluster describe](kbcli_cluster_describe.md)	 - Show details of a specific cluster.
-* [kbcli cluster describe-backup](kbcli_cluster_describe-backup.md)	 - Describe a backup.
-* [kbcli cluster describe-backup-policy](kbcli_cluster_describe-backup-policy.md)	 - Describe backup policy
-* [kbcli cluster describe-config](kbcli_cluster_describe-config.md)	 - Show details of a specific reconfiguring.
-* [kbcli cluster describe-ops](kbcli_cluster_describe-ops.md)	 - Show details of a specific OpsRequest.
-* [kbcli cluster describe-restore](kbcli_cluster_describe-restore.md)	 - Describe a restore
-* [kbcli cluster diff-config](kbcli_cluster_diff-config.md)	 - Show the difference in parameters between the two submitted OpsRequest.
-* [kbcli cluster edit-backup-policy](kbcli_cluster_edit-backup-policy.md)	 - Edit backup policy
-* [kbcli cluster edit-config](kbcli_cluster_edit-config.md)	 - Edit the config file of the component.
-* [kbcli cluster explain-config](kbcli_cluster_explain-config.md)	 - List the constraint for supported configuration params.
-* [kbcli cluster expose](kbcli_cluster_expose.md)	 - Expose a cluster with a new endpoint, the new endpoint can be found by executing 'kbcli cluster describe NAME'.
-* [kbcli cluster label](kbcli_cluster_label.md)	 - Update the labels on cluster
-* [kbcli cluster list](kbcli_cluster_list.md)	 - List clusters.
-* [kbcli cluster list-backup-policies](kbcli_cluster_list-backup-policies.md)	 - List backups policies.
-* [kbcli cluster list-backups](kbcli_cluster_list-backups.md)	 - List backups.
-* [kbcli cluster list-components](kbcli_cluster_list-components.md)	 - List cluster components.
-* [kbcli cluster list-events](kbcli_cluster_list-events.md)	 - List cluster events.
-* [kbcli cluster list-instances](kbcli_cluster_list-instances.md)	 - List cluster instances.
-* [kbcli cluster list-logs](kbcli_cluster_list-logs.md)	 - List supported log files in cluster.
-* [kbcli cluster list-ops](kbcli_cluster_list-ops.md)	 - List all opsRequests.
-* [kbcli cluster list-restores](kbcli_cluster_list-restores.md)	 - List restores.
-* [kbcli cluster logs](kbcli_cluster_logs.md)	 - Access cluster log file.
-* [kbcli cluster promote](kbcli_cluster_promote.md)	 - Promote a non-primary or non-leader instance as the new primary or leader of the cluster
-* [kbcli cluster rebuild-instance](kbcli_cluster_rebuild-instance.md)	 - Rebuild the specified instances in the cluster.
-* [kbcli cluster register](kbcli_cluster_register.md)	 - Pull the cluster chart to the local cache and register the type to 'create' sub-command
-* [kbcli cluster restart](kbcli_cluster_restart.md)	 - Restart the specified components in the cluster.
-* [kbcli cluster restore](kbcli_cluster_restore.md)	 - Restore a new cluster from backup.
-* [kbcli cluster scale-in](kbcli_cluster_scale-in.md)	 - scale in replicas of the specified components in the cluster.
-* [kbcli cluster scale-out](kbcli_cluster_scale-out.md)	 - scale out replicas of the specified components in the cluster.
-* [kbcli cluster start](kbcli_cluster_start.md)	 - Start the cluster if cluster is stopped.
-* [kbcli cluster stop](kbcli_cluster_stop.md)	 - Stop the cluster and release all the pods of the cluster.
-* [kbcli cluster update](kbcli_cluster_update.md)	 - Update the cluster settings, such as enable or disable monitor or log.
-* [kbcli cluster upgrade](kbcli_cluster_upgrade.md)	 - Upgrade the service version(only support to upgrade minor version).
-* [kbcli cluster volume-expand](kbcli_cluster_volume-expand.md)	 - Expand volume with the specified components and volumeClaimTemplates in the cluster.
-* [kbcli cluster vscale](kbcli_cluster_vscale.md)	 - Vertically scale the specified components in the cluster.
-
-
-## [clusterdefinition](kbcli_clusterdefinition.md)
-
-ClusterDefinition command.
-
-* [kbcli clusterdefinition describe](kbcli_clusterdefinition_describe.md)	 - Describe ClusterDefinition.
-* [kbcli clusterdefinition list](kbcli_clusterdefinition_list.md)	 - List ClusterDefinitions.
-
-
-## [componentdefinition](kbcli_componentdefinition.md)
-
-ComponentDefinition command.
-
-* [kbcli componentdefinition describe](kbcli_componentdefinition_describe.md)	 - Describe ComponentDefinition.
-* [kbcli componentdefinition list](kbcli_componentdefinition_list.md)	 - List ComponentDefinition.
-
-
-## [componentversion](kbcli_componentversion.md)
-
-ComponentVersions command.
-
-* [kbcli componentversion describe](kbcli_componentversion_describe.md)	 - Describe ComponentVersion.
-* [kbcli componentversion list](kbcli_componentversion_list.md)	 - List ComponentVersion.
-
-
-## [dashboard](kbcli_dashboard.md)
-
-List and open the KubeBlocks dashboards.
-
-* [kbcli dashboard list](kbcli_dashboard_list.md)	 - List all dashboards.
-* [kbcli dashboard open](kbcli_dashboard_open.md)	 - Open one dashboard.
-
-
-## [dataprotection](kbcli_dataprotection.md)
-
-Data protection command.
-
-* [kbcli dataprotection backup](kbcli_dataprotection_backup.md)	 - Create a backup for the cluster.
-* [kbcli dataprotection delete-backup](kbcli_dataprotection_delete-backup.md)	 - Delete a backup.
-* [kbcli dataprotection describe-backup](kbcli_dataprotection_describe-backup.md)	 - Describe a backup
-* [kbcli dataprotection describe-backup-policy](kbcli_dataprotection_describe-backup-policy.md)	 - Describe a backup policy
-* [kbcli dataprotection describe-restore](kbcli_dataprotection_describe-restore.md)	 - Describe a restore
-* [kbcli dataprotection edit-backup-policy](kbcli_dataprotection_edit-backup-policy.md)	 - Edit backup policy
-* [kbcli dataprotection list-action-sets](kbcli_dataprotection_list-action-sets.md)	 - List actionsets
-* [kbcli dataprotection list-backup-policies](kbcli_dataprotection_list-backup-policies.md)	 - List backup policies
-* [kbcli dataprotection list-backup-policy-templates](kbcli_dataprotection_list-backup-policy-templates.md)	 - List backup policy templates
-* [kbcli dataprotection list-backups](kbcli_dataprotection_list-backups.md)	 - List backups.
-* [kbcli dataprotection list-restores](kbcli_dataprotection_list-restores.md)	 - List restores.
-* [kbcli dataprotection restore](kbcli_dataprotection_restore.md)	 - Restore a new cluster from backup
-
-
-## [kubeblocks](kbcli_kubeblocks.md)
-
-KubeBlocks operation commands.
-
-* [kbcli kubeblocks compare](kbcli_kubeblocks_compare.md)	 - List the changes between two different version KubeBlocks.
-* [kbcli kubeblocks config](kbcli_kubeblocks_config.md)	 - KubeBlocks config.
-* [kbcli kubeblocks describe-config](kbcli_kubeblocks_describe-config.md)	 - Describe KubeBlocks config.
-* [kbcli kubeblocks install](kbcli_kubeblocks_install.md)	 - Install KubeBlocks.
-* [kbcli kubeblocks list-versions](kbcli_kubeblocks_list-versions.md)	 - List KubeBlocks versions.
-* [kbcli kubeblocks preflight](kbcli_kubeblocks_preflight.md)	 - Run and retrieve preflight checks for KubeBlocks.
-* [kbcli kubeblocks status](kbcli_kubeblocks_status.md)	 - Show list of resource KubeBlocks uses or owns.
-* [kbcli kubeblocks uninstall](kbcli_kubeblocks_uninstall.md)	 - Uninstall KubeBlocks.
-* [kbcli kubeblocks upgrade](kbcli_kubeblocks_upgrade.md)	 - Upgrade KubeBlocks.
-
-
-## [ops-definition](kbcli_ops-definition.md)
-
-ops-definitions command.
-
-* [kbcli ops-definition describe](kbcli_ops-definition_describe.md)	 - Describe OpsDefinition.
-* [kbcli ops-definition list](kbcli_ops-definition_list.md)	 - List OpsDefinition.
-
-
-## [options](kbcli_options.md)
-
-Print the list of flags inherited by all commands.
-
-
-
-## [playground](kbcli_playground.md)
-
-Bootstrap or destroy a playground KubeBlocks in local host or cloud.
-
-* [kbcli playground destroy](kbcli_playground_destroy.md)	 - Destroy the playground KubeBlocks and kubernetes cluster.
-* [kbcli playground init](kbcli_playground_init.md)	 - Bootstrap a kubernetes cluster and install KubeBlocks for playground.
-
-
-## [plugin](kbcli_plugin.md)
-
-Provides utilities for interacting with plugins.
-
- Plugins provide extended functionality that is not part of the major command-line distribution.
-
-* [kbcli plugin describe](kbcli_plugin_describe.md)	 - Describe a plugin
-* [kbcli plugin index](kbcli_plugin_index.md)	 - Manage custom plugin indexes
-* [kbcli plugin install](kbcli_plugin_install.md)	 - Install kbcli or kubectl plugins
-* [kbcli plugin list](kbcli_plugin_list.md)	 - List all visible plugin executables on a user's PATH
-* [kbcli plugin search](kbcli_plugin_search.md)	 - Search kbcli or kubectl plugins
-* [kbcli plugin uninstall](kbcli_plugin_uninstall.md)	 - Uninstall kbcli or kubectl plugins
-* [kbcli plugin upgrade](kbcli_plugin_upgrade.md)	 - Upgrade kbcli or kubectl plugins
-
-
-## [report](kbcli_report.md)
-
-Report kubeblocks or cluster info.
-
-* [kbcli report cluster](kbcli_report_cluster.md)	 - Report Cluster information
-* [kbcli report kubeblocks](kbcli_report_kubeblocks.md)	 - Report KubeBlocks information, including deployments, events, logs, etc.
-
-
-## [trace](kbcli_trace.md)
-
-trace management command
-
-* [kbcli trace create](kbcli_trace_create.md)	 - create a trace.
-* [kbcli trace delete](kbcli_trace_delete.md)	 - Delete a trace.
-* [kbcli trace list](kbcli_trace_list.md)	 - list all traces.
-* [kbcli trace update](kbcli_trace_update.md)	 - update a trace.
-* [kbcli trace watch](kbcli_trace_watch.md)	 - watch a trace.
-
-
-## [version](kbcli_version.md)
-
-Print the version information, include kubernetes, KubeBlocks and kbcli version.
-
-
-
diff --git a/docs/user_docs/cli/kbcli.md b/docs/user_docs/cli/kbcli.md
deleted file mode 100644
index 1d61d3ec2..000000000
--- a/docs/user_docs/cli/kbcli.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: kbcli
----
-
-KubeBlocks CLI.
-
-### Synopsis
-
-```
-
-=============================================
- __    __ _______   ______  __       ______ 
-|  \  /  \       \ /      \|  \     |      \
-| ▓▓ /  ▓▓ ▓▓▓▓▓▓▓\  ▓▓▓▓▓▓\ ▓▓      \▓▓▓▓▓▓
-| ▓▓/  ▓▓| ▓▓__/ ▓▓ ▓▓   \▓▓ ▓▓       | ▓▓  
-| ▓▓  ▓▓ | ▓▓    ▓▓ ▓▓     | ▓▓       | ▓▓  
-| ▓▓▓▓▓\ | ▓▓▓▓▓▓▓\ ▓▓   __| ▓▓       | ▓▓  
-| ▓▓ \▓▓\| ▓▓__/ ▓▓ ▓▓__/  \ ▓▓_____ _| ▓▓_ 
-| ▓▓  \▓▓\ ▓▓    ▓▓\▓▓    ▓▓ ▓▓     \   ▓▓ \
- \▓▓   \▓▓\▓▓▓▓▓▓▓  \▓▓▓▓▓▓ \▓▓▓▓▓▓▓▓\▓▓▓▓▓▓
-
-=============================================
-A Command Line Interface for KubeBlocks
-```
-
-```
-kbcli [flags]
-```
-
-### Options
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-  -h, --help                           help for kbcli
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-* [kbcli clusterdefinition](kbcli_clusterdefinition.md)	 - ClusterDefinition command.
-* [kbcli componentdefinition](kbcli_componentdefinition.md)	 - ComponentDefinition command.
-* [kbcli componentversion](kbcli_componentversion.md)	 - ComponentVersions command.
-* [kbcli dashboard](kbcli_dashboard.md)	 - List and open the KubeBlocks dashboards.
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-* [kbcli ops-definition](kbcli_ops-definition.md)	 - ops-definitions command.
-* [kbcli options](kbcli_options.md)	 - Print the list of flags inherited by all commands.
-* [kbcli playground](kbcli_playground.md)	 - Bootstrap or destroy a playground KubeBlocks in local host or cloud.
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-* [kbcli report](kbcli_report.md)	 - Report kubeblocks or cluster info.
-* [kbcli trace](kbcli_trace.md)	 - trace management command
-* [kbcli version](kbcli_version.md)	 - Print the version information, include kubernetes, KubeBlocks and kbcli version.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon.md b/docs/user_docs/cli/kbcli_addon.md
deleted file mode 100644
index c5a94004d..000000000
--- a/docs/user_docs/cli/kbcli_addon.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: kbcli addon
----
-
-Addon command.
-
-### Options
-
-```
-  -h, --help   help for addon
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli addon delete-resources-with-version](kbcli_addon_delete-resources-with-version.md)	 - Delete the sub-resources of specified addon and versions
-* [kbcli addon describe](kbcli_addon_describe.md)	 - Describe an addon specification.
-* [kbcli addon disable](kbcli_addon_disable.md)	 - Disable an addon.
-* [kbcli addon enable](kbcli_addon_enable.md)	 - Enable an addon.
-* [kbcli addon index](kbcli_addon_index.md)	 - Manage custom addon indexes
-* [kbcli addon install](kbcli_addon_install.md)	 - Install KubeBlocks addon
-* [kbcli addon list](kbcli_addon_list.md)	 - List addons.
-* [kbcli addon search](kbcli_addon_search.md)	 - Search the addon from index
-* [kbcli addon uninstall](kbcli_addon_uninstall.md)	 - Uninstall an existed addon
-* [kbcli addon upgrade](kbcli_addon_upgrade.md)	 - Upgrade an existed addon to latest version or a specified version
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_describe.md b/docs/user_docs/cli/kbcli_addon_describe.md
deleted file mode 100644
index c3b1991e5..000000000
--- a/docs/user_docs/cli/kbcli_addon_describe.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: kbcli addon describe
----
-
-Describe an addon specification.
-
-```
-kbcli addon describe ADDON_NAME [flags]
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_disable.md b/docs/user_docs/cli/kbcli_addon_disable.md
deleted file mode 100644
index d90978e1b..000000000
--- a/docs/user_docs/cli/kbcli_addon_disable.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: kbcli addon disable
----
-
-Disable an addon.
-
-```
-kbcli addon disable ADDON_NAME [flags]
-```
-
-### Examples
-
-```
-  # Disable "prometheus" addon
-  kbcli addon disable prometheus
-  
-  # Disable addons in batch
-  kbcli addon disable prometheus csi-s3
-```
-
-### Options
-
-```
-      --allow-missing-template-keys    If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats. (default true)
-      --auto-approve                   Skip interactive approval before disabling addon
-      --dry-run string[="unchanged"]   Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource. (default "none")
-      --edit                           Edit the API resource
-  -h, --help                           help for disable
-  -o, --output string                  Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).
-      --show-managed-fields            If true, keep the managedFields when printing objects in JSON or YAML format.
-      --template string                Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_enable.md b/docs/user_docs/cli/kbcli_addon_enable.md
deleted file mode 100644
index 3bfcae272..000000000
--- a/docs/user_docs/cli/kbcli_addon_enable.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: kbcli addon enable
----
-
-Enable an addon.
-
-```
-kbcli addon enable ADDON_NAME [flags]
-```
-
-### Examples
-
-```
-  # Enabled "prometheus" addon
-  kbcli addon enable prometheus
-  
-  # Enabled "prometheus" addon with custom resources settings
-  kbcli addon enable prometheus --memory 512Mi/4Gi --storage 8Gi --replicas 2
-  
-  # Enabled "prometheus" addon and its extra alertmanager component with custom resources settings
-  kbcli addon enable prometheus --memory 512Mi/4Gi --storage 8Gi --replicas 2 \
-  --memory alertmanager:16Mi/256Mi --storage alertmanager:1Gi --replicas alertmanager:2
-  
-  # Enabled "prometheus" addon with tolerations
-  kbcli addon enable prometheus \
-  --tolerations '[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"true"}]' \
-  --tolerations 'alertmanager:[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"true"}]'
-  
-  # Enabled "prometheus" addon with helm like custom settings
-  kbcli addon enable prometheus --set prometheus.alertmanager.image.tag=v0.24.0
-  
-  # Force enabled "csi-s3" addon
-  kbcli addon enable csi-s3 --force
-  
-  # Enable addons in batch
-  kbcli addon enable prometheus csi-s3
-```
-
-### Options
-
-```
-      --allow-missing-template-keys    If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats. (default true)
-      --cpu stringArray                Sets addon CPU resource values (--cpu [extraName:]<request>/<limit>) (can specify multiple if has extra items))
-      --dry-run string[="unchanged"]   Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource. (default "none")
-      --edit                           Edit the API resource
-      --force                          ignoring the installable restrictions and forcefully enabling.
-  -h, --help                           help for enable
-      --memory stringArray             Sets addon memory resource values (--memory [extraName:]<request>/<limit>) (can specify multiple if has extra items))
-  -o, --output string                  Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).
-      --replicas stringArray           Sets addon component replica count (--replicas [extraName:]<number>) (can specify multiple if has extra items))
-      --set stringArray                set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2), it's only being processed if addon's type is helm.
-      --show-managed-fields            If true, keep the managedFields when printing objects in JSON or YAML format.
-      --storage stringArray            Sets addon storage size (--storage [extraName:]<request>) (can specify multiple if has extra items)). 
-                                       Additional notes:
-                                       1. Specify '0' value will remove storage values settings and explicitly disable 'persistentVolumeEnabled' attribute.
-                                       2. For Helm type Addon, that resizing storage will fail if modified value is a storage request size 
-                                       that belongs to StatefulSet's volume claim template, to resolve 'Failed' Addon status possible action is disable and 
-                                       re-enable the addon (More info on how-to resize a PVC: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources).
-                                       
-      --storage-class stringArray      Sets addon storage class name (--storage-class [extraName:]<storage class name>) (can specify multiple if has extra items))
-      --template string                Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
-      --tolerations stringArray        Sets addon pod tolerations (--tolerations [extraName:]<toleration JSON list items>) (can specify multiple if has extra items))
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_index.md b/docs/user_docs/cli/kbcli_addon_index.md
deleted file mode 100644
index c8a6b459e..000000000
--- a/docs/user_docs/cli/kbcli_addon_index.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: kbcli addon index
----
-
-Manage custom addon indexes
-
-### Synopsis
-
-Manage which repositories are used to discover and install addon from.
-
-### Options
-
-```
-  -h, --help   help for index
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-* [kbcli addon index add](kbcli_addon_index_add.md)	 - Add a new addon index
-* [kbcli addon index delete](kbcli_addon_index_delete.md)	 - Delete an addon index
-* [kbcli addon index list](kbcli_addon_index_list.md)	 - List addon indexes
-* [kbcli addon index update](kbcli_addon_index_update.md)	 - update the specified index(es)
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_index_add.md b/docs/user_docs/cli/kbcli_addon_index_add.md
deleted file mode 100644
index 50eb3a056..000000000
--- a/docs/user_docs/cli/kbcli_addon_index_add.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli addon index add
----
-
-Add a new addon index
-
-### Synopsis
-
-Configure a new index to install KubeBlocks addon from.
-
-```
-kbcli addon index add [flags]
-```
-
-### Examples
-
-```
-kbcli addon index add kubeblocks https://github.com/apecloud/block-index.git
-```
-
-### Options
-
-```
-  -h, --help   help for add
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon index](kbcli_addon_index.md)	 - Manage custom addon indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_index_delete.md b/docs/user_docs/cli/kbcli_addon_index_delete.md
deleted file mode 100644
index 80e34e0b1..000000000
--- a/docs/user_docs/cli/kbcli_addon_index_delete.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: kbcli addon index delete
----
-
-Delete an addon index
-
-### Synopsis
-
-Delete a configured addon index.
-
-```
-kbcli addon index delete [flags]
-```
-
-### Options
-
-```
-  -h, --help   help for delete
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon index](kbcli_addon_index.md)	 - Manage custom addon indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_index_list.md b/docs/user_docs/cli/kbcli_addon_index_list.md
deleted file mode 100644
index 04ac17ea9..000000000
--- a/docs/user_docs/cli/kbcli_addon_index_list.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli addon index list
----
-
-List addon indexes
-
-### Synopsis
-
-Print a list of addon indexes.
-
-This command prints a list of addon indexes. It shows the name and the remote URL for
-each addon index in table format.
-
-```
-kbcli addon index list [flags]
-```
-
-### Options
-
-```
-  -h, --help   help for list
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon index](kbcli_addon_index.md)	 - Manage custom addon indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_index_update.md b/docs/user_docs/cli/kbcli_addon_index_update.md
deleted file mode 100644
index 9faf021de..000000000
--- a/docs/user_docs/cli/kbcli_addon_index_update.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli addon index update
----
-
-update the specified index(es)
-
-### Synopsis
-
-Update existed index repository from index origin URL
-
-```
-kbcli addon index update [flags]
-```
-
-### Examples
-
-```
-kbcli addon index update KubeBlocks
-```
-
-### Options
-
-```
-      --all    Upgrade all addon index
-  -h, --help   help for update
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon index](kbcli_addon_index.md)	 - Manage custom addon indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_install.md b/docs/user_docs/cli/kbcli_addon_install.md
deleted file mode 100644
index 727dc89cc..000000000
--- a/docs/user_docs/cli/kbcli_addon_install.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: kbcli addon install
----
-
-Install KubeBlocks addon
-
-```
-kbcli addon install [flags]
-```
-
-### Examples
-
-```
-  # install an addon from default index
-  kbcli addon install apecloud-mysql
-  
-  # install an addon from default index and skip KubeBlocks version compatibility check
-  kbcli addon install apecloud-mysql --force
-  
-  # install an addon from a specified index
-  kbcli addon install apecloud-mysql --index my-index
-  
-  # install an addon with a specified version default index
-  kbcli addon install apecloud-mysql --version 0.7.0
-  
-  # install an addon with a specified version and cluster chart of different version.
-  kbcli addon install apecloud-mysql --version 0.7.0 --cluster-chart-version 0.7.1
-  
-  # install an addon with a specified version and local path.
-  kbcli addon install apecloud-mysql --version 0.7.0 --path /path/to/local/chart
-```
-
-### Options
-
-```
-      --cluster-chart-repo string      specify the repo of cluster chart, use the url of 'kubeblocks-addons' by default (default "https://jihulab.com/api/v4/projects/150246/packages/helm/stable")
-      --cluster-chart-version string   specify the cluster chart version, use the same version as the addon by default
-      --force                          force install the addon and ignore the version check
-  -h, --help                           help for install
-      --index string                   specify the addon index, use 'kubeblocks' by default (default "kubeblocks")
-      --path string                    specify the local path contains addon CRs and needs to be specified when operating offline
-      --version string                 specify the addon version to install, run 'kbcli addon search <addon-name>' to get the available versions
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_list.md b/docs/user_docs/cli/kbcli_addon_list.md
deleted file mode 100644
index 2404752aa..000000000
--- a/docs/user_docs/cli/kbcli_addon_list.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: kbcli addon list
----
-
-List addons.
-
-```
-kbcli addon list [flags]
-```
-
-### Options
-
-```
-      --engines              List engine addons only
-  -h, --help                 help for list
-  -o, --output format        prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string      Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels          When printing, show all labels as the last column (default hide labels column)
-      --status stringArray   Filter addons by status
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_search.md b/docs/user_docs/cli/kbcli_addon_search.md
deleted file mode 100644
index 10995adff..000000000
--- a/docs/user_docs/cli/kbcli_addon_search.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli addon search
----
-
-Search the addon from index
-
-```
-kbcli addon search [ADDON_NAME] [flags]
-```
-
-### Examples
-
-```
-  # search the addons of all index
-  kbcli addon search
-  
-  # search the addons from a specified local path
-  kbcli addon search --path /path/to/local/chart
-  
-  # search different versions and indexes of an addon
-  kbcli addon search apecloud-mysql
-```
-
-### Options
-
-```
-  -h, --help          help for search
-      --path string   the local directory contains addon CRs
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_uninstall.md b/docs/user_docs/cli/kbcli_addon_uninstall.md
deleted file mode 100644
index b2e169c34..000000000
--- a/docs/user_docs/cli/kbcli_addon_uninstall.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli addon uninstall
----
-
-Uninstall an existed addon
-
-```
-kbcli addon uninstall [flags]
-```
-
-### Examples
-
-```
-  # uninstall an addon
-  kbcli addon uninstall apecloud-mysql
-  
-  # uninstall more than one addons
-  kbcli addon uninstall apecloud-mysql postgresql
-```
-
-### Options
-
-```
-      --auto-approve   Skip interactive approval before uninstalling addon
-  -h, --help           help for uninstall
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_addon_upgrade.md b/docs/user_docs/cli/kbcli_addon_upgrade.md
deleted file mode 100644
index fb4202e26..000000000
--- a/docs/user_docs/cli/kbcli_addon_upgrade.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: kbcli addon upgrade
----
-
-Upgrade an existed addon to latest version or a specified version
-
-```
-kbcli addon upgrade [flags]
-```
-
-### Examples
-
-```
-  # upgrade an addon from default index to latest version
-  kbcli addon upgrade apecloud-mysql
-  
-  # upgrade an addon from default index to latest version and skip KubeBlocks version compatibility check
-  kbcli addon upgrade apecloud-mysql --force
-  
-  # upgrade an addon to latest version from a specified index
-  kbcli addon upgrade apecloud-mysql --index my-index
-  
-  # upgrade an addon with a specified version default index
-  kbcli addon upgrade apecloud-mysql --version 0.7.0
-  
-  # upgrade an addon with a specified version, default index and a different version of cluster chart
-  kbcli addon upgrade apecloud-mysql --version 0.7.0 --cluster-chart-version 0.7.1
-  
-  # non-inplace upgrade an addon with a specified version
-  kbcli addon upgrade apecloud-mysql  --inplace=false --version 0.7.0
-  
-  # non-inplace upgrade an addon with a specified addon name
-  kbcli addon upgrade apecloud-mysql --inplace=false --name apecloud-mysql-0.7.0
-```
-
-### Options
-
-```
-      --cluster-chart-repo string      specify the repo of cluster chart, use the url of 'kubeblocks-addons' by default (default "https://jihulab.com/api/v4/projects/150246/packages/helm/stable")
-      --cluster-chart-version string   specify the cluster chart version, use the same version as the addon by default
-      --force                          force upgrade the addon and ignore the version check
-  -h, --help                           help for upgrade
-      --index string                   specify the addon index index, use 'kubeblocks' by default (default "kubeblocks")
-      --inplace                        when inplace is false, it will retain the existing addon and reinstall the new version of the addon, otherwise the upgrade will be in-place. The default is true. (default true)
-      --name string                    name is the new version addon name need to set by user when inplace is false, it also will be used as resourceNamePrefix of an addon with multiple version.
-      --path string                    specify the local path contains addon CRs and needs to be specified when operating offline
-      --version string                 specify the addon version
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli addon](kbcli_addon.md)	 - Addon command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_alert.md b/docs/user_docs/cli/kbcli_alert.md
deleted file mode 100644
index 72abcd2cb..000000000
--- a/docs/user_docs/cli/kbcli_alert.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: kbcli alert
----
-
-Manage alert receiver, include add, list and delete receiver.
-
-### Options
-
-```
-  -h, --help   help for alert
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli alert add-receiver](kbcli_alert_add-receiver.md)	 - Add alert receiver, such as email, slack, webhook and so on.
-* [kbcli alert config-smtpserver](kbcli_alert_config-smtpserver.md)	 - Set smtp server config
-* [kbcli alert delete-receiver](kbcli_alert_delete-receiver.md)	 - Delete alert receiver.
-* [kbcli alert list-receivers](kbcli_alert_list-receivers.md)	 - List all alert receivers.
-* [kbcli alert list-smtpserver](kbcli_alert_list-smtpserver.md)	 - List alert smtp servers config.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_alert_add-receiver.md b/docs/user_docs/cli/kbcli_alert_add-receiver.md
deleted file mode 100644
index 22bb55f0e..000000000
--- a/docs/user_docs/cli/kbcli_alert_add-receiver.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-title: kbcli alert add-receiver
----
-
-Add alert receiver, such as email, slack, webhook and so on.
-
-```
-kbcli alert add-receiver [flags]
-```
-
-### Examples
-
-```
-  # add webhook receiver without token, for example feishu
-  kbcli alert add-receiver --webhook='url=https://open.feishu.cn/open-apis/bot/v2/hook/foo'
-  
-  # add webhook receiver with token, for example feishu
-  kbcli alert add-receiver --webhook='url=https://open.feishu.cn/open-apis/bot/v2/hook/foo,token=XXX'
-  
-  # add email receiver
-  kbcli alert add-receiver --email='user1@kubeblocks.io,user2@kubeblocks.io'
-  
-  # add email receiver, and only receive alert from cluster mycluster
-  kbcli alert add-receiver --email='user1@kubeblocks.io,user2@kubeblocks.io' --cluster=mycluster
-  
-  # add email receiver, and only receive alert from cluster mycluster and alert severity is warning
-  kbcli alert add-receiver --email='user1@kubeblocks.io,user2@kubeblocks.io' --cluster=mycluster --severity=warning
-  
-  # add email receiver, and only receive alert from mysql clusters
-  kbcli alert add-receiver --email='user1@kubeblocks.io,user2@kubeblocks.io' --type=mysql
-  
-  # add email receiver, and only receive alert triggered by specified rule
-  kbcli alert add-receiver --email='user1@kubeblocks.io,user2@kubeblocks.io' --rule=MysqlDown
-  
-  # add slack receiver
-  kbcli alert add-receiver --slack api_url=https://hooks.slackConfig.com/services/foo,channel=monitor,username=kubeblocks-alert-bot
-```
-
-### Options
-
-```
-      --cluster stringArray      Cluster name, such as mycluster, more than one cluster can be specified, such as mycluster1,mycluster2
-      --email stringArray        Add email address, such as user@kubeblocks.io, more than one emailConfig can be specified separated by comma
-  -h, --help                     help for add-receiver
-      --repeat-interval string   Repeat interval of current receiver
-      --rule stringArray         Rule name, such as MysqlDown, more than one rule names can be specified, such as MysqlDown,MysqlRestarted
-      --severity stringArray     Alert severity level, critical, warning or info, more than one severity level can be specified, such as critical,warning
-      --slack stringArray        Add slack receiver, such as api_url=https://hooks.slackConfig.com/services/foo,channel=monitor,username=kubeblocks-alert-bot
-      --type stringArray         Engine type, such as mysql, more than one types can be specified, such as mysql,postgresql,redis
-      --webhook stringArray      Add webhook receiver, such as url=https://open.feishu.cn/open-apis/bot/v2/hook/foo,token=xxxxx
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli alert](kbcli_alert.md)	 - Manage alert receiver, include add, list and delete receiver.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_alert_config-smtpserver.md b/docs/user_docs/cli/kbcli_alert_config-smtpserver.md
deleted file mode 100644
index 4524e03ab..000000000
--- a/docs/user_docs/cli/kbcli_alert_config-smtpserver.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli alert config-smtpserver
----
-
-Set smtp server config
-
-```
-kbcli alert config-smtpserver [flags]
-```
-
-### Examples
-
-```
-
-	# Set smtp server config
-	kbcli alert config-smtpserver --smtp-from alert-test@apecloud.com --smtp-smarthost smtp.feishu.cn:587 --smtp-auth-username alert-test@apecloud.com --smtp-auth-password 123456abc --smtp-auth-identity alert-test@apecloud.com
-	
-```
-
-### Options
-
-```
-  -h, --help                        help for config-smtpserver
-      --smtp-auth-identity string   The identity to authenticate to the smarthost.
-      --smtp-auth-password string   The password to authenticate to the smarthost.
-      --smtp-auth-username string   The username to authenticate to the smarthost.
-      --smtp-from string            The email address to send alert.
-      --smtp-smarthost string       The smtp host to send alert.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli alert](kbcli_alert.md)	 - Manage alert receiver, include add, list and delete receiver.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_alert_delete-receiver.md b/docs/user_docs/cli/kbcli_alert_delete-receiver.md
deleted file mode 100644
index d2d5014a4..000000000
--- a/docs/user_docs/cli/kbcli_alert_delete-receiver.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli alert delete-receiver
----
-
-Delete alert receiver.
-
-```
-kbcli alert delete-receiver NAME [flags]
-```
-
-### Examples
-
-```
-  # delete a receiver named my-receiver, all receivers can be found by command: kbcli alert list-receivers
-  kbcli alert delete-receiver my-receiver
-```
-
-### Options
-
-```
-  -h, --help   help for delete-receiver
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli alert](kbcli_alert.md)	 - Manage alert receiver, include add, list and delete receiver.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_alert_list-receivers.md b/docs/user_docs/cli/kbcli_alert_list-receivers.md
deleted file mode 100644
index ce304718f..000000000
--- a/docs/user_docs/cli/kbcli_alert_list-receivers.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli alert list-receivers
----
-
-List all alert receivers.
-
-```
-kbcli alert list-receivers [flags]
-```
-
-### Examples
-
-```
-  # list all alert receivers
-  kbcli alert list-receivers
-```
-
-### Options
-
-```
-  -h, --help   help for list-receivers
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli alert](kbcli_alert.md)	 - Manage alert receiver, include add, list and delete receiver.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_alert_list-smtpserver.md b/docs/user_docs/cli/kbcli_alert_list-smtpserver.md
deleted file mode 100644
index 84e0235af..000000000
--- a/docs/user_docs/cli/kbcli_alert_list-smtpserver.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli alert list-smtpserver
----
-
-List alert smtp servers config.
-
-```
-kbcli alert list-smtpserver [flags]
-```
-
-### Examples
-
-```
-  # list alert smtp servers config
-  kbcli alert list-smtpserver
-```
-
-### Options
-
-```
-  -h, --help   help for list-smtpserver
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli alert](kbcli_alert.md)	 - Manage alert receiver, include add, list and delete receiver.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo.md b/docs/user_docs/cli/kbcli_backuprepo.md
deleted file mode 100644
index b58385b6f..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: kbcli backuprepo
----
-
-BackupRepo command.
-
-### Options
-
-```
-  -h, --help   help for backuprepo
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli backuprepo create](kbcli_backuprepo_create.md)	 - Create a backup repository
-* [kbcli backuprepo delete](kbcli_backuprepo_delete.md)	 - Delete a backup repository.
-* [kbcli backuprepo describe](kbcli_backuprepo_describe.md)	 - Describe a backup repository.
-* [kbcli backuprepo list](kbcli_backuprepo_list.md)	 - List Backup Repositories.
-* [kbcli backuprepo list-storage-provider](kbcli_backuprepo_list-storage-provider.md)	 - List storage providers.
-* [kbcli backuprepo update](kbcli_backuprepo_update.md)	 - Update a backup repository.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo_create.md b/docs/user_docs/cli/kbcli_backuprepo_create.md
deleted file mode 100644
index 7856317c3..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo_create.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: kbcli backuprepo create
----
-
-Create a backup repository
-
-```
-kbcli backuprepo create [NAME] [flags]
-```
-
-### Examples
-
-```
-  # Create a default backup repository using S3 as the backend
-  kbcli backuprepo create \
-  --provider s3 \
-  --region us-west-1 \
-  --bucket test-kb-backup \
-  --access-key-id <ACCESS KEY> \
-  --secret-access-key <SECRET KEY> \
-  --default
-  
-  # Create a non-default backup repository with a specified name
-  kbcli backuprepo create my-backup-repo \
-  --provider s3 \
-  --region us-west-1 \
-  --bucket test-kb-backup \
-  --access-key-id <ACCESS KEY> \
-  --secret-access-key <SECRET KEY>
-  
-  # Create a backup repository with a sub-path to isolate different repositories
-  kbcli backuprepo create my-backup-repo \
-  --provider s3 \
-  --region us-west-1 \
-  --bucket test-kb-backup \
-  --access-key-id <ACCESS KEY> \
-  --secret-access-key <SECRET KEY> \
-  --path-prefix dev/team1
-  
-  # Create a backup repository with a FTP backend
-  kbcli backuprepo create \
-  --provider ftp \
-  --ftp-host=<HOST or IP> \
-  --ftp-port=21 \
-  --ftp-user=<FTP USER> \
-  --ftp-password=<PASSWORD>
-```
-
-### Options
-
-```
-      --access-method string       Specify the access method for the backup repository, "Tool" is preferred if not specified. options: ["Mount" "Tool"]
-      --default                    Specify whether to set the created backup repository as default
-  -h, --help                       help for create
-      --path-prefix string         Specify the prefix of the path for storing backup files.
-      --provider string            Specify storage provider
-      --pv-reclaim-policy string   Specify the reclaim policy for PVs created by this backup repository, the value can be "Retain" or "Delete". This option only takes effect when --access-method="Mount". (default "Retain")
-      --volume-capacity string     Specify the capacity of the new created PVC. This option only takes effect when --access-method="Mount". (default "100Gi")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo_delete.md b/docs/user_docs/cli/kbcli_backuprepo_delete.md
deleted file mode 100644
index 3af401d4e..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo_delete.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli backuprepo delete
----
-
-Delete a backup repository.
-
-```
-kbcli backuprepo delete [flags]
-```
-
-### Examples
-
-```
-  # Delete a backuprepo
-  kbcli backuprepo delete my-backuprepo
-```
-
-### Options
-
-```
-  -h, --help   help for delete
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo_describe.md b/docs/user_docs/cli/kbcli_backuprepo_describe.md
deleted file mode 100644
index 5a176b052..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo_describe.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli backuprepo describe
----
-
-Describe a backup repository.
-
-```
-kbcli backuprepo describe [flags]
-```
-
-### Examples
-
-```
-  # Describe a backuprepo
-  kbcli backuprepo describe my-backuprepo
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo_list-storage-provider.md b/docs/user_docs/cli/kbcli_backuprepo_list-storage-provider.md
deleted file mode 100644
index af3e70e2a..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo_list-storage-provider.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli backuprepo list-storage-provider
----
-
-List storage providers.
-
-```
-kbcli backuprepo list-storage-provider [flags]
-```
-
-### Examples
-
-```
-  # List all storage provider
-  kbcli backuprepo list-sp
-```
-
-### Options
-
-```
-  -h, --help              help for list-storage-provider
-  -o, --output format     prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels       When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo_list.md b/docs/user_docs/cli/kbcli_backuprepo_list.md
deleted file mode 100644
index 1367467eb..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo_list.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli backuprepo list
----
-
-List Backup Repositories.
-
-```
-kbcli backuprepo list [flags]
-```
-
-### Examples
-
-```
-  # List all backup repositories
-  kbcli backuprepo list
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_backuprepo_update.md b/docs/user_docs/cli/kbcli_backuprepo_update.md
deleted file mode 100644
index 9d68291cb..000000000
--- a/docs/user_docs/cli/kbcli_backuprepo_update.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli backuprepo update
----
-
-Update a backup repository.
-
-```
-kbcli backuprepo update BACKUP_REPO_NAME [flags]
-```
-
-### Examples
-
-```
-  # Update the credential of a S3-based backuprepo
-  kbcli backuprepo update my-backuprepo --access-key-id=<NEW ACCESS KEY> --secret-access-key=<NEW SECRET KEY>
-  
-  # Set the backuprepo as default
-  kbcli backuprepo update my-backuprepo --default
-  
-  # Unset the default backuprepo
-  kbcli backuprepo update my-backuprepo --default=false
-```
-
-### Options
-
-```
-      --default   Specify whether to set the created backup repo as default
-  -h, --help      help for update
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli backuprepo](kbcli_backuprepo.md)	 - BackupRepo command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster.md b/docs/user_docs/cli/kbcli_cluster.md
deleted file mode 100644
index 075601e9f..000000000
--- a/docs/user_docs/cli/kbcli_cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: kbcli cluster
----
-
-Cluster command.
-
-### Options
-
-```
-  -h, --help   help for cluster
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli cluster backup](kbcli_cluster_backup.md)	 - Create a backup for the cluster.
-* [kbcli cluster cancel-ops](kbcli_cluster_cancel-ops.md)	 - Cancel the pending/creating/running OpsRequest which type is vscale or hscale.
-* [kbcli cluster configure](kbcli_cluster_configure.md)	 - Configure parameters with the specified components in the cluster.
-* [kbcli cluster connect](kbcli_cluster_connect.md)	 - Connect to a cluster or instance.
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-* [kbcli cluster delete](kbcli_cluster_delete.md)	 - Delete clusters.
-* [kbcli cluster delete-backup](kbcli_cluster_delete-backup.md)	 - Delete a backup.
-* [kbcli cluster delete-ops](kbcli_cluster_delete-ops.md)	 - Delete an OpsRequest.
-* [kbcli cluster describe](kbcli_cluster_describe.md)	 - Show details of a specific cluster.
-* [kbcli cluster describe-backup](kbcli_cluster_describe-backup.md)	 - Describe a backup.
-* [kbcli cluster describe-backup-policy](kbcli_cluster_describe-backup-policy.md)	 - Describe backup policy
-* [kbcli cluster describe-config](kbcli_cluster_describe-config.md)	 - Show details of a specific reconfiguring.
-* [kbcli cluster describe-ops](kbcli_cluster_describe-ops.md)	 - Show details of a specific OpsRequest.
-* [kbcli cluster describe-restore](kbcli_cluster_describe-restore.md)	 - Describe a restore
-* [kbcli cluster diff-config](kbcli_cluster_diff-config.md)	 - Show the difference in parameters between the two submitted OpsRequest.
-* [kbcli cluster edit-backup-policy](kbcli_cluster_edit-backup-policy.md)	 - Edit backup policy
-* [kbcli cluster edit-config](kbcli_cluster_edit-config.md)	 - Edit the config file of the component.
-* [kbcli cluster explain-config](kbcli_cluster_explain-config.md)	 - List the constraint for supported configuration params.
-* [kbcli cluster expose](kbcli_cluster_expose.md)	 - Expose a cluster with a new endpoint, the new endpoint can be found by executing 'kbcli cluster describe NAME'.
-* [kbcli cluster label](kbcli_cluster_label.md)	 - Update the labels on cluster
-* [kbcli cluster list](kbcli_cluster_list.md)	 - List clusters.
-* [kbcli cluster list-backup-policies](kbcli_cluster_list-backup-policies.md)	 - List backups policies.
-* [kbcli cluster list-backups](kbcli_cluster_list-backups.md)	 - List backups.
-* [kbcli cluster list-components](kbcli_cluster_list-components.md)	 - List cluster components.
-* [kbcli cluster list-events](kbcli_cluster_list-events.md)	 - List cluster events.
-* [kbcli cluster list-instances](kbcli_cluster_list-instances.md)	 - List cluster instances.
-* [kbcli cluster list-logs](kbcli_cluster_list-logs.md)	 - List supported log files in cluster.
-* [kbcli cluster list-ops](kbcli_cluster_list-ops.md)	 - List all opsRequests.
-* [kbcli cluster list-restores](kbcli_cluster_list-restores.md)	 - List restores.
-* [kbcli cluster logs](kbcli_cluster_logs.md)	 - Access cluster log file.
-* [kbcli cluster promote](kbcli_cluster_promote.md)	 - Promote a non-primary or non-leader instance as the new primary or leader of the cluster
-* [kbcli cluster rebuild-instance](kbcli_cluster_rebuild-instance.md)	 - Rebuild the specified instances in the cluster.
-* [kbcli cluster register](kbcli_cluster_register.md)	 - Pull the cluster chart to the local cache and register the type to 'create' sub-command
-* [kbcli cluster restart](kbcli_cluster_restart.md)	 - Restart the specified components in the cluster.
-* [kbcli cluster restore](kbcli_cluster_restore.md)	 - Restore a new cluster from backup.
-* [kbcli cluster scale-in](kbcli_cluster_scale-in.md)	 - scale in replicas of the specified components in the cluster.
-* [kbcli cluster scale-out](kbcli_cluster_scale-out.md)	 - scale out replicas of the specified components in the cluster.
-* [kbcli cluster start](kbcli_cluster_start.md)	 - Start the cluster if cluster is stopped.
-* [kbcli cluster stop](kbcli_cluster_stop.md)	 - Stop the cluster and release all the pods of the cluster.
-* [kbcli cluster update](kbcli_cluster_update.md)	 - Update the cluster settings, such as enable or disable monitor or log.
-* [kbcli cluster upgrade](kbcli_cluster_upgrade.md)	 - Upgrade the service version(only support to upgrade minor version).
-* [kbcli cluster volume-expand](kbcli_cluster_volume-expand.md)	 - Expand volume with the specified components and volumeClaimTemplates in the cluster.
-* [kbcli cluster vscale](kbcli_cluster_vscale.md)	 - Vertically scale the specified components in the cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_backup.md b/docs/user_docs/cli/kbcli_cluster_backup.md
deleted file mode 100644
index d17c45b10..000000000
--- a/docs/user_docs/cli/kbcli_cluster_backup.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: kbcli cluster backup
----
-
-Create a backup for the cluster.
-
-```
-kbcli cluster backup NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a backup for the cluster, use the default backup policy and volume snapshot backup method
-  kbcli cluster backup mycluster
-  
-  # create a backup with a specified method, run "kbcli cluster desc-backup-policy mycluster" to show supported backup methods
-  kbcli cluster backup mycluster --method volume-snapshot
-  
-  # create a backup with specified backup policy, run "kbcli cluster list-backup-policies mycluster" to show the cluster supported backup policies
-  kbcli cluster backup mycluster --method volume-snapshot --policy <backup-policy-name>
-  
-  # create a backup from a parent backup
-  kbcli cluster backup mycluster --parent-backup parent-backup-name
-```
-
-### Options
-
-```
-      --deletion-policy string         Deletion policy for backup, determine whether the backup content in backup repo will be deleted after the backup is deleted, supported values: [Delete, Retain] (default "Delete")
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for backup
-      --method string                  Backup methods are defined in backup policy (required), if only one backup method in backup policy, use it as default backup method, if multiple backup methods in backup policy, use method which volume snapshot is true as default backup method
-      --name string                    Backup name
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --parent-backup string           Parent backup name, used for incremental backup
-      --policy string                  Backup policy name, if not specified, use the cluster default backup policy
-      --retention-period string        Retention period for backup, supported values: [1y, 1mo, 1d, 1h, 1m] or combine them [1y1mo1d1h1m], if not specified, the backup will not be automatically deleted, you need to manually delete it.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_cancel-ops.md b/docs/user_docs/cli/kbcli_cluster_cancel-ops.md
deleted file mode 100644
index 68439ecab..000000000
--- a/docs/user_docs/cli/kbcli_cluster_cancel-ops.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: kbcli cluster cancel-ops
----
-
-Cancel the pending/creating/running OpsRequest which type is vscale or hscale.
-
-```
-kbcli cluster cancel-ops NAME [flags]
-```
-
-### Examples
-
-```
-  # cancel the opsRequest which is not completed.
-  kbcli cluster cancel-ops <opsRequestName>
-```
-
-### Options
-
-```
-      --auto-approve   Skip interactive approval before cancel the opsRequest
-  -h, --help           help for cancel-ops
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_configure.md b/docs/user_docs/cli/kbcli_cluster_configure.md
deleted file mode 100644
index 0f39e450e..000000000
--- a/docs/user_docs/cli/kbcli_cluster_configure.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-title: kbcli cluster configure
----
-
-Configure parameters with the specified components in the cluster.
-
-```
-kbcli cluster configure NAME --set key=value[,key=value] [--components=component1-name,component2-name] [--config-spec=config-spec-name] [--config-file=config-file] [flags]
-```
-
-### Examples
-
-```
-  # update component params
-  kbcli cluster configure mycluster --components=mysql --config-spec=mysql-3node-tpl --config-file=my.cnf --set=max_connections=1000,general_log=OFF
-  
-  # if only one component, and one config spec, and one config file, simplify the searching process of configure. e.g:
-  # update mysql max_connections, cluster name is mycluster
-  kbcli cluster configure mycluster --set max_connections=2000
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before reconfiguring the cluster
-      --components strings             Component names to this operations
-      --config-file string             Specify the name of the configuration file to be updated (e.g. for mysql: --config-file=my.cnf). For available templates and configs, refer to: 'kbcli cluster describe-config'.
-      --config-spec string             Specify the name of the configuration template to be updated (e.g. for apecloud-mysql: --config-spec=mysql-3node-tpl). For available templates and configs, refer to: 'kbcli cluster describe-config'.
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-      --force-restart                  Boolean flag to restart component. Default with false.
-  -h, --help                           help for configure
-      --local-file string              Specify the local configuration file to be updated.
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --replace                        Boolean flag to enable replacing config file. Default with false.
-      --set strings                    Specify parameters list to be updated. For more details, refer to 'kbcli cluster describe-config'.
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_connect.md b/docs/user_docs/cli/kbcli_cluster_connect.md
deleted file mode 100644
index 914cc36f2..000000000
--- a/docs/user_docs/cli/kbcli_cluster_connect.md
+++ /dev/null
@@ -1,65 +0,0 @@
----
-title: kbcli cluster connect
----
-
-Connect to a cluster or instance.
-
-```
-kbcli cluster connect (NAME | -i INSTANCE-NAME) [flags]
-```
-
-### Examples
-
-```
-  # connect to a specified cluster
-  kbcli cluster connect mycluster
-  
-  # connect to a specified instance
-  kbcli cluster connect -i mycluster-instance-0
-  
-  # connect to a specified component
-  kbcli cluster connect mycluster --component mycomponent
-  
-  # show cli connection example, supported client: [cli, java, python, rust, php, node.js, go, .net, django] and more.
-  kbcli cluster connect mycluster --client=cli
-```
-
-### Options
-
-```
-      --client string      Which client connection example should be output.
-      --component string   The component to connect. If not specified and no any cluster scope services, pick up the first one.
-  -h, --help               help for connect
-  -i, --instance string    The instance name to connect.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create-account.md b/docs/user_docs/cli/kbcli_cluster_create-account.md
deleted file mode 100644
index da94e0de4..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create-account.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: kbcli cluster create-account
----
-
-Create account for a cluster
-
-```
-kbcli cluster create-account [flags]
-```
-
-### Examples
-
-```
-  # create account with password
-  kbcli cluster create-account CLUSTERNAME --component COMPNAME --name USERNAME --password PASSWD
-  # create account without password
-  kbcli cluster create-account CLUSTERNAME --component COMPNAME --name USERNAME
-  # create account with default component
-  kbcli cluster create-account CLUSTERNAME --name USERNAME
-  # create account for instance
-  kbcli cluster create-account  --instance INSTANCE --name USERNAME
-```
-
-### Options
-
-```
-      --component string   Specify the name of component to be connected. If not specified, pick the first one.
-  -h, --help               help for create-account
-  -i, --instance string    Specify the name of instance to be connected.
-      --name string        Required. Specify the name of user, which must be unique.
-  -p, --password string    Optional. Specify the password of user. The default value is empty, which means a random password will be generated.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create.md b/docs/user_docs/cli/kbcli_cluster_create.md
deleted file mode 100644
index 21ff6a420..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: kbcli cluster create
----
-
-Create a cluster.
-
-```
-kbcli cluster create [NAME] [flags]
-```
-
-### Examples
-
-```
-  # Create a postgresql
-  kbcli cluster create postgresql my-cluster
-  
-  # Get the cluster yaml by dry-run
-  kbcli cluster create postgresql my-cluster --dry-run
-  
-  # Edit cluster yaml before creation.
-  kbcli cluster create mycluster --edit
-```
-
-### Options
-
-```
-  -h, --help   help for create
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-* [kbcli cluster create apecloud-mysql](kbcli_cluster_create_apecloud-mysql.md)	 - Create a apecloud-mysql cluster.
-* [kbcli cluster create elasticsearch](kbcli_cluster_create_elasticsearch.md)	 - Create a elasticsearch cluster.
-* [kbcli cluster create etcd](kbcli_cluster_create_etcd.md)	 - Create a etcd cluster.
-* [kbcli cluster create kafka](kbcli_cluster_create_kafka.md)	 - Create a kafka cluster.
-* [kbcli cluster create llm](kbcli_cluster_create_llm.md)	 - Create a llm cluster.
-* [kbcli cluster create mongodb](kbcli_cluster_create_mongodb.md)	 - Create a mongodb cluster.
-* [kbcli cluster create mysql](kbcli_cluster_create_mysql.md)	 - Create a mysql cluster.
-* [kbcli cluster create postgresql](kbcli_cluster_create_postgresql.md)	 - Create a postgresql cluster.
-* [kbcli cluster create qdrant](kbcli_cluster_create_qdrant.md)	 - Create a qdrant cluster.
-* [kbcli cluster create redis](kbcli_cluster_create_redis.md)	 - Create a redis cluster.
-* [kbcli cluster create xinference](kbcli_cluster_create_xinference.md)	 - Create a xinference cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_apecloud-mysql.md b/docs/user_docs/cli/kbcli_cluster_create_apecloud-mysql.md
deleted file mode 100644
index ffb088d5c..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_apecloud-mysql.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: kbcli cluster create apecloud-mysql
----
-
-Create a apecloud-mysql cluster.
-
-```
-kbcli cluster create apecloud-mysql NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create apecloud-mysql
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create apecloud-mysql --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 0.5)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for apecloud-mysql
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --mode string                    Cluster topology mode. Legal values [standalone, raftGroup]. (default "standalone")
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --proxy-enabled                  Enable proxy or not.
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas, for standalone mode, the replicas is 1, for raftGroup mode, the default replicas is 3. Value range [1, 5]. (default 1)
-      --storage float                  Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --storage-class-name string      Storage class name of the data volume
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 Cluster version. (default "ac-mysql-8.0.30")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_elasticsearch.md b/docs/user_docs/cli/kbcli_cluster_create_elasticsearch.md
deleted file mode 100644
index cdb523001..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_elasticsearch.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: kbcli cluster create elasticsearch
----
-
-Create a elasticsearch cluster.
-
-```
-kbcli cluster create elasticsearch NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create elasticsearch
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create elasticsearch --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 1)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for elasticsearch
-      --memory float                   Memory, the unit is Gi. Value range [1, 1000]. (default 2)
-      --mode string                    Mode for ElasticSearch Legal values [single-node, multi-node]. (default "multi-node")
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources. (default true)
-      --replicas int                   The number of replicas, for single-node mode, the replicas is 1, for multi-node mode, the default replicas is 3. Value range [1, 5]. (default 1)
-      --storage float                  Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 The version of ElasticSearch. (default "8.8.2")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_etcd.md b/docs/user_docs/cli/kbcli_cluster_create_etcd.md
deleted file mode 100644
index a7bca29f4..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_etcd.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: kbcli cluster create etcd
----
-
-Create a etcd cluster.
-
-```
-kbcli cluster create etcd NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create etcd
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create etcd --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 0.5)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for etcd
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas, the default replicas is 3. Value range [1, 5]. (default 3)
-      --storage float                  Data Storage size, the unit is Gi. Value range [1, 10000]. (default 10)
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tls-enable                     Enable TLS for etcd cluster
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_kafka.md b/docs/user_docs/cli/kbcli_cluster_create_kafka.md
deleted file mode 100644
index eeec66611..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_kafka.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: kbcli cluster create kafka
----
-
-Create a kafka cluster.
-
-```
-kbcli cluster create kafka NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create kafka
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create kafka --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --broker-heap string             Kafka broker's jvm heap setting. (default "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64")
-      --broker-replicas int            The number of Kafka broker replicas for separated mode. Value range [1, 100]. (default 1)
-      --controller-heap string         Kafka controller's jvm heap setting for separated mode (default "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64")
-      --controller-replicas int        The number of Kafka controller replicas for separated mode. Legal values [1, 3, 5]. (default 1)
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 0.5)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for kafka
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --meta-storage float             Metadata Storage size, the unit is Gi. Value range [1, 10000]. (default 5)
-      --meta-storage-class string      The StorageClass for Kafka Metadata Storage.
-      --mode string                    Mode for Kafka kraft cluster, 'combined' is combined Kafka controller and broker,'separated' is broker and controller running independently. Legal values [combined, separated]. (default "combined")
-      --monitor-enable                 Enable monitor for Kafka. (default true)
-      --monitor-replicas int           The number of Kafka monitor replicas. Value range [1, 5]. (default 1)
-      --node-labels stringToString     Node label selector (default [])
-      --node-port-enabled              Whether NodePort service is enabled, default is false
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of Kafka broker replicas for combined mode. Legal values [1, 3, 5]. (default 1)
-      --sasl-enable                    Enable authentication using SASL/PLAIN for Kafka.
-      --storage float                  Data Storage size, the unit is Gi. Value range [1, 10000]. (default 10)
-      --storage-class string           The StorageClass for Kafka Data Storage.
-      --storage-enable                 Enable storage for Kafka.
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 Cluster version. (default "kafka-3.3.2")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_llm.md b/docs/user_docs/cli/kbcli_cluster_create_llm.md
deleted file mode 100644
index b923b7e10..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_llm.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: kbcli cluster create llm
----
-
-Create a llm cluster.
-
-```
-kbcli cluster create llm NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create llm
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create llm --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --availability-policy string     The availability policy of cluster. Legal values [none, node, zone]. (default "node")
-      --cpu float                      CPU cores. Value range [0, 64].
-      --cpu-mode                       Set to true if no GPU is available, default true (default true)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --extra-args string              extra arguments that will be passed to run model (default "--trust-remote-code")
-      --gpu float                      GPU cores. Value range [0, 64]. (default 1)
-  -h, --help                           help for llm
-      --host-network-accessible        Specify whether the cluster can be accessed from within the VPC.
-      --memory float                   Memory, the unit is Gi. Value range [0, 1000].
-      --model string                   Model name (default "facebook/opt-125m")
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --publicly-accessible            Specify whether the cluster can be accessed from the public internet.
-      --quantize string                Model's quantized file name, only work for CPU mode
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas, for standalone mode, the replicas is 1, for replication mode, the default replicas is 2. Value range [1, 5]. (default 1)
-      --tenancy string                 The tenancy of cluster. Legal values [SharedNode, DedicatedNode]. (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --url string                     Model URL, only work for CPU mode
-      --version string                 Cluster version.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_mongodb.md b/docs/user_docs/cli/kbcli_cluster_create_mongodb.md
deleted file mode 100644
index 93cc87672..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_mongodb.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: kbcli cluster create mongodb
----
-
-Create a mongodb cluster.
-
-```
-kbcli cluster create mongodb NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create mongodb
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create mongodb --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 0.5)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for mongodb
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --mode string                    Cluster topology mode. Legal values [standalone, replicaset]. (default "standalone")
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas, for standalone mode, the replicas is 1, for replicaset mode, the default replicas is 3. Value range [1, 5]. (default 1)
-      --storage float                  Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --storage-class-name string      Storage class name of the data volume
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 Cluster version. Legal values [7.0.12, 6.0.16, 5.0.28, 4.4.29, 4.2.24, 4.0.28]. (default "6.0.16")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_mysql.md b/docs/user_docs/cli/kbcli_cluster_create_mysql.md
deleted file mode 100644
index d326dae8f..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_mysql.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: kbcli cluster create mysql
----
-
-Create a mysql cluster.
-
-```
-kbcli cluster create mysql NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create mysql
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create mysql --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 1)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for mysql
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 1)
-      --mode string                    Cluster topology mode. Legal values [standalone, replication, raftGroup]. (default "standalone")
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas. Value range [1, 5]. (default 1)
-      --storage float                  Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 Cluster version, run "kbcli cv list --devel" to see all versions. Legal values [mysql-8.4, mysql-8.0, mysql-5.7, mysql-orc-8.0, mysql-orc-5.7]. (default "mysql-8.0")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_oriol.md b/docs/user_docs/cli/kbcli_cluster_create_oriol.md
deleted file mode 100644
index c6aa79bff..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_oriol.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-title: kbcli cluster create oriol
----
-
-Create a oriol cluster.
-
-```
-kbcli cluster create oriol NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create oriol
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create oriol --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --availability-policy string   The availability policy of cluster. Legal values [none, node, zone]. (default "node")
-      --cpu float                    CPU cores. Value range [0.5, 64]. (default 0.5)
-      --etcd.cluster string          The patroni dependency etcd cluster name (default "etcd")
-      --etcd.namespace string        The patroni dependency etcd cluster namespace (default "default")
-  -h, --help                         help for oriol
-      --host-network-accessible      Specify whether the cluster can be accessed from within the VPC.
-      --memory float                 Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --mode string                   Legal values [standalone, replication]. (default "standalone")
-      --monitor-enabled              Enable or disable monitor.
-      --publicly-accessible          Specify whether the cluster can be accessed from the public internet.
-      --rbac-enabled                 Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                  Value range [1, 5]. (default 1)
-      --storage float                Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --storage-class-name string    Storage class name of the data volume
-      --tenancy string               The tenancy of cluster. Legal values [SharedNode, DedicatedNode]. (default "SharedNode")
-      --termination-policy string    The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --version string                (default "orioledb-beta1")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_orioledb.md b/docs/user_docs/cli/kbcli_cluster_create_orioledb.md
deleted file mode 100644
index 0e39a2031..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_orioledb.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: kbcli cluster create orioledb
----
-
-Create a orioledb cluster.
-
-```
-kbcli cluster create orioledb NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create orioledb
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create orioledb --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --availability-policy string   The availability policy of cluster. Legal values [none, node, zone]. (default "node")
-      --cpu float                    CPU cores. Value range [0.5, 64]. (default 0.5)
-      --etcd.cluster string          The patroni dependency etcd cluster name (default "etcd")
-      --etcd.namespace string        The patroni dependency etcd cluster namespace (default "default")
-  -h, --help                         help for orioledb
-      --host-network-accessible      Specify whether the cluster can be accessed from within the VPC.
-      --memory float                 Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --mode string                   Legal values [standalone, replication]. (default "standalone")
-      --monitoring-interval int      The monitoring interval of cluster, 0 is disabled, the unit is second. Value range [0, 60].
-      --publicly-accessible          Specify whether the cluster can be accessed from the public internet.
-      --rbac-enabled                 Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                  Value range [1, 5]. (default 1)
-      --storage float                Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --tenancy string               The tenancy of cluster. Legal values [SharedNode, DedicatedNode]. (default "SharedNode")
-      --termination-policy string    The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --version string               
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_postgresql.md b/docs/user_docs/cli/kbcli_cluster_create_postgresql.md
deleted file mode 100644
index 2dc70539c..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_postgresql.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: kbcli cluster create postgresql
----
-
-Create a postgresql cluster.
-
-```
-kbcli cluster create postgresql NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create postgresql
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create postgresql --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 0.5)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for postgresql
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --mode string                    Cluster topology mode. Legal values [standalone, replication]. (default "standalone")
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas, for standalone mode, the replicas is 1, for replication mode, the default replicas is 2. Value range [1, 5]. (default 1)
-      --storage float                  Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --storage-class-name string      Storage class name of the data volume
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 service version. (default "15.7.0")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_qdrant.md b/docs/user_docs/cli/kbcli_cluster_create_qdrant.md
deleted file mode 100644
index 9afe4e4a0..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_qdrant.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: kbcli cluster create qdrant
----
-
-Create a qdrant cluster.
-
-```
-kbcli cluster create qdrant NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create qdrant
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create qdrant --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                      CPU cores. Value range [0.5, 64]. (default 1)
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-  -h, --help                           help for qdrant
-      --memory float                   Memory, the unit is Gi. Value range [0.5, 1000]. (default 2)
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas. Value range [1, 16]. (default 1)
-      --storage float                  Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --storage-class-name string      Storage class name of the data volume
-      --tenancy string                 Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-      --version string                 The version of Qdrant. (default "1.10.0")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_redis.md b/docs/user_docs/cli/kbcli_cluster_create_redis.md
deleted file mode 100644
index 0526e0705..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_redis.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: kbcli cluster create redis
----
-
-Create a redis cluster.
-
-```
-kbcli cluster create redis NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create redis
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create redis --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --cpu float                         CPU cores. Value range [0.5, 64]. (default 0.5)
-      --disable-exporter                  Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]      Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                              Edit the API resource before creating
-  -h, --help                              help for redis
-      --memory float                      Memory, the unit is Gi. Value range [0.5, 1000]. (default 0.5)
-      --mode string                       Cluster topology mode. Legal values [standalone, replication, cluster, replication-twemproxy]. (default "replication")
-      --node-labels stringToString        Node label selector (default [])
-      --node-port-enabled                 Whether NodePort service is enabled, default is true
-  -o, --output format                     Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string          Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --rbac-enabled                      Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --redis-cluster.shard-count float   The number of shards in the redis cluster Value range [3, 2048]. (default 3)
-      --replicas int                      The number of replicas, for standalone mode, the replicas is 1, for replication mode, the default replicas is 2. Value range [1, 5]. (default 1)
-      --sentinel.cpu float                Sentinel component cpu cores. Value range [0.1, 8]. (default 0.2)
-      --sentinel.enabled                  Whether have sentinel component, default is true (default true)
-      --sentinel.memory float             Sentinel component memory, the unit is Gi. Value range [0.1, 4]. (default 0.2)
-      --sentinel.replicas float           Sentinel component replicas Value range [1, 5]. (default 3)
-      --sentinel.storage float            Sentinel component storage size, the unit is Gi. Value range [1, 1024]. (default 20)
-      --storage float                     Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --storage-class-name string         Storage class name of the data volume
-      --tenancy string                    Tenancy options, one of: (SharedNode, DedicatedNode) (default "SharedNode")
-      --termination-policy string         The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings               Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray         Topology keys for affinity
-      --twemproxy.cpu float               twemproxy component cpu cores. Value range [0.1, 8]. (default 0.2)
-      --twemproxy.enabled                 Whether have twemproxy component, default is false
-      --twemproxy.memory float            twemproxy component memory, the unit is Gi. Value range [0.1, 4]. (default 0.2)
-      --twemproxy.replicas float          twemproxy component replicas Value range [1, 5]. (default 3)
-      --version string                    Cluster version. (default "redis-7.0.6")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_tidb.md b/docs/user_docs/cli/kbcli_cluster_create_tidb.md
deleted file mode 100644
index 554d51ddf..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_tidb.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: kbcli cluster create tidb
----
-
-Create a tidb cluster.
-
-```
-kbcli cluster create tidb NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create tidb
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create tidb --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-  -h, --help                        help for tidb
-      --pd.cpu float                CPU cores. Value range [2, 64]. (default 2)
-      --pd.memory float             Memory, the unit is Gi. Value range [4, 1000]. (default 4)
-      --pd.replicas int             The number of replicas Value range [1, 5]. (default 3)
-      --pd.storage float            Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-      --termination-policy string   The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tidb.cpu float              CPU cores. Value range [2, 64]. (default 2)
-      --tidb.replicas int           The number of replicas Value range [1, 5]. (default 2)
-      --tikv.cpu float              CPU cores. Value range [2, 64]. (default 2)
-      --tikv.memory float           Memory, the unit is Gi. Value range [4, 1000]. (default 4)
-      --tikv.replicas int           The number of replicas Value range [1, 5]. (default 3)
-      --tikv.storage float          Storage size, the unit is Gi. Value range [1, 10000]. (default 20)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_create_xinference.md b/docs/user_docs/cli/kbcli_cluster_create_xinference.md
deleted file mode 100644
index e021d8455..000000000
--- a/docs/user_docs/cli/kbcli_cluster_create_xinference.md
+++ /dev/null
@@ -1,76 +0,0 @@
----
-title: kbcli cluster create xinference
----
-
-Create a xinference cluster.
-
-```
-kbcli cluster create xinference NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a cluster with the default values
-  kbcli cluster create xinference
-  
-  # Create a cluster with the specified cpu, memory and storage
-  kbcli cluster create xinference --cpu 1 --memory 2 --storage 10
-```
-
-### Options
-
-```
-      --availability-policy string     The availability policy of cluster. Legal values [none, node, zone]. (default "node")
-      --cpu float                      CPU cores. Value range [0, 64].
-      --cpu-mode                       Set to true if no GPU is available
-      --disable-exporter               Enable or disable monitor. (default true)
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --gpu float                      GPU cores. Value range [0, 64]. (default 1)
-  -h, --help                           help for xinference
-      --host-network-accessible        Specify whether the cluster can be accessed from within the VPC.
-      --memory float                   Memory, the unit is Gi. Value range [0, 1000].
-      --node-labels stringToString     Node label selector (default [])
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pod-anti-affinity string       Pod anti-affinity type, one of: (Preferred, Required) (default "Preferred")
-      --publicly-accessible            Specify whether the cluster can be accessed from the public internet.
-      --rbac-enabled                   Specify whether rbac resources will be created by client, otherwise KubeBlocks server will try to create rbac resources.
-      --replicas int                   The number of replicas, for standalone mode, the replicas is 1, for replication mode, the default replicas is 2. Value range [1, 5]. (default 1)
-      --shm-size string                shm size (default "64Mi")
-      --tenancy string                 The tenancy of cluster. Legal values [SharedNode, DedicatedNode]. (default "SharedNode")
-      --termination-policy string      The termination policy of cluster. Legal values [DoNotTerminate, Halt, Delete, WipeOut]. (default "Delete")
-      --tolerations strings            Tolerations for cluster, such as "key=value:effect,key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-      --topology-keys stringArray      Topology keys for affinity
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster create](kbcli_cluster_create.md)	 - Create a cluster.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_custom-ops.md b/docs/user_docs/cli/kbcli_cluster_custom-ops.md
deleted file mode 100644
index 8bd6e19e2..000000000
--- a/docs/user_docs/cli/kbcli_cluster_custom-ops.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: kbcli cluster custom-ops
----
-
-
-
-```
-kbcli cluster custom-ops OpsDef --cluster <clusterName> <your custom params> [flags]
-```
-
-### Examples
-
-```
-  # custom ops cli format
-  kbcli cluster custom-ops <opsDefName> --cluster <clusterName> <your params of this opsDef>
-  
-  # example for kafka topic
-  kbcli cluster custom-ops kafka-topic --cluster mycluster --type create --topic test --partition 3 --replicas 3
-  
-  # example for kafka acl
-  kbcli cluster custom-ops kafka-user-acl --cluster mycluster --type add --operations "Read,Writer,Delete,Alter,Describe" --allowUsers client --topic "*"
-  
-  # example for kafka quota
-  kbcli cluster custom-ops kafka-quota --cluster mycluster --user client --producerByteRate 1024 --consumerByteRate 2048
-```
-
-### Options
-
-```
-  -h, --help   help for custom-ops
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_custom-ops_etcd-defragmentation.md b/docs/user_docs/cli/kbcli_cluster_custom-ops_etcd-defragmentation.md
deleted file mode 100644
index 3548da396..000000000
--- a/docs/user_docs/cli/kbcli_cluster_custom-ops_etcd-defragmentation.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: kbcli cluster custom-ops etcd-defragmentation
----
-
-Create a custom ops with opsDef etcd-defragmentation
-
-```
-kbcli cluster custom-ops etcd-defragmentation <ClusterName> [flags]
-```
-
-### Examples
-
-```
-  # Create a etcd-defragmentation ops
-  kbcli cluster custom-ops etcd-defragmentation <clusterName> --component <componentName>
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before promote the instance
-      --component string               Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for etcd-defragmentation
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-quota.md b/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-quota.md
deleted file mode 100644
index 12cdc7393..000000000
--- a/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-quota.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: kbcli cluster custom-ops kafka-quota
----
-
-Create a custom ops with opsDef kafka-quota
-
-```
-kbcli cluster custom-ops kafka-quota <ClusterName> [flags]
-```
-
-### Examples
-
-```
-  # Create a kafka-quota ops
-  kbcli cluster custom-ops kafka-quota <clusterName> --component <componentName>
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before promote the instance
-      --client string                  client id.
-      --component string               Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
-      --consumer-byte-rate int         the maximum number of messages that can be consumed per second, measured in bytes/sec
-      --controller-mutation-rate int   partition mutation quota to control the rate at which mutations are accepted for user requests.
-      --delete-quotas stringArray      
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for kafka-quota
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --producer-byte-rate int         the maximum number of messages that can be produced per second, measured in bytes/sec
-      --request-percentage int         request percentage.
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-      --user string                    user name
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-```
-
-### SEE ALSO
-
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-topic.md b/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-topic.md
deleted file mode 100644
index 7e1a8c10b..000000000
--- a/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-topic.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: kbcli cluster custom-ops kafka-topic
----
-
-Create a custom ops with opsDef kafka-topic
-
-```
-kbcli cluster custom-ops kafka-topic <ClusterName> [flags]
-```
-
-### Examples
-
-```
-  # Create a kafka-topic ops
-  kbcli cluster custom-ops kafka-topic <clusterName> --component <componentName> --topic=<topic> --type=<type>
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before promote the instance
-      --component string               Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
-      --config string                  A topic configuration override for the topic being created or altered.
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for kafka-topic
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --partitions int                 The number of partitions for the topic being created or altered (WARNING:
-                                       If partitions are increased for a topic that has a key, the partition logic or ordering
-                                       of the messages will be affected). If not supplied for create, defaults to the cluster default.
-                                        Value range [1, 10000].
-      --replicas int                   The replication factor for each partition in the topic being
-                                       created. If not supplied, defaults to the cluster default.
-                                        Value range [1, 10].
-      --topic string                   The topic to create, alter or delete. It also accepts a regular
-                                       expression, except for --create option. Put topic name in double quotes and
-                                       use the '\' prefix to escape regular expression symbols; e.g. "test\.topic".
-                                       
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-      --type string                    operation type, supports value: [create, alter, delete]. Legal values [create, alter, delete].
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-user-acl.md b/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-user-acl.md
deleted file mode 100644
index cc0074e41..000000000
--- a/docs/user_docs/cli/kbcli_cluster_custom-ops_kafka-user-acl.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: kbcli cluster custom-ops kafka-user-acl
----
-
-Create a custom ops with opsDef kafka-user-acl
-
-```
-kbcli cluster custom-ops kafka-user-acl <ClusterName> [flags]
-```
-
-### Examples
-
-```
-  # Create a kafka-user-acl ops
-  kbcli cluster custom-ops kafka-user-acl <clusterName> --component <componentName> --operations=<operations> --type=<type>
-```
-
-### Options
-
-```
-      --allow-hosts stringArray        
-      --allow-users stringArray        
-      --auto-approve                   Skip interactive approval before promote the instance
-      --cluster string                 Indicates to the script that the user is trying to interact with acls on the singular cluster resource.
-      --component string               Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
-      --consumer                       indicate to add or remove the acl of consumer.
-      --deny-hosts stringArray         
-      --deny-users stringArray         
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-      --group string                   consumer-group.
-  -h, --help                           help for kafka-user-acl
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-      --operations stringArray         
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --pattern-type string            Resource pattern type.
-      --producer                       indicate to add or remove the acl of producer.
-      --topic string                   topic name.
-      --transactional-id string        The transactionalId to which ACLs should be added or removed. A value of * indicates the ACLs should apply to all transactionalIds.
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-      --type string                    user name
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_custom-ops_mysql-orc-switchover.md b/docs/user_docs/cli/kbcli_cluster_custom-ops_mysql-orc-switchover.md
deleted file mode 100644
index 0bcf4c5e2..000000000
--- a/docs/user_docs/cli/kbcli_cluster_custom-ops_mysql-orc-switchover.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster custom-ops mysql-orc-switchover
----
-
-Create a custom ops with opsDef mysql-orc-switchover
-
-```
-kbcli cluster custom-ops mysql-orc-switchover <ClusterName> [flags]
-```
-
-### Examples
-
-```
-  # Create a mysql-orc-switchover ops
-  kbcli cluster custom-ops mysql-orc-switchover <clusterName> --component <componentName>
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before promote the instance
-      --candidate string               candidate instance name(pod Name). if candidate is not empty, will promote it to primary.
-                                       otherwise promote a randomly selected pod to primary.
-                                       
-      --component string               Specify the component name of the cluster. if not specified, using the first component which referenced the defined componentDefinition.
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for mysql-orc-switchover
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster custom-ops](kbcli_cluster_custom-ops.md)	 - 
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_delete-account.md b/docs/user_docs/cli/kbcli_cluster_delete-account.md
deleted file mode 100644
index 93f6369bd..000000000
--- a/docs/user_docs/cli/kbcli_cluster_delete-account.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: kbcli cluster delete-account
----
-
-Delete account for a cluster
-
-```
-kbcli cluster delete-account [flags]
-```
-
-### Examples
-
-```
-  # delete account by name
-  kbcli cluster delete-account CLUSTERNAME --component COMPNAME --name USERNAME
-  # delete account with default component
-  kbcli cluster delete-account CLUSTERNAME --name USERNAME
-  # delete account for instance
-  kbcli cluster delete-account --instance INSTANCE --name USERNAME
-```
-
-### Options
-
-```
-      --auto-approve       Skip interactive approval before deleting account
-      --component string   Specify the name of component to be connected. If not specified, pick the first one.
-  -h, --help               help for delete-account
-  -i, --instance string    Specify the name of instance to be connected.
-      --name string        Required user name, please specify it.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_delete-backup.md b/docs/user_docs/cli/kbcli_cluster_delete-backup.md
deleted file mode 100644
index 94099819b..000000000
--- a/docs/user_docs/cli/kbcli_cluster_delete-backup.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli cluster delete-backup
----
-
-Delete a backup.
-
-```
-kbcli cluster delete-backup [flags]
-```
-
-### Examples
-
-```
-  # delete a backup named backup-name
-  kbcli cluster delete-backup cluster-name --name backup-name
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --auto-approve       Skip interactive approval before deleting
-      --force              If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.
-      --grace-period int   Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion). (default -1)
-  -h, --help               help for delete-backup
-      --name strings       Backup names
-      --now                If true, resources are signaled for immediate shutdown (same as --grace-period=1).
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_delete-ops.md b/docs/user_docs/cli/kbcli_cluster_delete-ops.md
deleted file mode 100644
index aefc65600..000000000
--- a/docs/user_docs/cli/kbcli_cluster_delete-ops.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: kbcli cluster delete-ops
----
-
-Delete an OpsRequest.
-
-```
-kbcli cluster delete-ops [flags]
-```
-
-### Examples
-
-```
-  # delete all ops belong the specified cluster
-  kbcli cluster delete-ops mycluster
-  
-  # delete the specified ops belong the specify cluster
-  kbcli cluster delete-ops --name=mysql-restart-82zxv
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --auto-approve       Skip interactive approval before deleting
-      --force              If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.
-      --grace-period int   Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion). (default -1)
-  -h, --help               help for delete-ops
-      --name strings       OpsRequest names
-      --now                If true, resources are signaled for immediate shutdown (same as --grace-period=1).
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_delete.md b/docs/user_docs/cli/kbcli_cluster_delete.md
deleted file mode 100644
index 2f68418b8..000000000
--- a/docs/user_docs/cli/kbcli_cluster_delete.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: kbcli cluster delete
----
-
-Delete clusters.
-
-```
-kbcli cluster delete NAME [flags]
-```
-
-### Examples
-
-```
-  # delete a cluster named mycluster
-  kbcli cluster delete mycluster
-  # delete a cluster by label selector
-  kbcli cluster delete --selector clusterdefinition.kubeblocks.io/name=apecloud-mysql
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --auto-approve       Skip interactive approval before deleting
-      --force              If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.
-      --grace-period int   Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion). (default -1)
-  -h, --help               help for delete
-      --now                If true, resources are signaled for immediate shutdown (same as --grace-period=1).
-      --rbac-enabled       Specify whether rbac resources will be deleted by kbcli
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe-account.md b/docs/user_docs/cli/kbcli_cluster_describe-account.md
deleted file mode 100644
index 3a050fcca..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe-account.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli cluster describe-account
----
-
-Describe account roles and related information
-
-```
-kbcli cluster describe-account [flags]
-```
-
-### Examples
-
-```
-  # describe account and show role information
-  kbcli cluster describe-account CLUSTERNAME --component COMPNAME --name USERNAME
-  # describe account with default component
-  kbcli cluster describe-account CLUSTERNAME --name USERNAME
-  # describe account for instance
-  kbcli cluster describe-account --instance INSTANCE --name USERNAME
-```
-
-### Options
-
-```
-      --component string   Specify the name of component to be connected. If not specified, pick the first one.
-  -h, --help               help for describe-account
-  -i, --instance string    Specify the name of instance to be connected.
-      --name string        Required user name, please specify it.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe-backup-policy.md b/docs/user_docs/cli/kbcli_cluster_describe-backup-policy.md
deleted file mode 100644
index cd242872c..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe-backup-policy.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli cluster describe-backup-policy
----
-
-Describe backup policy
-
-```
-kbcli cluster describe-backup-policy [flags]
-```
-
-### Examples
-
-```
-  # describe the default backup policy of the cluster
-  kbcli cluster describe-backup-policy cluster-name
-  
-  # describe the backup policy of the cluster with specified name
-  kbcli cluster describe-backup-policy cluster-name --name backup-policy-name
-```
-
-### Options
-
-```
-  -h, --help            help for describe-backup-policy
-      --names strings   Backup policy names
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe-backup.md b/docs/user_docs/cli/kbcli_cluster_describe-backup.md
deleted file mode 100644
index 1aa5eb805..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe-backup.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: kbcli cluster describe-backup
----
-
-Describe a backup.
-
-```
-kbcli cluster describe-backup BACKUP-NAME [flags]
-```
-
-### Examples
-
-```
-  # describe a backup
-  kbcli cluster describe-backup backup-default-mycluster-20230616190023
-```
-
-### Options
-
-```
-  -h, --help            help for describe-backup
-      --names strings   Backup names
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe-config.md b/docs/user_docs/cli/kbcli_cluster_describe-config.md
deleted file mode 100644
index a73bb87d4..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe-config.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: kbcli cluster describe-config
----
-
-Show details of a specific reconfiguring.
-
-```
-kbcli cluster describe-config [flags]
-```
-
-### Examples
-
-```
-  # describe a cluster, e.g. cluster name is mycluster
-  kbcli cluster describe-config mycluster
-  
-  # describe a component, e.g. cluster name is mycluster, component name is mysql
-  kbcli cluster describe-config mycluster --component=mysql
-  
-  # describe all configuration files.
-  kbcli cluster describe-config mycluster --component=mysql --show-detail
-  
-  # describe a content of configuration file.
-  kbcli cluster describe-config mycluster --component=mysql --config-file=my.cnf --show-detail
-```
-
-### Options
-
-```
-      --components strings     Specify the name of Component to describe (e.g. for apecloud-mysql: --component=mysql). If the cluster has only one component, unset the parameter."
-      --config-file strings    Specify the name of the configuration file to be describe (e.g. for mysql: --config-file=my.cnf). If unset, all files.
-      --config-specs strings   Specify the name of the configuration template to describe. (e.g. for apecloud-mysql: --config-specs=mysql-3node-tpl)
-  -h, --help                   help for describe-config
-      --show-detail            If true, the content of the files specified by config-file will be printed.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe-ops.md b/docs/user_docs/cli/kbcli_cluster_describe-ops.md
deleted file mode 100644
index 295a08f00..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe-ops.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli cluster describe-ops
----
-
-Show details of a specific OpsRequest.
-
-```
-kbcli cluster describe-ops [flags]
-```
-
-### Examples
-
-```
-  # describe a specified OpsRequest
-  kbcli cluster describe-ops mysql-restart-82zxv
-```
-
-### Options
-
-```
-  -h, --help   help for describe-ops
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe-restore.md b/docs/user_docs/cli/kbcli_cluster_describe-restore.md
deleted file mode 100644
index 047a85776..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe-restore.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli cluster describe-restore
----
-
-Describe a restore
-
-```
-kbcli cluster describe-restore NAME [flags]
-```
-
-### Examples
-
-```
-  # describe a restore
-  kbcli cluster describe-restore <restoreName>
-```
-
-### Options
-
-```
-  -h, --help   help for describe-restore
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_describe.md b/docs/user_docs/cli/kbcli_cluster_describe.md
deleted file mode 100644
index d3879cb72..000000000
--- a/docs/user_docs/cli/kbcli_cluster_describe.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli cluster describe
----
-
-Show details of a specific cluster.
-
-```
-kbcli cluster describe NAME [flags]
-```
-
-### Examples
-
-```
-  # describe a specified cluster
-  kbcli cluster describe mycluster
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_diff-config.md b/docs/user_docs/cli/kbcli_cluster_diff-config.md
deleted file mode 100644
index efd0217fa..000000000
--- a/docs/user_docs/cli/kbcli_cluster_diff-config.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli cluster diff-config
----
-
-Show the difference in parameters between the two submitted OpsRequest.
-
-```
-kbcli cluster diff-config [flags]
-```
-
-### Examples
-
-```
-  # compare config files
-  kbcli cluster diff-config opsrequest1 opsrequest2
-```
-
-### Options
-
-```
-  -h, --help   help for diff-config
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_edit-backup-policy.md b/docs/user_docs/cli/kbcli_cluster_edit-backup-policy.md
deleted file mode 100644
index eb3ca54e1..000000000
--- a/docs/user_docs/cli/kbcli_cluster_edit-backup-policy.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli cluster edit-backup-policy
----
-
-Edit backup policy
-
-```
-kbcli cluster edit-backup-policy
-```
-
-### Examples
-
-```
-  # edit backup policy
-  kbcli cluster edit-backup-policy <backup-policy-name>
-```
-
-### Options
-
-```
-  -h, --help   help for edit-backup-policy
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_edit-config.md b/docs/user_docs/cli/kbcli_cluster_edit-config.md
deleted file mode 100644
index 1c60a7f7e..000000000
--- a/docs/user_docs/cli/kbcli_cluster_edit-config.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: kbcli cluster edit-config
----
-
-Edit the config file of the component.
-
-```
-kbcli cluster edit-config NAME [--components=component-name] [--config-spec=config-spec-name] [--config-file=config-file] [flags]
-```
-
-### Examples
-
-```
-  # update mysql max_connections, cluster name is mycluster
-  kbcli cluster edit-config mycluster
-```
-
-### Options
-
-```
-      --components strings             Component names to this operations
-      --config-file string             Specify the name of the configuration file to be updated (e.g. for mysql: --config-file=my.cnf). For available templates and configs, refer to: 'kbcli cluster describe-config'.
-      --config-spec string             Specify the name of the configuration template to be updated (e.g. for apecloud-mysql: --config-spec=mysql-3node-tpl). For available templates and configs, refer to: 'kbcli cluster describe-config'.
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --enable-delete                  Boolean flag to enable delete configuration. Default with false.
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-      --force-restart                  Boolean flag to restart component. Default with false.
-  -h, --help                           help for edit-config
-      --local-file string              Specify the local configuration file to be updated.
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --replace                        Boolean flag to enable replacing config file. Default with false.
-      --set strings                    Specify parameters list to be updated. For more details, refer to 'kbcli cluster describe-config'.
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_explain-config.md b/docs/user_docs/cli/kbcli_cluster_explain-config.md
deleted file mode 100644
index eb8ae49e7..000000000
--- a/docs/user_docs/cli/kbcli_cluster_explain-config.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: kbcli cluster explain-config
----
-
-List the constraint for supported configuration params.
-
-```
-kbcli cluster explain-config [flags]
-```
-
-### Examples
-
-```
-  # explain a cluster, e.g. cluster name is mycluster
-  kbcli cluster explain-config mycluster
-  
-  # explain a specified configure template, e.g. cluster name is mycluster
-  kbcli cluster explain-config mycluster --component=mysql --config-specs=mysql-3node-tpl
-  
-  # explain a specified configure template, e.g. cluster name is mycluster
-  kbcli cluster explain-config mycluster --component=mysql --config-specs=mysql-3node-tpl --trunc-document=false --trunc-enum=false
-  
-  # explain a specified parameters, e.g. cluster name is mycluster
-  kbcli cluster explain-config mycluster --param=sql_mode
-```
-
-### Options
-
-```
-      --components strings     Specify the name of Component to describe (e.g. for apecloud-mysql: --component=mysql). If the cluster has only one component, unset the parameter."
-      --config-specs strings   Specify the name of the configuration template to describe. (e.g. for apecloud-mysql: --config-specs=mysql-3node-tpl)
-  -h, --help                   help for explain-config
-      --param string           Specify the name of parameter to be query. It clearly display the details of the parameter.
-      --trunc-document         If the document length of the parameter is greater than 100, it will be truncated.
-      --trunc-enum             If the value list length of the parameter is greater than 20, it will be truncated. (default true)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_expose.md b/docs/user_docs/cli/kbcli_cluster_expose.md
deleted file mode 100644
index 96487931a..000000000
--- a/docs/user_docs/cli/kbcli_cluster_expose.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: kbcli cluster expose
----
-
-Expose a cluster with a new endpoint, the new endpoint can be found by executing 'kbcli cluster describe NAME'.
-
-```
-kbcli cluster expose NAME --enable=[true|false] --type=[intranet|internet] [flags]
-```
-
-### Examples
-
-```
-  # Expose a cluster to intranet
-  kbcli cluster expose mycluster --type intranet --enable=true
-  
-  # Expose a cluster to public internet
-  kbcli cluster expose mycluster --type internet --enable=true
-  
-  # Stop exposing a cluster
-  kbcli cluster expose mycluster --type intranet --enable=false
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before exposing the cluster
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --enable string                  Enable or disable the expose, values can be true or false
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for expose
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --sub-type string                Expose sub type, currently supported types are 'NodePort', 'LoadBalancer', only available if type is intranet (default "LoadBalancer")
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-      --type string                    Expose type, currently supported types are 'intranet', 'internet'
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_grant-role.md b/docs/user_docs/cli/kbcli_cluster_grant-role.md
deleted file mode 100644
index 6da4ee6ed..000000000
--- a/docs/user_docs/cli/kbcli_cluster_grant-role.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: kbcli cluster grant-role
----
-
-Grant role to account
-
-```
-kbcli cluster grant-role [flags]
-```
-
-### Examples
-
-```
-  # grant role to user
-  kbcli cluster grant-role CLUSTERNAME --component COMPNAME --name USERNAME --role ROLENAME
-  # grant role to user with default component
-  kbcli cluster grant-role CLUSTERNAME --name USERNAME --role ROLENAME
-  # grant role to user for instance
-  kbcli cluster grant-role --instance INSTANCE --name USERNAME --role ROLENAME
-```
-
-### Options
-
-```
-      --component string   Specify the name of component to be connected. If not specified, pick the first one.
-  -h, --help               help for grant-role
-  -i, --instance string    Specify the name of instance to be connected.
-      --name string        Required user name, please specify it.
-  -r, --role string        Role name should be one of [SUPERUSER, READWRITE, READONLY].
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_hscale.md b/docs/user_docs/cli/kbcli_cluster_hscale.md
deleted file mode 100644
index 7f94dc151..000000000
--- a/docs/user_docs/cli/kbcli_cluster_hscale.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: kbcli cluster hscale
----
-
-Horizontally scale the specified components in the cluster.
-
-```
-kbcli cluster hscale NAME [flags]
-```
-
-### Examples
-
-```
-  # expand storage resources of specified components, separate with commas for multiple components
-  kbcli cluster hscale mycluster --components=mysql --replicas=3
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before horizontally scaling the cluster
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for hscale
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --replicas int                   Replicas with the specified components
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_label.md b/docs/user_docs/cli/kbcli_cluster_label.md
deleted file mode 100644
index 928139be7..000000000
--- a/docs/user_docs/cli/kbcli_cluster_label.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: kbcli cluster label
----
-
-Update the labels on cluster
-
-```
-kbcli cluster label NAME [flags]
-```
-
-### Examples
-
-```
-  # list label for clusters with specified name
-  kbcli cluster label mycluster --list
-  
-  # add label 'env' and value 'dev' for clusters with specified name
-  kbcli cluster label mycluster env=dev
-  
-  # add label 'env' and value 'dev' for all clusters
-  kbcli cluster label env=dev --all
-  
-  # add label 'env' and value 'dev' for the clusters that match the selector
-  kbcli cluster label env=dev -l type=mysql
-  
-  # update cluster with the label 'env' with value 'test', overwriting any existing value
-  kbcli cluster label mycluster --overwrite env=test
-  
-  # delete label env for clusters with specified name
-  kbcli cluster label mycluster env-
-```
-
-### Options
-
-```
-      --all                            Select all cluster
-      --dry-run string[="unchanged"]   Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource. (default "none")
-  -h, --help                           help for label
-      --list                           If true, display the labels of the clusters
-      --overwrite                      If true, allow labels to be overwritten, otherwise reject label updates that overwrite existing labels.
-  -l, --selector string                Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-accounts.md b/docs/user_docs/cli/kbcli_cluster_list-accounts.md
deleted file mode 100644
index 353046a9e..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-accounts.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: kbcli cluster list-accounts
----
-
-List accounts for a cluster
-
-```
-kbcli cluster list-accounts [flags]
-```
-
-### Examples
-
-```
-  # list all users for component
-  kbcli cluster list-accounts CLUSTERNAME --component COMPNAME
-  # list all users with default component
-  kbcli cluster list-accounts CLUSTERNAME
-  # list all users from instance
-  kbcli cluster list-accounts --instance INSTANCE
-```
-
-### Options
-
-```
-      --component string   Specify the name of component to be connected. If not specified, pick the first one.
-  -h, --help               help for list-accounts
-  -i, --instance string    Specify the name of instance to be connected.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-backup-policy.md b/docs/user_docs/cli/kbcli_cluster_list-backup-policy.md
deleted file mode 100644
index eb6fbcd46..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-backup-policy.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: kbcli cluster list-backup-policy
----
-
-List backups policies.
-
-```
-kbcli cluster list-backup-policy [flags]
-```
-
-### Examples
-
-```
-  # list all backup policies
-  kbcli cluster list-backup-policy
-  
-  # using short cmd to list backup policy of the specified cluster
-  kbcli cluster list-bp mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list-backup-policy
-      --names strings      The backup policy name to get the details.
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-backup.md b/docs/user_docs/cli/kbcli_cluster_list-backup.md
deleted file mode 100644
index 4049d5999..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-backup.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster list-backup
----
-
-List backups.
-
-```
-kbcli cluster list-backup [flags]
-```
-
-### Examples
-
-```
-  # list all backups
-  kbcli cluster list-backup
-  
-  # list all backups of the cluster
-  kbcli cluster list-backup <clusterName>
-  
-  # list the specified backups
-  kbcli cluster list-backup --names b1,b2
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list-backup
-      --names strings      The backup name to get the details.
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-backups.md b/docs/user_docs/cli/kbcli_cluster_list-backups.md
deleted file mode 100644
index 6931bb567..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-backups.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster list-backups
----
-
-List backups.
-
-```
-kbcli cluster list-backups [flags]
-```
-
-### Examples
-
-```
-  # list all backups
-  kbcli cluster list-backups
-  
-  # list all backups of the cluster
-  kbcli cluster list-backups <clusterName>
-  
-  # list the specified backups
-  kbcli cluster list-backups --names b1,b2
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list-backups
-      --names strings      The backup name to get the details.
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-components.md b/docs/user_docs/cli/kbcli_cluster_list-components.md
deleted file mode 100644
index 0c321d5a6..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-components.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: kbcli cluster list-components
----
-
-List cluster components.
-
-```
-kbcli cluster list-components [flags]
-```
-
-### Examples
-
-```
-  # list all components of all clusters in current namespace
-  kbcli cluster list-components
-  
-  # list all components of a specified cluster
-  kbcli cluster list-components mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces    If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help              help for list-components
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-events.md b/docs/user_docs/cli/kbcli_cluster_list-events.md
deleted file mode 100644
index 0f8e3a93a..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-events.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: kbcli cluster list-events
----
-
-List cluster events.
-
-```
-kbcli cluster list-events [flags]
-```
-
-### Examples
-
-```
-  # list all events of all clusters in current namespace
-  kbcli cluster list-events
-  
-  # list all events of a specified cluster
-  kbcli cluster list-events mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces    If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help              help for list-events
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-instances.md b/docs/user_docs/cli/kbcli_cluster_list-instances.md
deleted file mode 100644
index f54c2081a..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-instances.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: kbcli cluster list-instances
----
-
-List cluster instances.
-
-```
-kbcli cluster list-instances [flags]
-```
-
-### Examples
-
-```
-  # list all instances of all clusters in current namespace
-  kbcli cluster list-instances
-  
-  # list all instances of a specified cluster
-  kbcli cluster list-instances mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces    If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help              help for list-instances
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-logs.md b/docs/user_docs/cli/kbcli_cluster_list-logs.md
deleted file mode 100644
index 83d62d82e..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-logs.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: kbcli cluster list-logs
----
-
-List supported log files in cluster.
-
-```
-kbcli cluster list-logs NAME [flags]
-```
-
-### Examples
-
-```
-  # Display supported log files in cluster mycluster with all instance
-  kbcli cluster list-logs mycluster
-  
-  # Display supported log files in cluster mycluster with specify component my-component
-  kbcli cluster list-logs mycluster --component my-component
-  
-  # Display supported log files in cluster mycluster with specify instance my-instance-0
-  kbcli cluster list-logs mycluster --instance my-instance-0
-```
-
-### Options
-
-```
-      --component string   Component name.
-  -h, --help               help for list-logs
-  -i, --instance string    Instance name.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-ops.md b/docs/user_docs/cli/kbcli_cluster_list-ops.md
deleted file mode 100644
index c8498d168..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-ops.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: kbcli cluster list-ops
----
-
-List all opsRequests.
-
-```
-kbcli cluster list-ops [flags]
-```
-
-### Examples
-
-```
-  # list all opsRequests
-  kbcli cluster list-ops
-  
-  # list all opsRequests of specified cluster
-  kbcli cluster list-ops mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list-ops
-      --name string        The OpsRequest name to get the details.
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-      --status strings     Options include all, pending, creating, running, canceling, failed. by default, outputs the pending/creating/running/canceling/failed OpsRequest. (default [pending,creating,running,canceling,failed])
-      --type strings       The OpsRequest type
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list-restore.md b/docs/user_docs/cli/kbcli_cluster_list-restore.md
deleted file mode 100644
index 4ae2d5bde..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list-restore.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster list-restore
----
-
-List restores.
-
-```
-kbcli cluster list-restore [flags]
-```
-
-### Examples
-
-```
-  # list all restores
-  kbcli cluster list-restore
-  
-  # list all restores of the cluster
-  kbcli cluster list-restore <clusterName>
-  
-  # list the specified restores
-  kbcli cluster list-restore --names r1,r2
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list-restore
-      --names strings      List restores in the specified cluster
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_list.md b/docs/user_docs/cli/kbcli_cluster_list.md
deleted file mode 100644
index 53f15f0e8..000000000
--- a/docs/user_docs/cli/kbcli_cluster_list.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: kbcli cluster list
----
-
-List clusters.
-
-```
-kbcli cluster list [NAME] [flags]
-```
-
-### Examples
-
-```
-  # list all clusters
-  kbcli cluster list
-  
-  # list a single cluster with specified name
-  kbcli cluster list mycluster
-  
-  # list a single cluster in YAML output format
-  kbcli cluster list mycluster -o yaml
-  
-  # list a single cluster in JSON output format
-  kbcli cluster list mycluster -o json
-  
-  # list a single cluster in wide output format
-  kbcli cluster list mycluster -o wide
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-      --status string      Filter objects by given status.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_logs.md b/docs/user_docs/cli/kbcli_cluster_logs.md
deleted file mode 100644
index a445b8b60..000000000
--- a/docs/user_docs/cli/kbcli_cluster_logs.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: kbcli cluster logs
----
-
-Access cluster log file.
-
-```
-kbcli cluster logs NAME [flags]
-```
-
-### Examples
-
-```
-  # Return snapshot logs from cluster mycluster with default primary instance (stdout)
-  kbcli cluster logs mycluster
-  
-  # Display only the most recent 20 lines from cluster mycluster with default primary instance (stdout)
-  kbcli cluster logs mycluster --tail=20
-  
-  # Display stdout info of specific instance my-instance-0 (cluster name comes from annotation app.kubernetes.io/instance)
-  kbcli cluster logs --instance my-instance-0
-  
-  # Return snapshot logs from cluster mycluster with specific instance my-instance-0 (stdout)
-  kbcli cluster logs mycluster --instance my-instance-0
-  
-  # Return snapshot logs from cluster mycluster with specific instance my-instance-0 and specific container
-  # my-container (stdout)
-  kbcli cluster logs mycluster --instance my-instance-0 -c my-container
-  
-  # Return slow logs from cluster mycluster with default primary instance
-  kbcli cluster logs mycluster --file-type=slow
-  
-  # Begin streaming the slow logs from cluster mycluster with default primary instance
-  kbcli cluster logs -f mycluster --file-type=slow
-  
-  # Return the specific file logs from cluster mycluster with specific instance my-instance-0
-  kbcli cluster logs mycluster --instance my-instance-0 --file-path=/var/log/yum.log
-  
-  # Return the specific file logs from cluster mycluster with specific instance my-instance-0 and specific
-  # container my-container
-  kbcli cluster logs mycluster --instance my-instance-0 -c my-container --file-path=/var/log/yum.log
-```
-
-### Options
-
-```
-  -c, --container string    Container name.
-      --file-path string    Log-file path. File path has a priority over file-type. When file-path and file-type are unset, output stdout/stderr of target container.
-      --file-type string    Log-file type. List them with list-logs cmd. When file-path and file-type are unset, output stdout/stderr of target container.
-  -f, --follow              Specify if the logs should be streamed.
-  -h, --help                help for logs
-      --ignore-errors       If watching / following pod logs, allow for any errors that occur to be non-fatal. Only take effect for stdout&stderr.
-  -i, --instance string     Instance name.
-      --limit-bytes int     Maximum bytes of logs to return.
-      --prefix              Prefix each log line with the log source (pod name and container name). Only take effect for stdout&stderr.
-  -p, --previous            If true, print the logs for the previous instance of the container in a pod if it exists. Only take effect for stdout&stderr.
-      --since duration      Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to all logs. Only one of since-time / since may be used. Only take effect for stdout&stderr.
-      --since-time string   Only return logs after a specific date (RFC3339). Defaults to all logs. Only one of since-time / since may be used. Only take effect for stdout&stderr.
-      --tail int            Lines of recent log file to display. Defaults to -1 for showing all log lines. (default -1)
-      --timestamps          Include timestamps on each line in the log output. Only take effect for stdout&stderr.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_promote.md b/docs/user_docs/cli/kbcli_cluster_promote.md
deleted file mode 100644
index d32b072be..000000000
--- a/docs/user_docs/cli/kbcli_cluster_promote.md
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: kbcli cluster promote
----
-
-Promote a non-primary or non-leader instance as the new primary or leader of the cluster
-
-```
-kbcli cluster promote NAME [--component=<comp-name>] [--instance <instance-name>] [flags]
-```
-
-### Examples
-
-```
-  # Promote the instance mycluster-mysql-1 as the new primary or leader.
-  kbcli cluster promote mycluster --instance mycluster-mysql-1
-  
-  # Promote a non-primary or non-leader instance as the new primary or leader, the new primary or leader is determined by the system.
-  kbcli cluster promote mycluster
-  
-  # If the cluster has multiple components, you need to specify a component, otherwise an error will be reported.
-  kbcli cluster promote mycluster --component=mysql --instance mycluster-mysql-1
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before promote the instance
-      --component string               Specify the component name of the cluster, if the cluster has multiple components, you need to specify a component
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for promote
-      --instance string                Specify the instance name as the new primary or leader of the cluster, you can get the instance name by running "kbcli cluster list-instances"
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_rebuild-instance.md b/docs/user_docs/cli/kbcli_cluster_rebuild-instance.md
deleted file mode 100644
index 2d8598784..000000000
--- a/docs/user_docs/cli/kbcli_cluster_rebuild-instance.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: kbcli cluster rebuild-instance
----
-
-Rebuild the specified instances in the cluster.
-
-```
-kbcli cluster rebuild-instance NAME [flags]
-```
-
-### Examples
-
-```
-  # rebuild instance by creating new instances and remove the specified instances after the new instances are ready.
-  kbcli cluster rebuild-instance mycluster --instances pod1,pod2
-  
-  # rebuild instance to a new node.
-  kbcli cluster rebuild-instance mycluster --instances pod1 --node nodeName.
-  
-  # rebuild instance with the same pod name.
-  kbcli cluster rebuild-instance mycluster --instances pod1 --in-place
-  
-  # rebuild instance from backup and with the same pod name
-  kbcli cluster rebuild-instance mycluster --instances pod1,pod2 --backupName <backup> --in-place
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before rebuilding the instances.gi
-      --backup string                  instances will be rebuild by the specified backup.
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for rebuild-instance
-      --in-place                       rebuild the instance with the same pod name. if not set, will create a new instance by horizontalScaling and remove the instance after the new instance is ready
-      --instances strings              instances which need to rebuild.
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-      --node strings                   specified the target node which rebuilds the instance on the node otherwise will rebuild on a random node. format: insName1=nodeName,insName2=nodeName
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --restore-env stringArray        provide the necessary env for the 'Restore' operation from the backup. format: key1=value, key2=value
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_register.md b/docs/user_docs/cli/kbcli_cluster_register.md
deleted file mode 100644
index 4f04216d8..000000000
--- a/docs/user_docs/cli/kbcli_cluster_register.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster register
----
-
-Pull the cluster chart to the local cache and register the type to 'create' sub-command
-
-```
-kbcli cluster register [NAME] [flags]
-```
-
-### Examples
-
-```
-  # Pull a cluster type to local and register it to "kbcli cluster create" sub-cmd from specified URL
-  kbcli cluster register orioledb --source https://github.com/apecloud/helm-charts/releases/download/orioledb-cluster-0.6.0-beta.44/orioledb-cluster-0.6.0-beta.44.tgz
-  
-  # Register a cluster type from a local path file
-  kbcli cluster register neon --source pkg/cli/cluster/charts/neon-cluster.tgz
-  
-  # Register a cluster type from a Helm repository, specifying the version and engine.
-  kbcli cluster register mysql --engine mysql --version 0.9.0 --repo https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-```
-
-### Options
-
-```
-      --alias string     Set the cluster type alias
-      --engine string    Specify the cluster chart name in helm repo
-  -h, --help             help for register
-      --repo string      Specify the url of helm repo which contains cluster charts (default "https://jihulab.com/api/v4/projects/150246/packages/helm/stable")
-  -S, --source string    Specify the cluster type chart source, support a URL or a local file path
-      --version string   Specify the version of cluster chart to register
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_restart.md b/docs/user_docs/cli/kbcli_cluster_restart.md
deleted file mode 100644
index 1bbbd7289..000000000
--- a/docs/user_docs/cli/kbcli_cluster_restart.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster restart
----
-
-Restart the specified components in the cluster.
-
-```
-kbcli cluster restart NAME [flags]
-```
-
-### Examples
-
-```
-  # restart all components
-  kbcli cluster restart mycluster
-  
-  # specified component to restart, separate with commas for multiple components
-  kbcli cluster restart mycluster --components=mysql
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before restarting the cluster
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for restart
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_restore.md b/docs/user_docs/cli/kbcli_cluster_restore.md
deleted file mode 100644
index 4b00e5525..000000000
--- a/docs/user_docs/cli/kbcli_cluster_restore.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: kbcli cluster restore
----
-
-Restore a new cluster from backup.
-
-```
-kbcli cluster restore [flags]
-```
-
-### Examples
-
-```
-  # restore a new cluster from a backup
-  kbcli cluster restore new-cluster-name --backup backup-name
-```
-
-### Options
-
-```
-      --backup string                   Backup name
-      --dry-run string[="unchanged"]    Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                            Edit the API resource before creating
-  -h, --help                            help for restore
-  -o, --output format                   Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --restore-after-cluster-running   do the postReady phase when the cluster is Running rather than the component is Running.
-      --restore-key string              specify the key to restore in kv database, support multiple keys split by comma with wildcard pattern matching
-      --restore-key-ignore-errors       whether or not to ignore errors when restore kv database by keys
-      --restore-to-time string          point in time recovery(PITR)
-      --volume-restore-policy string    the volume claim restore policy, supported values: [Serial, Parallel] (default "Parallel")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_revoke-role.md b/docs/user_docs/cli/kbcli_cluster_revoke-role.md
deleted file mode 100644
index 878bbd0d2..000000000
--- a/docs/user_docs/cli/kbcli_cluster_revoke-role.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: kbcli cluster revoke-role
----
-
-Revoke role from account
-
-```
-kbcli cluster revoke-role [flags]
-```
-
-### Examples
-
-```
-  # revoke role from user
-  kbcli cluster revoke-role CLUSTERNAME --component COMPNAME --name USERNAME --role ROLENAME
-  # revoke role from user with default component
-  kbcli cluster revoke-role CLUSTERNAME --name USERNAME --role ROLENAME
-  # revoke role from user for instance
-  kbcli cluster revoke-role --instance INSTANCE --name USERNAME --role ROLENAME
-```
-
-### Options
-
-```
-      --component string   Specify the name of component to be connected. If not specified, pick the first one.
-  -h, --help               help for revoke-role
-  -i, --instance string    Specify the name of instance to be connected.
-      --name string        Required user name, please specify it.
-  -r, --role string        Role name should be one of [SUPERUSER, READWRITE, READONLY].
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_scale-in.md b/docs/user_docs/cli/kbcli_cluster_scale-in.md
deleted file mode 100644
index b6d37547e..000000000
--- a/docs/user_docs/cli/kbcli_cluster_scale-in.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: kbcli cluster scale-in
----
-
-scale in replicas of the specified components in the cluster.
-
-```
-kbcli cluster scale-in Replicas [flags]
-```
-
-### Examples
-
-```
-  # scale in 2 replicas
-  kbcli cluster scale-in mycluster --components=mysql --replicas=2
-  
-  # offline specified instances
-  kbcli cluster scale-in mycluster --components=mysql --offline-instances pod1
-  
-  # scale in 2 replicas, one of them is specified by "--offline-instances".
-  kbcli cluster scale-out mycluster --components=mysql --replicas=2 --offline-instances pod1
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before horizontally scaling the cluster
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for scale-in
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-      --offline-instances strings      offline the specified instances
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --replicas string                Replicas with the specified components
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_scale-out.md b/docs/user_docs/cli/kbcli_cluster_scale-out.md
deleted file mode 100644
index e737c8d66..000000000
--- a/docs/user_docs/cli/kbcli_cluster_scale-out.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: kbcli cluster scale-out
----
-
-scale out replicas of the specified components in the cluster.
-
-```
-kbcli cluster scale-out Replicas [flags]
-```
-
-### Examples
-
-```
-  # scale out 2 replicas
-  kbcli cluster scale-out mycluster --components=mysql --replicas=2
-  
-  # to bring the offline instances specified in compSpec.offlineInstances online.
-  kbcli cluster scale-out mycluster --components=mysql --online-instances pod1
-  
-  # scale out 2 replicas, one of which is an instance that has already been taken offline.
-  kbcli cluster scale-out mycluster --components=mysql --replicas=2 --online-instances pod1
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before horizontally scaling the cluster
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for scale-out
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-      --online-instances strings       online the specified instances which have been offline
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --replicas string                Replica changes with the specified components
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_start.md b/docs/user_docs/cli/kbcli_cluster_start.md
deleted file mode 100644
index dbc15d913..000000000
--- a/docs/user_docs/cli/kbcli_cluster_start.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: kbcli cluster start
----
-
-Start the cluster if cluster is stopped.
-
-```
-kbcli cluster start NAME [flags]
-```
-
-### Examples
-
-```
-  # start the cluster when cluster is stopped
-  kbcli cluster start mycluster
-  
-  # start the component of the cluster when cluster is stopped
-  kbcli cluster start mycluster --components=mysql
-```
-
-### Options
-
-```
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for start
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_stop.md b/docs/user_docs/cli/kbcli_cluster_stop.md
deleted file mode 100644
index 2acbb5253..000000000
--- a/docs/user_docs/cli/kbcli_cluster_stop.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: kbcli cluster stop
----
-
-Stop the cluster and release all the pods of the cluster.
-
-```
-kbcli cluster stop NAME [flags]
-```
-
-### Examples
-
-```
-  # stop the cluster and release all the pods of the cluster
-  kbcli cluster stop mycluster
-  
-  # stop the component of the cluster and release all the pods of the component
-  kbcli cluster stop mycluster --components=mysql
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before stopping the cluster
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for stop
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_update.md b/docs/user_docs/cli/kbcli_cluster_update.md
deleted file mode 100644
index 72701c33f..000000000
--- a/docs/user_docs/cli/kbcli_cluster_update.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-title: kbcli cluster update
----
-
-Update the cluster settings, such as enable or disable monitor or log.
-
-```
-kbcli cluster update NAME [flags]
-```
-
-### Examples
-
-```
-  # update cluster mycluster termination policy to Delete
-  kbcli cluster update mycluster --termination-policy=Delete
-  
-  # enable cluster monitor
-  kbcli cluster update mycluster --monitor=true
-  
-  # enable all logs
-  kbcli cluster update mycluster --enable-all-logs=true
-  
-  # update cluster tolerations
-  kbcli cluster update mycluster --tolerations='"key=engineType,value=mongo,operator=Equal,effect=NoSchedule","key=diskType,value=ssd,operator=Equal,effect=NoSchedule"'
-  
-  # edit cluster
-  kbcli cluster update mycluster --edit
-  
-  # enable cluster monitor and edit
-  # kbcli cluster update mycluster --monitor=true --edit
-  
-  # enable cluster auto backup
-  kbcli cluster update mycluster --backup-enabled=true
-  
-  # update cluster backup retention period
-  kbcli cluster update mycluster --backup-retention-period=1d
-  
-  # update cluster backup method
-  kbcli cluster update mycluster --backup-method=snapshot
-  
-  # update cluster backup cron expression
-  kbcli cluster update mycluster --backup-cron-expression="0 0 * * *"
-  
-  # update cluster backup starting deadline minutes
-  kbcli cluster update mycluster --backup-starting-deadline-minutes=10
-  
-  # update cluster backup repo name
-  kbcli cluster update mycluster --backup-repo-name=repo1
-  
-  # update cluster backup pitr enabled
-  kbcli cluster update mycluster --pitr-enabled=true
-```
-
-### Options
-
-```
-      --allow-missing-template-keys            If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats. (default true)
-      --backup-cron-expression string          the cron expression for schedule, the timezone is in UTC. see https://en.wikipedia.org/wiki/Cron.
-      --backup-enabled                         Specify whether enabled automated backup
-      --backup-method string                   the backup method, view it by "kbcli cd describe <cluster-definition>", if not specified, the default backup method will be to take snapshots of the volume
-      --backup-repo-name string                the backup repository name
-      --backup-retention-period string         a time string ending with the 'd'|'D'|'h'|'H' character to describe how long the Backup should be retained (default "1d")
-      --backup-starting-deadline-minutes int   the deadline in minutes for starting the backup job if it misses its scheduled time for any reason
-      --disable-exporter                       Enable or disable monitoring (default true)
-      --dry-run string[="unchanged"]           Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without sending it. If server strategy, submit server-side request without persisting the resource. (default "none")
-      --edit                                   Edit the API resource
-      --enable-all-logs                        Enable advanced application all log extraction, set to true will ignore enabledLogs of component level, default is false
-  -h, --help                                   help for update
-  -o, --output string                          Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).
-      --pitr-enabled                           Specify whether enabled point in time recovery
-      --runtime-class-name string              Specifies runtimeClassName for all Pods managed by this Cluster.
-      --show-managed-fields                    If true, keep the managedFields when printing objects in JSON or YAML format.
-      --template string                        Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
-      --termination-policy string              Termination policy, one of: (DoNotTerminate, Halt, Delete, WipeOut) (default "Delete")
-      --tolerations strings                    Tolerations for cluster, such as "key=value:effect, key:effect", for example '"engineType=mongo:NoSchedule", "diskType:NoSchedule"'
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_upgrade.md b/docs/user_docs/cli/kbcli_cluster_upgrade.md
deleted file mode 100644
index 72860af68..000000000
--- a/docs/user_docs/cli/kbcli_cluster_upgrade.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: kbcli cluster upgrade
----
-
-Upgrade the service version(only support to upgrade minor version).
-
-```
-kbcli cluster upgrade NAME [flags]
-```
-
-### Examples
-
-```
-  # upgrade the component to the target version
-  kbcli cluster upgrade mycluster --service-version=8.0.30 --components my-comp
-  
-  # upgrade the component with new component definition
-  kbcli cluster upgrade mycluster --component-def=8.0.30 --components my-comp
-  
-  # upgrade the component with new component definition and specified service version
-  kbcli cluster upgrade mycluster --component-def=8.0.30 --service-version=8.0.30  --components my-comp
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before upgrading the cluster
-      --component-def string           Referring to the ComponentDefinition (default "nil")
-      --components strings             Component names to this operations
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for upgrade
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --service-version string         Referring to the serviceVersion that is provided by ComponentDefinition and ComponentVersion (default "nil")
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_volume-expand.md b/docs/user_docs/cli/kbcli_cluster_volume-expand.md
deleted file mode 100644
index 43d86e0c8..000000000
--- a/docs/user_docs/cli/kbcli_cluster_volume-expand.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: kbcli cluster volume-expand
----
-
-Expand volume with the specified components and volumeClaimTemplates in the cluster.
-
-```
-kbcli cluster volume-expand NAME [flags]
-```
-
-### Examples
-
-```
-  # restart specifies the component, separate with commas for multiple components
-  kbcli cluster volume-expand mycluster --components=mysql --volume-claim-templates=data --storage=10Gi
-```
-
-### Options
-
-```
-      --auto-approve                     Skip interactive approval before expanding the cluster volume
-      --components strings               Component names to this operations
-      --dry-run string[="unchanged"]     Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                             Edit the API resource before creating
-      --force                             skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                             help for volume-expand
-      --name string                      OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                    Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --storage string                   Volume storage size (required)
-      --ttlSecondsAfterSucceed int       Time to live after the OpsRequest succeed
-  -t, --volume-claim-templates strings   VolumeClaimTemplate names in components (required)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_cluster_vscale.md b/docs/user_docs/cli/kbcli_cluster_vscale.md
deleted file mode 100644
index 758d721a4..000000000
--- a/docs/user_docs/cli/kbcli_cluster_vscale.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: kbcli cluster vscale
----
-
-Vertically scale the specified components in the cluster.
-
-```
-kbcli cluster vscale NAME [flags]
-```
-
-### Examples
-
-```
-  # scale the computing resources of specified components, separate with commas for multiple components
-  kbcli cluster vscale mycluster --components=mysql --cpu=500m --memory=500Mi
-  
-  # scale the computing resources of instance template, separate with commas for multiple components
-  kbcli cluster vscale mycluster --components=mysql --cpu=500m --memory=500Mi --instance-tpl default
-```
-
-### Options
-
-```
-      --auto-approve                   Skip interactive approval before vertically scaling the cluster
-      --components strings             Component names to this operations
-      --cpu string                     Request and limit size of component cpu
-      --dry-run string[="unchanged"]   Must be "client", or "server". If with client strategy, only print the object that would be sent, and no data is actually sent. If with server strategy, submit the server-side request, but no data is persistent. (default "none")
-      --edit                           Edit the API resource before creating
-      --force                           skip the pre-checks of the opsRequest to run the opsRequest forcibly
-  -h, --help                           help for vscale
-      --instance-tpl strings           vertically scaling the specified instance template in the specified component
-      --memory string                  Request and limit size of component memory
-      --name string                    OpsRequest name. if not specified, it will be randomly generated
-  -o, --output format                  Prints the output in the specified format. Allowed values: JSON and YAML (default yaml)
-      --ttlSecondsAfterSucceed int     Time to live after the OpsRequest succeed
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli cluster](kbcli_cluster.md)	 - Cluster command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterdefinition.md b/docs/user_docs/cli/kbcli_clusterdefinition.md
deleted file mode 100644
index b5a28772f..000000000
--- a/docs/user_docs/cli/kbcli_clusterdefinition.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli clusterdefinition
----
-
-ClusterDefinition command.
-
-### Options
-
-```
-  -h, --help   help for clusterdefinition
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli clusterdefinition describe](kbcli_clusterdefinition_describe.md)	 - Describe ClusterDefinition.
-* [kbcli clusterdefinition list](kbcli_clusterdefinition_list.md)	 - List ClusterDefinitions.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterdefinition_describe.md b/docs/user_docs/cli/kbcli_clusterdefinition_describe.md
deleted file mode 100644
index 12da1191b..000000000
--- a/docs/user_docs/cli/kbcli_clusterdefinition_describe.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli clusterdefinition describe
----
-
-Describe ClusterDefinition.
-
-```
-kbcli clusterdefinition describe [flags]
-```
-
-### Examples
-
-```
-  # describe a specified cluster definition
-  kbcli clusterdefinition describe myclusterdef
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterdefinition](kbcli_clusterdefinition.md)	 - ClusterDefinition command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterdefinition_list-components.md b/docs/user_docs/cli/kbcli_clusterdefinition_list-components.md
deleted file mode 100644
index 503f889a4..000000000
--- a/docs/user_docs/cli/kbcli_clusterdefinition_list-components.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli clusterdefinition list-components
----
-
-List cluster definition components.
-
-```
-kbcli clusterdefinition list-components [flags]
-```
-
-### Examples
-
-```
-  # List all components belonging to the cluster definition.
-  kbcli clusterdefinition list-components apecloud-mysql
-```
-
-### Options
-
-```
-  -h, --help   help for list-components
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterdefinition](kbcli_clusterdefinition.md)	 - ClusterDefinition command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterdefinition_list-service-reference.md b/docs/user_docs/cli/kbcli_clusterdefinition_list-service-reference.md
deleted file mode 100644
index 07db728e7..000000000
--- a/docs/user_docs/cli/kbcli_clusterdefinition_list-service-reference.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli clusterdefinition list-service-reference
----
-
-List cluster references declared in a cluster definition.
-
-```
-kbcli clusterdefinition list-service-reference [flags]
-```
-
-### Examples
-
-```
-  # List cluster references name declared in a cluster definition.
-  kbcli clusterdefinition list-service-reference orioledb
-```
-
-### Options
-
-```
-  -h, --help   help for list-service-reference
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterdefinition](kbcli_clusterdefinition.md)	 - ClusterDefinition command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterdefinition_list.md b/docs/user_docs/cli/kbcli_clusterdefinition_list.md
deleted file mode 100644
index 6a4459db5..000000000
--- a/docs/user_docs/cli/kbcli_clusterdefinition_list.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli clusterdefinition list
----
-
-List ClusterDefinitions.
-
-```
-kbcli clusterdefinition list [flags]
-```
-
-### Examples
-
-```
-  # list all ClusterDefinitions
-  kbcli clusterdefinition list
-```
-
-### Options
-
-```
-  -h, --help              help for list
-  -o, --output format     prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels       When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterdefinition](kbcli_clusterdefinition.md)	 - ClusterDefinition command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterversion.md b/docs/user_docs/cli/kbcli_clusterversion.md
deleted file mode 100644
index 3a11304dd..000000000
--- a/docs/user_docs/cli/kbcli_clusterversion.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: kbcli clusterversion
----
-
-ClusterVersion command.
-
-### Options
-
-```
-  -h, --help   help for clusterversion
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli clusterversion list](kbcli_clusterversion_list.md)	 - List ClusterVersions.
-* [kbcli clusterversion set-default](kbcli_clusterversion_set-default.md)	 - Set the clusterversion to the default clusterversion for its clusterdefinition.
-* [kbcli clusterversion unset-default](kbcli_clusterversion_unset-default.md)	 - Unset the clusterversion if it's default.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterversion_list.md b/docs/user_docs/cli/kbcli_clusterversion_list.md
deleted file mode 100644
index 8f9efdfeb..000000000
--- a/docs/user_docs/cli/kbcli_clusterversion_list.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli clusterversion list
----
-
-List ClusterVersions.
-
-```
-kbcli clusterversion list [flags]
-```
-
-### Examples
-
-```
-  # list all ClusterVersions
-  kbcli clusterversion list
-```
-
-### Options
-
-```
-      --cluster-definition string   Specify cluster definition, run "kbcli clusterdefinition list" to show all available cluster definition
-  -h, --help                        help for list
-  -o, --output format               prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string             Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels                 When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterversion](kbcli_clusterversion.md)	 - ClusterVersion command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterversion_set-default.md b/docs/user_docs/cli/kbcli_clusterversion_set-default.md
deleted file mode 100644
index 05b0702a2..000000000
--- a/docs/user_docs/cli/kbcli_clusterversion_set-default.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli clusterversion set-default
----
-
-Set the clusterversion to the default clusterversion for its clusterdefinition.
-
-```
-kbcli clusterversion set-default NAME [flags]
-```
-
-### Examples
-
-```
-  # set ac-mysql-8.0.30 as the default clusterversion
-  kbcli clusterversion set-default ac-mysql-8.0.30
-```
-
-### Options
-
-```
-  -h, --help   help for set-default
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterversion](kbcli_clusterversion.md)	 - ClusterVersion command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_clusterversion_unset-default.md b/docs/user_docs/cli/kbcli_clusterversion_unset-default.md
deleted file mode 100644
index 5543dc71a..000000000
--- a/docs/user_docs/cli/kbcli_clusterversion_unset-default.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli clusterversion unset-default
----
-
-Unset the clusterversion if it's default.
-
-```
-kbcli clusterversion unset-default NAME [flags]
-```
-
-### Examples
-
-```
-  # unset ac-mysql-8.0.30 to default clusterversion if it's default
-  kbcli clusterversion unset-default ac-mysql-8.0.30
-```
-
-### Options
-
-```
-  -h, --help   help for unset-default
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli clusterversion](kbcli_clusterversion.md)	 - ClusterVersion command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_componentdefinition.md b/docs/user_docs/cli/kbcli_componentdefinition.md
deleted file mode 100644
index 66476b89a..000000000
--- a/docs/user_docs/cli/kbcli_componentdefinition.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli componentdefinition
----
-
-ComponentDefinition command.
-
-### Options
-
-```
-  -h, --help   help for componentdefinition
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli componentdefinition describe](kbcli_componentdefinition_describe.md)	 - Describe ComponentDefinition.
-* [kbcli componentdefinition list](kbcli_componentdefinition_list.md)	 - List ComponentDefinition.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_componentdefinition_describe.md b/docs/user_docs/cli/kbcli_componentdefinition_describe.md
deleted file mode 100644
index 7c191f54e..000000000
--- a/docs/user_docs/cli/kbcli_componentdefinition_describe.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli componentdefinition describe
----
-
-Describe ComponentDefinition.
-
-```
-kbcli componentdefinition describe [flags]
-```
-
-### Examples
-
-```
-  # describe a specified component definition
-  kbcli componentdefinition describe mycomponentdef
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli componentdefinition](kbcli_componentdefinition.md)	 - ComponentDefinition command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_componentdefinition_list.md b/docs/user_docs/cli/kbcli_componentdefinition_list.md
deleted file mode 100644
index 9fa47063a..000000000
--- a/docs/user_docs/cli/kbcli_componentdefinition_list.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: kbcli componentdefinition list
----
-
-List ComponentDefinition.
-
-```
-kbcli componentdefinition list [flags]
-```
-
-### Examples
-
-```
-  # list all ComponentDefinitions
-  kbcli componentdefinition list
-  
-  # list all ComponentDefinitions by alias
-  kbcli cmpd list
-```
-
-### Options
-
-```
-  -h, --help              help for list
-  -o, --output format     prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels       When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli componentdefinition](kbcli_componentdefinition.md)	 - ComponentDefinition command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_componentversion.md b/docs/user_docs/cli/kbcli_componentversion.md
deleted file mode 100644
index 0e9c31526..000000000
--- a/docs/user_docs/cli/kbcli_componentversion.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli componentversion
----
-
-ComponentVersions command.
-
-### Options
-
-```
-  -h, --help   help for componentversion
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli componentversion describe](kbcli_componentversion_describe.md)	 - Describe ComponentVersion.
-* [kbcli componentversion list](kbcli_componentversion_list.md)	 - List ComponentVersion.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_componentversion_describe.md b/docs/user_docs/cli/kbcli_componentversion_describe.md
deleted file mode 100644
index 2e65ea6fa..000000000
--- a/docs/user_docs/cli/kbcli_componentversion_describe.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli componentversion describe
----
-
-Describe ComponentVersion.
-
-```
-kbcli componentversion describe [flags]
-```
-
-### Examples
-
-```
-  # describe a specified componentversion
-  kbcli componentversion describe mycomponentversion
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli componentversion](kbcli_componentversion.md)	 - ComponentVersions command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_componentversion_list.md b/docs/user_docs/cli/kbcli_componentversion_list.md
deleted file mode 100644
index 6bf3dec04..000000000
--- a/docs/user_docs/cli/kbcli_componentversion_list.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: kbcli componentversion list
----
-
-List ComponentVersion.
-
-```
-kbcli componentversion list [flags]
-```
-
-### Examples
-
-```
-  # list all ComponentVersions
-  kbcli componentversion list
-  
-  # list all ComponentVersions by alias
-  kbcli cmpv list
-```
-
-### Options
-
-```
-  -h, --help              help for list
-  -o, --output format     prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels       When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli componentversion](kbcli_componentversion.md)	 - ComponentVersions command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dashboard.md b/docs/user_docs/cli/kbcli_dashboard.md
deleted file mode 100644
index 398d9ac0a..000000000
--- a/docs/user_docs/cli/kbcli_dashboard.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli dashboard
----
-
-List and open the KubeBlocks dashboards.
-
-### Options
-
-```
-  -h, --help   help for dashboard
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli dashboard list](kbcli_dashboard_list.md)	 - List all dashboards.
-* [kbcli dashboard open](kbcli_dashboard_open.md)	 - Open one dashboard.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dashboard_list.md b/docs/user_docs/cli/kbcli_dashboard_list.md
deleted file mode 100644
index 03145a2ea..000000000
--- a/docs/user_docs/cli/kbcli_dashboard_list.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli dashboard list
----
-
-List all dashboards.
-
-```
-kbcli dashboard list [flags]
-```
-
-### Examples
-
-```
-  # List all dashboards
-  kbcli dashboard list
-```
-
-### Options
-
-```
-  -h, --help   help for list
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dashboard](kbcli_dashboard.md)	 - List and open the KubeBlocks dashboards.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dashboard_open.md b/docs/user_docs/cli/kbcli_dashboard_open.md
deleted file mode 100644
index 9dc142ece..000000000
--- a/docs/user_docs/cli/kbcli_dashboard_open.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: kbcli dashboard open
----
-
-Open one dashboard.
-
-```
-kbcli dashboard open NAME [DASHBOARD-TYPE] [--port PORT] [flags]
-```
-
-### Examples
-
-```
-  # Open a dashboard, such as kube-grafana
-  kbcli dashboard open kubeblocks-grafana
-  
-  # Open a dashboard with a specific local port
-  kbcli dashboard open kubeblocks-grafana --port 8080
-  
-  # for dashboard kubeblocks-grafana, support to direct the specified dashboard type
-  # now we support mysql,mongodb,postgresql,redis,weaviate,kafka,cadvisor,jmx and node
-  kbcli dashboard open kubeblocks-grafana mysql
-```
-
-### Options
-
-```
-  -h, --help                           help for open
-      --pod-running-timeout duration   The time (like 5s, 2m, or 3h, higher than zero) to wait for at least one pod is running (default 1m0s)
-      --port string                    dashboard local port
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dashboard](kbcli_dashboard.md)	 - List and open the KubeBlocks dashboards.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection.md b/docs/user_docs/cli/kbcli_dataprotection.md
deleted file mode 100644
index 7d23e1827..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: kbcli dataprotection
----
-
-Data protection command.
-
-### Options
-
-```
-  -h, --help   help for dataprotection
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli dataprotection backup](kbcli_dataprotection_backup.md)	 - Create a backup for the cluster.
-* [kbcli dataprotection delete-backup](kbcli_dataprotection_delete-backup.md)	 - Delete a backup.
-* [kbcli dataprotection describe-backup](kbcli_dataprotection_describe-backup.md)	 - Describe a backup
-* [kbcli dataprotection describe-backup-policy](kbcli_dataprotection_describe-backup-policy.md)	 - Describe a backup policy
-* [kbcli dataprotection describe-restore](kbcli_dataprotection_describe-restore.md)	 - Describe a restore
-* [kbcli dataprotection edit-backup-policy](kbcli_dataprotection_edit-backup-policy.md)	 - Edit backup policy
-* [kbcli dataprotection list-action-sets](kbcli_dataprotection_list-action-sets.md)	 - List actionsets
-* [kbcli dataprotection list-backup-policies](kbcli_dataprotection_list-backup-policies.md)	 - List backup policies
-* [kbcli dataprotection list-backup-policy-templates](kbcli_dataprotection_list-backup-policy-templates.md)	 - List backup policy templates
-* [kbcli dataprotection list-backups](kbcli_dataprotection_list-backups.md)	 - List backups.
-* [kbcli dataprotection list-restores](kbcli_dataprotection_list-restores.md)	 - List restores.
-* [kbcli dataprotection restore](kbcli_dataprotection_restore.md)	 - Restore a new cluster from backup
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_backup.md b/docs/user_docs/cli/kbcli_dataprotection_backup.md
deleted file mode 100644
index 5608cb7da..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_backup.md
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: kbcli dataprotection backup
----
-
-Create a backup for the cluster.
-
-```
-kbcli dataprotection backup NAME [flags]
-```
-
-### Examples
-
-```
-  # Create a backup for the cluster, use the default backup policy and volume snapshot backup method
-  kbcli dp backup mybackup --cluster mycluster
-  
-  # create a backup with a specified method, run "kbcli cluster desc-backup-policy mycluster" to show supported backup methods
-  kbcli dp backup mybackup --cluster mycluster --method mymethod
-  
-  # create a backup with specified backup policy, run "kbcli cluster list-backup-policies mycluster" to show the cluster supported backup policies
-  kbcli dp backup mybackup --cluster mycluster --policy mypolicy
-  
-  # create a backup from a parent backup
-  kbcli dp backup mybackup --cluster mycluster --parent-backup myparentbackup
-```
-
-### Options
-
-```
-      --cluster string            Cluster name
-      --deletion-policy string    Deletion policy for backup, determine whether the backup content in backup repo will be deleted after the backup is deleted, supported values: [Delete, Retain] (default "Delete")
-  -h, --help                      help for backup
-      --method string             Backup methods are defined in backup policy (required), if only one backup method in backup policy, use it as default backup method, if multiple backup methods in backup policy, use method which volume snapshot is true as default backup method
-      --parent-backup string      Parent backup name, used for incremental backup
-      --policy string             Backup policy name, if not specified, use the cluster default backup policy
-      --retention-period string   Retention period for backup, supported values: [1y, 1mo, 1d, 1h, 1m] or combine them [1y1mo1d1h1m], if not specified, the backup will not be automatically deleted, you need to manually delete it.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_delete-backup.md b/docs/user_docs/cli/kbcli_dataprotection_delete-backup.md
deleted file mode 100644
index 4e694c846..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_delete-backup.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: kbcli dataprotection delete-backup
----
-
-Delete a backup.
-
-```
-kbcli dataprotection delete-backup [flags]
-```
-
-### Examples
-
-```
-  # delete a backup
-  kbcli dp delete-backup mybackup
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --auto-approve       Skip interactive approval before deleting
-      --cluster string     The cluster name.
-      --force              If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of some resources may result in inconsistency or data loss and requires confirmation.
-      --grace-period int   Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for immediate shutdown. Can only be set to 0 when --force is true (force deletion). (default -1)
-  -h, --help               help for delete-backup
-      --now                If true, resources are signaled for immediate shutdown (same as --grace-period=1).
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_describe-backup-policy.md b/docs/user_docs/cli/kbcli_dataprotection_describe-backup-policy.md
deleted file mode 100644
index 9cc91abd8..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_describe-backup-policy.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli dataprotection describe-backup-policy
----
-
-Describe a backup policy
-
-```
-kbcli dataprotection describe-backup-policy [flags]
-```
-
-### Examples
-
-```
-  # describe the default backup policy of the cluster
-  kbcli dp describe-backup-policy cluster-name
-  
-  # describe the backup policy of the cluster with specified name
-  kbcli dp describe-backup-policy cluster-name --name backup-policy-name
-```
-
-### Options
-
-```
-  -h, --help   help for describe-backup-policy
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_describe-backup.md b/docs/user_docs/cli/kbcli_dataprotection_describe-backup.md
deleted file mode 100644
index 5fb493ac1..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_describe-backup.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli dataprotection describe-backup
----
-
-Describe a backup
-
-```
-kbcli dataprotection describe-backup NAME [flags]
-```
-
-### Examples
-
-```
-  # describe a backup
-  kbcli dp describe-backup mybackup
-```
-
-### Options
-
-```
-  -h, --help   help for describe-backup
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_describe-restore.md b/docs/user_docs/cli/kbcli_dataprotection_describe-restore.md
deleted file mode 100644
index 474db84a6..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_describe-restore.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli dataprotection describe-restore
----
-
-Describe a restore
-
-```
-kbcli dataprotection describe-restore NAME [flags]
-```
-
-### Examples
-
-```
-  # describe a restore
-  kbcli dp describe-restore <restoreName>
-```
-
-### Options
-
-```
-  -h, --help   help for describe-restore
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_edit-backup-policy.md b/docs/user_docs/cli/kbcli_dataprotection_edit-backup-policy.md
deleted file mode 100644
index 6a77bf016..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_edit-backup-policy.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli dataprotection edit-backup-policy
----
-
-Edit backup policy
-
-```
-kbcli dataprotection edit-backup-policy
-```
-
-### Examples
-
-```
-  # edit backup policy
-  kbcli dp edit-backup-policy <backup-policy-name>
-```
-
-### Options
-
-```
-  -h, --help   help for edit-backup-policy
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_list-action-set.md b/docs/user_docs/cli/kbcli_dataprotection_list-action-set.md
deleted file mode 100644
index 24f81f0bf..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_list-action-set.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli dataprotection list-action-set
----
-
-List actionsets
-
-```
-kbcli dataprotection list-action-set [flags]
-```
-
-### Examples
-
-```
-  # list all action sets
-  kbcli dp list-as
-```
-
-### Options
-
-```
-  -h, --help              help for list-action-set
-  -o, --output format     prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels       When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_list-backup-policy-template.md b/docs/user_docs/cli/kbcli_dataprotection_list-backup-policy-template.md
deleted file mode 100644
index 6a85c92c7..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_list-backup-policy-template.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli dataprotection list-backup-policy-template
----
-
-List backup policy template
-
-```
-kbcli dataprotection list-backup-policy-template [flags]
-```
-
-### Examples
-
-```
-  # list all backup policy template
-  kbcli dp list-bpt
-```
-
-### Options
-
-```
-  -h, --help              help for list-backup-policy-template
-  -o, --output format     prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string   Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels       When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_list-backup-policy.md b/docs/user_docs/cli/kbcli_dataprotection_list-backup-policy.md
deleted file mode 100644
index 8dc077d58..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_list-backup-policy.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli dataprotection list-backup-policy
----
-
-List backup policies
-
-```
-kbcli dataprotection list-backup-policy [flags]
-```
-
-### Examples
-
-```
-  # list all backup policies
-  kbcli dp list-backup-policy
-  
-  # using short cmd to list backup policy of the specified cluster
-  kbcli dp list-bp mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --cluster string     The cluster name
-  -h, --help               help for list-backup-policy
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_list-backup.md b/docs/user_docs/cli/kbcli_dataprotection_list-backup.md
deleted file mode 100644
index ecdcc8698..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_list-backup.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli dataprotection list-backup
----
-
-List backups.
-
-```
-kbcli dataprotection list-backup [flags]
-```
-
-### Examples
-
-```
-  # list all backups
-  kbcli dp list-backup
-  
-  # list all backups of specified cluster
-  kbcli dp list-backup --cluster mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --cluster string     List backups in the specified cluster
-  -h, --help               help for list-backup
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_list-backups.md b/docs/user_docs/cli/kbcli_dataprotection_list-backups.md
deleted file mode 100644
index 5081f50e4..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_list-backups.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli dataprotection list-backups
----
-
-List backups.
-
-```
-kbcli dataprotection list-backups [flags]
-```
-
-### Examples
-
-```
-  # list all backups
-  kbcli dp list-backups
-  
-  # list all backups of specified cluster
-  kbcli dp list-backups --cluster mycluster
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --cluster string     List backups in the specified cluster
-  -h, --help               help for list-backups
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_list-restore.md b/docs/user_docs/cli/kbcli_dataprotection_list-restore.md
deleted file mode 100644
index fdf82712c..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_list-restore.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli dataprotection list-restore
----
-
-List restores.
-
-```
-kbcli dataprotection list-restore [flags]
-```
-
-### Examples
-
-```
-  # list all restores
-  kbcli dp list-restore
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-      --cluster string     List restores in the specified cluster
-  -h, --help               help for list-restore
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_dataprotection_restore.md b/docs/user_docs/cli/kbcli_dataprotection_restore.md
deleted file mode 100644
index 596e49b7d..000000000
--- a/docs/user_docs/cli/kbcli_dataprotection_restore.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli dataprotection restore
----
-
-Restore a new cluster from backup
-
-```
-kbcli dataprotection restore [flags]
-```
-
-### Examples
-
-```
-  # restore a new cluster from a backup
-  kbcli dp restore mybackup --cluster cluster-name
-```
-
-### Options
-
-```
-      --cluster string                 The cluster to restore
-  -h, --help                           help for restore
-      --restore-key string             specify the key to restore in kv database, support multiple keys split by comma with wildcard pattern matching
-      --restore-key-ignore-errors      whether or not to ignore errors when restore kv database by keys
-      --restore-to-time string         point in time recovery(PITR)
-      --volume-restore-policy string   the volume claim restore policy, supported values: [Serial, Parallel] (default "Parallel")
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli dataprotection](kbcli_dataprotection.md)	 - Data protection command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks.md b/docs/user_docs/cli/kbcli_kubeblocks.md
deleted file mode 100644
index c30899429..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: kbcli kubeblocks
----
-
-KubeBlocks operation commands.
-
-### Options
-
-```
-  -h, --help   help for kubeblocks
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli kubeblocks compare](kbcli_kubeblocks_compare.md)	 - List the changes between two different version KubeBlocks.
-* [kbcli kubeblocks config](kbcli_kubeblocks_config.md)	 - KubeBlocks config.
-* [kbcli kubeblocks describe-config](kbcli_kubeblocks_describe-config.md)	 - Describe KubeBlocks config.
-* [kbcli kubeblocks install](kbcli_kubeblocks_install.md)	 - Install KubeBlocks.
-* [kbcli kubeblocks list-versions](kbcli_kubeblocks_list-versions.md)	 - List KubeBlocks versions.
-* [kbcli kubeblocks preflight](kbcli_kubeblocks_preflight.md)	 - Run and retrieve preflight checks for KubeBlocks.
-* [kbcli kubeblocks status](kbcli_kubeblocks_status.md)	 - Show list of resource KubeBlocks uses or owns.
-* [kbcli kubeblocks uninstall](kbcli_kubeblocks_uninstall.md)	 - Uninstall KubeBlocks.
-* [kbcli kubeblocks upgrade](kbcli_kubeblocks_upgrade.md)	 - Upgrade KubeBlocks.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_compare.md b/docs/user_docs/cli/kbcli_kubeblocks_compare.md
deleted file mode 100644
index cdc4078b8..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_compare.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli kubeblocks compare
----
-
-List the changes between two different version KubeBlocks.
-
-```
-kbcli kubeblocks compare version [OTHER-VERSION] [flags]
-```
-
-### Examples
-
-```
-  # compare installed KubeBlocks with specified version
-  kbcli kubeblocks compare 0.4.0
-  
-  # compare two specified KubeBlocks version
-  kbcli kubeblocks compare 0.4.0 0.5.0
-```
-
-### Options
-
-```
-      --details   show the different details between two kubeblocks version
-  -h, --help      help for compare
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_config.md b/docs/user_docs/cli/kbcli_kubeblocks_config.md
deleted file mode 100644
index 9c601c630..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_config.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: kbcli kubeblocks config
----
-
-KubeBlocks config.
-
-```
-kbcli kubeblocks config [flags]
-```
-
-### Examples
-
-```
-  # Enable the snapshot-controller and volume snapshot, to support snapshot backup.
-  kbcli kubeblocks config --set snapshot-controller.enabled=true
-```
-
-### Options
-
-```
-  -h, --help                     help for config
-  -n, --namespace string         KubeBlocks namespace
-      --set stringArray          Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-      --set-file stringArray     Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
-      --set-json stringArray     Set JSON values on the command line (can specify multiple or separate values with commas: key1=jsonval1,key2=jsonval2)
-      --set-string stringArray   Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-  -f, --values strings           Specify values in a YAML file or a URL (can specify multiple)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_describe-config.md b/docs/user_docs/cli/kbcli_kubeblocks_describe-config.md
deleted file mode 100644
index 1e51a58e4..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_describe-config.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli kubeblocks describe-config
----
-
-Describe KubeBlocks config.
-
-```
-kbcli kubeblocks describe-config [flags]
-```
-
-### Examples
-
-```
-  # Describe the KubeBlocks config.
-  kbcli kubeblocks describe-config
-  # Describe all the KubeBlocks configs
-  kbcli kubeblocks describe-config --all
-  # Describe the desired KubeBlocks configs by filter conditions
-  kbcli kubeblocks describe-config --filter=addonController,affinity
-```
-
-### Options
-
-```
-  -A, --all                show all kubeblocks configs value
-      --filter string      filter the desired kubeblocks configs, multiple filtered strings are comma separated
-  -h, --help               help for describe-config
-  -n, --namespace string   KubeBlocks namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_install.md b/docs/user_docs/cli/kbcli_kubeblocks_install.md
deleted file mode 100644
index 75a861ae7..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_install.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-title: kbcli kubeblocks install
----
-
-Install KubeBlocks.
-
-```
-kbcli kubeblocks install [flags]
-```
-
-### Examples
-
-```
-  # Install KubeBlocks, the default version is same with the kbcli version, the default namespace is kb-system
-  kbcli kubeblocks install
-  
-  # Install KubeBlocks with specified version
-  kbcli kubeblocks install --version=0.4.0
-  
-  # Install KubeBlocks with ignoring preflight checks
-  kbcli kubeblocks install --force
-  
-  # Install KubeBlocks with specified namespace, if the namespace is not present, it will be created
-  kbcli kubeblocks install --namespace=my-namespace --create-namespace
-  
-  # Install KubeBlocks with other settings, for example, set replicaCount to 3
-  kbcli kubeblocks install --set replicaCount=3
-```
-
-### Options
-
-```
-      --check                        Check kubernetes environment before installation (default true)
-      --create-namespace             Create the namespace if not present
-      --force                        If present, just print fail item and continue with the following steps
-  -h, --help                         help for install
-  -n, --namespace string             KubeBlocks namespace (default "kb-system")
-      --node-labels stringToString   Node label selector (default [])
-      --pod-anti-affinity string     Pod anti-affinity type, one of: (Preferred, Required)
-      --set stringArray              Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-      --set-file stringArray         Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
-      --set-json stringArray         Set JSON values on the command line (can specify multiple or separate values with commas: key1=jsonval1,key2=jsonval2)
-      --set-string stringArray       Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-      --timeout duration             Time to wait for installing KubeBlocks, such as --timeout=10m (default 30m0s)
-      --tolerations strings          Tolerations for Kubeblocks, such as '"dev=true:NoSchedule,large=true:NoSchedule"'
-      --topology-keys stringArray    Topology keys for affinity
-  -f, --values strings               Specify values in a YAML file or a URL (can specify multiple)
-      --version string               KubeBlocks version
-      --wait                         Wait for KubeBlocks to be ready, including all the auto installed add-ons. It will wait for a --timeout period (default true)
-      --wait-addons                  Wait for auto installed add-ons. It will wait for a --timeout period (default true)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_list-versions.md b/docs/user_docs/cli/kbcli_kubeblocks_list-versions.md
deleted file mode 100644
index 875259da7..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_list-versions.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: kbcli kubeblocks list-versions
----
-
-List KubeBlocks versions.
-
-```
-kbcli kubeblocks list-versions [flags]
-```
-
-### Examples
-
-```
-  # list KubeBlocks release versions
-  kbcli kubeblocks list-versions
-  
-  # list KubeBlocks versions including development versions, such as alpha, beta and release candidate
-  kbcli kubeblocks list-versions --devel
-```
-
-### Options
-
-```
-      --devel       Use development versions (alpha, beta, and release candidate releases), too. Equivalent to version '>0.0.0-0'.
-  -h, --help        help for list-versions
-      --limit int   Maximum rows of versions to return, 0 means no limit (default 10) (default 10)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_preflight.md b/docs/user_docs/cli/kbcli_kubeblocks_preflight.md
deleted file mode 100644
index 93abf5bce..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_preflight.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-title: kbcli kubeblocks preflight
----
-
-Run and retrieve preflight checks for KubeBlocks.
-
-```
-kbcli kubeblocks preflight [flags]
-```
-
-### Examples
-
-```
-  # Run preflight provider checks against the default rules automatically
-  kbcli kubeblocks preflight
-  
-  # Run preflight provider checks and output more verbose info
-  kbcli kubeblocks preflight --verbose
-  
-  # Run preflight checks against the customized rules of preflight-check.yaml
-  kbcli kubeblocks preflight preflight-check.yaml
-  
-  # Run preflight checks and display AnalyzeResults with interactive mode
-  kbcli kubeblocks preflight preflight-check.yaml --interactive=true
-```
-
-### Options
-
-```
-      --collect-without-permissions   always run preflight checks even if some required permissions that preflight does not have (default true)
-      --collector-image string        the full name of the collector image to use
-      --collector-pullpolicy string   the pull policy of the collector image
-      --debug                         enable debug logging
-      --format string                 output format, one of json, yaml. only used when interactive is set to false, default format is yaml (default "yaml")
-  -h, --help                          help for preflight
-  -n, --namespace string              If present, the namespace scope for this CLI request
-  -o, --output string                 specify the output file path for the preflight checks
-      --selector string               selector (label query) to filter remote collection nodes on.
-      --since string                  force pod logs collectors to return logs newer than a relative duration like 5s, 2m, or 3h.
-      --since-time string             force pod logs collectors to return logs after a specific date (RFC3339)
-      --verbose                       print more verbose logs, default value is false
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_status.md b/docs/user_docs/cli/kbcli_kubeblocks_status.md
deleted file mode 100644
index dce44bb07..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_status.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli kubeblocks status
----
-
-Show list of resource KubeBlocks uses or owns.
-
-```
-kbcli kubeblocks status [flags]
-```
-
-### Examples
-
-```
-  # list workloads owned by KubeBlocks
-  kbcli kubeblocks status
-  
-  # list all resources owned by KubeBlocks, such as workloads, cluster definitions, backup template.
-  kbcli kubeblocks status --all
-```
-
-### Options
-
-```
-  -A, --all    Show all resources, including configurations, storages, etc
-  -h, --help   help for status
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_uninstall.md b/docs/user_docs/cli/kbcli_kubeblocks_uninstall.md
deleted file mode 100644
index b9f33392e..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_uninstall.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-title: kbcli kubeblocks uninstall
----
-
-Uninstall KubeBlocks.
-
-```
-kbcli kubeblocks uninstall [flags]
-```
-
-### Examples
-
-```
-  # uninstall KubeBlocks
-  kbcli kubeblocks uninstall
-```
-
-### Options
-
-```
-      --auto-approve       Skip interactive approval before uninstalling KubeBlocks
-  -h, --help               help for uninstall
-  -n, --namespace string   KubeBlocks namespace
-      --remove-namespace   Remove default created "kb-system" namespace or not
-      --remove-pvcs        Remove PersistentVolumeClaim or not
-      --remove-pvs         Remove PersistentVolume or not
-      --timeout duration   Time to wait for uninstalling KubeBlocks, such as --timeout=5m (default 10m0s)
-      --wait               Wait for KubeBlocks to be uninstalled, including all the add-ons. It will wait for a --timeout period (default true)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_kubeblocks_upgrade.md b/docs/user_docs/cli/kbcli_kubeblocks_upgrade.md
deleted file mode 100644
index f31d2edfd..000000000
--- a/docs/user_docs/cli/kbcli_kubeblocks_upgrade.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: kbcli kubeblocks upgrade
----
-
-Upgrade KubeBlocks.
-
-```
-kbcli kubeblocks upgrade [flags]
-```
-
-### Examples
-
-```
-  # Upgrade KubeBlocks to specified version
-  kbcli kubeblocks upgrade --version=0.4.0
-  
-  # Upgrade KubeBlocks other settings, for example, set replicaCount to 3
-  kbcli kubeblocks upgrade --set replicaCount=3
-```
-
-### Options
-
-```
-      --auto-approve             Skip interactive approval before upgrading KubeBlocks
-      --check                    Check kubernetes environment before upgrade (default true)
-  -h, --help                     help for upgrade
-  -n, --namespace string         KubeBlocks namespace
-      --set stringArray          Set values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-      --set-file stringArray     Set values from respective files specified via the command line (can specify multiple or separate values with commas: key1=path1,key2=path2)
-      --set-json stringArray     Set JSON values on the command line (can specify multiple or separate values with commas: key1=jsonval1,key2=jsonval2)
-      --set-string stringArray   Set STRING values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)
-      --timeout duration         Time to wait for upgrading KubeBlocks, such as --timeout=10m (default 30m0s)
-  -f, --values strings           Specify values in a YAML file or a URL (can specify multiple)
-      --version string           Set KubeBlocks version
-      --wait                     Wait for KubeBlocks to be ready. It will wait for a --timeout period (default true)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli kubeblocks](kbcli_kubeblocks.md)	 - KubeBlocks operation commands.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_ops-definition.md b/docs/user_docs/cli/kbcli_ops-definition.md
deleted file mode 100644
index a7b927256..000000000
--- a/docs/user_docs/cli/kbcli_ops-definition.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli ops-definition
----
-
-ops-definitions command.
-
-### Options
-
-```
-  -h, --help   help for ops-definition
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli ops-definition describe](kbcli_ops-definition_describe.md)	 - Describe OpsDefinition.
-* [kbcli ops-definition list](kbcli_ops-definition_list.md)	 - List OpsDefinition.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_ops-definition_describe.md b/docs/user_docs/cli/kbcli_ops-definition_describe.md
deleted file mode 100644
index f61dcc338..000000000
--- a/docs/user_docs/cli/kbcli_ops-definition_describe.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli ops-definition describe
----
-
-Describe OpsDefinition.
-
-```
-kbcli ops-definition describe [flags]
-```
-
-### Examples
-
-```
-  # describe a specified ops-definition
-  kbcli ops-definition describe my-ops-definition
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli ops-definition](kbcli_ops-definition.md)	 - ops-definitions command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_ops-definition_list.md b/docs/user_docs/cli/kbcli_ops-definition_list.md
deleted file mode 100644
index 831bad017..000000000
--- a/docs/user_docs/cli/kbcli_ops-definition_list.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-title: kbcli ops-definition list
----
-
-List OpsDefinition.
-
-```
-kbcli ops-definition list [flags]
-```
-
-### Examples
-
-```
-  # list all ops-definitions
-  kbcli ops-definition list
-  
-  # list all ops-definitions by alias
-  kbcli ops-def list
-```
-
-### Options
-
-```
-  -A, --all-namespaces     If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.
-  -h, --help               help for list
-  -n, --namespace string   specified the namespace
-  -o, --output format      prints the output in the specified format. Allowed values: table, json, yaml, wide (default table)
-  -l, --selector string    Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2). Matching objects must satisfy all of the specified label constraints.
-      --show-labels        When printing, show all labels as the last column (default hide labels column)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli ops-definition](kbcli_ops-definition.md)	 - ops-definitions command.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_options.md b/docs/user_docs/cli/kbcli_options.md
deleted file mode 100644
index 38a4a122c..000000000
--- a/docs/user_docs/cli/kbcli_options.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: kbcli options
----
-
-Print the list of flags inherited by all commands.
-
-```
-kbcli options [flags]
-```
-
-### Examples
-
-```
-
-	# Print flags inherited by all commands
-	kbcli options
-```
-
-### Options
-
-```
-  -h, --help   help for options
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_playground.md b/docs/user_docs/cli/kbcli_playground.md
deleted file mode 100644
index c6414a799..000000000
--- a/docs/user_docs/cli/kbcli_playground.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli playground
----
-
-Bootstrap or destroy a playground KubeBlocks in local host or cloud.
-
-### Options
-
-```
-  -h, --help   help for playground
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli playground destroy](kbcli_playground_destroy.md)	 - Destroy the playground KubeBlocks and kubernetes cluster.
-* [kbcli playground init](kbcli_playground_init.md)	 - Bootstrap a kubernetes cluster and install KubeBlocks for playground.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_playground_destroy.md b/docs/user_docs/cli/kbcli_playground_destroy.md
deleted file mode 100644
index 9f9f78d1b..000000000
--- a/docs/user_docs/cli/kbcli_playground_destroy.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli playground destroy
----
-
-Destroy the playground KubeBlocks and kubernetes cluster.
-
-```
-kbcli playground destroy [flags]
-```
-
-### Examples
-
-```
-  # destroy playground cluster
-  kbcli playground destroy
-```
-
-### Options
-
-```
-      --auto-approve       Skip interactive approval before destroying the playground
-  -h, --help               help for destroy
-      --purge              Purge all resources before destroying kubernetes cluster, delete all clusters created by KubeBlocks and uninstall KubeBlocks. (default true)
-      --timeout duration   Time to wait for destroying KubeBlocks, such as --timeout=10m (default 10m0s)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli playground](kbcli_playground.md)	 - Bootstrap or destroy a playground KubeBlocks in local host or cloud.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_playground_init.md b/docs/user_docs/cli/kbcli_playground_init.md
deleted file mode 100644
index 5acd4a857..000000000
--- a/docs/user_docs/cli/kbcli_playground_init.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: kbcli playground init
----
-
-Bootstrap a kubernetes cluster and install KubeBlocks for playground.
-
-### Synopsis
-
-Bootstrap a kubernetes cluster and install KubeBlocks for playground.
-
- If no cloud provider is specified, a k3d cluster named kb-playground will be created on local host, otherwise a kubernetes cluster will be created on the specified cloud. Then KubeBlocks will be installed on the created kubernetes cluster, and an apecloud-mysql cluster named mycluster will be created.
-
-```
-kbcli playground init [flags]
-```
-
-### Examples
-
-```
-  # create a k3d cluster on local host and install KubeBlocks
-  kbcli playground init
-  
-  # create an AWS EKS cluster and install KubeBlocks, the region is required
-  kbcli playground init --cloud-provider aws --region us-west-1
-  
-  # after init, run the following commands to experience KubeBlocks quickly
-  # list database cluster and check its status
-  kbcli cluster list
-  
-  # get cluster information
-  kbcli cluster describe mycluster
-  
-  # connect to database
-  kbcli cluster connect mycluster
-  
-  # view the Grafana
-  kbcli dashboard open kubeblocks-grafana
-  
-  # destroy playground
-  kbcli playground destroy
-```
-
-### Options
-
-```
-      --auto-approve             Skip interactive approval during the initialization of playground
-      --cloud-provider string    Cloud provider type, one of [local aws] (default "local")
-      --cluster-type string      Specify the cluster type to create, use 'kbcli cluster create --help' to get the available cluster type. (default "apecloud-mysql")
-  -h, --help                     help for init
-      --k3d-proxy-image string   Specify k3d proxy image if you want to init playground locally (default "docker.io/apecloud/k3d-proxy:5.4.4")
-      --k3s-image string         Specify k3s image that you want to use for the nodes if you want to init playground locally (default "rancher/k3s:v1.23.8-k3s1")
-      --region string            The region to create kubernetes cluster
-      --timeout duration         Time to wait for init playground, such as --timeout=10m (default 10m0s)
-      --version string           KubeBlocks version
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli playground](kbcli_playground.md)	 - Bootstrap or destroy a playground KubeBlocks in local host or cloud.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin.md b/docs/user_docs/cli/kbcli_plugin.md
deleted file mode 100644
index 9d132e7e0..000000000
--- a/docs/user_docs/cli/kbcli_plugin.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: kbcli plugin
----
-
-Provides utilities for interacting with plugins.
-
-### Synopsis
-
-Provides utilities for interacting with plugins.
-
- Plugins provide extended functionality that is not part of the major command-line distribution.
-
-### Options
-
-```
-  -h, --help   help for plugin
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli plugin describe](kbcli_plugin_describe.md)	 - Describe a plugin
-* [kbcli plugin index](kbcli_plugin_index.md)	 - Manage custom plugin indexes
-* [kbcli plugin install](kbcli_plugin_install.md)	 - Install kbcli or kubectl plugins
-* [kbcli plugin list](kbcli_plugin_list.md)	 - List all visible plugin executables on a user's PATH
-* [kbcli plugin search](kbcli_plugin_search.md)	 - Search kbcli or kubectl plugins
-* [kbcli plugin uninstall](kbcli_plugin_uninstall.md)	 - Uninstall kbcli or kubectl plugins
-* [kbcli plugin upgrade](kbcli_plugin_upgrade.md)	 - Upgrade kbcli or kubectl plugins
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_describe.md b/docs/user_docs/cli/kbcli_plugin_describe.md
deleted file mode 100644
index 8d57c2fd7..000000000
--- a/docs/user_docs/cli/kbcli_plugin_describe.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli plugin describe
----
-
-Describe a plugin
-
-```
-kbcli plugin describe [flags]
-```
-
-### Examples
-
-```
-  # Describe a plugin
-  kbcli plugin describe [PLUGIN]
-  
-  # Describe a plugin with index
-  kbcli plugin describe [INDEX/PLUGIN]
-```
-
-### Options
-
-```
-  -h, --help   help for describe
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_index.md b/docs/user_docs/cli/kbcli_plugin_index.md
deleted file mode 100644
index 3a4048110..000000000
--- a/docs/user_docs/cli/kbcli_plugin_index.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: kbcli plugin index
----
-
-Manage custom plugin indexes
-
-### Synopsis
-
-Manage which repositories are used to discover plugins and install plugins from
-
-### Options
-
-```
-  -h, --help   help for index
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-* [kbcli plugin index add](kbcli_plugin_index_add.md)	 - Add a new index
-* [kbcli plugin index delete](kbcli_plugin_index_delete.md)	 - Remove a configured index
-* [kbcli plugin index list](kbcli_plugin_index_list.md)	 - List configured indexes
-* [kbcli plugin index update](kbcli_plugin_index_update.md)	 - update all configured indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_index_add.md b/docs/user_docs/cli/kbcli_plugin_index_add.md
deleted file mode 100644
index 66ae11dc3..000000000
--- a/docs/user_docs/cli/kbcli_plugin_index_add.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: kbcli plugin index add
----
-
-Add a new index
-
-```
-kbcli plugin index add [flags]
-```
-
-### Examples
-
-```
-  # Add a new plugin index
-  kbcli plugin index add default https://github.com/apecloud/block-index.git
-  
-  kbcli plugin index add krew https://github.com/kubernetes-sigs/krew-index.git
-```
-
-### Options
-
-```
-  -h, --help   help for add
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin index](kbcli_plugin_index.md)	 - Manage custom plugin indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_index_delete.md b/docs/user_docs/cli/kbcli_plugin_index_delete.md
deleted file mode 100644
index 47c790555..000000000
--- a/docs/user_docs/cli/kbcli_plugin_index_delete.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli plugin index delete
----
-
-Remove a configured index
-
-```
-kbcli plugin index delete [flags]
-```
-
-### Examples
-
-```
-  # Delete a plugin index
-  kbcli plugin index delete myIndex
-```
-
-### Options
-
-```
-  -h, --help   help for delete
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin index](kbcli_plugin_index.md)	 - Manage custom plugin indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_index_list.md b/docs/user_docs/cli/kbcli_plugin_index_list.md
deleted file mode 100644
index 1931e4d0a..000000000
--- a/docs/user_docs/cli/kbcli_plugin_index_list.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli plugin index list
----
-
-List configured indexes
-
-```
-kbcli plugin index list [flags]
-```
-
-### Examples
-
-```
-  # List all configured plugin indexes
-  kbcli plugin index list
-```
-
-### Options
-
-```
-  -h, --help   help for list
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin index](kbcli_plugin_index.md)	 - Manage custom plugin indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_index_update.md b/docs/user_docs/cli/kbcli_plugin_index_update.md
deleted file mode 100644
index 0ab0caafd..000000000
--- a/docs/user_docs/cli/kbcli_plugin_index_update.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: kbcli plugin index update
----
-
-update all configured indexes
-
-```
-kbcli plugin index update [flags]
-```
-
-### Options
-
-```
-  -h, --help   help for update
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin index](kbcli_plugin_index.md)	 - Manage custom plugin indexes
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_install.md b/docs/user_docs/cli/kbcli_plugin_install.md
deleted file mode 100644
index 54933733f..000000000
--- a/docs/user_docs/cli/kbcli_plugin_install.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: kbcli plugin install
----
-
-Install kbcli or kubectl plugins
-
-```
-kbcli plugin install [flags]
-```
-
-### Examples
-
-```
-  # install a kbcli or kubectl plugin by name
-  kbcli plugin install [PLUGIN]
-  
-  # install a kbcli or kubectl plugin by name and index
-  kbcli plugin install [INDEX/PLUGIN]
-```
-
-### Options
-
-```
-  -h, --help   help for install
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_list.md b/docs/user_docs/cli/kbcli_plugin_list.md
deleted file mode 100644
index 945ec1445..000000000
--- a/docs/user_docs/cli/kbcli_plugin_list.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli plugin list
----
-
-List all visible plugin executables on a user's PATH
-
-```
-kbcli plugin list
-```
-
-### Examples
-
-```
-  # List all available plugins file on a user's PATH.
-  kbcli plugin list
-```
-
-### Options
-
-```
-  -h, --help   help for list
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_search.md b/docs/user_docs/cli/kbcli_plugin_search.md
deleted file mode 100644
index d294f743d..000000000
--- a/docs/user_docs/cli/kbcli_plugin_search.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: kbcli plugin search
----
-
-Search kbcli or kubectl plugins
-
-### Synopsis
-
-Search kbcli or kubectl plugins by keywords
-
-```
-kbcli plugin search [flags]
-```
-
-### Examples
-
-```
-  # search a kbcli or kubectl plugin with keywords
-  kbcli plugin search keyword1 keyword2
-```
-
-### Options
-
-```
-  -h, --help        help for search
-      --limit int   Limit the number of plugin descriptions to output (default 50)
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_uninstall.md b/docs/user_docs/cli/kbcli_plugin_uninstall.md
deleted file mode 100644
index f96801fa4..000000000
--- a/docs/user_docs/cli/kbcli_plugin_uninstall.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: kbcli plugin uninstall
----
-
-Uninstall kbcli or kubectl plugins
-
-```
-kbcli plugin uninstall [flags]
-```
-
-### Examples
-
-```
-  # uninstall a kbcli or kubectl plugin by name
-  kbcli plugin uninstall [PLUGIN]
-```
-
-### Options
-
-```
-  -h, --help   help for uninstall
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_plugin_upgrade.md b/docs/user_docs/cli/kbcli_plugin_upgrade.md
deleted file mode 100644
index 3ee5e5902..000000000
--- a/docs/user_docs/cli/kbcli_plugin_upgrade.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: kbcli plugin upgrade
----
-
-Upgrade kbcli or kubectl plugins
-
-```
-kbcli plugin upgrade [flags]
-```
-
-### Examples
-
-```
-  # upgrade installed plugins with specified name
-  kbcli plugin upgrade myplugin
-  
-  # upgrade installed plugin to a newer version
-  kbcli plugin upgrade --all
-```
-
-### Options
-
-```
-      --all    Upgrade all installed plugins
-  -h, --help   help for upgrade
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli plugin](kbcli_plugin.md)	 - Provides utilities for interacting with plugins.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_report.md b/docs/user_docs/cli/kbcli_report.md
deleted file mode 100644
index ca61eab7f..000000000
--- a/docs/user_docs/cli/kbcli_report.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: kbcli report
----
-
-Report kubeblocks or cluster info.
-
-### Options
-
-```
-  -h, --help   help for report
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-* [kbcli report cluster](kbcli_report_cluster.md)	 - Report Cluster information
-* [kbcli report kubeblocks](kbcli_report_kubeblocks.md)	 - Report KubeBlocks information, including deployments, events, logs, etc.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_report_cluster.md b/docs/user_docs/cli/kbcli_report_cluster.md
deleted file mode 100644
index 773d6e1e6..000000000
--- a/docs/user_docs/cli/kbcli_report_cluster.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: kbcli report cluster
----
-
-Report Cluster information
-
-```
-kbcli report cluster NAME [-f file] [-with-logs] [-mask] [flags]
-```
-
-### Examples
-
-```
-  # report KubeBlocks status
-  kbcli report cluster mycluster
-  
-  # report KubeBlocks cluster information to file
-  kbcli report cluster mycluster -f filename
-  
-  # report KubeBlocks cluster information with logs
-  kbcli report cluster mycluster --with-logs
-  
-  # report KubeBlocks cluster information with logs and mask sensitive info
-  kbcli report cluster mycluster --with-logs --mask
-  
-  # report KubeBlocks cluster information with logs since 1 hour ago
-  kbcli report cluster mycluster --with-logs --since 1h
-  
-  # report KubeBlocks cluster information with logs since given time
-  kbcli report cluster mycluster --with-logs --since-time 2023-05-23T00:00:00Z
-  
-  # report KubeBlocks cluster information with logs for all containers
-  kbcli report cluster mycluster --with-logs --all-containers
-```
-
-### Options
-
-```
-      --all-containers      Get all containers' logs in the pod(s). Byt default, only the main container (the first container) will have logs recorded.
-  -f, --file string         zip file for output
-  -h, --help                help for cluster
-      --mask                mask sensitive info for secrets and configmaps (default true)
-  -n, --namespace string    KubeBlocks namespace
-  -o, --output string       Output format. One of: json|yaml. (default "json")
-      --since duration      Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to all logs. Only one of since-time / since may be used.
-      --since-time string   Only return logs after a specific date (RFC3339). Defaults to all logs. Only one of since-time / since may be used.
-      --with-logs           include pod logs
-      --with-secrets        include secrets
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli report](kbcli_report.md)	 - Report kubeblocks or cluster info.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_report_kubeblocks.md b/docs/user_docs/cli/kbcli_report_kubeblocks.md
deleted file mode 100644
index c49e0d73a..000000000
--- a/docs/user_docs/cli/kbcli_report_kubeblocks.md
+++ /dev/null
@@ -1,70 +0,0 @@
----
-title: kbcli report kubeblocks
----
-
-Report KubeBlocks information, including deployments, events, logs, etc.
-
-```
-kbcli report kubeblocks [-f file] [--with-logs] [--mask] [flags]
-```
-
-### Examples
-
-```
-  # report KubeBlocks status
-  kbcli report kubeblocks
-  
-  # report KubeBlocks information to file
-  kbcli report kubeblocks -f filename
-  
-  # report KubeBlocks information with logs
-  kbcli report kubeblocks --with-logs
-  
-  # report KubeBlocks information with logs and mask sensitive info
-  kbcli report kubeblocks --with-logs --mask
-```
-
-### Options
-
-```
-      --all-containers      Get all containers' logs in the pod(s). Byt default, only the main container (the first container) will have logs recorded.
-  -f, --file string         zip file for output
-  -h, --help                help for kubeblocks
-      --mask                mask sensitive info for secrets and configmaps (default true)
-  -n, --namespace string    KubeBlocks namespace
-  -o, --output string       Output format. One of: json|yaml. (default "json")
-      --since duration      Only return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to all logs. Only one of since-time / since may be used.
-      --since-time string   Only return logs after a specific date (RFC3339). Defaults to all logs. Only one of since-time / since may be used.
-      --with-logs           include pod logs
-      --with-secrets        include secrets
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-* [kbcli report](kbcli_report.md)	 - Report kubeblocks or cluster info.
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/cli/kbcli_version.md b/docs/user_docs/cli/kbcli_version.md
deleted file mode 100644
index 29e1e7f7b..000000000
--- a/docs/user_docs/cli/kbcli_version.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: kbcli version
----
-
-Print the version information, include kubernetes, KubeBlocks and kbcli version.
-
-```
-kbcli version [flags]
-```
-
-### Options
-
-```
-  -h, --help      help for version
-      --verbose   print detailed kbcli information
-```
-
-### Options inherited from parent commands
-
-```
-      --as string                      Username to impersonate for the operation. User could be a regular user or a service account in a namespace.
-      --as-group stringArray           Group to impersonate for the operation, this flag can be repeated to specify multiple groups.
-      --as-uid string                  UID to impersonate for the operation.
-      --cache-dir string               Default cache directory (default "$HOME/.kube/cache")
-      --certificate-authority string   Path to a cert file for the certificate authority
-      --client-certificate string      Path to a client certificate file for TLS
-      --client-key string              Path to a client key file for TLS
-      --cluster string                 The name of the kubeconfig cluster to use
-      --context string                 The name of the kubeconfig context to use
-      --disable-compression            If true, opt-out of response compression for all requests to the server
-      --insecure-skip-tls-verify       If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
-      --kubeconfig string              Path to the kubeconfig file to use for CLI requests.
-      --match-server-version           Require server version to match client version
-  -n, --namespace string               If present, the namespace scope for this CLI request
-      --request-timeout string         The length of time to wait before giving up on a single server request. Non-zero values should contain a corresponding time unit (e.g. 1s, 2m, 3h). A value of zero means don't timeout requests. (default "0")
-  -s, --server string                  The address and port of the Kubernetes API server
-      --tls-server-name string         Server name to use for server certificate validation. If it is not provided, the hostname used to contact the server is used
-      --token string                   Bearer token for authentication to the API server
-      --user string                    The name of the kubeconfig user to use
-```
-
-### SEE ALSO
-
-
-
-#### Go Back to [CLI Overview](cli.md) Homepage.
-
diff --git a/docs/user_docs/connect_database/_category_.yml b/docs/user_docs/connect_database/_category_.yml
deleted file mode 100644
index 431c89b4c..000000000
--- a/docs/user_docs/connect_database/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: Connect Database
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/connect_database/connect-database-in-production-environment.md b/docs/user_docs/connect_database/connect-database-in-production-environment.md
deleted file mode 100644
index 1f686dd16..000000000
--- a/docs/user_docs/connect_database/connect-database-in-production-environment.md
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title: Connect database in production environment
-description: How to connect to a database in production environment
-keywords: [connect to a database, production environment]
-sidebar_position: 3
-sidebar_label: Production environment
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Connect database in production environment
-
-In the production environment, it is normal to connect a database with CLI and SDK clients. There are three scenarios.
-
-- Scenario 1: Client1 and the database are in the same Kubernetes cluster. To connect client1 and the database, see [Use ClusterIP](#scenario-1-connect-database-in-the-same-kubernetes-cluster).
-- Scenario 2: Client2 is outside the Kubernetes cluster, but it is in the same VPC as the database. To connect client2 and the database, see [Expose VPC Private Address](#scenario-2-client-outside-the-kubernetes-cluster-but-in-the-same-vpc-as-the-kubernetes-cluster).
-- Scenario 3: Client3 and the database are in different VPCs, such as other VPCs or the public network. To connect client3 and the database, see [Expose VPC Public Address](#scenario-3-connect-database-with-clients-in-other-vpcs-or-public-networks).
-
-See the figure below to get a clear image of the network location.
-
-![Example](./../../img/connect_database_in_a_production_environment.png)
-
-## Scenario 1. Connect database in the same Kubernetes cluster
-
-You can connect with the database ClusterIP or domain name.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-To check the database endpoint, use `kubectl get service <cluster-name>-<component-name>`.
-
-```bash
-kubectl get service mycluster-mysql
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-To check the database endpoint, use `kbcli cluster describe ${cluster-name}`.
-
-```bash
-kbcli cluster describe x
->
-Name: x         Created Time: Mar 01,2023 11:45 UTC+0800
-NAMESPACE   CLUSTER-DEFINITION   VERSION           STATUS    TERMINATION-POLICY
-default     apecloud-mysql       ac-mysql-8.0.30   Running   Delete
-
-Endpoints:
-COMPONENT   MODE        INTERNAL                                 EXTERNAL
-x           ReadWrite   x-mysql.default.svc.cluster.local:3306   <none>
-
-Topology:
-COMPONENT   INSTANCE    ROLE     STATUS    AZ                NODE                                                       CREATED-TIME
-mysql       x-mysql-0   leader   Running   cn-northwest-1b   ip-10-0-2-184.cn-northwest-1.compute.internal/10.0.2.184   Mar 01,2023 11:45 UTC+0800
-
-Resources Allocation:
-COMPONENT   DEDICATED   CPU(REQUEST/LIMIT)   MEMORY(REQUEST/LIMIT)   STORAGE-SIZE   STORAGE-CLASS
-mysql       false       1 / 1                1Gi / 1Gi               data:10Gi      <none>
-
-Images:
-COMPONENT   TYPE    IMAGE
-mysql       mysql   registry.cn-hangzhou.aliyuncs.com/apecloud/apecloud-mysql-server:8.0.30-5.alpha2.20230105.gd6b8719.2
-
-Events(last 5 warnings, see more:kbcli cluster list-events -n default x):
-TIME   TYPE   REASON   OBJECT   MESSAGE
-```
-
-</TabItem>
-
-</Tabs>
-
-## Scenario 2. Client outside the Kubernetes cluster but in the same VPC as the Kubernetes cluster
-
-A stable domain name for long-term connections is required. An Internal LoadBalancer provided by the cloud vendor can be used for this purpose.
-
-:::note
-
-The following command creates a LoadBalancer instance for the database instance, which may incur expenses from your cloud vendor.
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-This example uses a MySQL cluster to demonstrate how to expose a VPC address on Alibaba Cloud.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-enable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: vpc
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Enable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster expose ${cluster-name} --type vpc --enable=true
-```
-
-</TabItem>
-
-</Tabs>
-
-To disable the LoadBalancer instance, execute the following command.
-
-:::note
-
-Once disabled, the instance is not accessible.
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-disable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: vpc
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Disable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster expose ${cluster-name} --type vpc --enable=false
-```
-
-</TabItem>
-
-</Tabs>
-
-## Scenario 3. Connect database with clients in other VPCs or public networks
-
-If the client is in a different VPC and requires public access, you can enable the cloud vendor's External LoadBalancer.
-
-:::note
-
-The following command creates a LoadBalancer instance for the database instance, which may incur expenses from your cloud vendor.
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-The example uses MySQL to demonstrate how to expose the public address on Alibaba Cloud.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-enable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: internet
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Enable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster expose ${cluster-name} --type internet --enable=true
-```
-
-</TabItem>
-
-</Tabs>
-
-To disable the LoadBalancer instance, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-disable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: internet
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Disable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster expose ${cluster-name} --type internet --enable=false
-```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-The instance is inaccessible after you disable the LoadBalancer instance.
-
-:::
diff --git a/docs/user_docs/connect_database/connect-database-in-testing-environment.md b/docs/user_docs/connect_database/connect-database-in-testing-environment.md
deleted file mode 100644
index e2253835c..000000000
--- a/docs/user_docs/connect_database/connect-database-in-testing-environment.md
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: Connect database in testing environment
-description: How to connect to a database in testing environment
-keywords: [connect to a database, testing environment, test environment]
-sidebar_position: 2
-sidebar_label: Testing environment
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Connect database in testing environment
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-## Step 1. Retrieve Database Credentials
-
-Before connecting to the MySQL database running inside your Kubernetes cluster, you may need to retrieve the username and password from a Kubernetes Secret. Secrets in Kubernetes are typically base64-encoded, so you will need to decode them to obtain the actual credentials. Here’s how you can do this with kubectl.
-
-1. Retrieve the `username`:
-
-   Use the kubectl get secrets command to extract the username from the secret named `mycluster-conn-credential` in the demo namespace.
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-   ```
-
-   - Replace "mycluster" with the actual name of your database cluster.
-   - Replace "demo" with the actual namespace of your database cluster.
-
-2. Retrieve the `password`:
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   2gvztbvz
-   ```
-
-   - Replace "mycluster" with the actual name of your database cluster.
-   - Replace "demo" with the actual namespace of your database cluster.
-
-:::note
-
-In most KubeBlocks v0.9 addons, the secret that contains the connection credentials follows the naming pattern `{cluster.name}-conn-credential`. However, in some newer versions of KubeBlocks addons, the naming of the secret may have changed to `{cluster.name}-{component.name}-account-{account.name}`. To ensure you are using the correct secret name, run the following command to list all secrets in the namespace and search for the ones related to your database cluster.
-
-Example:
-
-```bash
-kubectl get secrets -n demo | grep mycluster
-```
-
-:::
-
-## Step 2. Connect to the cluster
-
-After retrieving the credentials, you can connect to the MySQL database running in your Kubernetes cluster using one of two methods:
-
-- Using `kubectl exec` to connect directly within the Pod.
-- Using `kubectl port-forward` to access the database from your local machine.
-
-### Option 1: Use kubectl exec command in pod
-
-In some cases, you may need to connect directly to a MySQL database running inside a Kubernetes Pod without relying on external access. Using kubectl exec, you can enter the Pod and interact with the MySQL instance directly from within the cluster, avoiding the need for an external database address.
-
-1. Run the `kubectl exec` command and specify the pod to be connected.
-
-   Use the kubectl exec command to open an interactive shell session inside the MySQL Pod. This allows you to run commands directly within the Pod's environment.
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-   ```
-
-   - `-ti`: Opens an interactive terminal session (-t allocates a TTY, and -i passes stdin to the container).
-   - `-n demo`: Specifies the demo namespace where your Pod is running.
-   - `mycluster-mysql-0`: The name of the MySQL Pod. Make sure to replace this with the actual Pod name if it's different.
-   - `-- bash`: Opens a Bash shell inside the Pod. You can also use sh if Bash is not available in the container.
-
-2. Connect to the cluster.
-
-   Once inside the Pod, you can use the MySQL client to connect to the database service running within the same Pod or cluster. Since you're already inside the Pod, you don't need to specify an external host or address.
-
-   ```bash
-   mysql -u root -p2gvztbvz
-   ```
-
-### Option 2: Connect to database with kubectl port-forward
-
-When working with databases deployed in a Kubernetes cluster, you can use kubectl port-forward to securely connect to the database from your local machine. This command forwards traffic from your local port to a port in the Kubernetes cluster, allowing you to access the database service as if it were running locally.
-
-Here is an example of using CLI to connect to the cluster on the local host.
-
-1. Forward the Port Using `kubectl port-forward`.
-
-   First, you'll need to forward a port from your local machine to the MySQL service running in Kubernetes. This command forwards your local port 3306 (the default MySQL port) to the same port on the MySQL service inside the cluster.
-
-   ```bash
-   kubectl port-forward svc/mycluster-mysql 3306:3306 -n demo
-   ```
-
-   - `svc/mycluster-mysql`: Refers to the MySQL service in your Kubernetes cluster.
-   - `3306:3306`: Binds the local port 3306 to the service's port 3306.
-   - `-n demo`: Specifies the namespace demo where the MySQL service is running.
-
-2. Connect to the Database Locally.
-
-   Once the port is forwarded, you can connect to the MySQL database using a standard MySQL client as if it were running locally on 127.0.0.1 (localhost). The connection will be securely tunneled to the service inside the cluster.
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306 -u root -p2gvztbvz
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## Option 1. Use kbcli cluster connect command
-
-You can use the `kbcli cluster connect` command and specify the cluster name to be connected.
-
-```bash
-kbcli cluster connect ${cluster-name}
-```
-
-The lower-level command is actually `kubectl exec`. The command is functional as long as the K8s API server is accessible.
-
-## Option 2. Connect database with CLI or SDK client
-
-Execute the following command to get the network information of the targeted database and connect it with the printed IP address.
-
-```bash
-kbcli cluster connect --show-example --show-password ${cluster-name}
-```
-
-Information printed includes database addresses, port No., username, password. The figure below is an example of MySQL database network information.
-
-- Address: -h specifies the server address. In the example below it is 127.0.0.1
-- Port: -P specifies port No. , In the example below it is 3306.
-- User: -u is the user name.
-- Password: -p shows the password. In the example below, it is `hQBCKZLI`.
-
-:::note
-
-The password does not include -p.
-
-:::
-
-![Example](./../../img/connect_database_with_CLI_or_SDK_client.png)
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/connect_database/overview-of-database-connection.md b/docs/user_docs/connect_database/overview-of-database-connection.md
deleted file mode 100644
index 27411ead5..000000000
--- a/docs/user_docs/connect_database/overview-of-database-connection.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Connect database from anywhere
-description: How to connect to a database
-keywords: [connect to a database]
-sidebar_position: 1
-sidebar_label: Overview
----
-
-# Overview of Database Connection
-
-After deploying KubeBlocks and creating clusters, the databases run on Kubernetes, with each replica running in a Pod and managed by the InstanceSet. You can connect to the database using client tools or SDKs through the exposed database Service addresses (ClusterIP, LoadBalancer, or NodePort). See [Connect database in a production environment](connect-database-in-production-environment.md).
-
-If you’ve created a database using KubeBlocks in a playground or test environment, you can also use `kubectl port-forward` to map the database service address to a local port on your machine. Then, you can connect to the database using a client tool or the common database clients integrated inside `kbcli`. However, please note that this is a temporary way to access services within the cluster and is intended for testing and debugging purposes only; it should not be used in a production environment. See [Connect database in a testing environment](connect-database-in-testing-environment.md).
diff --git a/docs/user_docs/create_database/_category_.yml b/docs/user_docs/create_database/_category_.yml
deleted file mode 100644
index 547639228..000000000
--- a/docs/user_docs/create_database/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: Create Database
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/create_database/overview-of-create-database.md b/docs/user_docs/create_database/overview-of-create-database.md
deleted file mode 100644
index 56c519b47..000000000
--- a/docs/user_docs/create_database/overview-of-create-database.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: How to create a database
-description: How to create a database
-keywords: [create a database]
-sidebar_position: 1
-sidebar_label: Overview
----
-
-# Create Various Types of Databases
-
-After deploying KubeBlocks, you can use it to create various databases such as MySQL, PostgreSQL, Redis, MongoDB, Kafka, Pulsar, RabbitMQ, Elasticsearch, Qdrant, and more. KubeBlocks supports these databases through addons. Refer to the documentation for each database addon to create them.
-
-- [ApeCloud MySQL](./../kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md)
-- [MySQL Community Edition](./../kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md)
-- [PostgreSQL](./../kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md)
-- [Redis](./../kubeblocks-for-redis/cluster-management/create-and-connect-a-redis-cluster.md)
-- [MongoDB](./../kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md)
-- [Kafka](./../kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md)
-- [Pulsar](./../kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kubeblocks.md)
-- [RabbitMQ](./../kubeblocks-for-rabbitmq/manage-rabbitmq.md)
-- [Elasticsearch](./../kubeblocks-for-elasticsearch/manage-elasticsearch.md)
-- [StarRocks](./../kubeblocks-for-starrocks/manage-starrocks.md)
-- [Milvus](./../kubeblocks-for-milvus/manage-milvus.md)
-- [Qdrant](./../kubeblocks-for-qdrant/manage-qdrant.md)
diff --git a/docs/user_docs/handle-an-exception/_category_.yml b/docs/user_docs/handle-an-exception/_category_.yml
deleted file mode 100644
index 93f382986..000000000
--- a/docs/user_docs/handle-an-exception/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 10
-label: Handle an Exception
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/handle-an-exception/handle-a-cluster-exception.md b/docs/user_docs/handle-an-exception/handle-a-cluster-exception.md
deleted file mode 100644
index 7f5d3afbe..000000000
--- a/docs/user_docs/handle-an-exception/handle-a-cluster-exception.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: Handle a cluster exception
-description: How to handle an exception in a cluster
-keywords: [cluster exception]
-sidebar_position: 1
-sidebar_label: Handle an exception
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Handle an exception
-
-When an exception occurs during your operation, you can perform the following steps to solve it.
-
-## Steps
-
-1. Check the cluster status.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl describe cluster mycluster
-    ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Handle the exception according to the status information.
-
-    | **Status**       | **Information** |
-    | :---             | :---            |
-    | Abnormal         | The cluster can be accessed but exceptions occur in some pods. This might be a mediate status of the operation process and the system recovers automatically without executing any extra operation. Wait until the cluster status changes to `Running`. |
-    | ConditionsError  | The cluster is normal but an exception occurs to the condition. It might be caused by configuration loss or exception, which further leads to operation failure. Manual recovery is required. |
-    | Failed | The cluster cannot be accessed. Check the `status.message` string and get the exception reason. Then manually recover it according to the hints. |
-
-    You can check the cluster's status for more information.
-
-## Fallback strategies
-
-If the above operations can not solve the problem, try the following steps:
-
-- Restart this cluster. If the restart fails, you can delete the pod manually.
-- Roll the cluster status back to the status before changes.
diff --git a/docs/user_docs/installation/_category_.yml b/docs/user_docs/installation/_category_.yml
deleted file mode 100644
index a2dc01f3e..000000000
--- a/docs/user_docs/installation/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Installation
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/installation/install-addons.md b/docs/user_docs/installation/install-addons.md
deleted file mode 100644
index 8fcb3a722..000000000
--- a/docs/user_docs/installation/install-addons.md
+++ /dev/null
@@ -1,189 +0,0 @@
----
-title: Install Addons
-description: Install KubeBlocks addons with Helm
-keywords: [addon, helm, KubeBlocks]
-sidebar_position: 4
-sidebar_label: Install Addons
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Install Addons
-
-With the release of KubeBlocks v0.8.0, Addons are decoupled from KubeBlocks and some Addons are not installed by default. If you want to use these Addons, install Addons first by index. Or if you uninstalled some Addons, you can follow the steps in this tutorial to install them again.
-
-This tutorial takes elasticsearch as an example. You can replace elasticsearch with the Addon you need.
-
-The official index repo is [KubeBlocks index](https://github.com/apecloud/block-index). Addons are maintained in the [KubeBlocks Addon repo](https://github.com/apecloud/kubeblocks-addons).
-
-:::note
-
-Make sure the major version of Addons and KubeBlocks are the same.
-
-For example, you can install an Addon v0.9.0 with KubeBlocks v0.9.2, but using mismatched major versions, such as an Addon v0.8.0 with KubeBlocks v0.9.2, may lead to errors.
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Install with Helm" default>
-
-1. (Optional) Add the KubeBlocks repo. If you install KubeBlocks with Helm, just run `helm repo update`.
-
-   ```bash
-   helm repo add kubeblocks https://apecloud.github.io/helm-charts
-   helm repo update
-   ```
-
-2. View the Addon versions.
-
-   ```bash
-   helm search repo kubeblocks/elasticsearch --devel --versions
-   ```
-
-3. Install the Addon (take elasticsearch as example). Specify a version with `--version`.
-
-   ```bash
-   helm install kb-addon-es kubeblocks/elasticsearch --namespace kb-system --create-namespace --version x.y.z
-   ```
-
-4. Verify whether this Addon is installed.
-
-   The STATUS is `deployed` and this Addon is installed successfully.
-
-   ```bash
-   helm list -A
-   >
-   NAME             NAMESPACE	REVISION	UPDATED                                STATUS  	 CHART                   APP VERSION
-   ...
-   kb-addon-es      kb-system	1       	2024-11-27 10:04:59.730127 +0800 CST   deployed	 elasticsearch-0.9.0     8.8.2 
-   ```
-
-5. (Optional) You can run the command below to uninstall the Addon.
-
-   If you have created a related cluster, delete the cluster first.
-
-   ```bash
-   helm uninstall kb-addon-es --namespace kb-system
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="Install with kbcli">
-
-1. View the index.
-
-   kbcli creates an index named `kubeblocks` by default and you can check whether this index is created by running `kbcli addon index list`.
-
-   ```bash
-   kbcli addon index list
-   >
-   INDEX        URL
-   kubeblocks   https://github.com/apecloud/block-index.git 
-   ```
-
-   If the list is empty or you want to add your index, you can add the index manually by using `kbcli addon index add <index-name> <source>`. For example,
-
-   ```bash
-   kbcli addon index add kubeblocks https://github.com/apecloud/block-index.git
-   ```
-
-   If you are not sure whether the kubeblocks index is the latest version, you can update it.
-
-   ```bash
-   kbcli addon index update kubeblocks
-   ```
-
-2. (Optional) Search whether the Addon exists in the index.
-
-   ```bash
-   kbcli addon search elasticsearch
-   >
-   ADDON           VERSION         INDEX
-   elasticsearch   0.7.0           kubeblocks
-   elasticsearch   0.7.1           kubeblocks
-   elasticsearch   0.7.2           kubeblocks
-   elasticsearch   0.8.0           kubeblocks
-   elasticsearch   0.9.0           kubeblocks
-   ```
-
-3. Install the Addon.
-
-   If there are multiple index sources and versions for an Addon, you can specify an index by `--index` and a version by `--version`. The system installs the latest version in the `kubeblocks` index by default.
-
-   ```bash
-   kbcli addon install elasticsearch --index kubeblocks --version x.y.z
-   ```
-
-4. Verify whether this Addon is installed.
-
-   The STATUS is `Enabled` and this Addon is installed successfully.
-
-   ```bash
-   kbcli addon list
-   >
-   NAME                           VERSION        PROVIDER    STATUS     AUTO-INSTALL
-   elasticsearch                  0.9.0          apecloud    Enabled    true
-   ```
-
-5. (Optional) You can run the command below to disable the Addon.
-
-   If you have created a related cluster, delete the cluster first.
-
-   ```bash
-   kbcli addon disable elasticsearch
-   ```
-
-   Or you can run the command below to uninstall the Addon.
-
-   ```bash
-   kbcli addon uninstall elasticsearch
-   ```
-
-:::note
-
-kbcli supports enable/disable an Addon. You can enable/disable Addons according to your need. Moreover, when installing KubeBlocks by kbcli, some Addons are installed but remain disabled by default, with their status shown as `Disabled`. You can enable them by kbcli. For example,
-
-```bash
-kbcli addon list
->
-NAME                           VERSION        PROVIDER    STATUS     AUTO-INSTALL
-alertmanager-webhook-adaptor   0.1.4          apecloud    Disabled   false
-apecloud-otel-collector        0.1.2-beta.3   apecloud    Disabled   false
-aws-load-balancer-controller   1.4.8          community   Disabled   false
-csi-driver-nfs                 4.5.0          community   Disabled   false
-csi-hostpath-driver            0.7.0          community   Disabled   false
-grafana                        6.43.5         community   Disabled   false
-llm                            0.9.0          community   Disabled   false
-prometheus                     15.16.1        community   Disabled   false
-qdrant                         0.9.1          community   Disabled   false
-victoria-metrics-agent         0.8.41         community   Disabled   false
-```
-
-* Enable an Addon.
-
-   ```bash
-   kbcli addon enable qdrant
-   ```
-
-* Disable an Addon.
-
-   ```bash
-   kbcli addon disable qdrant
-   ```
-
-After enabling/disabling an Addon, check the Addon list to verify whether the Addon's status changes as required.
-
-```bash
-kbcli addon list
->
-NAME                           VERSION        PROVIDER    STATUS     AUTO-INSTALL
-qdrant                         0.9.1          community   Enabled    false
-```
-
-:::
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/installation/install-kbcli.md b/docs/user_docs/installation/install-kbcli.md
deleted file mode 100644
index 0222e9e36..000000000
--- a/docs/user_docs/installation/install-kbcli.md
+++ /dev/null
@@ -1,203 +0,0 @@
----
-title: Install kbcli 
-description: Install kbcli 
-keywords: [install, kbcli,]
-sidebar_position: 2
-sidebar_label: Install kbcli
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Install kbcli
-
-You can install kbcli on your laptop or virtual machines on the cloud.
-
-## Environment preparation
-
-For Windows users, PowerShell version should be 5.0 or higher.
-
-## Install kbcli
-
-kbcli now supports macOS, Windows, and Linux.
-
-<Tabs>
-<TabItem value="macOS" label="macOS" default>
-
-You can install kbcli with `curl` or `brew`.
-
-- Option 1: Install kbcli using the `curl` command.
-
-1. Install kbcli.
-
-   ```bash
-   curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
-   ```
-
-   If you want to install kbcli with a specified version, follow the steps below.
-
-   1. Check the available versions in [kbcli Release](https://github.com/apecloud/kbcli/releases/).
-   2. Specify a version with `-s` and run the command below.
-
-      ```bash
-      curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s x.y.z
-      ```
-
-   You can view all versions of kbcli, including alpha and beta releases, on the [kbcli releases list](https://github.com/apecloud/kbcli/releases).
-
-   To get stable releases, use this command:
-
-   ```bash
-   curl -s "https://api.github.com/repos/apecloud/kbcli/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r
-   ```
-
-  :::note
-
-   By default, kbcli installs the latest release version. However, if you already have a running KubeBlocks instance, you need to install a matching version of kbcli.
-
-   For example, if your existing KubeBlocks deployment is v0.8.3, you should install kbcli v0.8.3 instead of a higher version like v0.9.0, as mismatched versions may lead to errors.
-
-  :::
-
-2. Run `kbcli version` to check the version of kbcli and ensure that it is successfully installed.
-
-  :::note
-
-  If a timeout exception occurs during installation, please check your network settings and retry.
-
-  :::
-
-- Option 2: Install kbcli using Homebrew.
-
-1. Install ApeCloud tap, the Homebrew package of ApeCloud.
-
-   ```bash
-   brew tap apecloud/tap
-   ```
-
-2. Install kbcli.
-
-   ```bash
-   brew install kbcli
-   ```
-
-   If you want to install kbcli with a specified version, run the commands below.
-
-   ```bash
-   # View the available version
-   brew search kbcli
-
-   # Specify a version
-   brew install kbcli@x.y.z
-   ```
-
-3. Verify that kbcli is successfully installed.
-
-   ```bash
-   kbcli -h
-   ```
-
-</TabItem>
-
-<TabItem value="Windows" label="Windows">
-
-There are two ways to install kbcli on Windows:
-
-- Option 1: Install using the script.
-
-:::note
-
-By default, the script will be installed at C:\Program Files\kbcli-windows-amd64 and cannot be modified.
-
-If you need to customize the installation path, use the zip file.
-
-:::
-
-1. Run PowerShell as an **administrator** and execute `Set-ExecutionPolicy Unrestricted`.
-2. Install kbcli.  
-
-   The following script will automatically install the environment variables at C:\Program Files\kbcli-windows-amd64.
-
-    ```bash
-    powershell -Command " & ([scriptblock]::Create((iwr https://www.kubeblocks.io/installer/install_cli.ps1)))"
-    ```
-
-    To install a specified version of kbcli, use `-v` after the command and describe the version you want to install.
-
-    ```bash
-    powershell -Command " & ([scriptblock]::Create((iwr https://www.kubeblocks.io/installer/install_cli.ps1))) -v 0.5.2"
-    ```
-
-- Option 2: Install using the installation package.
-
-1. Download the kbcli installation zip package from [kbcli Release](https://github.com/apecloud/kbcli/releases/).
-2. Extract the file and add it to the environment variables.
-    1. Click the Windows icon and select **System Settings**.
-    2. Click **Settings** -> **Related Settings** -> **Advanced system settings**.
-    3. Click **Environment Variables** on the **Advanced** tab.
-    4. Click **New** to add the path of the kbcli installation package to the user and system variables.
-    5. Click **Apply** and **OK**.
-
-</TabItem>
-
-<TabItem value="Linux" label="Linux">
-
-Install kbcli using the `curl` command.
-
-1. Install kbcli.
-
-   ```bash
-   curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
-   ```
-
-   To install a specified version of kbcli, use `-s` after the command and describe the version you want to install.
-
-   ```bash
-   curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s x.y.z
-   ```
-
-2. Run `kbcli version` to check the version of kbcli and ensure that it is successfully installed.
-
-:::note
-
-- If a timeout exception occurs during installation, please check your network settings and retry.
-
-:::
-
-</TabItem>
-</Tabs>
-
-## Upgrade kbcli
-
-To upgrade kbcli, [uninstall the current kbcli](./uninstall-kubeblocks-and-kbcli.md#uninstall-kbcli) and install the latest version.
-
-## (Optional) Enable auto-completion for kbcli
-
-`kbcli` supports command line auto-completion.
-
-```bash
-# Configure SHELL-TYPE as one type from bash, fish, PowerShell, and zsh
-kbcli completion SHELL-TYPE -h
-```
-
-For example, enable kbcli auto-completion for zsh.
-
-***Steps:***
-
-1. Check the user guide.
-
-    ```bash
-    kbcli completion zsh -h
-    ```
-
-2. Enable the completion function of your terminal first.
-
-    ```bash
-    echo "autoload -U compinit; compinit" >> ~/.zshrc
-    ```
-
-3. Enable the `kbcli` automatic completion function.
-
-    ```bash
-    echo "source <(kbcli completion zsh); compdef _kbcli kbcli" >> ~/.zshrc
-    ```
diff --git a/docs/user_docs/installation/install-kubeblocks.md b/docs/user_docs/installation/install-kubeblocks.md
deleted file mode 100644
index 359b4c083..000000000
--- a/docs/user_docs/installation/install-kubeblocks.md
+++ /dev/null
@@ -1,323 +0,0 @@
----
-title: Install KubeBlocks
-description: Install KubeBlocks on the existing Kubernetes clusters with Helm
-keywords: [taints, affinity, tolerance, install, kbcli, KubeBlocks, helm]
-sidebar_position: 3
-sidebar_label: Install KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Install KubeBlocks
-
-The quickest way to try out KubeBlocks is to create a new Kubernetes cluster and install KubeBlocks using the playground. However, production environments are more complex, with applications running in different namespaces and with resource or permission limitations. This document explains how to deploy KubeBlocks on an existing Kubernetes cluster.
-
-KubeBlocks is Kubernetes-native, you can use Helm or kubectl with a YAML file to install it. You can also use kbcli, an intuitive CLI tool, to install KubeBlocks.
-
-To try out KubeBlocks on your local host, you can use the [Playground](./../try-out-on-playground/try-kubeblocks-on-your-laptop.md) or [create a local Kubernetes test cluster first](./prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md) and then follow the steps in this tutorial to install KubeBlocks.
-
-:::note
-
-- Note that you install and uninstall KubeBlocks with the same tool. For example, if you install KubeBlocks with Helm, to uninstall it, you have to use Helm too.
-- Make sure you have [kubectl](https://kubernetes.io/docs/tasks/tools/), [Helm](https://helm.sh/docs/intro/install/), or [kbcli](./install-kbcli.md) installed.
-- Make sure you have Snapshot Controller installed before installing KubeBlocks. If you haven't installed it, follow the steps in section [Install Snapshot Controller](#install-snapshot-controller) to install it.
-
-:::
-
-## Environment preparation
-
-<table>
-	<tr>
-	    <th colspan="3">Resource Requirements</th>
-	</tr >
-	<tr>
-	    <td >Control Plane</td>
-	    <td colspan="2">It is recommended to create 1 node with 4 cores, 4GB memory and 50GB storage. </td>
-	</tr >
-	<tr >
-	    <td rowspan="4">Data Plane</td>
-	    <td> MySQL </td>
-	    <td>It is recommended to create at least 3 nodes with 2 cores, 4GB memory and 50GB storage. </td>
-	</tr>
-	<tr>
-	    <td> PostgreSQL </td>
-        <td>It is recommended to create at least 2 nodes with 2 cores, 4GB memory and 50GB storage.  </td>
-	</tr>
-	<tr>
-	    <td> Redis </td>
-        <td>It is recommended to create at least 2 nodes with 2 cores, 4GB memory and 50GB storage. </td>
-	</tr>
-	<tr>
-	    <td> MongoDB </td>
-	    <td>It is recommended to create at least 3 nodes with 2 cores, 4GB memory and 50GB storage. </td>
-	</tr>
-</table>
-
-## Install Snapshot Controller
-
-The SnapshotController is a Kubernetes component that manages CSI Volume Snapshots, enabling users to create, restore, and delete snapshots of Persistent Volumes (PVs). KubeBlocks DataProtection Controller uses the Snapshot Controller to create and manage snapshots for databases.
-
-If your Kubernetes cluster does NOT have the following CRDs, you likely also do not have a snapshot controller deployed and you need to install one.
-
-```bash
-kubectl get crd volumesnapshotclasses.snapshot.storage.k8s.io
-kubectl get crd volumesnapshots.snapshot.storage.k8s.io
-kubectl get crd volumesnapshotcontents.snapshot.storage.k8s.io
-```
-
-:::note
-
-If you are sure you don't need the snapshot backup feature, you can install only the SnapshotController CRD and skip steps 1 and 2.
-
-```bash
-# v8.2.0 is the latest version of the external-snapshotter, you can replace it with the version you need.
-kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
-kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
-kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
-```
-
-:::
-
-### Step 1. Deploy Snapshot Controller
-
-You can install the Snapshot Controller using Helm or kubectl. Here are the steps to install the Snapshot Controller using Helm.
-
-```bash
-helm repo add piraeus-charts https://piraeus.io/helm-charts/
-helm repo update
-# Update the namespace to an appropriate value for your environment (e.g. kb-system)
-helm install snapshot-controller piraeus-charts/snapshot-controller -n kb-system --create-namespace
-```
-
-For more information, please refer to [Snapshot Controller Configuration](https://artifacthub.io/packages/helm/piraeus-charts/snapshot-controller#configuration).
-
-### Step 2. Verify Snapshot Controller installation
-
-Check if the snapshot-controller Pod is running:
-
-```bash
-kubectl get pods -n kb-system | grep snapshot-controller
-```
-
-<details>
-
-<summary>Output</summary>
-
-```bash
-snapshot-controller-xxxx-yyyy   1/1   Running   0   30s
-```
-
-</details>
-
-If the pod is in a CrashLoopBackOff state, check logs:
-
-```bash
-kubectl logs -n kb-system deployment/snapshot-controller
-```
-
-## Installation KubeBlocks
-
-<Tabs>
-
-<TabItem value="Helm" label="Install with Helm" default>
-
-Follow these steps to install KubeBlocks using Helm.
-
-1. Get the KubeBlocks version:
-
-   * Option A - Get the latest stable version (e.g., v0.9.2):
-
-      ```bash
-      curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r | head -n 1
-      ```
-
-   * Option B - View all available versions (including alpha and beta releases):
-      * Visit the [KubeBlocks Releases](https://github.com/apecloud/kubeblocks/releases).
-      * Or use the command:
-        ```bash
-        curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[].tag_name' | sort -V -r
-        ```
-
-2. Create the required CRDs using your selected version:
-
-   ```bash
-   # Replace <VERSION> with your selected version
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks_crds.yaml
-
-   # Example: If the version is v0.9.2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks_crds.yaml
-   ```
-
-3. Add the KubeBlocks Helm repo:
-
-   ```bash
-   helm repo add kubeblocks https://apecloud.github.io/helm-charts
-   helm repo update
-   ```
-
-4. Install KubeBlocks:
-
-   ```bash
-   helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace
-   ```
-
-   If you want to install KubeBlocks with custom tolerations, you can use the following command:
-
-   ```bash
-   helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace \
-       --set-json 'tolerations=[ { "key": "control-plane-taint", "operator": "Equal", "effect": "NoSchedule", "value": "true" } ]' \
-       --set-json 'dataPlane.tolerations=[{ "key": "data-plane-taint", "operator": "Equal", "effect": "NoSchedule", "value": "true"    }]'
-   ```
-
-   If you want to install KubeBlocks with a specified version, follow the steps below:
-
-   1. View the available versions in the [KubeBlocks Releases](https://github.com/apecloud/kubeblocks/releases/).
-   2. Specify a version with `--version` and run the command below:
-
-      ```bash
-      helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version=<VERSION>
-      ```
-
-     :::note
-
-     By default, the latest release version is installed.
-
-     :::
-
-</TabItem>
-
-<TabItem value="kubectl" label="Install with kubectl">
-
-Like any other resource in Kubernetes, KubeBlocks can be installed through a YAML manifest applied via `kubectl`.
-
-1. Get the KubeBlocks version:
-
-   * Option A - Get the latest stable version (e.g., v0.9.2):
-
-      ```bash
-      curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r | head -n 1
-      ```
-
-   * Option B - View all available versions (including alpha and beta releases):
-      * Visit the [KubeBlocks Releases](https://github.com/apecloud/kubeblocks/releases).
-      * Or use the command:
-        ```bash
-        curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[].tag_name' | sort -V -r
-        ```
-
-2. Create the required CRDs using your selected version:
-
-   ```bash
-   # Replace <VERSION> with your selected version
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks_crds.yaml
-
-   # Example: If the version is v0.9.2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks_crds.yaml
-   ```
-
-3. Install KubeBlocks:
-
-   ```bash
-   # Replace <VERSION> with the same version used in step 2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks.yaml
-
-   # Example: If the version is v0.9.2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks.yaml
-   ```
-
-   :::note
-
-   Make sure to use the same version for both CRDs and KubeBlocks installation to avoid compatibility issues.
-
-   :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="Install with kbcli">
-
-The command `kbcli kubeblocks install` installs KubeBlocks in the `kb-system` namespace, or you can use the `--namespace` flag to specify one.
-
-```bash
-kbcli kubeblocks install
-```
-
-If you want to install KubeBlocks with a specified version, follow the steps below.
-
-1. View the available versions:
-
-   ```bash
-   kbcli kubeblocks list-versions
-   ```
-
-   To include alpha and beta releases, use:
-
-   ```bash
-   kbcli kb list-versions --devel --limit=100
-   ```
-
-   Or you can view all available versions in [KubeBlocks Releases](https://github.com/apecloud/kubeblocks/releases/).
-2. Specify a version with `--version` and run the command below:
-
-   ```bash
-   kbcli kubeblocks install --version=<VERSION>
-   ```
-
-  :::note
-
-   By default, when installing KubeBlocks, kbcli installs the corresponding version of KubeBlocks. It's important to ensure the major versions of kbcli and KubeBlocks are the same, if you specify a different version explicitly here.
-
-   For example, you can install kbcli v0.9.2 with KubeBlocks v0.9.1, but using mismatched major versions, such as kbcli v0.9.2 with KubeBlocks v1.0.0, may lead to errors.
-
-  :::
-
-</TabItem>
-
-</Tabs>
-
-## Verify KubeBlocks installation
-
-Run the following command to check whether KubeBlocks is installed successfully.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n kb-system get pods
-```
-
-***Result***
-
-If the KubeBlocks Workloads are all ready, KubeBlocks has been installed successfully.
-
-```bash
-NAME                                             READY   STATUS    RESTARTS       AGE
-kubeblocks-7cf7745685-ddlwk                      1/1     Running   0              4m39s
-kubeblocks-dataprotection-95fbc79cc-b544l        1/1     Running   0              4m39s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli kubeblocks status
-```
-
-***Result***
-
-If the KubeBlocks Workloads are all ready, KubeBlocks has been installed successfully.
-
-```bash
-KubeBlocks is deployed in namespace: kb-system, version: <VERSION>
->
-KubeBlocks Workloads:
-NAMESPACE   KIND         NAME                           READY PODS   CPU(CORES)   MEMORY(BYTES)   CREATED-AT
-kb-system   Deployment   kubeblocks                     1/1          N/A          N/A             Oct 13,2023 14:26 UTC+0800
-kb-system   Deployment   kubeblocks-dataprotection      1/1          N/A          N/A             Oct 13,2023 14:26 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/installation/prepare-a-local-k8s-cluster/_category_.yml b/docs/user_docs/installation/prepare-a-local-k8s-cluster/_category_.yml
deleted file mode 100644
index 1b92619b1..000000000
--- a/docs/user_docs/installation/prepare-a-local-k8s-cluster/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Prerequisite for Local Env
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/installation/prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md b/docs/user_docs/installation/prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md
deleted file mode 100644
index 3982079a1..000000000
--- a/docs/user_docs/installation/prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title: Create a local Kubernetes test cluster
-description: Create a local Kubernetes test cluster
-keywords: [kbcli, kubeblocks, addons, installation]
-sidebar_position: 3
-sidebar_label: Prerequisite for Local Env
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create a local Kubernetes test cluster
-
-This tutorial introduces how to create a local Kubernetes test cluster using Minikube, K3d, and Kind. These tools make it easy to try out KubeBlocks on your local host, offering a great solution for development, testing, and experimentation without the complexity of creating a full production-grade cluster.
-
-## Before you start
-
-Make sure you have the following tools installed on your local host:
-
-- Docker: All three tools rely on Docker to create containerized Kubernetes clusters.
-- kubectl: The Kubernetes command-line tool for interacting with clusters. Refer to the [kubectl installation guide](https://kubernetes.io/docs/tasks/tools/)
-
-<Tabs>
-
-<TabItem value="Kind" label="Kind" default>
-
-## Create a Kubernetes cluster using Kind
-
-Kind stands for Kubernetes IN Docker. It runs Kubernetes clusters within Docker containers, making it an ideal tool for local Kubernetes testing.
-
-1. Install Kind. For details, you can refer to [Kind Quick Start](https://kind.sigs.k8s.io/docs/user/quick-start/).
-
-   <Tabs>
-
-   <TabItem value="macOS" label="macOS" default>
-
-   ```bash
-   brew install kind
-   ```
-
-   </TabItem>
-
-   <TabItem value="Linux" label="Linux">
-
-   ```bash
-   # For AMD64 / x86_64
-   [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64
-   # For ARM64
-   [ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-arm64
-   chmod +x ./kind
-   sudo cp ./kind /usr/local/bin/kind
-   rm -rf kind
-   ```
-
-   </TabItem>
-
-   <TabItem value="Windows" label="Windows">
-
-   You can use chocolatey to install Kind.
-
-   ```bash
-   choco install kind
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Create a Kind cluster.
-
-   ```bash
-   kind create cluster --name mykindcluster
-   ```
-
-   This command creates a single-node Kubernetes cluster running in a Docker container.
-
-3. Check whether the cluster is started and running.
-
-   ```bash
-   kubectl get nodes
-   >
-   NAME                          STATUS   ROLES           AGE   VERSION
-   mykindcluster-control-plane   Ready    control-plane   25s   v1.31.0
-   ```
-
-   You can see a node named `mykindcluster-control-plane` from the output, which means the cluster is created successfully.
-
-4. (Optional) Configure a cluster with multiple nodes.
-
-   Kind also supports clusters with multiple nodes. You can create a multi-node cluster by a configuration file.
-
-   ```yaml
-   kind: Cluster
-   apiVersion: kind.x-k8s.io/v1alpha4
-   nodes:
-     role: control-plane
-     role: worker
-     role: worker
-   ```
-
-   Use the configuration file to create a multi-node cluster.
-
-   ```bash
-   kind create cluster --name multinode-cluster --config kind-config.yaml
-   ```
-
-5. If you want to delete the Kind cluster, run the command below.
-
-   ```bash
-   kind delete cluster --name mykindcluster
-   ```
-
-</TabItem>
-
-<TabItem value="Minikube" label="Minikube">
-
-## Create a Kubernetes cluster using Minikube
-
-Minikube runs a single-node Kubernetes cluster on your local machine, either in a virtual machine or a container.
-
-1. Install Minikube. For details, you can refer to [Minikube Quick Start](https://minikube.sigs.k8s.io/docs/start/).
-
-   <Tabs>
-
-   <TabItem value="macOS" label="macOS" default>
-
-   ```bash
-   brew install minikube
-   ```
-
-   </TabItem>
-
-   <TabItem value="Linux" label="Linux">
-
-   ```bash
-   curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
-   sudo rpm -Uvh minikube-latest.x86_64.rpm
-   ```
-
-   </TabItem>
-
-   <TabItem value="Windows" label="Windows">
-
-   You can use chocolatey to install Minikube.
-
-   ```bash
-   choco install minikube
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Start Minikube. This command will create a local Kubernetes cluster.
-
-   ```bash
-   minikube start
-   ```
-
-   You can also specify other drivers (such as Docker, Hyperkit, KVM) to start it.
-
-   ```bash
-   minikube start --driver=docker
-   ```
-
-3. Verify whether Minikube and the K8s cluster is running normally.
-
-   Check whether Minikube is running.
-
-   ```bash
-   minikube status
-   >
-   minikube
-   type: Control Plane
-   host: Running
-   kubelet: Running
-   apiserver: Running
-   kubeconfig: Configured
-   ```
-
-   Check whether the K8s cluster is running.
-
-   ```bash
-   kubectl get nodes
-   >
-   NAME       STATUS   ROLES           AGE    VERSION
-   minikube   Ready    control-plane   1d     v1.26.3
-   ```
-
-   From the output, we can see that the Minikube node is ready.
-
-</TabItem>
-
-<TabItem value="k3d" label="k3d">
-
-## Create a Kubernetes cluster using k3d
-
-k3d is a lightweight tool that runs k3s (a lightweight Kubernetes distribution) in Docker containers.
-
-1. Install k3d. For details, refer to [k3d Quick Start](https://k3d.io/v5.7.4/#releases).
-
-   <Tabs>
-
-   <TabItem value="macOS" label="macOS" default>
-
-   ```bash
-   brew install k3d
-   ```
-
-   </TabItem>
-
-   <TabItem value="Linux" label="Linux">
-
-   ```bash
-   curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
-   ```
-
-   </TabItem>
-
-   <TabItem value="Windows" label="Windows">
-
-   You can use chocolatey to install k3d.
-
-   ```bash
-   choco install k3d
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Create a k3s cluster.
-
-   ```bash
-   k3d cluster create myk3s
-   ```
-
-   This command will create a Kubernetes cluster named as `myk3s` with a single node.
-
-3. Verify whether this cluster is running normally.
-
-   ```bash
-   kubectl get nodes
-   >
-   NAME                 STATUS   ROLES                  AGE   VERSION
-   k3d-myk3s-server-0   Ready    control-plane,master   31s   v1.30.4+k3s1
-   ```
-
-4. If you want to delete the k3s cluster, run the command below.
-
-   ```bash
-   k3d cluster delete myk3s
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/installation/uninstall-kubeblocks-and-kbcli.md b/docs/user_docs/installation/uninstall-kubeblocks-and-kbcli.md
deleted file mode 100644
index 78f3cf251..000000000
--- a/docs/user_docs/installation/uninstall-kubeblocks-and-kbcli.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: Uninstall KubeBlocks
-description: Uninstall KubeBlocks by Helm, applying a YAML file, or kbcli.
-keywords: [kubeblocks, uninstall, helm, kbcli]
-sidebar_position: 5
-sidebar_label: Uninstall KubeBlocks and kbcli
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Uninstall KubeBlocks and kbcli
-
-Uninstallation order:
-
-1. Delete all clusters and backups before uninstalling KubeBlocks and kbcli.
-
-   ```bash
-   kubectl delete cluster <clustername> -n namespace
-   ```
-
-   ```bash
-   kubectl delete backup <backname> -n namespace
-   ```
-
-2. Uninstall KubeBlocks.
-
-## Uninstall KubeBlocks
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-Delete all the clusters and resources created before performing the following command, otherwise the uninstallation may not be successful.
-
-```bash
-helm uninstall kubeblocks --namespace kb-system
-```
-
-Helm does not delete CRD objects. You can delete the ones KubeBlocks created with the following commands:
-
-```bash
-kubectl get crd -o name | grep kubeblocks.io | xargs kubectl delete
-```
-
-</TabItem>
-
-<TabItem value="YAML" label="YAML">
-
-You can generate YAMLs from the KubeBlocks chart and uninstall using `kubectl`. Use `--version x.y.z` to specify a version and make sure the uninstalled version is the same as the installed one.
-
-```bash
-helm template kubeblocks kubeblocks/kubeblocks --namespace kb-system --version x.y.z | kubectl delete -f -
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli kubeblocks uninstall
-```
-
-</TabItem>
-
-</Tabs>
-
-## Uninstall kbcli
-
-Uninstall kbcli if you want to delete kbcli after your trial. Use the same option as the way you install kbcli.
-
-<Tabs>
-
-<TabItem value="macOS" label="macOS" default>
-
-For `curl`, run
-
-```bash
-sudo rm /usr/local/bin/kbcli
-```
-
-For `brew`, run
-
-```bash
-brew uninstall kbcli
-```
-
-kbcli creates a hidden folder named `~/.kbcli` under the HOME directory to store configuration information and temporary files. You can delete this folder after uninstalling kbcli.
-
-</TabItem>
-
-<TabItem value="Windows" label="Windows">
-
-1. Go to the `kbcli` installation path and delete the installation folder.
-
-   * If you install `kbcli` by script, go to `C:\Program Files` and delete the `kbcli-windows-amd64` folder.
-   * If you customize the installation path, go to your specified path and delete the installation folder.
-
-2. Delete the environment variable.
-
-   1. Click the Windows icon and click **System**.
-   2. Go to **Settings** -> **Related Settings** -> **Advanced system settings**.
-   3. On the **Advanced** tab, click **Environment Variables**.
-   4. Double-click **Path** in **User variables** or **System variables** list.
-      * If you install `kbcli` by script, double-click **Path** in **User variables**.
-      * If you customize the installation path, double-click **Path** based on where you created the variable before.
-   5. Select `C:\Program Files\kbcli-windows-amd64` or your customized path and delete it. This operation requires double confirmation.
-
-3. Delete a folder named `.kbcli`.
-
-   kbcli creates a folder named `.kbcli` under the C:\Users\username directory to store configuration information and temporary files. You can delete this folder after uninstalling kbcli.
-
-</TabItem>
-
-<TabItem value="Linux" label="Linux">
-
-Uninstall kbcli using the `curl` command.
-
-```bash
-sudo rm /usr/local/bin/kbcli
-```
-
-kbcli creates a hidden folder named `~/.kbcli` under the HOME directory to store configuration information and temporary files. You can delete this folder after uninstalling kbcli.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/_category_.yml b/docs/user_docs/kubeblocks-for-apecloud-mysql/_category_.yml
deleted file mode 100644
index d667ba3aa..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 11
-label: KubeBlocks for ApeCloud MySQL
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/_category_.yml b/docs/user_docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/_category_.yml
deleted file mode 100644
index f694f3872..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Introduction
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/apecloud-mysql-intro.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/apecloud-mysql-intro.md
deleted file mode 100644
index 57b58c05b..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/apecloud-mysql-intro.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: ApeCloud MySQL introduction
-description: ApeCloud MySQL introduction
-keywords: [apecloud mysql, mysql, introduction]
-sidebar_position: 1
----
-
-# ApeCloud MySQL introduction
-
-MySQL is the world’s most popular open-source database and the second-most-popular database overall. It is used by many of the most accessed applications, such as Facebook, Twitter, Netflix, Uber, Airbnb, Shopify, and Booking.com. 
-KubeBlocks adopts the MySQL distribution provided by ApeCloud, which includes data compression and high availability improvements.
-
-- When there are 3 or more replicas,  a strong consistent high-availability cluster is created with the consensus algorithm protocol to ensure that RPO=0 in the case of a single availability zone failure. Among them, the primary instance provides read/write capacity, and the remaining instances provide read-only services.
-- When there are 2 replicas, a Primary-Secondary replication cluster is created, in which the primary instance provides read/write capacity, and the secondary instance keeps in sync with the primary instance with asynchronous replication, providing read-only and fault tolerance capabilities.
-- When there is only 1 replica, a standalone cluster is created to provide read/write capacity. Automatic fault recovery capability is still provided, and RPO=0 remains ensured if the cloud disk is not damaged.
-
-## Instance Roles
-
-ApeCloud MySQL supports four roles, **Leader**, **Follower**, **Candidate**, and **Learner**. The Leader and a Follower form a high-availability cluster and ensure RPO=0.
-
-- Leader: This role is the primary instance of the cluster, and supports R/W with forced consistency. It is voted by all the Candidates participating in the election. The Candidates with the majority of votes become the Leader, and the other Candidates become the Follower.
-- Follower: Follower supports data consistency with read-only capacity, and forms a high-availability cluster with Leader and other Followers.
-- Learner: This role is usually used for cross-regional consistent read-only data. Data synchronization is performed through the Paxos protocol, and the data source can be a Leader or a Follower. The learner is a special role in the consensus algorithm protocol, and does not participate in voting or being elected as a Candidate role.
-- Candidate: The Candidate is an intermediate role that exists only during the election process or when a majority number is not enough to select the Leader role.  Normally, all Candidates in a high availability cluster will eventually become a Leader or a Follower after the election is completed.
-
-| Role |  Leader |Follower | Learner | Candidate |
-| ---- |----| ----|----|----|
-| **Capability**|RW/HA|RO/HA|RO|-|
-
-![Role_changing](../../../img/apecloud-mysql-intro-role-changing.jpg)
-
-### Failover
-
-A failover is the redirection of traffic and switches the running tasks from a primary instance to a secondary instance.
-
-### Read-only
-
-Replicas provide read-only capabilities. In addition to the Follower that can provide read-only capabilities, you can also expand the read-only capabilities of the cluster by adding Learner roles. It should be noted that when performing read-only operations through Follower or Learner, there may be a data delay with the Leader. This delay may be caused by a log synchronization delay or a log playback delay.
-
-### Fault tolerance
-
-The cluster supports node fault tolerance. Suppose the number of replicas is n, then the number of faulty replicas that can be tolerated is `floor (n/2) + 1, n=[1,99]`, which meets the requirements of the Paxos algorithm protocol. Based on this, it can be obtained that under the specified tolerable number f of ApeCloud MySQL cluster nodes, the number of replicas that need to be created is n=2*f+1, f>=0. For example, if the tolerable number of faulty replicas is 1, then according to the formula, the minimum number of replicas in the cluster is 3, that is, in a Paxos group, the continuous service capability of the cluster with 1 faulty replica is guaranteed. According to the table below, it can be seen that it is more cost-effective to create an odd number of replicas.
-
- Replicas in Cluster | Node Majority | Nodes Tolerable |
-  ---- |----| ----|
-  3 | 2 | 1 |
-  4 | 3 | 1 |
-  5 | 3 | 2 |
-  6 | 4 | 2 |
-  7 | 4 | 3 |
-  8 | 5 | 3 |
-  9 | 5 | 4 |
-  10 | 6 | 4 |
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/_category_.yml
deleted file mode 100644
index 200a2feb5..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md
deleted file mode 100644
index 6ce4662b8..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md
+++ /dev/null
@@ -1,299 +0,0 @@
----
-title: Create and connect to an ApeCloud MySQL Cluster
-description: How to create and connect to an ApeCloud MySQL cluster
-keywords: [mysql, create an apecloud mysql cluster, connect to a mysql cluster]
-sidebar_position: 1
-sidebar_label: Create and connect
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create and connect to an ApeCloud MySQL cluster
-
-This tutorial shows how to create and connect to an ApeCloud MySQL cluster.
-
-## Create a MySQL cluster
-
-### Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to create and connect a MySQL cluster by `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Check whether the ApeCloud MySQL Addon is enabled. The ApeCloud MySQL Addon is enabled by KubeBlocks by default. If you disable it when installing KubeBlocks,[enable it](./../../installation/install-addons.md) first.
-  
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io apecloud-mysql
-  >
-  NAME             TYPE   VERSION   PROVIDER   STATUS    AGE
-  apecloud-mysql   Helm                        Enabled   61m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-  
-  ```bash
-  kbcli addon list
-  >
-  NAME                           VERSION         PROVIDER    STATUS     AUTO-INSTALL
-  ...
-  apecloud-mysql                 0.9.0           apecloud    Enabled    true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* View all the database types and versions available for creating a cluster.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-  
-  Make sure the `apecloud-mysql` cluster definition is installed.
-
-  ```bash
-  kubectl get clusterdefinition apecloud-mysql
-  >
-  NAME             TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  apecloud-mysql                              Available   85m
-  ```
-
-  View all available versions for creating a cluster.
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=apecloud-mysql
-  >
-  NAME                CLUSTER-DEFINITION   STATUS      AGE
-  ac-mysql-8.0.30     apecloud-mysql       Available   85m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-### Create a cluster
-
-KubeBlocks supports creating two types of ApeCloud MySQL clusters: Standalone and RaftGroup Cluster. Standalone only supports one replica and can be used in scenarios with lower requirements for availability. For scenarios with high availability requirements, it is recommended to create a RaftGroup Cluster, which creates a cluster with three replicas. To ensure high availability, all replicas are distributed on different nodes by default.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create an ApeCloud MySQL cluster.
-
-   KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a RaftGroup Cluster.
-
-   If you only have one node for deploying a RaftGroup Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: apecloud-mysql
-     topology: apecloud-mysql
-     componentSpecs:
-       - name: mysql
-         serviceVersion: "8.0.30"
-         disableExporter: false
-         replicas: 3
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | Field                                 | Definition  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-mysql-cluster.md#termination-policy). |
-   | `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. Note: DO NOT UPDATE THIS FIELD. The value must be `apecloud-mysql` to create a ApeCloud-MySQL Cluster. |
-   | `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. |
-   | `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-   | `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. The valid option for ApeCloud MySQL is 8.0.30. |
-   | `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-   | `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. ApeCloud-MySQL prefers ODD numbers like [1, 3, 5, 7]. |
-   | `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-   | `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-   For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-   KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster by running the command below.
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   Run the following command to view the details of the created ApeCloud MySQL cluster:
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   12m
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Create an ApeCloud MySQL cluster.
-
-   Below are some common examples to create a cluster with default settings. If you want to customize your cluster specifications, kbcli provides various options, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-  
-   ```bash
-   kbcli cluster create apecloud-mysql --help
-
-   kbcli cluster create apecloud-mysql -h
-   ```
-
-   Create a Standalone.
-
-   ```bash
-   kbcli cluster create apecloud-mysql mycluster --mode='standalone' --namespace demo
-   ```
-
-   Create a RaftGroup Cluster.
-
-   ```bash
-   kbcli cluster create apecloud-mysql mycluster --mode='raftGroup' --namespace demo
-   ```
-
-   If you only have one node for deploying a RaftGroup Cluster, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a RaftGroup Cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create apecloud-mysql mycluster \
-       --mode='raftGroup' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to an ApeCloud MySQL Cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-You can use `kubectl exec` to exec into a Pod and connect to a database.
-
-KubeBlocks operator creates a new Secret called `mycluster-conn-credential` to store the connection credential of the ApeCloud MySQL cluster. This secret contains the following keys:
-
-* `username`: the root username of the MySQL cluster.
-* `password`: the password of the root user.
-* `port`: the port of the MySQL cluster.
-* `host`: the host of the MySQL cluster.
-* `endpoint`: the endpoint of the MySQL cluster and it is the same as `host:port`.
-
-1. Run the command below to get the `username` and `password` for the `kubectl exec` command.
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   2gvztbvz
-   ```
-
-2. Exec into the Pod `mycluster-mysql-0` and connect to the database using username and password.
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-   mysql -uroot -p2gvztbvz
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-You can also port forward the service to connect to a database from your local machine.
-
-1. Run the following command to port forward the service.
-
-   ```bash
-   kubectl port-forward svc/mycluster-mysql 3306:3306 -n demo
-   ```
-
-2. Open a new terminal and run the following command to connect to the database.
-
-   ```bash
-   mysql -uroot -p2gvztbvz
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster  -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-For the detailed database connection guide, refer to [Connect database](./../../connect_database/overview-of-database-connection.md).
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md
deleted file mode 100644
index 3a1ae1b2e..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: Delete an ApeCloud MySQL Cluster
-description: How to delete an ApeCloud MySQL Cluster
-keywords: [mysql, delete an apecloud cluster]
-sidebar_position: 7
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete an ApeCloud MySQL Cluster
-
-## Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Step
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/expand-volume.md
deleted file mode 100644
index f36de79c1..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,186 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of an ApeCloud MySQL cluster
-sidebar_position: 3
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-:::note
-
-Volume expansion triggers pod restart, all pods restart in the order of learner -> follower -> leader and the leader pod may change after the operation.
-
-:::
-
-## Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: mysql
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAME                              TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   mycluster-volumeexpansion-8257f   VolumeExpansion   mycluster   Succeed   3/3        4m40s
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. After the cluster status is `Running` again, check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources`.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 3
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding cluster is running and whether resources change.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Change configuration.
-
-   Configure the values of `--components`, `--volume-claim-templates`, and `--storage`, and run the command below to expand the volume.
-
-   ```bash
-   kbcli cluster volume-expand mycluster --components="mysql" --volume-claim-templates="data" --storage="40Gi" -n demo
-   ```
-
-   - `--components` describes the component name for volume expansion.
-   - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-   - `--storage` describes the volume storage size.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-      KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-      ```
-
-    - View the cluster status.
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-      mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Updating   Sep 19,2024 16:01 UTC+0800
-      ```
-
-      * STATUS=Updating: it means the volume expansion is in progress.
-      * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/restart-mysql-cluster.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/restart-mysql-cluster.md
deleted file mode 100644
index 0f760be1b..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/restart-mysql-cluster.md
+++ /dev/null
@@ -1,91 +0,0 @@
----
-title: Restart MySQL cluster
-description: How to restart an ApeCloud MySQL cluster
-keywords: [mysql, restart, restart a cluster]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart an ApeCloud MySQL cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create an OpsRequest to restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: mysql
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                READY   STATUS        RESTARTS   AGE
-   mycluster-mysql-0   4/4     Running       0          5m32s
-   mycluster-mysql-1   4/4     Running       0          6m36s
-   mycluster-mysql-2   3/4     Terminating   0          7m37s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-   If an error occurs, you can troubleshoot with `kubectl describe` command to view the events of this operation.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Restart a cluster.  
-
-   Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster --components="mysql" --ttlSecondsAfterSucceed=30 -n demo
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Check the cluster status to validate the restarting.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-   - STATUS=Updating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/scale-for-apecloud-mysql.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/scale-for-apecloud-mysql.md
deleted file mode 100644
index 77b841af0..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/scale-for-apecloud-mysql.md
+++ /dev/null
@@ -1,411 +0,0 @@
----
-title: How to scale a MySQL cluster, horizontal scaling, vertical scaling
-keywords: [mysql, horizontal scaling, vertical scaling]
-sidebar_position: 2
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale an ApeCloud MySQL cluster
-
-You can scale an ApeCloud MySQL cluster in two ways, vertical scaling and horizontal scaling.
-
-:::note
-
-After vertical scaling or horizontal scaling is performed, KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is the KubeBlocks dynamic configuration feature. This feature simplifies the process of configuring parameters, saves time and effort and reduces performance issues caused by incorrect configuration. For detailed instructions, refer to [Configuration](./../configuration/configuration.md).
-
-:::
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: mysql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the cluster is running again and corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 3
-       resources: # Change the values of resources
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. Check whether the cluster is running again and corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu`.
-
-   ```bash
-   kbcli cluster vscale mycluster --components="mysql" --memory="4Gi" --cpu="2" -n demo
-   ```
-
-   - `--components` describes the component name ready for vertical scaling.
-   - `--memory` describes the requested and limited size of the component memory.
-   - `--cpu` describes the requested and limited size of the component CPU.
-
-2. Validate the vertical scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-     ```
-
-   - Check the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-     mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Updating   Sep 26,2024 16:01 UTC+0800
-     ```
-
-     - STATUS=Updating: it means the vertical scaling is in progress.
-     - STATUS=Running: it means the vertical scaling operation has been applied.
-     - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-
-         To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five. The scaling process includes the backup and restore of data.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-    If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. After the cluster status is `Running` again, check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.replicas` in the YAML file.
-
-   `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 1 # Change the value
-   ...
-   ```
-
-2. Check whether the corresponding cluster is running and whether resources change.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components` and `--replicas`.
-
-    ```bash
-    kbcli cluster hscale mycluster --components="mysql" --replicas=3 -n demo
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-     ```
-
-   - View the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-     - STATUS=Updating: it means horizontal scaling is in progress.
-     - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions:
-  - lastTransitionTime: "2024-09-19T04:20:26Z"
-    message: VolumeSnapshot/mycluster-mysql-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. First delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-    ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/stop-start-a-cluster.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/stop-start-a-cluster.md
deleted file mode 100644
index a0032bf5e..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/stop-start-a-cluster.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-title: Stop/Start an ApeCloud MySQL cluster
-description: How to stop/start an ApeCloud MySQL cluster
-keywords: [mysql, stop a cluster, start a cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start an ApeCloud MySQL cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again to restore it to the state it was in before it was stopped.
-
-## Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-  
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure the value of `spec.componentSpecs.replicas` as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: apecloud-mysql
-      clusterVersionRef: ac-mysql-8.0.30
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true  
-        replicas: 0 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-  
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Change the value of `spec.componentSpecs.replicas` back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: apecloud-mysql
-      clusterVersionRef: ac-mysql-8.0.30
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true
-        replicas: 3 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/switchover.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/switchover.md
deleted file mode 100644
index 730319928..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/cluster-management/switchover.md
+++ /dev/null
@@ -1,155 +0,0 @@
----
-title: Switch over an ApeCloud MySQL cluster
-description: How to switch over an ApeCloud MySQL cluster
-keywords: [mysql, switch over an apecloud cluster, switchover]
-sidebar_position: 6
-sidebar_label: Switchover
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Switch over an ApeCloud MySQL cluster
-
-You can initiate a switchover for an ApeCloud MySQL RaftGroup by executing the kbcli or kubectl command. Then KubeBlocks switches the instance roles.
-
-## Before you start
-
-* Make sure the cluster is running normally.
-  
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-   </TabItem>
-
-   </Tabs>
-* Check whether the following role probe parameters exist to verify whether the role probe is enabled.
-
-   ```bash
-   kubectl get cd apecloud-mysql -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 2
-       periodSeconds: 1
-       timeoutSeconds: 1
-   ```
-
-## Initiate the switchover
-
-You can switch over a follower of an ApeCloud MySQL RaftGroup to the leader role, and the former leader instance to a follower.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-The value of `instanceName` decides whether a new leader instance is specified for the switchover.
-
-* Initiate a switchover with no leader instance specified.
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: apecloud-mysql
-      instanceName: '*'
-  EOF
-  ```
-
-* Initiate a switchover with a specified new leader instance.
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: apecloud-mysql
-      instanceName: 'mycluster-mysql-2'
-  EOF
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* Initiate a switchover with no leader instance specified.
-
-    ```bash
-    kbcli cluster promote mycluster -n demo
-    ```
-
-* Initiate a switchover with a specified new leader instance.
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-2' -n demo
-    ```
-
-* If there are multiple components, you can use `--components` to specify a component.
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-2' --components='apecloud-mysql' -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Verify the switchover
-
-Check the instance status to verify whether the switchover is performed successfully.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get pods -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Handle an exception
-
-If an error occurs, refer to [Handle an exception](./../../handle-an-exception/handle-a-cluster-exception.md) to troubleshoot the operation.
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-apecloud-mysql/configuration/_category_.yml
deleted file mode 100644
index cf437673c..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/configuration/configuration.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/configuration/configuration.md
deleted file mode 100644
index 7c77e44e9..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/configuration/configuration.md
+++ /dev/null
@@ -1,441 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [mysql, parameter, configuration, reconfiguration]
-sidebar_position: 1
-sidebar_label: Configuration
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-This guide shows how to configure cluster parameters.
-
-From v0.9.0, KubeBlocks supports dynamic configuration. When the specification of a database instance changes (e.g. a user vertically scales a cluster), KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is because different specifications of a database instance may require different optimal configurations to optimize performance and resource utilization. When you choose a different database instance specification, KubeBlocks automatically detects it and determines the best database configuration for the new specification, ensuring optimal performance and configuration of the database under the new specifications.
-
-This feature simplifies the process of configuring parameters, which saves you from manually configuring database parameters as KubeBlocks handles the updates and configurations automatically to adapt to the new specifications. This saves time and effort and reduces performance issues caused by incorrect configuration.
-
-But it's also important to note that the dynamic parameter configuration doesn't apply to all parameters. Some parameters may require manual configuration. Additionally, if you have manually modified database parameters before, KubeBlocks may overwrite your customized configurations when updating the database configuration template. Therefore, when using the dynamic configuration feature, it is recommended to back up and record your custom configuration so that you can restore them if needed.
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-KubeBlocks supports configuring cluster parameters by editing the configuration file.
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-mysql -n demo
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `spec.configFileParams` part to configure `max_connections`.
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: mysql
-     configItemDetails:
-     - configFileParams:
-         my.cnf:
-           parameters:
-             max_connections: "600"
-       configSpec:
-         constraintRef: mysql8.0-config-constraints
-         name: mysql-consensusset-config
-         namespace: kb-system
-         templateRef: mysql8.0-config-template
-         volumeName: mysql-config
-       name: mysql-consensusset-config
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab and use relevant commands to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-KubeBlocks supports configuring cluster parameters with an OpsRequest.
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a YAML file named `mycluster-configuring-demo.yaml`. In this example, `max_connections` is configured as `600`.
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: mysql
-       configurations:
-       - keys:
-         - key: my.cnf
-           parameters:
-           - key: max_connections
-             value: "600"
-         name: mysql-consensusset-configuration
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply the configuration OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab and use relevant commands to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the details of a cluster ConfigSpecs, including config-spec name, configure file, template, and more.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-From the meta information, the cluster `mycluster` has a configuration file named `my.cnf`.
-
-You can also view the details of this configuration file and parameters.
-
-* View the details of the current configuration file.
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail -n demo
-   ```
-
-* View the parameter description.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* View the user guide of a specified parameter.
-  
-  ```bash
-  kbcli cluster explain-config mycluster --param=innodb_buffer_pool_size --config-specs=mysql-consensusset-config -n demo
-  ```
-
-  `--config-specs` is required to specify a configuration template since ApeCloud MySQL currently supports multiple templates.
-
-  <details>
-
-  <summary>Output</summary>
-
-  ```bash
-  template meta:
-    ConfigSpec: mysql-consensusset-config        ComponentName: mysql        ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     innodb_buffer_pool_size
-    Allowed Values:     [5242880-18446744073709552000]
-    Scope:              Global
-    Dynamic:            false
-    Type:               integer
-    Description:        The size in bytes of the memory buffer innodb uses to cache data and indexes of its tables  
-  ```
-  
-  </details>
-
-  * Allowed Values: It defines the valid value range of this parameter.
-  * Dynamic: The value of `Dynamic` in `Configure Constraint` defines how the parameter configuration takes effect. There are two different configuration strategies based on the effectiveness type of modified parameters, i.e. **dynamic** and **static**.
-    * When `Dynamic` is `true`, it means the effectiveness type of parameters is **dynamic** and can be configured online.
-    * When `Dynamic` is `false`, it means the effectiveness type of parameters is **static** and a pod restarting is required to make the configuration effective.
-  * Description: It describes the parameter definition.
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-The example below takes configuring `max_connections` and `innodb_buffer_pool_size` as an example.
-
-1. View the current values of `max_connections` and `innodb_buffer_pool_size`.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 167   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 134217728 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-2. Adjust the values of `max_connections` and `innodb_buffer_pool_size`.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --set=max_connections=600,innodb_buffer_pool_size=512M
-   ```
-
-   :::note
-
-   Make sure the value you set is within the Allowed Values of this parameter. If you set a value that does not meet the value range, the system prompts an error. For example,
-
-   ```bash
-   kbcli cluster configure mycluster  --set=max_connections=200,innodb_buffer_pool_size=2097152 -n demo
-   error: failed to validate updated config: [failed to cue template render configure: [mysqld.innodb_buffer_pool_size: invalid value 2097152 (out of bound >=5242880):
-    343:34
-   ]
-   ]
-   ```
-
-   :::
-
-3. Search the status of the parameter configuration.
-
-   `Status.Progress` shows the overall status of the parameter configuration and `Conditions` show the details.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-zk4b4 -n demo
-   ```
-
-   <details>
-
-   <summary>Output</summary>
-
-   ```bash
-   Spec:
-     Name: mycluster-reconfiguring-zk4b4	NameSpace: demo	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster --components=mysql --config-spec=mysql-consensusset-config --config-file=my.cnf --set innodb_buffer_pool_size=512M --set max_connections=600 --namespace=demo
-
-   Status:
-     Start Time:         Sep 19,2024 18:26 UTC+0800
-     Completion Time:    Sep 19,2024 18:26 UTC+0800
-     Duration:           3s
-     Status:             Succeed
-     Progress:           1/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                            STATUS   MESSAGE
-   Sep 19,2024 18:19 UTC+0800   WaitForProgressing   WaitForProgressing                True     wait for the controller to process the OpsRequest: mycluster-reconfiguring-zk4b4 in Cluster: mycluster
-   Sep 19,2024 18:19 UTC+0800   Validated            ValidateOpsRequestPassed          True     OpsRequest: mycluster-reconfiguring-zk4b4 is validated
-   Sep 19,2024 18:19 UTC+0800   Reconfigure          ReconfigureStarted                True     Start to reconfigure in Cluster: mycluster, Component: mysql
-   Sep 19,2024 18:19 UTC+0800   Succeed              OpsRequestProcessedSuccessfully   True     Successfully processed the OpsRequest: mycluster-reconfiguring-zk4b4 in Cluster: mycluster
-
-   Warning Events: <none>
-   ```
-
-   </details>
-
-4. Connect to the database to verify whether the parameters are configured as expected.
-
-   It takes about 30 seconds for the configuration to take effect because the kubelet requires some time to sync changes in the ConfigMap to the Pod's volume.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 600   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-  
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 536870912 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool `edit-config` to help you configure parameters in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on the notepad.
-
-The following steps take configuring MySQL Standalone as an example.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster --config-spec=mysql-consensusset-config -n demo
-   ```
-
-   :::note
-
-   * Since ApeCloud MySQL currently supports multiple templates, it is required to use `--config-spec` to specify a configuration template. You can run `kbcli cluster describe-config mycluster -n demo` to view all template names.
-   * If there are multiple components in a cluster, use `--components` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-djdfc -n demo
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. For the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
->
-component: mysql
-
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME            FILE           ENABLED   TEMPLATE                   CONSTRAINT                                RENDERED                                    COMPONENT   CLUSTER
-mysql-consensusset-config   my.cnf         true      mysql8.0-config-template   mysql8.0-config-constraints               mycluster-mysql-mysql-consensusset-config   mysql       mycluster
-vttablet-config             vttablet.cnf   true      vttablet-config-template   mysql-scale-vttablet-config-constraints   mycluster-mysql-vttablet-config             mysql       mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME            FILE     STATUS    POLICY              PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-zk4b4   mycluster   mysql       mysql-consensusset-config   my.cnf   Succeed   syncDynamicReload   1/1        Sep 19,2024 18:26 UTC+0800   {"my.cnf":"{\"mysqld\":{\"innodb_buffer_pool_size\":\"512M\",\"max_connections\":\"600\"}}"}
-mycluster-reconfiguring-djdfc   mycluster   mysql       mysql-consensusset-config   my.cnf   Succeed   syncDynamicReload   1/1        Sep 19,2024 18:31 UTC+0800   {"my.cnf":"{\"mysqld\":{\"max_connections\":\"610\"}}"}                     
-```
-
-From the above results, there are three parameter modifications.
-
-Compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-zk4b4 mycluster-reconfiguring-djdfc -n demo
->
-DIFF-CONFIGURE RESULT:
-  ConfigFile: my.cnf    TemplateName: mysql-consensusset-config ComponentName: mysql    ClusterName: mycluster       UpdateType: update      
-
-PARAMETERNAME             MYCLUSTER-RECONFIGURING-ZK4B4   MYCLUSTER-RECONFIGURING-DJDFC  
-max_connections           600                             610                                        
-innodb_buffer_pool_size   512M                            512M
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/high-availability/_category_.yml b/docs/user_docs/kubeblocks-for-apecloud-mysql/high-availability/_category_.yml
deleted file mode 100644
index 8ce89efb2..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: High Availability
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/high-availability/high-availability.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/high-availability/high-availability.md
deleted file mode 100644
index 31058260d..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/high-availability/high-availability.md
+++ /dev/null
@@ -1,401 +0,0 @@
----
-title: Failure simulation and automatic recovery
-description: Automatic recovery of cluster
-keywords: [mysql, high availability, failure simulation, automatic recovery]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Failure simulation and automatic recovery
-
-As an open-source data management platform, Kubeblocks currently supports over thirty database engines and is continuously expanding. Due to the varying high availability capabilities of databases, KubeBlocks has designed and implemented a high availability (HA) system for database instances. The KubeBlocks HA system uses a unified HA framework to provide high availability for databases, allowing different databases on KubeBlocks to achieve similar high availability capabilities and experiences.
-
-This tutorial uses ApeCloud MySQL RaftGroup Cluster as an example to demonstrate its fault simulation and recovery capabilities.
-
-## Recovery simulation
-
-:::note
-
-The faults here are all simulated by deleting a pod. When there are sufficient resources, the fault can also be simulated by machine downtime or container deletion, and its automatic recovery is the same as described here.
-
-:::
-
-### Before you start
-
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Create an ApeCloud MySQL RaftGroup, refer to [Create a MySQL cluster](./../cluster-management/create-and-connect-an-apecloud-mysql-cluster.md).
-* Run `kubectl get cd apecloud-mysql -o yaml` to check whether _rolechangedprobe_ is enabled in the ApeCloud MySQL RaftGroup (it is enabled by default). If the following configuration exists, it indicates that it is enabled:
-
-  ```bash
-  probes:
-    roleProbe:
-      failureThreshold: 2
-      periodSeconds: 1
-      timeoutSeconds: 1
-  ```
-
-### Leader pod fault
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the pod role of the ApeCloud MySQL RaftGroup Cluster. In this example, the leader pod's name is `mycluster-mysql-1`.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_pod](./../../../img/api-ha-grep-role.png)
-2. Delete the leader pod `mycluster-mysql-1` to simulate a pod fault.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 -n demo
-    ```
-
-    ![delete_pod](./../../../img/api-ha-delete-leader-pod.png)
-3. Check the status of the pods and RaftGroup Cluster connection.
-
-    The following example shows that the roles of pods have changed after the old leader pod was deleted and `mycluster-mysql-0` is elected as the new leader pod.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_after](./../../../img/api-ha-delete-leader-pod-after.png)
-
-    Connect to this cluster to check the pod roles and status. This cluster can be connected within seconds.
-
-    ```bash
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-    >
-    root
-
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-    >
-    pt2mmdlp4
-
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_cluster_after](./../../../img/api-ha-leader-pod-connect-check.png)
-
-***How the automatic recovery works***
-
-After the leader pod is deleted, the ApeCloud MySQL RaftGroup Cluster elects a new leader. In this example, `mycluster-mysql-0` is elected as the new leader. KubeBlocks detects that the leader has changed, and sends a notification to update the access link. The original exception node automatically rebuilds and recovers to the normal RaftGroup Cluster state. It normally takes 30 seconds from exception to recovery.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the ApeCloud MySQL RaftGroup information. View the leader pod name in `Topology`. In this example, the leader pod's name is `mycluster-mysql-2`.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_cluster.png)
-2. Delete the leader pod `mycluster-mysql-2` to simulate a pod fault.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_pod](./../../../img/failure_simulation_delete_pod.png)
-3. Run `kbcli cluster describe` and `kbcli cluster connect` to check the status of the pods and RaftGroup connection.
-
-    ***Results***
-
-    The following example shows that the roles of pods have changed after the old leader pod was deleted and `mycluster-mysql-1` is elected as the new leader pod.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster_after](./../../../img/failure_simulation_describe_cluster_after.png)
-    It shows that this ApeCloud MySQL RaftGroup can be connected within seconds.
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_cluster_after](./../../../img/failure_simulation_connect_cluster_after.png)
-
-***How the automatic recovery works***
-
-After the leader pod is deleted, the ApeCloud MySQL RaftGroup Cluster elects a new leader. In this example, `mycluster-mysql-1` is elected as the new leader. KubeBlocks detects that the leader has changed, and sends a notification to update the access link. The original exception node automatically rebuilds and recovers to the normal RaftGroup Cluster state. It normally takes 30 seconds from exception to recovery.
-
-</TabItem>
-
-</Tabs>
-
-### Single follower pod exception
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the pod role again and in this example, the follower pods are `mycluster-mysql-1` and `mycluster-mysql-2`.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-ha-grep-role-single-follower-pod.png)
-2. Delete the follower pod `mycluster-mysql-1`.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 -n demo
-    ```
-
-    ![delete_follower_pod](./../../../img/api-ha-single-follower-pod-delete.png)
-3. Open another terminal page and view the pod status. You can find the follower pod `mycluster-mysql-1` is `Terminating`.
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![view_cluster_follower_status](./../../../img/api-delete-single-follower-pod-status.png)
-
-    View the pod roles again.
-
-    ![describe_cluster_follower](./../../../img/api-ha-single-follower-pod-grep-role-after.png)
-
-4. Connect to this cluster and you can find this single follower exception doesn't affect the R/W of the cluster.
-
-    ```bash
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_cluster_follower](./../../../img/api-ha-connect-single-follower-pod.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the ApeCloud MySQL RaftGroup information and view the follower pod name in `Topology`. In this example, the follower pods are `mycluster-mysql-0` and m`mycluster-mysql-2`.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_cluster_after.png)
-2. Delete the follower pod `mycluster-mysql-0`.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 -n demo
-    ```
-
-    ![delete_follower_pod](./../../../img/failure_simulation_delete_follower_pod.png)
-3. View the RaftGroup status and you can find the follower pod is being terminated.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster_follower](./../../../img/failure_simulation_describe_cluster_follower.png)
-4. Connect to the RaftGroup and you can find this single follower exception doesn't affect the R/W of the cluster.
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_cluster_follower](./../../../img/failure_simulation_connect_cluster_follower.png)
-
-</TabItem>
-
-</Tabs>
-
-***How the automatic recovery works***
-
-One follower exception doesn't trigger re-electing of the leader or access link switch, so the R/W of the cluster is not affected. Follower exception triggers recreation and recovery. The process takes no more than 30 seconds.
-
-### Two pods exception
-
-The availability of the cluster generally requires the majority of pods to be in a normal state. When most pods are exceptional, the original leader will be automatically downgraded to a follower. Therefore, any two exceptional pods result in only one follower pod remaining.
-
-In this way, whether exceptions occur to one leader and one follower or two followers, failure performance and automatic recovery are the same.
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the pod role again. In this example, the follower pods are `mycluster-mysql-1` and `mycluster-mysql-2`.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-ha-two-pods-grep-role.png)
-2. Delete these two follower pods.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_two_pods](./../../../img/api-ha-two-pod-get-status.png)
-3. Open another terminal page and view the pod status. You can find the follower pods `mycluster-mysql-1` and `mycluster-mysql-2` is `Terminating`.
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![view_cluster_follower_status](./../../../img/api-ha-two-pod-get-status.png)
-
-    View the pod roles and you can find a new leader pod is selected.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_follower](./../../../img/api-ha-two-pods-grep-role-after.png)
-
-4. Connect to this cluster after a few seconds and you can find the pods in the RaftGroup Cluster work normally again.
-
-    ```bash
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_two_pods](./../../../img/api-ha-two-pods-connect-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the ApeCloud MySQL RaftGroup information and view the follower pod name in `Topology`. In this example, the follower pods are `mycluster-mysql-0` and `mycluster-mysql-2`.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_cluster_2.png)
-2. Delete these two follower pods.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_two_pods](./../../../img/failure_simulation_delete_two_pods.png)
-3. View the RaftGroup status and you can find the follower pods are pending and a new leader pod is selected.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_two_pods](./../../../img/failure_simulation_describe_two_pods.png)
-4. Run `kbcli cluster connect mycluster` again after a few seconds and you can find the pods in the RaftGroup work normally again.
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_two_pods](./../../../img/failure_simulation_connect_two_pods.png)
-
-</TabItem>
-
-</Tabs>
-
-***How the automatic recovery works***
-
-When two pods of the ApeCloud MySQL RaftGroup are exceptional, pods are unavailable and cluster R/W is unavailable. After the recreation of pods, a new leader is elected to recover to R/W status. The process takes less than 30 seconds.
-
-### All pods exception
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the role of pods.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-ha-all-pods-grep-role.png)
-2. Delete all pods.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_three_pods](./../../../img/api-ha-all-pods-delete.png)
-3. Open another terminal page and view the pod status. You can find the pods are terminating.
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![describe_three_clusters](./../../../img/api-ha-all-pods-get-status.png)
-4. Run the command below to view the pod status. After a few seconds, you can find all pods are running again and a new leader is selected.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_follower](./../../../img/api-ha-all-pods-grep-role-after.png)
-5. Connect to the cluster and the connection works normally again.
-
-    ```bash
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_three_clusters](./../../../img/api-ha-all-pods-connect-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Run the command below to view the ApeCloud MySQL RaftGroup information and view the pods' names in `Topology`.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_two_pods.png)
-2. Delete all pods.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_three_pods](./../../../img/failure_simulation_delete_three_pods.png)
-3. Run the command below to view the cluster and pod status. After a few seconds, you can find all pods are running again and a new leader is selected.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_three_clusters](./../../../img/failure_simulation_describe_three_pods.png)
-4. Connect to the cluster and the connection works normally again.
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_three_clusters](./../../../img/failure_simulation_connect_three_pods.png)
-
-</TabItem>
-
-</Tabs>
-
-***How the automatic recovery works***
-
-Every time the pod is deleted, recreation is triggered. And then ApeCloud MySQL automatically completes the cluster recovery and the election of a new leader. After the election of the leader is completed, KubeBlocks detects the new leader and updates the access link. This process takes less than 30 seconds.
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/kubeblocks-for-apecloud-mysql.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/kubeblocks-for-apecloud-mysql.md
deleted file mode 100644
index 940498eac..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/kubeblocks-for-apecloud-mysql.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: KubeBlocks for ApeCloud MySQL
-description: Feature list of KubeBlocks for ApeCloud MySQL
-keywords: [apecloud, mysql, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for ApeCloud MySQL
-
-This tutorial illustrates how to create and manage an ApeCloud MySQL cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/apecloud-mysql).
-
-* [Introduction](./apecloud-mysql-intro/apecloud-mysql-intro.md)
-* [Cluster Management](./cluster-management/create-and-connect-an-apecloud-mysql-cluster.md)
-* [Configuration](./configuration/configuration.md)
-* [High Availability](./high-availability/high-availability.md)
-* [Proxy](./proxy/introduction.md)
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/_category_.yml b/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/_category_.yml
deleted file mode 100644
index 0f245c32f..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 8
-label: Proxy
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/apecloud-mysql-proxy.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/apecloud-mysql-proxy.md
deleted file mode 100644
index 36bad44c3..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/apecloud-mysql-proxy.md
+++ /dev/null
@@ -1,723 +0,0 @@
----
-title: How to use ApeCloud MySQL Proxy Cluster
-description: ApeCloud MySQL Proxy Cluster tutorial
-keywords: [apecloud mysql proxy, proxy]
-sidebar_position: 2
-sidebar_label: ApeCloud MySQL Proxy Cluster
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# ApeCloud MySQL Proxy
-
-## Before you start
-
-1. [Install kbcli](./../../installation/install-kbcli.md).
-2. [Install Helm](https://helm.sh/docs/intro/install/).
-3. Install KubeBlocks.
-
-   You can run `kbcli playground init` to install a k3d cluster and KubeBlocks. For details, refer to [Try KubeBlocks on your laptop](./../../try-out-on-playground/try-kubeblocks-on-your-laptop.md) or [Try KubeBlocks on cloud](./../../try-out-on-playground/try-kubeblocks-on-cloud.md).
-
-   ```bash
-   kbcli playground init
-
-   # Use --version to specify a version
-   kbcli playground init --version='x.y.z'
-   ```
-
-   Or if you already have a Kubernetes cluster, you can [install KubeBlocks](./../../installation/install-kubeblocks.md) directly.
-4. Prepare an ApeCloud MySQL RaftGroup named `mycluster` for demonstrating how to enable the proxy function for an existing cluster. Refer to [Create a MySQL cluster](./../cluster-management/create-and-connect-an-apecloud-mysql-cluster.md) for details.
-
-## Create a Proxy Cluster
-
-It is recommended to use kbcli to create an ApeCloud MySQL Proxy Cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Add the KubeBlocks repository.
-
-   ```bash
-   helm repo add kubeblocks https://apecloud.github.io/helm-charts
-   ```
-
-2. View the repository list to verify whether the KubeBlocks repository is added successfully.
-
-   ```bash
-   helm repo list
-   ```
-
-3. Run the update command to make sure you have added the latest version.
-
-   ```bash
-   helm repo update
-   ```
-
-4. Install etcd to create the external service reference.
-
-   1. View all versions of etcd.
-
-       ```bash
-       helm search repo kubeblocks/etcd --devel --versions
-       ```
-
-   2. Install the etcd Addon.
-
-       ```bash
-       helm install etcd kubeblocks/etcd --version=v0.6.5
-       ```
-
-   3. Install the etcd cluster.
-
-       ```bash
-       helm install etcd-cluster kubeblocks/etcd-cluster 
-       ```
-
-   4. view the status of the etcd cluster and make sure it is running.
-
-       ```bash
-       kubectl get cluster
-       >
-       NAME           CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS      AGE
-       etcd-cluster   etcd                 etcd-v3.5.6   Halt                 Running     10s
-       ```
-
-   5. View the service address of this etcd cluster.
-
-       ```bash
-       kubectl get service
-       >
-       NAME                             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                  AGE
-       etcd-cluster-etcd                ClusterIP   10.110.23.89   <none>        2379/TCP                                                 55s
-       etcd-cluster-etcd-headless       ClusterIP   None           <none>        2379/TCP,2380/TCP,3501/TCP,50001/TCP                     55s
-       kubernetes                       ClusterIP   10.96.0.1      <none>        443/TCP                                                  13m
-       ```
-
-       You can combine the service address to get the endpoint or you can use the IP of the service address as the access address. 
-
-       Here is an example of combining the service address.
-
-       ```bash
-       etcd-cluster-etcd.default.svc.cluster.local:2379
-       ```
-
-5. Create an ApeCloud MySQL Proxy Cluster.
-   1. View all versions of ApeCloud MySQL Proxy.
-
-       ```bash
-       helm search repo kubeblocks/apecloud-mysql --devel --versions
-       ```
-
-   2. (Optional) If you disable the `apecloud-mysql` Addon when installing KubeBlocks, run the command below to specify a version and install the cluster definition of ApeCloud MySQL. Skip this step if you install KubeBlocks with the default settings.
-
-       ```bash
-       helm install myproxy kubeblocks/apecloud-mysql --version=v0.9.0
-       ```
-
-   3. Create an ApeCloud MySQL Proxy Cluster.
-
-       ```bash
-       helm install myproxy kubeblocks/apecloud-mysql-cluster --version=v0.9.0 --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-       ```
-
-:::note
-
-If you only have one node for deploying a RaftGroup Cluster, set the `extra.availabilityPolicy` as `none` when creating a RaftGroup Cluster.
-
-```bash
-helm install myproxy kubeblocks/apecloud-mysql-cluster --version=v0.9.0 --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379" --set extra.availabilityPolicy=none
-```
-
-:::
-
-6. Check the status of the clusters.
-
-   ```bash
-   kubectl get cluster
-
-   kubectl get pods
-   ```
-
-   You can also enter the etcd container or wesql-scale container to view the configuration of wesql-scale or to check the availability of the etcd service.
-
-   ```bash
-   etcdctl --endpoints=http://etcd-cluster-etcd.default.svc.cluster.local:2379 get /vitess --prefix --keys-only
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Enable the etcd Addon and create an etcd cluster.
-
-   1. Install and enable the etcd Addon. You need to install the etcd Addon first since the etcd Addon is not installed by default. Refer to [Addons installation tutorial](./../../installation/install-addons.md) for details.
-
-       ```bash
-       # 1. Check whether the KubeBlocks Addon index is added
-       kbcli addon index list
-
-       # If the list is empty, add the index
-       kbcli addon index add kubeblocks https://github.com/apecloud/block-index.git
-
-       # 2. Search the etcd Addon
-       kbcli addon search etcd
-
-       # 3. Install the etcd Addon
-       kbcli addon install etcd --index kubeblocks --version 0.9.2
-
-       # 4. Enable the etcd Addon
-       kbcli addon enable etcd
-
-       # 5. Check whether the etcd Addon is enabled.
-       kbcli addon list
-       ```
-
-   2. Create an etcd cluster.
-
-       ```bash
-       kbcli cluster create myetcd --cluster-definition etcd
-       ```
-
-   3. Check the status of the etcd service
-
-       ```bash
-       kbcli cluster list myetcd
-       ```
-
-2. View the etcd service address or the etcd pod address.
-
-   ```bash
-   kubectl get service
-   >
-   NAME                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                  AGE
-   kubernetes                       ClusterIP   10.96.0.1        <none>        443/TCP                                                  85d
-   myetcd-etcd                      ClusterIP   10.101.227.143   <none>        2379/TCP                                                 111s
-   myetcd-etcd-headless             ClusterIP   None             <none>        2379/TCP,2380/TCP,3501/TCP,50001/TCP                     111s
-   ```
-
-3. Create an ApeCloud MySQL Proxy cluster.
-
-    ```bash
-    helm repo add kubeblocks https://apecloud.github.io/helm-charts
-
-    helm install myproxy kubeblocks/apecloud-mysql-cluster --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-    ```
-
-4. Check the status of the clusters.
-
-   ```bash
-   kbcli get cluster
-
-   kbcli get pods
-   ```
-
-   You can also enter the etcd container or wesql-scale container to view the configuration of wesql-scale or to check the availability of the etcd service.
-
-   ```bash
-   etcdctl --endpoints=http://etcd-cluster-etcd.default.svc.cluster.local:2379 get /vitess --prefix --keys-only
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Enable/Disable Proxy dynamically
-
-As its name suggests, ApeCloud MySQL Proxy in nature is a database proxy. An ApeCloud MySQL RaftGroup Cluster that already exists can be switched to an ApeCloud MySQL Proxy Cluster by setting `proxyEnabled=true`.
-
-```bash
-helm upgrade mycluster kubeblocks/apecloud-mysql-cluster --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-```
-
-If you want to disable proxy, run the command below.
-
-```bash
-helm upgrade mycluster kubeblocks/apecloud-mysql-cluster --set mode=raftGroup
-```
-
-## Connect Proxy Cluster
-
-ApeCloud MySQL Proxy is routed through the `vtgate` component, and the way the MySQL Server accesses `vtgate` is similar to the way of accessing `mysqld`. The external SQL access address provided by ApeCloud MySQL Proxy is the `vtgate` address and port. The `vtgate` address created by KubeBlocks by default is `myproxy-cluster-vtgate-headless`, and the port number is `15306`. You can visit ApeCloud MySQL Proxy through the MySQL Server in any pod under the same namespace as ApeCloud MySQL Proxy.
-
-### Connect Proxy Cluster by VTGate
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Expose the port of VTGate to the localhost so that the localhost can access the Proxy.
-
-   ```bash
-   kubectl port-forward svc/vt-vtgate-headless 15306:15306
-   ```
-
-2. Connect to the cluster.
-
-   ```bash
-   mysql -h 127.0.0.1 -P 15306
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-Run the command below to connect to the Proxy Cluster.
-
-```bash
-kbcli cluster connect myproxy --components vtgate
-```
-
-</TabItem>
-
-</Tabs>
-
-### Connect Proxy Cluster by MySQL Server
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Expose the port of the MySQL Server to the localhost so that the localhost can access the MySQL Server.
-
-   ```bash
-   kubectl port-forward svc/vt-mysql 3306:3306
-   ```
-
-2. Connect to the cluster.
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-Run the command below to connect to the MySQL Server.
-
-```bash
-kbcli cluster connect myproxy
-```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-If you need to test the failover of MySQL, you need to delete the Pod first and continue to port-forward the port, and you can also write a shell script. Here are examples.
-
-For VTGate,
-
-```bash
-while true; do date; kubectl port-forward svc/vt-vtgate-headless 15306:15306; sleep 0.5; done
-```
-
-For the MySQL Server,
-
-```bash
-while true; do date; kubectl port-forward svc/vt-mysql 3306:3306; sleep 0.5; done
-```
-
-:::
-
-## Configure Proxy Cluster parameters
-
-<Tabs>
-
-<TabItem value="Edit Config File" label="Edit Config File" default>
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io myproxy-vtgate
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `spec.configFileParams` part to configure `max_connections`.
-
-   ```yaml
-   spec:
-     clusterRef: myproxy
-     componentName: vtgate
-     configItemDetails:
-     - configFileParams:
-         vtgate.cnf:
-           parameters:
-             healthcheck_timeout: "5s"
-       configSpec:
-         constraintRef: mysql-scale-vtgate-config-constraints
-         name: vtgate-config
-         namespace: kb-system
-         templateRef: vtgate-config-template
-         volumeName: mysql-scale-config
-       name: vtgate-config
-       payload: {}
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Expose the port of the MySQL Server to the localhost so that the localhost can access the MySQL Server.
-
-      ```bash
-      kubectl port-forward svc/vt-vtgate-headless 15306:15306
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      mysql -h 127.0.0.1 -P 3306
-
-      >
-      mysql> show variables like 'healthcheck_timeout';
-      +---------------------+-------+
-      | Variable_name       | Value |
-      +---------------------+-------+
-      | healthcheck_timeout |  5s   |
-      +---------------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-* An example of configuring VTTablet
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: acmysql-vttablet-reconfiguring
-      namespace: default
-    spec:
-      clusterName: acmysql-cluster
-      force: false
-      reconfigure:
-        componentName: mysql
-        configurations:
-          - keys:
-              - key: vttablet.cnf
-                parameters:
-                  - key: health_check_interval
-                    value: 4s
-            name: vttablet-config
-      preConditionDeadlineSeconds: 0
-      type: Reconfiguring
-    ```
-
-* An example of configuring VTGate
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: acmysql-vtgate-reconfiguring
-      namespace: default
-    spec:
-      clusterName: acmysql-cluster
-      force: false
-      reconfigure:
-        componentName: vtgate
-        configurations:
-        - keys:
-          - key: vtgate.cnf
-            parameters:
-            - key: healthcheck_timeout
-              value: 2s
-          name: vtgate-config
-      preConditionDeadlineSeconds: 0
-      type: Reconfiguring
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-VTGate, VTConsensus, and VTTablet support parameter configuration. You can configure VTGate and VTConsensus by using `--components` to specify a component and configure VTTablet by using `--components=mysql --config-specs=vttablet-config` to specify both a component and a configuration file template since VTTablet is the sidecar of the MySQL component.
-
-### View parameter details
-
-* View the details of the current configuration file.
-
-   ```bash
-   # vtgate
-   kbcli cluster describe-config myproxy --components vtgate --show-detail
-   
-   # vtcontroller
-   kbcli cluster describe-config myproxy --components vtcontroller --show-detail
-   
-   # vttablet
-   kbcli cluster describe-config myproxy --components mysql --show-detail --config-specs vttablet-config
-   ```
-
-* View the parameter descriptions.
-
-   ```bash
-   # vtgate
-   kbcli cluster explain-config myproxy --components vtgate
-
-   # vttablet
-   kbcli cluster explain-config myproxy --components mysql --config-specs=vttablet-config
-   ```
-
-* View the definition of a specified parameter.
-
-   ```bash
-   kbcli cluster explain-config myproxy --components vtgate --param=healthcheck_timeout
-   ```
-
-### Reconfigure parameters
-
-1. View the current values in the MySQL Server.
-
-   ```bash
-   kbcli cluster connect myproxy --components=vtgate
-   ```
-
-   ```bash
-   mysql> show variables like '%healthcheck_timeout%';
-   ```
-
-   ```bash
-   mysql> show variables like '%health_check_interval%';
-   ```
-
-2. Configure the `healthcheck_timeout` for VTGate and the `health_check_interval` for VTTablet.
-
-   You can use `--set` flag or edit the parameter configuration file to edit values.
-
-   * By using `--set` flag
-
-      ```bash
-      # vtgate
-      kbcli cluster configure myproxy --components vtgate --set=healthcheck_timeout=2s
-
-      # vttablet
-      kbcli cluster configure myproxy --set=health_check_interval=4s --components=mysql --config-spec=vttablet-config
-      ```
-
-   * By editing the parameter configuration file
-
-      ```bash
-      kbcli cluster edit-config myproxy --components vtgate
-      ```
-
-    :::note
-
-    After the `vtgate` parameter values configuration command is executed, a new vtgate Pod is started and the old vtgate Pod is terminated. You can run the command below to monitor whether the old Pod is terminated.
-
-    ```bash
-    kubectl get pod <vtgate-pod-name> -w
-    ```
-
-    :::
-
-3. Use the output command to view the configuration status. For example,
-
-   ```bash
-   kbcli cluster describe-ops myproxy -reconfiguring-lth8d -n default
-   ```
-
-   :::note
-
-   For more information about parameter configuration, refer to [Configuration](./../configuration/configuration.md).
-
-   :::
-
-</TabItem>
-
-</Tabs>
-
-## Log
-
-You can view the log files of components, Pods, and containers by both kbcli and kubectl.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-View the log of VTGate.
-
-```bash
-kubectl logs myproxy-cluster-vtgate-8659d5db95-4dzt5
-```
-
-View the log of VTTablet and `-c` is required.
-
-```bash
-kubectl logs myproxy-cluster-mysql-0 -c vttablet
-```
-
-Enter the container and view more logs of VTGate.
-
-```bash
-kubectl exec -it myproxy-cluster-vtgate-8659d5db95-4dzt5 -- bash
-ls /vtdataroot
-```
-
-Enter the container and view more logs of VTTablet.
-
-```bash
-kubectl exec -it myproxy-cluster-mysql-0  -c vttablet -- bash
-ls /vtdataroot
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-View the log of different components.
-
-```bash
-kbcli cluster list-logs myproxy
-kbcli cluster list-logs myproxy --components vtgate
-kbcli cluster list-logs myproxy --components vtcontroller
-kbcli cluster list-logs myproxy --components mysql
-```
-
-View the log of a Pod.
-
-```bash
-kbcli cluster logs myproxy --instance myproxy-vtgate-85bdcf99df-wbmnl
-```
-
-View the log of a container in a Pod.
-
-```bash
-kbcli cluster logs myproxy --instance myproxy-mysql-0 -c vttablet
-```
-
-</TabItem>
-
-</Tabs>
-
-## Read-write splitting
-
-You can enable the read-write splitting function.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io myproxy-vtgate
-   ```
-
-2. Configure `read_write_splitting_policy` as `random`. 
-
-   ```yaml
-   spec:
-     clusterRef: myproxy
-     componentName: vtgate
-     configItemDetails:
-     - configFileParams:
-         vtgate.cnf:
-           parameters:
-             read_write_splitting_policy: "random"
-       configSpec:
-         constraintRef: mysql-scale-vtgate-config-constraints
-         name: vtgate-config
-         namespace: kb-system
-         templateRef: vtgate-config-template
-         volumeName: mysql-scale-config
-       name: vtgate-config
-       payload: {}
-   ```
-
-You can also set the ratio for read-write splitting and here is an example of directing 70% flow to the read-only node.
-
-```yaml
-spec:
-   clusterRef: myproxy
-   componentName: vtgate
-   configItemDetails:
-   - configFileParams:
-      vtgate.cnf:
-         parameters:
-            read_write_splitting_rati: "70"
-      configSpec:
-      constraintRef: mysql-scale-vtgate-config-constraints
-      name: vtgate-config
-      namespace: kb-system
-      templateRef: vtgate-config-template
-      volumeName: mysql-scale-config
-      name: vtgate-config
-      payload: {}
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster configure myproxy --components vtgate --set=read_write_splitting_policy=random
-```
-
-You can also set the ratio for read-write splitting and here is an example of directing 70% flow to the read-only node.
-
-```bash
-kbcli cluster configure myproxy --components vtgate --set=read_write_splitting_ratio=70
-```
-
-Moreover, you can run `show workload` in the VTGate terminal to view the flow distribution.
-
-```bash
-show workload;
-```
-
-</TabItem>
-
-</Tabs>
-
-## Transparent failover
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io myproxy-vtgate
-   ```
-
-2. Configure `enable_buffer` as `true`.
-
-   ```yaml
-   spec:
-     clusterRef: myproxy
-     componentName: vtgate
-     configItemDetails:
-     - configFileParams:
-         vtgate.cnf:
-           parameters:
-             enable_buffer: "true"
-       configSpec:
-         constraintRef: mysql-scale-vtgate-config-constraints
-         name: vtgate-config
-         namespace: kb-system
-         templateRef: vtgate-config-template
-         volumeName: mysql-scale-config
-       name: vtgate-config
-       payload: {}
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-Run the command below to implement transparent failover.
-
-```bash
-kbcli cluster configure myproxy --components vtgate --set=enable_buffer=true
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/introduction.md b/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/introduction.md
deleted file mode 100644
index 08ba1593c..000000000
--- a/docs/user_docs/kubeblocks-for-apecloud-mysql/proxy/introduction.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: Introduction
-description: Introduction to ApeCloud MySQL Proxy
-keywords: [introduction, proxy]
-sidebar_position: 1
-sidebar_label: Introduction
----
-
-# Introduction
-
-A database proxy is an essential tool for developers and database administrators to improve the scalability, performance, security, and resilience of their applications.
-
-ApeCloud MySQL Proxy is a database proxy designed to be highly compatible with MySQL. It supports the MySQL wire protocol, read-write splitting without stale reads, connection pooling, and transparent failover. This section introduces ApeCloud MySQL Proxy, explaining its architecture, key features, and benefits.
-
-## Architecture
-
-ApeCloud MySQL Proxy is a fork of the Vitess project and the support for sharding is removed in exchange for better SQL compatibility, for example, better support for subqueries, Common Table Expressions (CTE) and expression evaluation. The below graph displays the architecture of a proxy cluster.
-
-**VTGate**: Client application usually connects to VTGate via standard MySQL wire protocol. VTGate is stateless, which means it can be easily and effectively scaled in terms of size and performance. It acts like a MySQL and is responsible for parsing SQL queries, as well as planning and routing queries to VTTables.
-
-**VTTablet**: Typically, VTTablet is implemented as a sidecar for MySQL. If ApeCloud MySQL Proxy is deployed in Kubernetes, VTTablet should be in the same pod as MySQL. VTTablet accepts gRPC requests from VTGate and then sends those queries to be executed on MySQL. The VTTablet takes care of a few tasks such as permission checking and logging, but its most critical role is to ensure proper connection pooling.
-
-**VTController**: The VTController component facilitates service discovery between VTGate and VTTablet, while also enabling them to store metadata of the cluster. If the role of MySQL changes, for example, from leaders to followers, the corresponding role of VTTablet should change accordingly. VTController checks the status of the MySQL cluster and sends commands to VTTablet to request that it changes roles.
-
-![ApeCloud MySQL Proxy architecture](./../../../img/proxy-architecture.png)
-
-## Connection pooling
-
-Database connections consume memory, and to ensure that the buffer pool has enough memory, databases restrict the value of 'max_connections'. As applications are generally stateless and may need to rapidly scale out, a large number of connections may be created, which can easily overload your database. So, these kinds of applications are not suitable for directly connecting to the MySQL server and creating a connection pool.
-
-Applications can create as many connections as they require with ApeCloud MySQL Proxy, without any concern about 'max_connection' errors. Because ApeCloud MySQL Proxy takes over the establishment of a connection pool to the database, allowing applications to share and reuse connections at the MySQL server side. This reduces the memory and CPU overheads associated with opening and closing connections on the MySQL server side, improving scalability and performance.
-
-## Read-Write splitting
-
-Using read-only nodes can significantly reduce the workload on the primary database node and improve resource utilization. However, managing multiple read-only nodes and deciding when to use each can be challenging for applications. ApeCloud MySQL Proxy addresses this issue by offering three essential features: read-write splitting, read-after-write consistency, and load-balancing. These features make it easier for applications to take advantage of read-only nodes effectively.
-
-**Read-Write Split**: ApeCloud MySQL Proxy simplifies application logic by automatically routing read queries to read-only nodes and write queries to the primary node. This is achieved by parsing and analyzing SQL statements, which improves load balancing and ensures efficient use of available resources.
-
-**Read-After-Write Consistency**: This feature works in conjunction with read-write splitting to maintain data consistency while still benefiting from performance improvements. When an application writes data to the primary node and subsequently reads it on a read-only node, ApeCloud MySQL Proxy makes sure that the data that was just written to the primary node can be accessed and read from the read-only node.
-
-**Load-Balancing**: ApeCloud MySQL Proxy helps manage read-only nodes by routing queries to the appropriate node using various load balancing policies. This ensures that the workload is evenly distributed across all available nodes, optimizing performance and resource utilization.
-
-## Transparent failover
-
-Failover is a feature designed to ensure that if the original database instance becomes unavailable, it is replaced with another instance and remains highly available. Various factors can trigger a failover event, including issues with the database instance or scheduled maintenance procedures like database upgrades.
-
-Without ApeCloud MySQL Proxy, a failover requires a short period of downtime. Existing connections to the database are disconnected and need to be reopened by your application. ApeCloud MySQL Proxy is capable of automatically detecting failovers and buffering application SQL in its memory while keeping application connections intact, thus enhancing application resilience in the event of database failures.
-
-There is no way to completely solve the application-side connection error problem. However, the proxy is stateless and can be deployed with multiple nodes for high availability. Moreover, restart/recovery is usually way faster than the database, as it does not need to recover from the undo-redo log.
diff --git a/docs/user_docs/kubeblocks-for-elasticsearch/_category_.yml b/docs/user_docs/kubeblocks-for-elasticsearch/_category_.yml
deleted file mode 100644
index 0d135e18a..000000000
--- a/docs/user_docs/kubeblocks-for-elasticsearch/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 20
-label: KubeBlocks for Elasticsearch
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/kubeblocks-for-elasticsearch/manage-elasticsearch.md b/docs/user_docs/kubeblocks-for-elasticsearch/manage-elasticsearch.md
deleted file mode 100644
index 76e213679..000000000
--- a/docs/user_docs/kubeblocks-for-elasticsearch/manage-elasticsearch.md
+++ /dev/null
@@ -1,988 +0,0 @@
----
-title: Manage Elasticsearch with KubeBlocks
-description: How to manage Elasticsearch on KubeBlocks
-keywords: [elasticsearch]
-sidebar_position: 1
-sidebar_label: Manage Elasticsearch with KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Manage Elasticsearch with KubeBlocks
-
-Elasticsearch is a distributed, RESTful search and analytics engine that is capable of solving an ever-growing number of use cases. As the heart of the Elastic Stack, Elasticsearch stores your data centrally, allowing you to search it quickly, tune relevancy, perform sophisticated analytics, and easily scale.
-
-KubeBlocks supports the management of Elasticsearch. This tutorial illustrates how to create and manage an Elasticsearch cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples and guides in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/elasticsearch).
-
-## Before you start
-
-- [Install kbcli](./../installation/install-kbcli.md) if you want to manage your Elasticsearch cluster with `kbcli`.
-- [Install KubeBlocks](./../installation/install-kubeblocks.md).
-- [Install and enable the elasticsearch Addon](./../installation/install-addons.md).
-- To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-## Create a cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating an Elasticsearch cluster with multiple nodes. For more examples, refer to [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/elasticsearch).
-
-If you only have one node for deploying a cluster with multiple nodes, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: es-multinode
-  namespace: default
-  annotations:
-    kubeblocks.io/extra-env: '{"master-roles":"master", "data-roles": "data", "ingest-roles": "ingest", "transform-roles": "transform"}'
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: master
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: data
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: ingest
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: transform
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-EOF
-```
-
-| Field                                 | Definition  |
-|---------------------------------------|--------------------------------------|
-| `metadata.annotations` | It specifies the Elasticsearch cluster type. |
-| `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](#termination-policy). |
-| `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-| `spec.componentSpecs.componentDef`    | It specifies the ComponentDefinition custom resource (CR) that defines the Component's characteristics and behavior. |
-| `spec.componentSpecs.serviceVersion`  | It specifies the version of the Service expected to be provisioned by this Component. |
-| `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-| `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-| `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-| `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster with `kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo`.
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-Run the following command to see the created Elasticsearch cluster object:
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-***Steps***
-
-1. Execute the following command to create an Elasticsearch cluster with multiple nodes.
-
-   ```bash
-   kbcli cluster create elasticsearch mycluster -n demo
-   ```
-
-   If you want to customize your cluster specifications, kbcli provides various options, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-  
-   ```bash
-   kbcli cluster create elasticsearch --help
-
-   kbcli cluster create elasticsearch -h
-   ```
-
-   If you only have one node for deploying a cluster with multiple nodes and replicas, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create elasticsearch mycluster \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Check whether the cluster is created.
-
-   ```bash
-   kbcli cluster list
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS     CREATED-TIME
-   mycluster   demo                                       Delete               Creating   Sep 27,2024 11:42 UTC+0800  
-   ```
-
-3. Check the cluster details.
-
-   ```bash
-   kbcli cluster describe elasticsearch -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to the Elasticsearch cluster
-
-Elasticsearch provides the HTTP protocol for client access on port 9200. You can visit the cluster by the local host.
-
-```bash
-curl http://127.0.0.1:9200/_cat/nodes?v
-```
-
-## Scale
-
-KubeBlocks supports horizontally and vertically scaling an Elasticsearch cluster.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster                                                 Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Scale horizontally
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-<Tabs>
-  
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   >
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: elasticsearch
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   >
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: elasticsearch
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: mdit
-       componentDefRef: elasticsearch
-       replicas: 1 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--replicas` value according to your needs and perform the horizontal scaling.
-
-    ```bash
-    kbcli cluster hscale mycluster --replicas=2 --components=elasticsearch -n demo
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the horizontal scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-xpdwz -n demo
-     ```
-
-   - View the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-     mycluster   demo                                               Delete               Updating   Sep 27,2024 10:01 UTC+0800
-     ```
-
-     - STATUS=Updating: it means horizontal scaling is in progress.
-     - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Scale vertically
-
-<Tabs>
-  
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: elasticsearch-verticalscaling
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VerticalScaling
-      verticalScaling:
-      - componentName: mdit
-        requests:
-          cpu: '1'
-          memory: '3Gi'
-        limits:
-          cpu: '1'
-          memory: '3Gi'
-    ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-    ```yaml
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Edit the value of `spec.componentSpecs.resources`.
-
-    ```yaml
-    ...
-    spec:
-      terminationPolicy: Delete
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-        tenancy: SharedNode
-      tolerations:
-      - key: kb-data
-        operator: Equal
-        value: 'true'
-        effect: NoSchedule
-      componentSpecs:
-      - name: mdit
-        componentDef: elasticsearch
-        serviceAccountName: null
-        disableExporter: true
-        replicas: 1
-        resources: # Change the values of resources
-          limits:
-            cpu: '1'
-            memory: 4Gi
-          requests:
-            cpu: '1'
-            memory: 4Gi
-    ...
-    ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--cpu` and `--memory` values according to your needs and run the following command to perform vertical scaling.
-
-    ```bash
-    kbcli cluster vscale mycluster --cpu=2 --memory=3Gi --components=elasticsearch -n demo
-    ```
-
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the vertical scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-rpw2l -n demo
-     ```
-
-   - Check the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-     mycluster   demo                                               Delete               Updating   Sep 27,2024 10:01 UTC+0800
-     ```
-
-     - STATUS=Updating: it means the vertical scaling is in progress.
-     - STATUS=Running: it means the vertical scaling operation has been applied.
-     - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-
-         To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Volume Expansion
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster                                                 Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: elasticsearch
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi"
-    EOF
-    ```
-
-2. Validate the volume expansion operation.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the values of `spec.componentSpecs.volumeClaimTemplates.spec.resources`.
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: mdit
-       componentDefRef: elasticsearch
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-   ...
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--storage` value according to your need and run the command to expand the volume.
-
-    ```bash
-    kbcli cluster volume-expand mycluster --storage=40Gi --components=elasticsearch -t data -n demo
-    ```
-
-    The volume expansion may take a few minutes.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-      KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-5pbd2 -n demo
-      ```
-
-    - View the cluster status.
-
-      ```bash
-      kbcli cluster list mycluster
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-      mycluster   demo                                               Delete               Updating   Sep 27,2024 10:01 UTC+0800
-      ```
-
-      * STATUS=Updating: it means the volume expansion is in progress.
-      * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Stop/Start a cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. Start this cluster again if you want to restore the cluster resources from the original storage by snapshots.
-
-### Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Configure replicas as 0 to delete pods.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure the value of `spec.componentSpecs.replicas` as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mdit
-        componentDefRef: elasticsearch
-        disableExporter: true  
-        replicas: 0 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-  
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Run the command below to start a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Change the value of `spec.componentSpecs.replicas` back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mdit
-        componentDefRef: elasticsearch
-        disableExporter: true  
-        replicas: 1 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Restart
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: elasticsearch
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Restart a cluster.
-
-   Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="elasticsearch" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME            CLUSTER-DEFINITION          VERSION               TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster                                                         Delete               Running   Jul 05,2024 17:51 UTC+0800
-   ```
-
-   * STATUS=Updating: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
-
-## Delete a cluster
-
-### Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME     CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS     AGE
-mydemo                                  Delete               Creating   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/_category_.yml b/docs/user_docs/kubeblocks-for-kafka/_category_.yml
deleted file mode 100644
index 94a7654f9..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 17
-label: KubeBlocks for Kafka
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-kafka/cluster-management/_category_.yml
deleted file mode 100644
index 27efe6be9..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/connect-to-a-cluster.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/connect-to-a-cluster.md
deleted file mode 100644
index 21ac969d3..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/connect-to-a-cluster.md
+++ /dev/null
@@ -1,274 +0,0 @@
----
-title: Connect to a Kafka cluster
-description: Guide for cluster creation for kafka
-keywords: [kafka, cluster, connect, network]
-sidebar_position: 2
-sidebar_label: Connect
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Connect to a Kafka cluster
-
-Before you connect to the Kafka cluster, you must check your network environment, and from which network you would like to connect to the cluster.
-There are three scenarios of connecting.
-
-* Connect to the cluster within the same Kubernetes cluster.
-* Connect to a kafka cluster from outside of the Kubernetes cluster but in the same VPC.
-* Connect to a kafka cluster from public internet.
-
-## Connect to a kafka cluster within the Kubernetes cluster
-
-Within the same Kubernetes cluster, you can directly access the Kafka cluster with ClusterIp service:9092.
-
-***Steps:***
-
-1. Get the address of the Kafka ClusterIP service port No..
-
-   ```bash
-   kubectl get svc -n demo
-   >
-   NAME                                      TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                               AGE
-   kubernetes                                ClusterIP   10.43.0.1     <none>        443/TCP                               9d
-   mycluster-kafka-cluster-broker-headless   ClusterIP   None          <none>        9092/TCP,9093/TCP,9094/TCP,5556/TCP   7d16h
-   mycluster-kafka-cluster-broker            ClusterIP   10.43.8.124   <none>        9093/TCP,9092/TCP,5556/TCP            7d16h
-   ```
-
-2. Connect to the Kafka cluster with the port No..
-
-   Below is an example of connecting with the official client script.
-
-   1. Start client pod.
-
-       ```bash
-       kubectl run kafka-producer --restart='Never' --image docker.io/bitnami/kafka:3.3.2-debian-11-r54 --command -- sleep infinity
-       kubectl run kafka-consumer --restart='Never' --image docker.io/bitnami/kafka:3.3.2-debian-11-r54 --command -- sleep infinity
-       ```
-
-   2. Log in to kafka-producer.
-
-       ```bash
-       kubectl exec -ti kafka-producer -- bash
-       ```
-
-   3. Create topic.
-
-       ```bash
-       kafka-topics.sh --create --topic quickstart-events --bootstrap-server xxx-broker:9092
-       ```
-
-   4. Create producer.
-
-       ```bash
-       kafka-console-producer.sh --topic quickstart-events --bootstrap-server xxx-broker:9092
-       ```
-
-   5. Enter："Hello, KubeBlocks" and press Enter.
-
-   6. Start a new terminal session and login to kafka-consumer.
-
-       ```bash
-       kubectl exec -ti kafka-consumer -- bash
-       ```
-
-   7. Create consumer and specify consuming topic, and consuming message from the beginning.
-
-       ```bash
-       kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server xxx-broker:9092
-       ```
-
-    And you get the output 'Hello, KubeBlocks'.
-
-## Connect to a Kafka cluster from outside of the Kubernetes cluster but in the same VPC
-
-If you use AWS EKS, you may want to access to the Kafka cluster from EC2 instance. This section shows how to perform the connection.
-
-***Steps:***
-
-1. Set the value of `host-network-accessible` as true.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - componentDefRef: kafka-server
-       disableExporter: true
-       name: broker
-       replicas: 1
-       resources:
-         limits:
-           cpu: "1"
-           memory: 1Gi
-         requests:
-           cpu: "1"
-           memory: 1Gi
-       serviceAccountName: kb-sa-kafka
-       services:
-       - annotations:
-           service.beta.kubernetes.io/aws-load-balancer-type: nlb
-           service.beta.kubernetes.io/aws-load-balancer-internal: "true"
-         name: vpc
-         serviceType: LoadBalancer
-       tls: false
-     terminationPolicy: Delete
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster create kafka mycluster --host-network-accessible=true -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Get the corresponding ELB address.
-
-   ```bash
-   kubectl get svc -n demo
-   ```
-
-   This image illustrates the ELB address of a cluster named `fig70`.
-
-   ![gain elb address](./../../../img/connect-to-kafka-cluster-gain-elb-address.png)
-
-  :::note
-
-  xxxxxx-xxx.cn-northwest-1.elb.amazonaws.com.cn is the ELB address accessible within the same VPC of K8s.
-
-  :::
-
-3. Use the ELB address to connect.
-
-    In the above example, the ELB address is a0e01377fa33xxx-xxx.cn-northwest-1.elb.amazonaws.com.cn:9092.
-
-## Connect to a Kafka cluster from public internet
-
-:::caution
-
-The current version only supports Kafka broker with a single replica (combined: --replicas=1 or separated: --broker-replicas=1) to adopt the following approach.
-
-:::
-
-***Steps:***
-
-1. Set the `--publicly-accessible` value as true when creating cluster.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - componentDefRef: kafka-server
-       disableExporter: true
-       name: broker
-       replicas: 1
-       resources:
-         limits:
-           cpu: "1"
-           memory: 1Gi
-         requests:
-           cpu: "1"
-           memory: 1Gi
-       serviceAccountName: kb-sa-kafka
-       services:
-       - annotations:
-           service.beta.kubernetes.io/aws-load-balancer-type: nlb
-           service.beta.kubernetes.io/aws-load-balancer-internal: "false"
-         name: vpc
-         serviceType: LoadBalancer
-       tls: false
-     terminationPolicy: Delete
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster create kafka mycluster --publicly-accessible=true -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Get the corresponding ELB address.
-
-   ```bash
-   kubectl get svc -n demo
-   ```
-
-   This image illustrates the ELB address of a cluster named `maple96`.
-
-   ![gain ELB address cross vpc](./../../../img/kafka-connect-cross-vpc.png)
-
-  :::note
-
-  xxxx-xxxx.cn-northwest-1.elb.amazonaws.com.cn is the ELB address accessible over the public network.
-
-  :::
-
-3. Configure hostname mapping.
-
-   1. Log in to the remote machine.
-   2. Check ELB address IP address.
-
-      ```bash
-      nslookup a96caad7bab59xxxx-xxxx.cn-northwest-1.elb.amazonaws.com.cn
-      ```
-
-   3. Gain the Broker address.
-
-      The Broker address follows a fixed format. Just replace `{clusterName}` in the string below with the Kafka Cluster Name.
-
-      ```bash
-      {clusterName}-broker-0.{clusterName}-broker-headless.default.svc
-      ```
-
-   4. Configure /etc/hosts mapping.
-
-       ```bash
-       vi /etc/hosts
-       # Add at the bottom. Make sure to replace {clusterName} and the IP address with the actual values:
-       52.83.xx.xx {clusterName}-broker-0.{clusterName}-broker-headless.default.svc
-       ```
-
-4. Use ELB address to connect.
-
-    In the above example, the ELB address is xxxx-xxxx.cn-northwest-1.elb.amazonaws.com.cn:9092.
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md
deleted file mode 100644
index ed074c1a1..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md
+++ /dev/null
@@ -1,279 +0,0 @@
----
-title: Create a cluster for Kafka
-description: Guide for cluster creation for kafka
-keywords: [kafka, cluster, management]
-sidebar_position: 1
-sidebar_label: Create
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create a Kafka cluster
-
-This document shows how to create a Kafka cluster.
-
-## Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to create a Kafka cluster by `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Make sure Kafka Addon is enabled with `kbcli addon list`. If this Addon is not enabled, [enable it](./../../installation/install-addons.md) first.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io kafka
-  >
-  NAME    TYPE   VERSION   PROVIDER   STATUS    AGE
-  kafka   Helm                        Enabled   13m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                           TYPE   STATUS     EXTRAS         AUTO-INSTALL  
-  ...
-  kafka                          Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-:::note
-
-* KubeBlocks integrates Kafka v3.3.2, running it in KRaft mode.
-* You are not recommended to use kraft cluster in combined mode in a production environment.
-* The controller number suggested ranges from 3 to 5, out of complexity and availability.
-
-:::
-
-## Create a Kafka cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create a Kafka cluster. If you only have one node for deploying a cluster with multiple replicas, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-   For more cluster examples, refer to [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/kafka).
-
-   * Create a Kafka cluster in combined mode.
-
-     ```yaml
-     # Create a kafka cluster in combined mode
-     kubectl apply -f - <<EOF
-     apiVersion: apps.kubeblocks.io/v1
-     kind: Cluster
-     metadata:
-       name: mycluster
-       namespace: demo
-     spec:
-       terminationPolicy: Delete
-       clusterDef: kafka
-       topology: combined_monitor
-       componentSpecs:
-         - name: kafka-combine
-           env:
-             - name: KB_KAFKA_BROKER_HEAP # use this ENV to set BROKER HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_KAFKA_CONTROLLER_HEAP # use this ENV to set CONTROLLER_HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_BROKER_DIRECT_POD_ACCESS # set to FALSE for node-port
-               value: "true"
-           replicas: 1
-           resources:
-             limits:
-               cpu: "1"
-               memory: "1Gi"
-             requests:
-               cpu: "0.5"
-               memory: "0.5Gi"
-           volumeClaimTemplates:
-             - name: data
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 20Gi
-             - name: metadata
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 1Gi
-         - name: kafka-exporter 
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "1Gi"
-             requests:
-               cpu: "0.1"
-               memory: "0.2Gi"
-     EOF
-     ```
-
-   * Create a Kafka cluster in separated mode.
-
-     ```yaml
-     # Create a Kafka cluster in separated mode
-     kubectl apply -f - <<EOF
-     apiVersion: apps.kubeblocks.io/v1
-     kind: Cluster
-     metadata:
-       name: mycluster
-       namespace: demo
-     spec:
-       terminationPolicy: Delete
-       clusterDef: kafka
-       topology: separated_monitor
-       componentSpecs:
-         - name: kafka-broker
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "0.5Gi"
-             requests:
-               cpu: "0.5"
-               memory: "0.5Gi"
-           env:
-             - name: KB_KAFKA_BROKER_HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_KAFKA_CONTROLLER_HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_BROKER_DIRECT_POD_ACCESS
-               value: "true"
-           volumeClaimTemplates:
-             - name: data
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 20Gi
-             - name: metadata
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 1Gi
-         - name: kafka-controller
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "0.5Gi"
-             requests:
-               cpu: "0.5"
-               memory: "0.5Gi"
-           volumeClaimTemplates:
-             - name: metadata
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 1Gi
-         - name: kafka-exporter
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "1Gi"
-             requests:
-               cpu: "0.1"
-               memory: "0.2Gi"
-     EOF
-     ```
-
-   | Field                                 | Definition  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-kafka-cluster.md#termination-policy). |
-   | `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. **Note: DO NOT UPDATE THIS FIELD**. The value must be must be `kafka` to create a Kafka Cluster. |
-   | `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. Valid options are: [combined,combined_monitor,separated,separated_monitor]. |
-   | `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-   | `spec.componentSpecs.replicas`        | It specifies the amount of replicas of the component. |
-   | `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-   | `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-   For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-   mycluster   kafka                kafka-3.3.2   Delete               Running   2m2s
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Create a Kafka cluster.
-
-   The cluster creation command is simply `kbcli cluster create`.
-
-   ```bash
-   kbcli cluster create kafka mycluster -n demo
-   ```
-
-   kbcli provides more options for creating a Kafka cluster, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-
-   ```bash
-   kbcli cluster create kafka --help
-
-   kbcli cluster create kafka -h
-   ```
-
-   If you only have one node for deploying a cluster with multiple replicas, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create kafka mycluster \
-       --mode='combined' \
-       --replicas=3 \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/delete-kafka-cluster.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/delete-kafka-cluster.md
deleted file mode 100644
index 3fcc1e809..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/delete-kafka-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Delete a kafka Cluster
-description: How to delete a kafka Cluster
-keywords: [kafka, delete a cluster, delete protection]
-sidebar_position: 7
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete a Kafka cluster
-
-## Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted. Set the policy when creating a cluster.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-If you want to delete a cluster and its all related resources, you can set the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/expand-volume.md
deleted file mode 100644
index 5c4d83565..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,187 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of a kafka cluster
-keywords: [kafka, expand volume, volume expansion]
-sidebar_position: 4
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-## Before you start
-
-Run the command below to check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volumeexpansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: broker
-       volumeClaimTemplates:
-       - name: data
-         storage: 40Gi
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-     Name:  data
-     Spec:
-       Access Modes:
-         ReadWriteOnce
-       Resources:
-         Requests:
-           Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - name: kafka
-       componentDefRef: kafka
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-     Name:  data
-     Spec:
-       Access Modes:
-         ReadWriteOnce
-       Resources:
-         Requests:
-           Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the resources according to your needs and run the command to expand the volume.
-
-   ```bash
-   kbcli cluster volume-expand mycluster -n demo --storage=30Gi --components=kafka --volume-claim-templates=data
-   ```
-
-   - `--components` describes the component name for volume expansion.
-   - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-   - `--storage` describes the volume storage size.
-
-2. Validate the volume expansion operation.
-    - View the OpsRequest progress.
-
-      KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-      ```
-
-    - View the cluster status.
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      >
-      NAME             NAMESPACE     CLUSTER-DEFINITION        VERSION                  TERMINATION-POLICY        STATUS          CREATED-TIME
-      mycluster        demo          kafka                     kafka-3.3.2              Delete                    Updating        Sep 27,2024 15:27 UTC+0800
-      ```
-
-      * STATUS=Updating: it means the volume expansion is in progress.
-      * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/restart-a-kafka-cluster.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/restart-a-kafka-cluster.md
deleted file mode 100644
index bce73489d..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/restart-a-kafka-cluster.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-title: Restart Kafka cluster
-description: How to restart a Kafka cluster
-keywords: [kafka, restart]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart a Kafka cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-:::note
-
-The pod role may change after the cluster restarts.
-
-:::
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create an OpsRequest to restart a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-restart
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Restart 
-      restart:
-      - componentName: broker
-    EOF
-    ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Restart a cluster.
-  
-   Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="kafka" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list cluster-name
-   >
-   NAME    CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-   kafka   kafka                kafka-3.3.2    Delete               Running    19m
-   ```
-
-   * STATUS=Restarting: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/scale.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/scale.md
deleted file mode 100644
index f83621154..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/scale.md
+++ /dev/null
@@ -1,482 +0,0 @@
----
-title: Scale for a Kafka cluster
-description: How to scale a Kafka cluster, horizontal scaling, vertical scaling
-keywords: [kafka, horizontal scaling, vertical scaling]
-sidebar_position: 3
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale a Kafka cluster
-
-You can scale a Kafka cluster in two ways, vertical scaling and horizontal scaling.
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: broker
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - name: broker
-       componentDefRef: broker
-       replicas: 1
-       resources: # Change the values of resources.
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu` and run the command.
-
-   ```bash
-    kbcli cluster vscale mycluster -n demo --components="broker" --memory="4Gi" --cpu="2" 
-   ```
-
-   - `--components` value can be `broker` or `controller`.
-     - broker: all nodes in the combined mode, or all the broker node in the separated node.
-     - controller: all the corresponding nodes in the separated mode.
-   - `--memory` describes the requested and limited size of the component memory.
-   - `--cpu` describes the requested and limited size of the component CPU.
-
-2. Validate the vertical scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-     ```
-
-   - Check the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME             NAMESPACE        CLUSTER-DEFINITION       VERSION                TERMINATION-POLICY        STATUS          CREATED-TIME
-     mycluster        demo         kafka                    kafka-3.3.2            Delete                    Updating        Sep 27,2024 15:15 UTC+0800
-     ```
-
-    - STATUS=Updating: it means the vertical scaling is in progress.
-    - STATUS=Running: it means the vertical scaling operation has been applied.
-    - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-      > To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-:::note
-
-Vertical scaling does not synchronize parameters related to CPU and memory and it is required to manually call the OpsRequest of configuration to change parameters accordingly. Refer to [Configuration](./../configuration/configuration.md) for instructions.
-
-:::
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-- Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl -n demo get cluster mycluster
-   >
-   NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-   mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-   ```
-
-   </TabItem>
-
-   </Tabs>
-- You are not recommended to perform horizontal scaling on the controller node, including the controller node both in combined mode and separated node.
-- When scaling in horizontally, you must know the topic partition storage. If the topic has only one replication, data loss may caused when you scale in broker.
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: broker
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: broker
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2 
-     componentSpecs:
-     - name: broker
-       componentDefRef: broker
-       replicas: 2 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components` and `--replicas`, and run the command.
-
-   ```bash
-   kbcli cluster hscale mycluster -n demo --components="broker" --replicas=3
-   ```
-
-   - `--components` describes the component name ready for horizontal scaling.
-   - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-     ```
-
-   - View the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-     - STATUS=Updating: it means horizontal scaling is in progress.
-     - STATUS=Running: it means horizontal scaling has been applied.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/mycluster-kafka-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. Delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-
-   ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-kafka/cluster-management/start-stop-a-cluster.md b/docs/user_docs/kubeblocks-for-kafka/cluster-management/start-stop-a-cluster.md
deleted file mode 100644
index 79e8d95a5..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/cluster-management/start-stop-a-cluster.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-title: Stop/Start a Kafka cluster
-description: How to start/stop a Kafka cluster
-keywords: [kafka, stop a kafka cluster, start a kafka cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start a Kafka Cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. Start this cluster again if you want to restore the cluster resources from the original storage by snapshots.
-
-## Stop a cluster
-
-***Steps:***
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   Run the command below to stop a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-stop
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Stop
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Configure the value of `spec.componentSpecs.replicas` as 0 to delete pods.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: kafka
-       componentDefRef: kafka
-       disableExporter: true  
-       replicas: 0 # Change this value
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster stop mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-## Start a cluster
-  
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   Apply an OpsRequest to start the cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF 
-   ```
-
-   </TabItem>
-
-   <TabItem value="Edit cluster YAML file" label="Edit cluster YAML File">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Change the value of `spec.componentSpecs.replicas` back to the original amount to start this cluster again.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: kafka
-       componentDefRef: kafka
-       disableExporter: true   
-       replicas: 1 # Change this value
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/configuration-recommendations-for-production-environments.md b/docs/user_docs/kubeblocks-for-kafka/configuration-recommendations-for-production-environments.md
deleted file mode 100644
index 1e86dae3c..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/configuration-recommendations-for-production-environments.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Resource description
-description: Kafka resource description
-keywords: [kafka, java heap, hardware resource]
-sidebar_position: 3
-sidebar_label: Resource description
----
-
-# Resource Description
-
-## Java Heap
-
-Kafka Server's JVM Heap configuration, production environment can refer to the [official recommended configuration](https://kafka.apache.org/33/documentation.html#java):
-
-```bash
--Xmx6g -Xms6g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80 -XX:+ExplicitGCInvokesConcurrent
-```
-
-- Combined mode
-    When creating a Kafka Cluster, specify the `--broker-heap` parameter.
-- Separated mode
-    When creating a Kafka Cluster, specify the component parameters with the `--broker-heap`; specify controller with the `--controller-heap` parameter.
-
-:::note
-
-When modifying the Java Heap configuration, attention should be paid to the resources allocated to the Cluster at the same time. For example, `--memory=1Gi`, but `-Xms` in `--broker-heap` is specified as `6g`, the broker service will not start normally due to insufficient memory.
-
-:::
-
-## Hardware resources
-
-It is recommended to use the following hardware resource in a production environment:
-
-- `-cpu` >= 16 cores
-- `-memory` >= 64Gi
-
-Since Kafka uses a large amount of Page Cache to improve read and write speed, memory resources outside the heap memory allocated can improve overall performance.
-
-- `-storage` configure it according to the specific situations
-
-The default compression algorithm for Kafka Cluster is `compression.type=producer`, which is specified by the Producer end. Refer to the average message size of the Topic, compression ratio, number of Topic replicas, and data retention time to perform a comprehensive evaluation.
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-kafka/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-kafka/configuration/_category_.yml
deleted file mode 100644
index cec02728b..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-kafka/configuration/configuration.md b/docs/user_docs/kubeblocks-for-kafka/configuration/configuration.md
deleted file mode 100644
index c33908e88..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/configuration/configuration.md
+++ /dev/null
@@ -1,336 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [kafka, parameter, configuration, reconfiguration]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-The KubeBlocks configuration function provides a set of consistent default configuration generation strategies for all the databases running on KubeBlocks and also provides a unified parameter configuration interface to facilitate managing parameter configuration, searching the parameter user guide, and validating parameter effectiveness.
-
-From v0.6.0, KubeBlocks supports `kbcli cluster configure` and `kbcli cluster edit-config` to configure parameters. The difference is that KubeBlocks configures parameters automatically with `kbcli cluster configure` but `kbcli cluster edit-config` provides a visualized way for you to edit parameters directly.
-
-KubeBlocks also supports configuring a cluster by editing the configuration file or applying an OpsRequest.
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-KubeBlocks supports configuring cluster parameters by editing its configuration file.
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl get configurations.apps.kubeblocks.io -n demo
-
-   kubectl edit configurations.apps.kubeblocks.io mycluster-kafka-combine -n demo
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `spec.configFileParams` part to configure `log.cleanup.policy`.
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: kafka
-     configItemDetails:
-     - configFileParams:
-         server.properties:
-           parameters:
-             log.cleanup.policy: "compact"
-       configSpec:
-         constraintRef: kafka-cc
-         name: kafka-configuration-tpl
-         namespace: kb-system
-         templateRef: kafka-configuration-tpl
-         volumeName: kafka-config
-       name: kafka-configuration-tpl
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect as expected.
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy = compact
-   ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-KubeBlocks supports configuring cluster parameters with OpsRequest.
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a yaml file named `mycluster-configuring-demo.yaml`. In this example, `log.cleanup.policy` is configured as `compact`.
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: kafka
-       configurations:
-       - keys:
-         - key: server.properties
-           parameters:
-           - key: log.cleanup.policy
-             value: "compact"
-         name: kafka-configuration-tpl
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   EOF
-   ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply the configuration OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. Verify whether the configuration takes effect as expected.
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy = compact
-   ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the kbcli tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the current configuration file of a cluster.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-From the meta information, the cluster `mycluster` has a configuration file named `server.properties`.
-
-You can also view the details of this configuration file and parameters.
-
-* View the details of the current configuration file.
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail
-   ```
-
-* View the parameter description.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* View the user guide of a specified parameter.
-  
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --param=log.cleanup.policy
-  ```
-
-  <details>
-
-  <summary>Output</summary>
-
-  ```bash
-  template meta:
-    ConfigSpec: kafka-configuration-tpl	ComponentName: broker	ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     log.cleanup.policy
-    Allowed Values:     "compact","delete"
-    Scope:              Global
-    Dynamic:            false
-    Type:               string
-    Description:        The default cleanup policy for segments beyond the retention window. A comma separated list of valid policies. 
-  ```
-  
-  </details>
-
-  * Allowed Values: It defines the valid value range of this parameter.
-  * Dynamic: The value of `Dynamic` in `Configure Constraint` defines how the parameter configuration takes effect. Currently, Kafka only supports static strategy, i.e. `Dynamic` is `false`. Restarting is required to make the configuration effective.
-  * Description: It describes the parameter definition.
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-1. View the current value of `log.cleanup.policy`.
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy=delete
-   ```
-
-2. Adjust the value of `log.cleanup.policy`.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --set=log.cleanup.policy=compact
-   ```
-
-   :::note
-
-   Make sure the value you set is within the Allowed Values of this parameter. Otherwise, the configuration may fail.
-
-   :::
-
-3. View the status of the parameter configuration.
-
-   `Status.Progress` and `Status.Status` shows the overall status of the parameter configuration and Conditions show the details.
-
-   When the `Status.Status` shows `Succeed`, the configuration is completed.
-
-   <details>
-
-   <summary>Output</summary>
-
-   ```bash
-   # In progress
-   kbcli cluster describe-ops mycluster-reconfiguring-wvqns -n default
-   >
-   Spec:
-     Name: mycluster-reconfiguring-wvqns	NameSpace: default	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=broker --config-specs=kafka-configuration-tpl --config-file=server.properties --set log.cleanup.policy=compact --namespace=default
-
-   Status:
-     Start Time:         Sep 14,2023 16:28 UTC+0800
-     Duration:           5s
-     Status:             Running
-     Progress:           0/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-   ```
-
-   ```bash
-   # Parameter reconfiguration is completed
-   kbcli cluster describe-ops mycluster-reconfiguring-wvqns -n demo
-   >
-   Spec:
-     Name: mycluster-reconfiguring-wvqns	NameSpace: default	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=broker --config-specs=kafka-configuration-tpl --config-file=server.properties --set log.cleanup.policy=compact --namespace=default
-
-   Status:
-     Start Time:         Sep 14,2023 16:28 UTC+0800
-     Completion Time:    Sep 14,2023 16:28 UTC+0800
-     Duration:           25s
-     Status:             Succeed
-     Progress:           1/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-   ```
-
-   </details>
-
-4. View the configuration file to verify whether the parameter is configured as expected.
-
-   It takes about 30 seconds for the configuration to take effect because the kubelet requires some time to sync changes in the ConfigMap to the Pod's volume.
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy = compact
-   mycluster-reconfiguring-wvqns   mycluster   broker      kafka-configuration-tpl   server.properties   Succeed   restart   1/1        Sep 14,2023 16:28 UTC+0800   {"server.properties":"{\"log.cleanup.policy\":\"compact\"}"}
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool `edit-config` to help you to configure parameter in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on notepad.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   If there are multiple components in a cluster, use `--components` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops xxx -n default
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. For the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo                 
-```
-
-From the above results, there are three parameter modifications.
-
-Compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-wvqns mycluster-reconfiguring-hxqfx -n demo
->
-DIFF-CONFIG RESULT:
-  ConfigFile: server.properties	TemplateName: kafka-configuration-tpl	ComponentName: broker	ClusterName: mycluster	UpdateType: update
-
-PARAMETERNAME         MYCLUSTER-RECONFIGURING-WVQNS   MYCLUSTER-RECONFIGURING-HXQFX
-log.retention.hours   168                             200
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-kafka/kubeblocks-for-kafka.md b/docs/user_docs/kubeblocks-for-kafka/kubeblocks-for-kafka.md
deleted file mode 100644
index 9a8675ca8..000000000
--- a/docs/user_docs/kubeblocks-for-kafka/kubeblocks-for-kafka.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: KubeBlocks for Kafka
-description: Feature list of KubeBlocks for Kafka
-keywords: [kafka, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for Kafka
-
-This tutorial illustrates how to create and manage a Kafka cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/release-0.9/examples/kafka).
-
-* [Cluster Management](./cluster-management/create-a-kafka-cluster.md)
-* [Configuration](./configuration/configuration.md)
-* [Resource Description](./configuration-recommendations-for-production-environments.md)
diff --git a/docs/user_docs/kubeblocks-for-milvus/_category_.yml b/docs/user_docs/kubeblocks-for-milvus/_category_.yml
deleted file mode 100644
index 87a3ba9ad..000000000
--- a/docs/user_docs/kubeblocks-for-milvus/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 16
-label: KubeBlocks for Milvus
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/kubeblocks-for-milvus/manage-milvus.md b/docs/user_docs/kubeblocks-for-milvus/manage-milvus.md
deleted file mode 100644
index f463ed3f4..000000000
--- a/docs/user_docs/kubeblocks-for-milvus/manage-milvus.md
+++ /dev/null
@@ -1,918 +0,0 @@
----
-title: Manage Milvus with KubeBlocks
-description: How to manage Milvus on KubeBlocks
-keywords: [milvus, vector database, control plane]
-sidebar_position: 1
-sidebar_label: Manage Milvus with KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Manage Milvus with KubeBlocks
-
-The popularity of generative AI (Generative AI) has aroused widespread attention and completely ignited the vector database (Vector Database) market.
-
-Milvus is a highly flexible, reliable, and blazing-fast cloud-native, open-source vector database. It powers embedding similarity search and AI applications and strives to make vector databases accessible to every organization. Milvus can store, index, and manage a billion+ embedding vectors generated by deep neural networks and other machine learning (ML) models.
-
-This tutorial illustrates how to create and manage a Milvus cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples and guides in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/release-0.9/examples/milvus).
-
-## Before you start
-
-- [Install kbcli](./../installation/install-kbcli.md) if you want to manage the Milvus cluster with `kbcli`.
-- [Install KubeBlocks](./../installation/install-kubeblocks.md).
-- [Install and enable the milvus Addon](./../installation/install-addons.md).
-- To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-## Create a cluster
-
-KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a Milvus cluster. If you only have one node for deploying a cluster with multiple replicas, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  namespace: demo
-  name: mycluster
-spec:
-  terminationPolicy: Delete
-  clusterDef: milvus
-  topology: cluster
-  componentSpecs:
-    - name: proxy
-      replicas: 1
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage 
-          namespace: demo        
-          clusterServiceSelector:
-            cluster: etcdm-cluster  
-            service:
-              component: etcd       
-              service: headless     
-              port: client          
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:            
-              component: minio     
-              name: admin          
-      disableExporter: true
-    - name: mixcoord
-      replicas: 1
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-    - name: datanode
-      replicas: 1
-      disableExporter: true
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-    - name: indexnode
-      replicas: 1
-      disableExporter: true
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-    - name: querynode
-      replicas: 1
-      disableExporter: true
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-EOF
-```
-
-| Field                                 | Definition  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](#termination-policy). |
-| `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. Note: DO NOT UPDATE THIS FIELD. The value must be `milvus` to create a Milvus Cluster. |
-| `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. Valid options are: [standalone,cluster]. |
-| `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-| `spec.componentSpecs.serviceRefs` | It defines a list of ServiceRef for a Component. |
-| `spec.componentSpecs.serviceRefs.name` | It specifies the identifier of the service reference declaration, defined in `componentDefinition.spec.serviceRefDeclarations[*].name`. |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector` | It references a service provided by another KubeBlocks Cluster. |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.cluster` | It defines the cluster name. You can name it on demand. |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.service.component` | It defines the component name.|
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.service.service` | It refers to the default headless Service. |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.service.port` | It refers to port name. |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.credential` | It specifies the SystemAccount to authenticate and establish a connection with the referenced Cluster. |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.credential.name` | It specifies to the name of the credential (SystemAccount) to reference, using account 'admin' in this case. |
-| `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-| `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-| `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-
-For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster with `kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo`.
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-Run the following command to see the created Milvus cluster object:
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-## Scale
-
-Currently, KubeBlocks supports vertically scaling a Milvus cluster.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster   milvus-2.3.2                                  Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        milvus-2.3.2                           Delete               Running   Jul 05,2024 17:35 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-vertical-scaling
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VerticalScaling
-      verticalScaling:
-      - componentName: milvus
-        requests:
-          memory: "2Gi"
-          cpu: "1"
-        limits:
-          memory: "4Gi"
-          cpu: "2"
-    EOF
-    ```
-
-2. Check the operation status to validate the vertical scaling.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-    ```
-
-    If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: milvus
-     clusterVersionRef: milvus-2.3.2
-     componentSpecs:
-     - name: milvus
-       componentDefRef: milvus
-       replicas: 1
-       resources: # Change the values of resources.
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--cpu` and `--memory` values according to your needs and run the following command to perform vertical scaling.
-
-    ```bash
-    kbcli cluster vscale mycluster -n demo --cpu=1 --memory=1Gi --components=milvus 
-    ```
-
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the vertical scaling operation.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-rpw2l -n demo
-       ```
-
-    - Check the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-       mycluster   demo                                               Delete               Updating   Jul 05,2024 17:35 UTC+0800
-       ```
-
-       - STATUS=Updating: it means the vertical scaling is in progress.
-       - STATUS=Running: it means the vertical scaling operation has been applied.
-       - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-          > To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Volume Expansion
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster   milvus-2.3.2                                  Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        milvus-2.3.2                           Delete               Running   Jul 05,2024 17:35 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: milvus
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi" # Set the volume storage size.
-    EOF
-    ```
-
-2. Validate the volume expansion operation.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    If an error occurs to the vertical scaling operation, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: milvus
-     clusterVersionRef: milvus-2.3.2
-     componentSpecs:
-     - name: milvus
-       componentDefRef: milvus
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-   ...
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--storage` value according to your need and run the command to expand the volume.
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --storage=40Gi --components=milvus -t data
-    ```
-
-    The volume expansion may take a few minutes.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-      KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-5pbd2 -n demo
-      ```
-
-    - View the cluster status.
-
-      ```bash
-      kbcli cluster list mycluster
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-      mycluster   demo        milvus-2.3.2                           Delete               Running    Jul 05,2024 17:35 UTC+0800
-      ```
-
-      * STATUS=Updating: it means the volume expansion is in progress.
-      * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Restart
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: milvus
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="milvus" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME     NAMESPACE   CLUSTER-DEFINITION     VERSION         TERMINATION-POLICY   STATUS    CREATED-TIME
-   milvus   demo     milvus-2.3.2                              Delete               Running   Jul 05,2024 18:35 UTC+0800
-   ```
-
-   * STATUS=Updating: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
-
-## Stop/Start a cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again to restore it to the state it was in before it was stopped.
-
-### Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to stop a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit Cluster YAML File" label="Edit Cluster YAML File">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure replicas as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: milvus
-      clusterVersionRef: milvus-2.3.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: milvus
-        componentDefRef: milvus
-        disableExporter: true  
-        replicas: 0 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to start a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit Cluster YAML File" label="Edit Cluster YAML File">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Change replicas back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: milvus
-      clusterVersionRef: milvus-2.3.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: milvus
-        componentDefRef: milvus
-        disableExporter: true  
-        replicas: 1 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Delete a cluster
-
-### Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster   milvus-2.3.2                                  Delete               Running   14m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION        VERSION               TERMINATION-POLICY   STATUS           CREATED-TIME
-mycluster   demo        milvus-2.3.2                                    Delete               Running          Jul 05,2024 17:35 UTC+0800  
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mongodb/_category_.yml b/docs/user_docs/kubeblocks-for-mongodb/_category_.yml
deleted file mode 100644
index ec7987f10..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 14
-label: KubeBlocks for MongoDB
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/_category_.yml
deleted file mode 100644
index 27efe6be9..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md
deleted file mode 100644
index 29c067315..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md
+++ /dev/null
@@ -1,284 +0,0 @@
----
-title: Create and connect to a MongoDB Cluster
-description: How to create and connect to a MongoDB cluster
-keywords: [mongodb, create a mongodb cluster]
-sidebar_position: 1
-sidebar_label: Create and connect
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create and connect to a MongoDB cluster
-
-This tutorial shows how to create and connect to a MongoDB cluster.
-
-## Create a MongoDB cluster
-
-### Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to create and connect a MySQL cluster by `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Make sure the MongoDB Addon is enabled. If this addon is not enabled, [enable it](./../../installation/install-addons.md) first.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io mongodb
-  >
-  NAME      TYPE   VERSION   PROVIDER   STATUS    AGE
-  mongodb   Helm                        Enabled   23m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                           TYPE   STATUS     EXTRAS         AUTO-INSTALL
-  ...
-  mongodb                        Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* View all the database types and versions available for creating a cluster.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get clusterdefinition mongodb
-  >
-  NAME      TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  mongodb                              Available   23m
-  ```
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=mongodb
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-### Create a cluster
-
-KubeBlocks supports creating two types of MongoDB clusters: Standalone and ReplicaSet. Standalone only supports one replica and can be used in scenarios with lower requirements for availability. For scenarios with high availability requirements, it is recommended to create a ReplicaSet, which creates a cluster with two replicas to support automatic failover. To ensure high availability, all replicas are distributed on different nodes by default.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create a MongoDB Standalone.
-
-   KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a MongoDB Standalone.
-
-   If you only have one node for deploying a ReplicaSet Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: mongodb
-     topology: replicaset
-     componentSpecs:
-       - name: mongodb
-         serviceVersion: "6.0.16"
-         replicas: 3
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | Field                                 | Definition  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-mongodb-cluster.md#termination-policy). |
-   | `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. **Note: DO NOT UPDATE THIS FIELD**. The value must be `mongodb` to create a MongoDB Cluster. |
-   | `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. |
-   | `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-   | `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are: [4.0.28,4.2.24,4.4.29,5.0.28,6.0.16,7.0.1]. |
-   | `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-   | `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-   | `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-   | `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-   For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-   KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster by running the command below.
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   Run the following command to view the created MongoDB cluster object.
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   mongodb              mongodb-5.0       Delete               Running   12m
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Create a MongoDB cluster.
-
-   ```bash
-   kbcli cluster create mongodb mycluster -n demo
-   ```
-
-   The commands above are some common examples to create a cluster with default settings. If you want to customize your cluster specifications, kbcli provides various options, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-
-   ```bash
-   kbcli cluster create mongodb --help
-   kbcli cluster create mongodb -h
-   ```
-
-   If you only have one node for deploying a cluster with multiple replicas, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create mongodb mycluster \
-       --mode='replicaset' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        mongodb              mongodb-5.0       Delete               Running   Sep 20,2024 10:01 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to a MongoDB Cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-You can use `kubectl exec` to exec into a Pod and connect to a database.
-
-KubeBlocks operator has created a new Secret called `mycluster-conn-credential` to store the connection credential of the MongoDB cluster. This secret contains the following keys:
-
-* `username`: the root username of the MongoDB cluster.
-* `password`: the password of the root user.
-* `port`: the port of the MongoDB cluster.
-* `host`: the host of the MongoDB cluster.
-* `endpoint`: the endpoint of the MongoDB cluster and it is the same as `host:port`.
-
-1. Get the `username` and `password` to connect to this MongoDB cluster for the `kubectl exec` command.
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   266zfqx5
-   ```
-
-2. Exec into the Pod `mycluster-mongodb-0` and connect to the database using username and password.
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mongodb-0 -- bash
-
-   root@mycluster-mongodb-0:/# mongo --username root --password 266zfqx5 --authenticationDatabase admin
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-You can also port forward the service to connect to the database from your local machine.
-
-1. Run the following command to port forward the service.
-
-   ```bash
-   kubectl port-forward -n demo svc/mycluster-mongodb 27017:27017
-   ```
-
-2. Open a new terminal and run the following command to connect to the database.
-
-   ```bash
-   root@mycluster-mongodb-0:/# mongo --username root --password 266zfqx5 --authenticationDatabase admin
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-For the detailed database connection guide, refer to [Connect database](./../../../user_docs/connect_database/overview-of-database-connection.md).
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/delete-mongodb-cluster.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/delete-mongodb-cluster.md
deleted file mode 100644
index 2ccd1e88a..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/delete-mongodb-cluster.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: Delete a MongoDB Cluster
-description: How to delete a MongoDB Cluster
-keywords: [mongodb, delete a cluster, delete protection]
-sidebar_position: 7
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete a MongoDB cluster
-
-## Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted. Set the policy when creating a cluster.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete               Running   17m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-If you want to delete a cluster and its all related resources, you can set the termination policy to `WipeOut`, and then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/expand-volume.md
deleted file mode 100644
index aeb57158e..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,187 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of a MongoDB cluster
-keywords: [mongodb, expand volume, volume expansion]
-sidebar_position: 3
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-## Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME             NAMESPACE        CLUSTER-DEFINITION    VERSION            TERMINATION-POLICY        STATUS         CREATED-TIME
-mycluster        demo             mongodb               mongodb-5.0        Delete                    Running        Apr 10,2023 16:20 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: mongodb
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.components.volumeClaimTemplates.spec.resources` in the cluster YAML file. `spec.components.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: mongodb
-     clusterVersionRef: mongodb-5.0
-     componentSpecs:
-     - name: mongodb
-       componentDefRef: mongodb
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `--components`, `--volume-claim-templates`, and `--storage`, and run the command below to expand the volume.
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --components="mongodb" --volume-claim-templates="data" --storage="30Gi"
-    ```
-
-    - `--components` describes the component name for volume expansion.
-    - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-    - `--storage` describes the volume storage size.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster
-       >
-       NAME              NAMESPACE        CLUSTER-DEFINITION        VERSION            TERMINATION-POLICY        STATUS          CREATED-TIME
-       mycluster         demo             mongodb                   mongodb-5.0        Delete                    Updating        Apr 10,2023 16:27 UTC+0800
-       ```
-
-       * STATUS=Updating: it means the volume expansion is in progress.
-       * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/restart-mongodb-cluster.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/restart-mongodb-cluster.md
deleted file mode 100644
index ed442cbe5..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/restart-mongodb-cluster.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-title: Restart a MongoDB cluster
-description: How to restart a MongoDB cluster
-keywords: [mongodb, restart a cluster]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart MongoDB cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create an OpsRequest to restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: mongodb
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                  READY   STATUS            RESTARTS   AGE
-   mycluster-mongodb-0   3/4     Terminating       0          5m32s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Restart a cluster with `kbcli cluster restart` command and enter the cluster name again.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo
-   >
-   OpsRequest mongodb-cluster-restart-pzsbj created successfully, you can view the progress:
-         kbcli cluster describe-ops mongodb-cluster-restart-pzsbj -n demo
-   ```
-
-2. Validate the restart operation.
-
-   Check the cluster status to identify the restart status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME                   NAMESPACE        CLUSTER-DEFINITION        VERSION            TERMINATION-POLICY        STATUS         CREATED-TIME
-   mongodb-cluster        demo             mongodb                   mongodb-5.0        Delete                    Running        Apr 26,2023 12:50 UTC+0800
-   ```
-
-   - STATUS=Updating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/scale-for-mongodb.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/scale-for-mongodb.md
deleted file mode 100644
index 80560cc30..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/scale-for-mongodb.md
+++ /dev/null
@@ -1,447 +0,0 @@
----
-title: Scale for MongoDB cluster
-description: How to vertically scale a MongoDB cluster
-keywords: [mongodb, vertical scaling, vertically scale a mongodb cluster]
-sidebar_position: 2
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale a MongoDB cluster
-
-You can scale a MongoDB cluster in two ways, vertical scaling and horizontal scaling.
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME             NAMESPACE        CLUSTER-DEFINITION    VERSION            TERMINATION-POLICY        STATUS         CREATED-TIME
-mycluster        demo             mongodb               mongodb-5.0        Delete                    Running        Apr 10,2023 16:20 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: mongodb
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs to the vertical scaling operation, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  mongodb
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      mongodb
-    Replicas:  1
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. 
-
-   `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: mongodb
-     clusterVersionRef: mongodb-5.0
-     componentSpecs:
-     - componentDefRef: mongodb
-       enabledLogs:
-       - running
-       disableExporter: true
-       name: mongodb
-       replicas: 2
-       resources: # Change values of resources
-         limits:
-           cpu: "2"
-           memory: 4Gi
-         requests:
-           cpu: "1"
-           memory: 2Gi
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  mongodb
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      mongodb
-    Replicas:  1
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu` and run the command.
-
-     ```bash
-     kbcli cluster vscale mycluster -n demo --components=mongodb --cpu=500m --memory=500Mi
-     ```
-
-     - `--components` describes the component name ready for vertical scaling.
-     - `--memory` describes the requested and limited size of the component memory.
-     - `--cpu` describes the requested and limited size of the component CPU.
-  
-2. Validate the vertical scaling.
-
-     - View the OpsRequest progress.
-
-         KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-         ```bash
-         kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-         ```
-
-     - Check the cluster status.
-
-         ```bash
-         kbcli cluster list mycluster -n demo
-         >
-         NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION          TERMINATION-POLICY   STATUS    CREATED-TIME                 
-         mycluster   demo        mongodb              mongodb-5.0      Delete               Running   Apr 26,2023 11:50 UTC+0800  
-         ```
-
-     - STATUS=Updating: it means the vertical scaling is in progress.
-     - STATUS=Running: it means the vertical scaling operation has been applied.
-     - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be the normal instances number is less than the total instance number or the leader instance is running properly while others are abnormal.
-         > To solve the problem, you can check manually to see whether resources are sufficient. If AutoScaling is supported, the system recovers when there are enough resources, otherwise, you can create enough resources and check the result with kubectl describe command.
-
-:::note
-
-Vertical scaling does not synchronize parameters related to CPU and memory and it is required to manually call the OpsRequest of configuration to change parameters accordingly. Refer to [Configuration](./../configuration/configuration.md) for instructions.
-
-:::
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-     ```bash
-     kbcli cluster describe mycluster -n demo
-     ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY     STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME          NAMESPACE     CLUSTER-DEFINITION    VERSION          TERMINATION-POLICY        STATUS         CREATED-TIME
-mycluster     demo          mongodb               mongodb-5.0      Delete                    Running        April 26,2023 12:00 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mongo-horizontalscaling
-     namespace: default
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mongodb
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mongo-horizontalscaling
-     namespace: default
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mongodb
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: mongo
-     clusterVersionRef: mongodb-5.0
-     componentSpecs:
-     - name: mongo
-       componentDefRef: mongo
-       replicas: 4 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components` and `--replicas`, and run the command.
-
-    ```bash
-    kbcli cluster hscale mycluster -n demo --components="mongodb" --replicas=2
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation.
-
-     - View the OpsRequest progress.
-
-         KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-         ```bash
-         kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-         ```
-
-     - View the cluster status.
-
-         ```bash
-         kbcli cluster list mycluster -n demo
-         ```
-
-         - STATUS=Updating: it means horizontal scaling is in progress.
-         - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-04-08T04:20:26Z"
-    message: VolumeSnapshot/mycluster-mongodb-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. First, delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-    ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/start-stop-a-cluster.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/start-stop-a-cluster.md
deleted file mode 100644
index 5bcf5cc98..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/start-stop-a-cluster.md
+++ /dev/null
@@ -1,194 +0,0 @@
----
-title: Stop/Start a MongoDB cluster
-description: How to start/stop a MongoDB cluster
-keywords: [mongodb, stop a mongodb cluster, start a mongodb cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start a MongoDB Cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again to restore it to the state it was in before it was stopped.
-
-## Stop a cluster
-
-***Steps:***
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to stop a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    Configure replicas as 0 to delete pods.
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: mongodb
-      clusterVersionRef: mongodb-5.0
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mongodb
-        componentDefRef: mongodb
-        disableExporter: true
-        replicas: 0
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: standard
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to start a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name:ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML File">
-
-    Change replicas back to the original amount to start this cluster again.
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: mongodb
-      clusterVersionRef: mongodb-5.0
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mongodb
-        componentDefRef: mongodb
-        disableExporter: true
-        replicas: 1
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: standard
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/switchover.md b/docs/user_docs/kubeblocks-for-mongodb/cluster-management/switchover.md
deleted file mode 100644
index 2ba7c6dbc..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/cluster-management/switchover.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-title: Switch over a MongoDB cluster
-description: How to switch over a MongoDB cluster
-keywords: [mongodb, switch over a cluster, switchover]
-sidebar_position: 6
-sidebar_label: Switchover
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Switch over a MongoDB cluster
-
-You can initiate a switchover for a MongoDB ReplicaSet. Then KubeBlocks modifies the instance roles.
-
-## Before you start
-
-* Make sure the cluster is running normally.
-* Check whether the following role probe parameters exist to verify whether the role probe is enabled.
-
-   ```bash
-   kubectl get cd mongodb -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 3
-       periodSeconds: 2
-       timeoutSeconds: 2
-   ```
-
-## Initiate the switchover
-
-You can switch over a secondary of a MongoDB ReplicaSet to the primary role, and the former primary instance to a secondary.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-The value of `instanceName` decides whether a new primary instance is specified for the switchover.
-
-* Switchover with no specified primary instance
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-jhkgl
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mongodb
-      instanceName: '*'
-  >>
-  ```
-
-* Switchover with a specified new primary instance
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-jhkgl
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mongodb
-      instanceName: 'mycluster-mongodb-2'
-  >>
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* Switchover with no primary instance specified
-
-    ```bash
-    kbcli cluster promote mycluster -n demo
-    ```
-
-* Switchover with a specified new primary instance
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mongodb-2' -n demo
-    ```
-
-* If there are multiple components, you can use `--components` to specify a component.
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mongodb-2' --components='mongodb' -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Verify the switchover
-
-Check the instance status to verify whether the switchover is performed successfully.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get pods -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Handle an exception
-
-If an error occurs, refer to [Handle an exception](./../../handle-an-exception/handle-a-cluster-exception.md) to troubleshoot the operation.
diff --git a/docs/user_docs/kubeblocks-for-mongodb/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-mongodb/configuration/_category_.yml
deleted file mode 100644
index cec02728b..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-mongodb/configuration/configuration.md b/docs/user_docs/kubeblocks-for-mongodb/configuration/configuration.md
deleted file mode 100644
index 8dcd3a91b..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/configuration/configuration.md
+++ /dev/null
@@ -1,260 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [mongodb, parameter, configuration, reconfiguration]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-The KubeBlocks configuration function provides a set of consistent default configuration generation strategies for all the databases running on KubeBlocks and also provides a unified parameter configuration interface to facilitate managing parameter configuration, searching the parameter user guide, and validating parameter effectiveness.
-
-From v0.6.0, KubeBlocks supports `kbcli cluster configure` and `kbcli cluster edit-config` to configure parameters. The difference is that KubeBlocks configures parameters automatically with `kbcli cluster configure` but `kbcli cluster edit-config` provides a visualized way for you to edit parameters directly.
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-KubeBlocks supports configuring cluster parameters by editing its configuration file.
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-mongodb -n demo
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `spec.configFileParams` part to configure `systemLog.verbosity`.
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: mongodb
-     configItemDetails:
-     - configFileParams:
-         mongodb.cnf:
-           parameters:
-             systemLog.verbosity: "1"
-       configSpec:
-         constraintRef: mongodb-config-constraints
-         name: mongodb-configuration
-         namespace: kb-system
-         templateRef: mongodb5.0-config-template
-         volumeName: mongodb-config
-       name: mongodb-config
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mongodb-0 -- bash
-
-      root@mycluster-mongodb-0:/# cat etc/mongodb/mongodb.conf |grep verbosity
-      >
-        verbosity: 1
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-KubeBlocks supports configuring cluster parameters with OpsRequest.
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a yaml file named `mycluster-configuring-demo.yaml`. In this example, `systemLog.verbosity` is configured as `1`.
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: mongodb
-       configurations:
-       - keys:
-         - key: mongodb.conf
-           parameters:
-           - key: systemLog.verbosity
-             value: "1"
-         name: mongodb-config
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply the configuration OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect as expected.
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mongodb-0 -- bash
-
-   root@mycluster-mongodb-0:/# cat etc/mongodb/mongodb.conf |grep verbosity
-   >
-     verbosity: 1
-   ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the current configuration file of a cluster.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
->
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME         FILE                  ENABLED   TEMPLATE                     CONSTRAINT                   RENDERED                                      COMPONENT    CLUSTER           
-mongodb-config           keyfile               false     mongodb5.0-config-template   mongodb-config-constraints   mycluster-replicaset-mongodb-config           replicaset   mycluster   
-mongodb-config           mongodb.conf          true      mongodb5.0-config-template   mongodb-config-constraints   mycluster-replicaset-mongodb-config           replicaset   mycluster   
-mongodb-metrics-config   metrics-config.yaml   false     mongodb-metrics-config                                    mycluster-replicaset-mongodb-metrics-config   replicaset   mycluster   
-
-History modifications:
-OPS-NAME   CLUSTER   COMPONENT   CONFIG-SPEC-NAME   FILE   STATUS   POLICY   PROGRESS   CREATED-TIME   VALID-UPDATED 
-```
-
-From the meta information, the cluster `mycluster` has a configuration file named `mongodb.conf`.
-
-You can also view the details of this configuration file and parameters.
-
-```bash
-kbcli cluster describe-config mycluster --show-detail -n demo
-```
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-The example below configures systemLog.verbosity to 1.
-
-1. Adjust the values of `systemLog.verbosity` to 1.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components mongodb --config-specs mongodb-config --config-file mongodb.conf --set systemLog.verbosity=1
-   >
-   Warning: The parameter change you modified needs to be restarted, which may cause the cluster to be unavailable for a period of time. Do you need to continue...
-   Please type "yes" to confirm: yes
-   Will updated configure file meta:
-   ConfigSpec: mongodb-config      ConfigFile: mongodb.conf      ComponentName: mongodb  ClusterName: mycluster
-   OpsRequest mycluster-reconfiguring-q8ndn created successfully, you can view the progress:
-          kbcli cluster describe-ops mycluster-reconfiguring-q8ndn -n default
-   ```
-
-2. Check the configuration history and view whether the configuration is successful.
-
-   ```bash
-
-    kbcli cluster describe-config mycluster -n demo
-    >
-    ConfigSpecs Meta:
-    CONFIG-SPEC-NAME         FILE                  ENABLED   TEMPLATE                     CONSTRAINT                   RENDERED                                   COMPONENT   CLUSTER
-    mongodb-config           keyfile               false     mongodb5.0-config-template   mongodb-config-constraints   mycluster-mongodb-mongodb-config           mongodb     mycluster
-    mongodb-config           mongodb.conf          true      mongodb5.0-config-template   mongodb-config-constraints   mycluster-mongodb-mongodb-config           mongodb     mycluster
-    mongodb-metrics-config   metrics-config.yaml   false     mongodb-metrics-config                                    mycluster-mongodb-mongodb-metrics-config   mongodb     mycluster
-
-    History modifications:
-    OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME   FILE           STATUS    POLICY    PROGRESS   CREATED-TIME                 VALID-UPDATED
-    mycluster-reconfiguring-q8ndn   mycluster   mongodb     mongodb-config     mongodb.conf   Succeed   restart   3/3        Apr 21,2023 18:56 UTC+0800   {"mongodb.conf":"{\"systemLog\":{\"verbosity\":\"1\"}}"}```
-   ```
-
-3. Verify configuration result.
-
-   ```bash
-    root@mycluster-mongodb-0:/# cat etc/mongodb/mongodb.conf |grep verbosity
-    verbosity: "1"
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool `edit-config` to help you to configure parameter in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on notepad.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   If there are multiple components in a cluster, use `--components` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops xxx -n demo
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. For the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo                 
-```
-
-If you perform several parameter configurations, you can compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-q8ndn mycluster-reconfiguring-hxqfx -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mongodb/kubeblocks-for-mongodb.md b/docs/user_docs/kubeblocks-for-mongodb/kubeblocks-for-mongodb.md
deleted file mode 100644
index 8bc8b4410..000000000
--- a/docs/user_docs/kubeblocks-for-mongodb/kubeblocks-for-mongodb.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: KubeBlocks for MongoDB
-description: Feature list of KubeBlocks for MongoDB
-keywords: [mongodb, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for MongoDB
-
-This tutorial illustrates how to create and manage a MongoDB cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/mongodb).
-
-* [Cluster Management](./cluster-management/create-and-connect-to-a-mongodb-cluster.md)
-* [Configuration](./configuration/configuration.md)
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/_category_.yml b/docs/user_docs/kubeblocks-for-mysql-community-edition/_category_.yml
deleted file mode 100644
index 7184c4a03..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 12
-label: KubeBlocks for MySQL Community Edition
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/_category_.yml
deleted file mode 100644
index 27efe6be9..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md
deleted file mode 100644
index 58b2c9ede..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md
+++ /dev/null
@@ -1,285 +0,0 @@
----
-title: Create and connect to a MySQL Cluster
-description: How to create and connect to a MySQL cluster
-keywords: [mysql, create a mysql cluster, connect to a mysql cluster]
-sidebar_position: 1
-sidebar_label: Create and connect
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create and connect to a MySQL cluster
-
-This tutorial shows how to create and connect to a MySQL cluster.
-
-## Create a MySQL cluster
-
-### Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md).
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Make sure the MySQL Addon is enabled. The MySQL Addon is installed and enabled by KubeBlocks by default. If you disable it when installing KubeBlocks, [enable it](./../../installation/install-addons.md) first.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io mysql
-  >
-  NAME    TYPE   VERSION   PROVIDER   STATUS    AGE
-  mysql   Helm                        Enabled   27h
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                           VERSION         PROVIDER    STATUS     AUTO-INSTALL
-  ...
-  mysql                          0.9.1           community   Enabled    true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* View all the database types and versions available for creating a cluster.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  Make sure the `mysql` cluster definition is installed.
-
-  ```bash
-  kubectl get clusterdefinition mysql
-  >
-  NAME             TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  mysql                                       Available   85m
-  ```
-
-  View all available versions for creating a cluster.
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=mysql
-  >
-  NAME           CLUSTER-DEFINITION   STATUS      AGE
-  mysql-5.7.44   mysql                Available   27h
-  mysql-8.0.33   mysql                Available   27h
-  mysql-8.4.2    mysql                Available   27h
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-### Create a cluster
-
-KubeBlocks supports creating two types of MySQL clusters: Standalone and Replication Cluster. Standalone only supports one replica and can be used in scenarios with lower requirements for availability. For scenarios with high availability requirements, it is recommended to create a Replication Cluster, which creates a cluster with two replicas. To ensure high availability, all replicas are distributed on different nodes by default.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create a MySQL cluster.
-
-   KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a Replication Cluster.
-
-   If you only have one node for deploying a Replication Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     componentSpecs:
-       - name: mysql
-         componentDef: "mysql-8.0" 
-         serviceVersion: 8.0.35
-         disableExporter: false
-         replicas: 2
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | Field                                 | Definition  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-mysql-cluster.md#termination-policy). |
-   | `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-   | `spec.componentSpecs.componentDef` | It specifies the ComponentDefinition custom resource (CR) that defines the Component's characteristics and behavior. It supports three different ways to specify the ComponentDefinition: the regular expression (recommended), the full name (recommended), and the name prefix. |
-   | `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are [8.0.30,8.0.31,8.0.32,8.0.33,8.0.34,8.0.35,8.0.36,8.0.37,8.0.38,8.0.39]. |
-   | `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-   | `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-   | `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-   | `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-   For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-   Run the following commands to see the created MySQL cluster object:
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   mysql                mysql-8.0.30      Delete               Running   6m53s
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Create a MySQL cluster.
-
-   ```bash
-   kbcli cluster create mysql mycluster -n demo
-   ```
-
-   If you want to customize your cluster specifications, kbcli provides various options, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-
-   ```bash
-   kbcli cluster create mysql --help
-   kbcli cluster create mysql -h
-   ```
-
-   If you only have one node for deploying a Replication Cluster, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a Replication Cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create mysql mycluster \
-       --mode='replication' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        mysql                mysql-8.0.30      Delete               Running   Jul 05,2024 18:46 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to a MySQL Cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-You can use `kubectl exec` to exec into a Pod and connect to a database.
-
-KubeBlocks operator creates a new Secret called `mycluster-conn-credential` to store the connection credential of the MySQL cluster. This secret contains the following keys:
-
-* `username`: the root username of the MySQL cluster.
-* `password`: the password of the root user.
-* `port`: the port of the MySQL cluster.
-* `host`: the host of the MySQL cluster.
-* `endpoint`: the endpoint of the MySQL cluster and it is the same as `host:port`.
-
-1. Run the command below to get the `username` and `password` for the `kubectl exec` command.
-
-   ```bash
-   kubectl get secrets mycluster-conn-credential -n demo -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-   ```
-
-   ```bash
-   kubectl get secrets mycluster-conn-credential -n demo -o jsonpath='{.data.password}' | base64 -d
-   >
-   b8wvrwlm
-   ```
-
-2. Exec into the Pod `mycluster-mysql-0` and connect to the database using username and password.
-
-   ```bash
-   kubectl exec -ti mycluster-mysql-0 -n demo -- bash
-
-   mysql -u root -p b8wvrwlm
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-You can also port forward the service to connect to a database from your local machine.
-
-1. Run the following command to port forward the service.
-
-   ```bash
-   kubectl port-forward svc/mycluster-mysql 3306:3306 -n demo
-   ```
-
-2. Open a new terminal and run the following command to connect to the database.
-
-   ```bash
-   mysql -uroot -pb8wvrwlm
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster  --namespace demo
-```
-
-</TabItem>
-
-</Tabs>
-
-For the detailed database connection guide, refer to [Connect database](./../../connect_database/overview-of-database-connection.md).
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/delete-mysql-cluster.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/delete-mysql-cluster.md
deleted file mode 100644
index e57b7d620..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/delete-mysql-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Delete a MySQL Cluster
-description: How to delete a MySQL Cluster
-keywords: [mysql, delete a cluster]
-sidebar_position: 7
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete a MySQL Cluster
-
-## Termination policy
-
-:::note
-
-The termination policy determines how you delete a cluster.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.30   Delete               Running   67m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Step
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/expand-volume.md
deleted file mode 100644
index 46058dd86..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,189 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of a MySQL cluster
-sidebar_position: 3
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-## Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   4d18h
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: mysql
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage: 40Gi
-   ...
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: mysql
-     clusterVersionRef: mysql-8.0.33
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `--components`, `--volume-claim-templates`, and `--storage`, and run the command below to expand the volume.
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --components="mysql" --volume-claim-templates="data" --storage="40Gi"
-    ```
-
-    - `--components` describes the component name for volume expansion.
-    - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-    - `--storage` describes the volume storage size.
-
-2. Validate the volume expansion operation. There are two options.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-       mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-       ```
-
-       * STATUS=Updating: it means the volume expansion is in progress.
-       * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/restart-mysql-cluster.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/restart-mysql-cluster.md
deleted file mode 100644
index 4c1f9a28e..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/restart-mysql-cluster.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Restart MySQL cluster
-description: How to restart a MySQL cluster
-keywords: [mysql, restart, restart a cluster]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart MySQL cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-:::note
-
-The pod role may change after the cluster restarts.
-
-:::
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: mysql
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                READY   STATUS           RESTARTS   AGE
-   mycluster-mysql-0   4/4     Running          0          5m32s
-   mycluster-mysql-1   3/4     Terminating      0          6m36s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Restart a cluster.  
-
-   Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="mysql" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Check the cluster status to validate the restarting.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     CREATED-TIME
-   mycluster   demo        mysql                mysql-8.0.33   Delete               Updating   Jul 05,2024 19:01 UTC+0800
-   ```
-
-   - STATUS=Updating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/scale-for-mysql.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/scale-for-mysql.md
deleted file mode 100644
index ff5ac39c2..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/scale-for-mysql.md
+++ /dev/null
@@ -1,413 +0,0 @@
----
-title: Scale for a MySQL cluster
-description: How to scale a MySQL cluster, horizontal scaling, vertical scaling
-keywords: [mysql, horizontal scaling, vertical scaling]
-sidebar_position: 2
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale a MySQL cluster
-
-You can scale a MySQL cluster in two ways, vertical scaling and horizontal scaling.
-
-:::note
-
-After vertical scaling or horizontal scaling is performed, KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is the KubeBlocks dynamic configuration feature. This feature simplifies the process of configuring parameters, saves time and effort and reduces performance issues caused by incorrect configuration. For detailed instructions, refer to [Configuration](./../configuration/configuration.md).
-
-:::
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   18m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: mysql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: mysql
-     clusterVersionRef: mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 2
-       resources: # Change the values of resources
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu` and run the command.
-
-    ```bash
-    kbcli cluster vscale mycluster -n demo --components="mysql" --memory="4Gi" --cpu="2" 
-    ```
-
-    - `--components` describes the component name ready for vertical scaling.
-    - `--memory` describes the requested and limited size of the component memory.
-    - `--cpu` describes the requested and limited size of the component CPU.
-
-2. Validate the vertical scaling. There are two options.
-
-    - View the OpsRequest progress.
-
-        KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-        ```bash
-        kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-        ```
-
-    - Check the cluster status.
-
-        ```bash
-        kbcli cluster list mycluster -n demo
-        >
-        NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     CREATED-TIME
-        mycluster   demo        mysql                mysql-8.0.33   Delete               Updating   Jul 05,2024 19:11 UTC+0800
-        ```
-
-    - STATUS=Updating: it means the vertical scaling is in progress.
-    - STATUS=Running: it means the vertical scaling operation has been applied.
-    - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-
-         > To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   18m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-  
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: mysql
-     clusterVersionRef: mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 1 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Change configuration.
-
-    Configure the parameters `--components` and `--replicas`, and run the command.
-
-    ```bash
-    kbcli cluster hscale mycluster -n demo --components="mysql" --replicas=1
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation. There are two options.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-       ```
-
-    - Check the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     CREATED-TIME
-       mycluster   demo        mysql                mysql-8.0.33   Delete               Updating   Jul 05,2024 19:26 UTC+0800
-       ```
-
-       - STATUS=Updating: it means horizontal scaling is in progress.
-       - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2024-07-05T04:20:26Z"
-    message: VolumeSnapshot/mycluster-mysql-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. First delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster
-   
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster
-    ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/stop-start-a-cluster.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/stop-start-a-cluster.md
deleted file mode 100644
index 7c7bb23b4..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/stop-start-a-cluster.md
+++ /dev/null
@@ -1,176 +0,0 @@
----
-title: Stop/Start a MySQL cluster
-description: How to stop/start a MySQL cluster
-keywords: [mysql, stop a cluster, start a cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start a MySQL cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again to restore it to the state it was in before it was stopped.
-
-## Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to stop a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure replicas as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: mysql
-      clusterVersionRef: mysql-8.0.33
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true  
-        replicas: 0 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to start a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML File">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Change replicas back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: mysql
-      clusterVersionRef: mysql-8.0.33
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true  
-        replicas: 2 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/switchover.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/switchover.md
deleted file mode 100644
index 30f46ae7a..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/cluster-management/switchover.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: Switch over a MySQL cluster
-description: How to switch over a MySQL cluster
-keywords: [mysql, switch over a cluster, switchover]
-sidebar_position: 6
-sidebar_label: Switchover
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Switch over a MySQL cluster
-
-You can initiate a switchover for a MySQL Replication Cluster. Then KubeBlocks switches the instance roles.
-
-## Before you start
-
-* Make sure the cluster is running normally.
-* Check whether the following role probe parameters exist to verify whether the role probe is enabled.
-
-   ```bash
-   kubectl get cd apecloud-mysql -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 2
-       periodSeconds: 1
-       timeoutSeconds: 1
-   ```
-
-## Initiate the switchover
-
-You can switch over a secondary of a MySQL Replication to the primary role, and the former primary instance to a secondary one.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-The value of `instanceName` decides whether a new primary instance is specified for the switchover.
-
-* Initiate a switchover with no specified primary instance.
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-demo
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mysql
-      instanceName: '*'
-  >>
-  ```
-
-* Initiate a switchover with a specified new primary instance.
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-demo
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mysql
-      instanceName: 'mycluster-mysql-1'
-  >>
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* Initiate a switchover with a specified new primary instance.
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-1' -n demo
-    ```
-
-* If there are multiple components, you can use `--components` to specify a component.
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-1' --components='apecloud-mysql' -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Verify the switchover
-
-Check the instance status to verify whether the switchover is performed successfully.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get pods -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Handle an exception
-
-If an error occurs, refer to [Handle an exception](./../../handle-an-exception/handle-a-cluster-exception.md) to troubleshoot the operation.
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-mysql-community-edition/configuration/_category_.yml
deleted file mode 100644
index cec02728b..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/configuration/configuration.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/configuration/configuration.md
deleted file mode 100644
index 6b38f93d3..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/configuration/configuration.md
+++ /dev/null
@@ -1,442 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [mysql, parameter, configuration, reconfiguration]
-sidebar_position: 1
-sidebar_label: Configuration
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-This guide shows how to configure cluster parameters.
-
-From v0.9.0, KubeBlocks supports dynamic configuration. When the specification of a database instance changes (e.g. a user vertically scales a cluster), KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is because different specifications of a database instance may require different optimal configurations to optimize performance and resource utilization. When you choose a different database instance specification, KubeBlocks automatically detects it and determines the best database configuration for the new specification, ensuring optimal performance and configuration of the database under the new specifications.
-
-This feature simplifies the process of configuring parameters, which saves you from manually configuring database parameters as KubeBlocks handles the updates and configurations automatically to adapt to the new specifications. This saves time and effort and reduces performance issues caused by incorrect configuration.
-
-But it's also important to note that the dynamic parameter configuration doesn't apply to all parameters. Some parameters may require manual configuration. Additionally, if you have manually modified database parameters before, KubeBlocks may overwrite your customized configurations when updating the database configuration template. Therefore, when using the dynamic configuration feature, it is recommended to back up and record your custom configuration so that you can restore them if needed.
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-KubeBlocks supports configuring cluster parameters by editing its configuration file.
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-mysql -n demo
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `spec.configFileParams` part to configure `max_connections`.
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: mysql
-     configItemDetails:
-     - configFileParams:
-         my.cnf:
-           parameters:
-             max_connections: "600"
-       configSpec:
-         constraintRef: oracle-mysql8.0-config-constraints
-         name: mysql-replication-config
-         namespace: kb-system
-         templateRef: oracle-mysql8.0-config-template
-         volumeName: mysql-config
-       name: mysql-replication-config
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-KubeBlocks supports configuring cluster parameters with OpsRequest.
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a yaml file named `mycluster-configuring-demo.yaml`. In this example, `max_connections` is configured as `600`.
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: mysql
-       configurations:
-       - keys:
-         - key: my.cnf
-           parameters:
-           - key: max_connections
-             value: "600"
-         name: mysql-replication-configuration
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   EOF
-   ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply the configuration OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml -n demo
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the current configuration file of a cluster.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-From the meta information, the cluster `mycluster` has a configuration file named `my.cnf`.
-
-You can also view the details of this configuration file and parameters.
-
-* View the details of the current configuration file.
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail -n demo
-   ```
-
-* View the parameter description.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* View the user guide of a specified parameter.
-  
-  ```bash
-  kbcli cluster explain-config mycluster --param=innodb_buffer_pool_size --config-specs=mysql-replication-config -n demo
-  ```
-
-  `--config-specs` is required to specify a configuration template since MySQL currently supports multiple templates. You can run `kbcli cluster describe-config mycluster` to view the all template names.
-
-  <details>
-
-  <summary>Output</summary>
-
-  ```bash
-  component: mysql
-  template meta:
-    ConfigSpec: mysql-replication-config	ComponentName: mysql	ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     innodb_buffer_pool_size
-    Allowed Values:     [5242880-18446744073709552000]
-    Scope:              Global
-    Dynamic:            true
-    Type:               integer
-    Description:        The size in bytes of the memory buffer innodb uses to cache data and indexes of its tables 
-  ```
-  
-  </details>
-
-  * Allowed Values: It defines the valid value range of this parameter.
-  * Dynamic: The value of `Dynamic` in `Configure Constraint` defines how the parameter configuration takes effect. There are two different configuration strategies based on the effectiveness type of modified parameters, i.e. **dynamic** and **static**.
-    * When `Dynamic` is `true`, it means the effectiveness type of parameters is **dynamic** and can be configured online.
-    * When `Dynamic` is `false`, it means the effectiveness type of parameters is **static** and a pod restarting is required to make the configuration effective.
-  * Description: It describes the parameter definition.
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-The example below takes configuring `max_connections` and `innodb_buffer_pool_size` as an example.
-
-1. View the current values of `max_connections` and `innodb_buffer_pool_size`.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 167   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 134217728 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-2. Adjust the values of `max_connections` and `innodb_buffer_pool_size`.
-
-   ```bash
-   kbcli cluster configure mycluster --set=max_connections=600,innodb_buffer_pool_size=512M -n demo
-   ```
-
-   :::note
-
-   Make sure the value you set is within the Allowed Values of this parameter. If you set a value that does not meet the value range, the system prompts an error. For example,
-
-   ```bash
-   kbcli cluster configure mycluster  --set=max_connections=200,innodb_buffer_pool_size=2097152 -n demo
-   error: failed to validate updated config: [failed to cue template render configure: [mysqld.innodb_buffer_pool_size: invalid value 2097152 (out of bound >=5242880):
-    343:34
-   ]
-   ]
-   ```
-
-   :::
-
-3. Search the status of the parameter configuration.
-
-   `Status.Progress` shows the overall status of the parameter configuration and `Conditions` show the details.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-pxs46 -n demo
-   ```
-
-   <details>
-
-   <summary>Output</summary>
-
-   ```bash
-   Spec:
-   Name: mycluster-reconfiguring-pxs46	NameSpace: demo	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster --components=mysql --config-specs=mysql-replication-config --config-file=my.cnf --set innodb_buffer_pool_size=512M --set max_connections=600 --namespace=demo
-
-   Status:
-     Start Time:         Jul 05,2024 19:00 UTC+0800
-     Completion Time:    Jul 05,2024 19:00 UTC+0800
-     Duration:           2s
-     Status:             Succeed
-     Progress:           2/2
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                            STATUS   MESSAGE
-   Jul 05,2024 19:00 UTC+0800   WaitForProgressing   WaitForProgressing                True     wait for the controller to process the OpsRequest: mycluster-reconfiguring-pxs46 in Cluster: mycluster
-   Jul 05,2024 19:00 UTC+0800   Validated            ValidateOpsRequestPassed          True     OpsRequest: mycluster-reconfiguring-pxs46 is validated
-   Jul 05,2024 19:00 UTC+0800   Reconfigure          ReconfigureStarted                True     Start to reconfigure in Cluster: mycluster, Component: mysql
-   Jul 05,2024 19:00 UTC+0800   Succeed              OpsRequestProcessedSuccessfully   True     Successfully processed the OpsRequest: mycluster-reconfiguring-pxs46 in Cluster: mycluster
-
-   Warning Events: <none>
-   ```
-
-   </details>
-
-4. Connect to the database to verify whether the parameters are configured as expected.
-
-   It takes about 30 seconds for the configuration to take effect because the kubelet requires some time to sync changes in the ConfigMap to the Pod's volume.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 600   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-  
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 536870912 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool `edit-config` to help you configure parameters in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on the notepad.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster --config-spec=mysql-replication-config -n demo
-   ```
-
-   :::note
-
-   * Since MySQL currently supports multiple templates, it is required to use `--config-spec` to specify a configuration template. You can run `kbcli cluster describe-config mycluster` to view all template names.
-   * If there are multiple components in a cluster, use `--components` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-bbh86 -n demo
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. For the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
->
-component: mysql
-
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME           FILE                              ENABLED   TEMPLATE                          CONSTRAINT                           RENDERED                                   COMPONENT   CLUSTER
-mysql-replication-config   my.cnf                            true      oracle-mysql8.0-config-template   oracle-mysql8.0-config-constraints   mycluster-mysql-mysql-replication-config   mysql       mycluster
-agamotto-configuration     agamotto-config.yaml              false     mysql-agamotto-configuration                                           mycluster-mysql-agamotto-configuration     mysql       mycluster
-agamotto-configuration     agamotto-config-with-proxy.yaml   false     mysql-agamotto-configuration                                           mycluster-mysql-agamotto-configuration     mysql       mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME           FILE     STATUS    POLICY              PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-pxs46   mycluster   mysql       mysql-replication-config   my.cnf   Succeed   syncDynamicReload   2/2        Jul 05,2024 19:00 UTC+0800   {"my.cnf":"{\"mysqld\":{\"innodb_buffer_pool_size\":\"512M\",\"max_connections\":\"600\"}}"}
-mycluster-reconfiguring-x52fb   mycluster   mysql       mysql-replication-config   my.cnf   Succeed   syncDynamicReload   2/2        Jul 05,2024 19:04 UTC+0800   {"my.cnf":"{\"mysqld\":{\"max_connections\":\"1000\"}}"}                    
-```
-
-From the above results, there are two parameter modifications.
-
-Compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-pxs46 mycluster-reconfiguring-x9zsf -n demo
->
-DIFF-CONFIGURE RESULT:
-  ConfigFile: my.cnf    TemplateName: mysql-replication-config ComponentName: mysql    ClusterName: mycluster       UpdateType: update      
-
-PARAMETERNAME             mycluster-reconfiguring-pxs46   mycluster-reconfiguring-x9zsf   
-max_connections           600                             2000                                      
-innodb_buffer_pool_size   512M                            1G 
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/high-availability/_category_.yml b/docs/user_docs/kubeblocks-for-mysql-community-edition/high-availability/_category_.yml
deleted file mode 100644
index ab9c28266..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: High Availability
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/high-availability/high-availability.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/high-availability/high-availability.md
deleted file mode 100644
index 8551d31a2..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/high-availability/high-availability.md
+++ /dev/null
@@ -1,248 +0,0 @@
----
-title: Failure simulation and automatic recovery
-description: Automatic recovery of cluster
-keywords: [mysql, high availability, failure simulation, automatic recovery]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Failure simulation and automatic recovery
-
-As an open-source data management platform, Kubeblocks currently supports over thirty database engines and is continuously expanding. Due to the varying high availability capabilities of databases, KubeBlocks has designed and implemented a high availability (HA) system for database instances. The KubeBlocks HA system uses a unified HA framework to provide high availability for databases, allowing different databases on KubeBlocks to achieve similar high availability capabilities and experiences.
-
-This tutorial uses MySQL Community edition as an example to demonstrate its fault simulation and recovery capabilities.
-
-## Recovery simulation
-
-:::note
-
-The faults here are all simulated by deleting a pod. When there are sufficient resources, the fault can also be simulated by machine downtime or container deletion, and its automatic recovery is the same as described here.
-
-:::
-
-### Before you start
-
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Create a MySQL Replication Cluster, refer to [Create a MySQL cluster](./../cluster-management/create-and-connect-a-mysql-cluster.md).
-* Run `kubectl get cd mysql -o yaml` to check whether _rolechangedprobe_ is enabled in the MySQL Replication (it is enabled by default). If the following configuration exists, it indicates that it is enabled:
-
-  ```bash
-  probes:
-    roleProbe:
-      failureThreshold: 2
-      periodSeconds: 1
-      timeoutSeconds: 1
-  ```
-
-### Primary pod fault
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the pod role of the MySQL Replication Cluster. In this example, the primary pod's name is `mycluster-mysql-0`.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_pod](./../../../img/api-mysql-ha-grep-role.png)
-2. Delete the primary pod `mycluster-mysql-0` to simulate a pod fault.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 -n demo
-    ```
-
-    ![delete_pod](./../../../img/api-mysql-ha-delete-primary-pod.png)
-3. Check the status of the pods and Replication Cluster connection.
-
-    The following example shows that the roles of pods have changed after the old primary pod was deleted and `mycluster-mysql-1` is elected as the new primary pod.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_after](./../../../img/api-mysql-ha-delete-primary-pod-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the MySQL Replication Cluster information. View the primary pod name in `Topology`. In this example, the primary pod's name is `mycluster-mysql-0`.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster](./../../../img/ha-mysql-describe-cluster.png)
-2. Delete the primary pod `mycluster-mysql-0` to simulate a pod fault.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0
-    ```
-
-    ![delete_pod](./../../../img/ha-mysql-delete-primary-pod.png)
-3. Run `kbcli cluster describe` to check the status of the pods and Replication Cluster connection.
-
-    ***Results***
-
-    The following example shows that the roles of pods have changed after the old primary pod was deleted and `mycluster-mysql-1` is elected as the new primary pod.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster_after](./../../../img/ha-mysql-primary-pod-describe-after.png)
-
-    It shows that this MySQL Replication Cluster can be connected within seconds.
-
-</TabItem>
-
-</Tabs>
-
-***How the automatic recovery works***
-
-After the primary pod is deleted, the MySQL Replication Cluster elects a new primary pod. In this example, `mycluster-mysql-1` is elected as the new primary pod. KubeBlocks detects that the primary pod has changed, and sends a notification to update the access link. The original exception node automatically rebuilds and recovers to the normal Replication Cluster state. It normally takes 30 seconds from exception to recovery.
-
-### Secondary pod exception
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the pod role again and in this example, the secondary pod is `mycluster-mysql-0`.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-mysql-ha-grep-role-secondary-pod.png)
-2. Delete the secondary pod `mycluster-mysql-0`.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 -n demo
-    ```
-
-    ![delete_secondary_pod](./../../../img/api-ysql-ha-delete-secondary-pod.png)
-3. Open another terminal page and view the pod status. You can find the secondary pod `mycluster-mysql-0` is `Terminating`.
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![view_cluster_secondary_status](./../../../img/api-mysql-ha-secondary-pod-status.png)
-
-    View the pod roles again.
-
-    ![describe_cluster_secondary](./../../../img/api-mysql-ha-secondary-pod-grep-role-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the MySQL Replication Cluster information and view the secondary pod name in `Topology`. In this example, the secondary pod is `mycluster-mysql-0`.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster](./../../../img/ha-mysql-primary-pod-describe-after.png)
-2. Delete the secondary pod mycluster-mysql-0.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0
-    ```
-
-    ![delete_secondary_pod](./../../../img/ha-mysql-delete-secondary.png)
-3. View the Replication Cluster status and you can find the secondary pod is being terminated in `Component.Instance`.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster_secondary](./../../../img/ha-mysql-delete-secondary-after.png)
-
-</TabItem>
-
-</Tabs>
-
-***How the automatic recovery works***
-
-One secondary pod exception doesn't trigger re-electing of the primary pod or access link switch, so the R/W of the cluster is not affected. The secondary pod exception triggers recreation and recovery. The process takes no more than 30 seconds.
-
-### Both pods exception
-
-***Steps:***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the role of pods.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-mysql-ha-both-pods-grep-role.png)
-2. Delete both pods.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 mycluster-mysql-1 -n demo
-    ```
-
-    ![delete_both_pods](./../../../img/api-mysql-ha-delete-both-pods.png)
-3. Open another terminal page and view the pod status. You can find the pods are terminating.
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![describe_both_clusters](./../../../img/api-mysql-ha-both-pods-status.png)
-4. View the pod roles and you can find a new primary pod is elected.
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-mysql-ha-both-pods-grep-role-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Run the command below to view the MySQL Replication Cluster information and view the pods' names in `Topology`.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster](./../../../img/ha-mysql-delete-secondary-after.png)
-2. Delete all pods.
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0
-    ```
-
-    ![delete_three_pods](./../../../img/ha-mysql-delete-both-pods.png)
-3. Run the command below to view the deleting process. You can find the pods are pending.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_three_clusters](./../../../img/ha-mysql-delete-both-pods-after.png)
-
-</TabItem>
-
-</Tabs>
-
-***How the automatic recovery works***
-
-Every time both pods are deleted, recreation is triggered. And then MySQL automatically completes the cluster recovery and the election of a new primary pod. Once a new primary pod is elected, KubeBlocks detects this new pod and updates the access link. This process takes less than 30 seconds.
diff --git a/docs/user_docs/kubeblocks-for-mysql-community-edition/kubeblocks-for-mysql-community-edition.md b/docs/user_docs/kubeblocks-for-mysql-community-edition/kubeblocks-for-mysql-community-edition.md
deleted file mode 100644
index 5376c3f47..000000000
--- a/docs/user_docs/kubeblocks-for-mysql-community-edition/kubeblocks-for-mysql-community-edition.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: KubeBlocks for MySQL Community Edition
-description: Feature list of KubeBlocks for MySQL Community Edition
-keywords: [mysql, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for MySQL Community Edition
-
-This tutorial illustrates how to create and manage a MySQL cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/mysql).
-
-* [Cluster Management](./cluster-management/create-and-connect-a-mysql-cluster.md)
-* [Configuration](./configuration/configuration.md)
-* [High Availability](./high-availability/high-availability.md)
diff --git a/docs/user_docs/kubeblocks-for-postgresql/_category_.yml b/docs/user_docs/kubeblocks-for-postgresql/_category_.yml
deleted file mode 100644
index 8388c3755..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 13
-label: KubeBlocks for PostgreSQL
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/_category_.yml
deleted file mode 100644
index 200a2feb5..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md
deleted file mode 100644
index cb6029c9f..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md
+++ /dev/null
@@ -1,300 +0,0 @@
----
-title: Create and connect to a PostgreSQL Cluster
-description: How to create and connect to a PostgreSQL cluster
-keywords: [postgresql, create a postgresql cluster, connect to a postgresql cluster]
-sidebar_position: 1
-sidebar_label: Create and connect
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create and connect to a PostgreSQL cluster
-
-This tutorial shows how to create and connect to a PostgreSQL cluster.
-
-## Create a PostgreSQL cluster
-
-### Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to manage the PostgreSQL cluster by `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Make sure the PostgreSQL Addon is enabled. The PostgreSQL Addon is installed and enabled  by KubeBlocks by default. But if you disable it when installing KubeBlocks, [enable it](./../../installation/install-addons.md) first.
-  
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io postgresql
-  >
-  NAME         TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  postgresql                              Available   30m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                       TYPE   STATUS     EXTRAS         AUTO-INSTALL   
-  ...
-  postgresql                 Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* View all the database types and versions available for creating a cluster.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-  
-  ```bash
-  kubectl get clusterdefinition postgresql
-  >
-  NAME         TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  postgresql                              Available   30m
-  ```
-
-  View all available versions for creating a cluster.
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=postgresql
-  >
-  NAME                 CLUSTER-DEFINITION   STATUS      AGE
-  postgresql-12.14.0   postgresql           Available   30m
-  postgresql-12.14.1   postgresql           Available   30m
-  postgresql-12.15.0   postgresql           Available   30m
-  postgresql-14.7.2    postgresql           Available   30m
-  postgresql-14.8.0    postgresql           Available   30m
-  postgresql-15.7.0    postgresql           Available   30m
-  postgresql-16.4.0    postgresql           Available   30m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-   ```bash
-   kubectl create namespace demo
-   ```
-
-### Create a cluster
-
-KubeBlocks supports creating two types of PostgreSQL clusters: Standalone and Replication Cluster. Standalone only supports one replica and can be used in scenarios with lower requirements for availability. For scenarios with high availability requirements, it is recommended to create a Replication Cluster, which creates a cluster with a Replication Cluster to support automatic failover. To ensure high availability, Primary and Secondary are distributed on different nodes by default.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create a PostgreSQL cluster. If you only have one node for deploying a Replication Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-   KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a Replication.
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: postgresql
-     topology: replication
-     componentSpecs:
-       - name: postgresql
-         serviceVersion: "14.7.2"
-         disableExporter: false
-         labels:
-           # Note: DO NOT REMOVE THIS LABEL
-           apps.kubeblocks.postgres.patroni/scope: mycluster-postgresql
-         replicas: 2
-         resources:
-           limits:
-             cpu: "0.5"
-             memory: "0.5Gi"
-           requests:
-             cpu: "0.5"
-             memory: "0.5Gi"
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | Field                                 | Definition  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-a-postgresql-cluster.md#termination-policy). |
-   | `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. Note: DO NOT UPDATE THIS FIELD. The value must be `postgresql` to create a PostgreSQL Cluster. |
-   | `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. The valid option is [replication]. |
-   | `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-   | `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are: [12.14.0,12.14.1,12.15.0,14.7.2,14.8.0,15.7.0,16.4.0]. |
-   | `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-   | `spec.componentSpecs.labels` | It specifies Labels to override or add for underlying Pods, PVCs, Account & TLS Secrets, Services owned by Component. |
-   | `spec.componentSpecs.labels.apps.kubeblocks.postgres.patroni/scope` | PostgreSQL's `ComponentDefinition` specifies the environment variable `KUBERNETES_SCOPE_LABEL=apps.kubeblocks.postgres.patroni/scope`. This variable defines the label key Patroni uses to tag Kubernetes resources, helping Patroni identify which resources belong to the specified scope (or cluster). **Note**: **DO NOT REMOVE THIS LABEL.** You can update its value to match your cluster name. The value must follow the format `<cluster.metadata.name>-postgresql`. For example, if your cluster name is `mycluster`, the value would be `mycluster-postgresql`. Replace `mycluster` with your actual cluster name as needed.  |
-   | `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-   | `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-   | `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-   For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-   KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster with `kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo`.
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   Run the following command to see the created PostgreSQL cluster object:
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-   mycluster   postgresql           postgresql-14.8.0   Delete               Running   9m21s
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Create a PostgreSQL cluster.
-
-   Here is an example of creating a Standalone.
-
-   ```bash
-   kbcli cluster create postgresql mycluster -n demo
-   ```
-
-   `kbcli` provides various options for you to customize your cluster specifications, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-
-   ```bash
-   kbcli cluster create postgresql --help
-   kbcli cluster create postgresql -h
-   ```
-
-   If you only have one node for deploying a Replication Cluster, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a Replication Cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create postgresql mycluster \
-       --mode='replication' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to a PostgreSQL Cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-You can use `kubectl exec` to exec into a Pod and connect to a database.
-
-KubeBlocks operator has created a new Secret called `mycluster-conn-credential` to store the connection credential of the `mycluster` cluster. This secret contains following keys:
-
-* `username`: the root username of the PostgreSQL cluster.
-* `password`: the password of root user.
-* `port`: the port of the PostgreSQL cluster.
-* `host`: the host of the PostgreSQL cluster.
-* `endpoint`: the endpoint of the PostgreSQL cluster and it is the same as `host:port`.
-
-1. Run the command below to get the `username` and `password` for the `kubectl exec` command.
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   postgres
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   h62rg2kl
-   ```
-
-2. Exec into the Pod `mycluster-postgresql-0` and connect to the database using username and password.
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-postgresql-0 -- bash
-
-   root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-   Password: h62rg2kl
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-You can also port forward the service to connect to the database from your local machine.
-
-1. Run the following command to port forward the service.
-
-   ```bash
-   kubectl port-forward -n demo svc/mycluster-postgresql 5432:5432 
-   ```
-
-2. Open a new terminal and run the following command to connect to the database.
-
-   ```bash
-   root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-   Password: h62rg2kl
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster  --namespace demo
-```
-
-</TabItem>
-
-</Tabs>
-
-For the detailed database connection guide, refer to [Connect database](./../../connect_database/overview-of-database-connection.md).
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/delete-a-postgresql-cluster.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/delete-a-postgresql-cluster.md
deleted file mode 100644
index cbf896fb8..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/delete-a-postgresql-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Delete a PostgreSQL Cluster
-description: How to delete a PostgreSQL Cluster
-keywords: [postgresql, delete a cluster]
-sidebar_position: 7
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete a PostgreSQL Cluster
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-## Termination policy
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Step
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, and then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/expand-volume.md
deleted file mode 100644
index b1e07d5fc..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,189 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of a PostgreSQL cluster
-keywords: [postgresql, expand volume]
-sidebar_position: 3
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-## Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: postgresql
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.components.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.components.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     componentSpecs:
-     - name: postgresql
-       componentDefRef: postgresql
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `--components`, `--volume-claim-templates`, and `--storage`, and run the command below to expand the volume.
-
-   ```bash
-   kbcli cluster volume-expand mycluster --components="postgresql" --volume-claim-templates="data" --storage="30Gi" -n demo
-   ```
-
-   - `--components` describes the component name for volume expansion.
-   - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-   - `--storage` describes the volume storage size.
-
-2. Validate the volume expansion.
-
-   - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME             NAMESPACE     CLUSTER-DEFINITION        VERSION                  TERMINATION-POLICY        STATUS          CREATED-TIME
-       mycluster        demo          postgresql                postgresql-14.8.0        Delete                    Updating        Sep 28,2024 16:47 UTC+0800
-       ```
-
-       * STATUS=Updating: it means the volume expansion is in progress.
-       * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/restart-a-postgresql-cluster.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/restart-a-postgresql-cluster.md
deleted file mode 100644
index 77c1c97ed..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/restart-a-postgresql-cluster.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: Restart PostgreSQL cluster
-description: How to restart a PostgreSQL cluster
-keywords: [postgresql, restart]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart PostgreSQL cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-:::note
-
-The pod role may change after the cluster restarts.
-
-:::
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: postgresql
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                     READY   STATUS            RESTARTS   AGE
-   mycluster-postgresql-0   3/4     Terminating       0          5m32s
-   mycluster-postgresql-1   4/4     Running           0          6m36s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="postgresql" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME       NAMESPACE   CLUSTER-DEFINITION          VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo       postgresql                  postgresql-14.8.0   Delete               Running   Sep 28,2024 16:57 UTC+0800
-   ```
-
-   * STATUS=Updating: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/scale-for-a-postgresql-cluster.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/scale-for-a-postgresql-cluster.md
deleted file mode 100644
index a0f67fca1..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/scale-for-a-postgresql-cluster.md
+++ /dev/null
@@ -1,450 +0,0 @@
----
-title: Scale for a PostgreSQL cluster
-description: How to vertically scale a PostgreSQL cluster
-keywords: [postgresql, vertical scale]
-sidebar_position: 2
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale a PostgreSQL cluster
-
-You can scale a PostgreSQL cluster in two ways, vertical scaling and horizontal scaling.
-
-:::note
-
-After vertical scaling or horizontal scaling is performed, KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is the KubeBlocks dynamic configuration feature. This feature simplifies the process of configuring parameters, saves time and effort and reduces performance issues caused by incorrect configuration. For detailed instructions, refer to [Configuration](./../configuration/configuration.md).
-
-:::
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: postgresql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  postgresql
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      postgresql
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. 
-
-   `spec.components.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     componentSpecs:
-     - componentDefRef: postgresql
-       enabledLogs:
-       - running
-       disableExporter: true
-       name: postgresql
-       replicas: 2
-       resources: # Change values of resources
-         limits:
-           cpu: "2"
-           memory: 4Gi
-         requests:
-           cpu: "1"
-           memory: 2Gi
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  postgresql
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      postgresql
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu` and run the command.
-
-   ```bash
-   kbcli cluster vscale mycluster -n demo --components="postgresql" --memory="1Gi" --cpu="1"
-   ```
-
-   - `--components` describes the component name ready for vertical scaling.
-   - `--memory` describes the requested and limited size of the component memory.
-   - `--cpu` describes the requested and limited size of the component CPU.
-
-2. Validate the vertical scaling operation.
-
-    - View the OpsRequest progress.
-
-         KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-         ```bash
-         kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-         ```
-
-    - Check the cluster status.
-
-         ```bash
-         kbcli cluster list mycluster -n demo
-         >
-         NAME             NAMESPACE        CLUSTER-DEFINITION         VERSION                TERMINATION-POLICY   STATUS    CREATED-TIME
-         mycluster        demo             postgresql                 postgresql-14.8.0      Delete               Running   Sep 28,2024 16:47 UTC+0800
-         ```
-
-         - STATUS=Updating: it means the vertical scaling is in progress.
-         - STATUS=Running: it means the vertical scaling has been applied.
-         - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be the normal instances number is less than the total instance number or the primary instance is running properly while others are abnormal.
-             > To solve the problem, you can check manually to see whether resources are sufficient. If AutoScaling is supported, the system recovers when there are enough resources, otherwise, you can create enough resources and check the result with kubectl describe command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: postgresql
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: postgresql
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to identify the horizontal scaling status.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file.
-
-   `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     componentSpecs:
-     - name: postgresql
-       componentDefRef: postgresql
-       replicas: 1 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components` and `--replicas`, and run the command.
-
-    ```bash
-    kbcli cluster hscale mycluster -n demo --components="postgresql" --replicas=2
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation.
-
-    - View the OpsRequest progress.
-
-         KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-         ```bash
-         kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-         ```
-
-    - View the cluster status.
-
-         ```bash
-         kbcli cluster list mycluster -n demo
-         ```
-
-         - STATUS=Updating: it means horizontal scaling is in progress.
-         - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-04-08T04:20:26Z"
-    message: VolumeSnapshot/mycluster-postgresql-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. First, delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster
-   
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster
-    ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/start-stop-a-cluster.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/start-stop-a-cluster.md
deleted file mode 100644
index eacb3d536..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/start-stop-a-cluster.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-title: Stop/Start a PostgreSQL cluster
-description: How to start/stop a PostgreSQL cluster
-keywords: [postgresql, stop a cluster, start a cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start PostgreSQL Cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again to restore it to the state it was in before it was stopped.
-
-## Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   Apply an OpsRequest to stop a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-stop
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Stop
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-   Configure replicas as 0 to delete pods.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: postgresql
-       componentDefRef: postgresql
-       disableExporter: true  
-       replicas: 0 # Change this value
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster stop mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-## Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF 
-   ```
-
-   </TabItem>
-  
-   <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-   Change replicas back to the original amount to start this cluster again.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       disableExporter: true
-       replicas: 1 # Change this value
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/switchover.md b/docs/user_docs/kubeblocks-for-postgresql/cluster-management/switchover.md
deleted file mode 100644
index 9675dcc78..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/cluster-management/switchover.md
+++ /dev/null
@@ -1,131 +0,0 @@
----
-title: Switch over a PostgreSQL cluster
-description: How to switch over a PostgreSQL cluster
-keywords: [postgresql, switch over a cluster, switchover]
-sidebar_position: 6
-sidebar_label: Switchover
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Switch over a PostgreSQL cluster
-
-You can initiate a switchover for a PostgreSQL Replication Cluster by executing the kbcli or kubectl command. Then KubeBlocks modifies the instance roles.
-
-## Before you start
-
-* Make sure the cluster is running normally.
-* Check whether the following role probe parameters exist to verify whether the role probe is enabled.
-
-   ```bash
-   kubectl get cd postgresql -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 2
-       periodSeconds: 1
-       timeoutSeconds: 1
-   ```
-
-## Initiate the switchover
-
-You can switch over a secondary of a PostgreSQL Replication Cluster to the primary role, and the former primary instance to a secondary.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-The value of `instanceName` decides whether a new primary instance is specified for the switchover.
-
-* Switchover with no specified primary instance
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: postgresql
-      instanceName: '*'
-  >>
-  ```
-
-* Switchover with a specified new primary instance
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: postgresql
-      instanceName: 'mycluster-postgresql-2'
-  >>
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* Switchover with no primary instance specified
-
-    ```bash
-    kbcli cluster promote mycluster -n demo
-    ```
-
-* Switchover with a specified new primary instance
-
-    ```bash
-    kbcli cluster promote mycluster -n demo --instance='mycluster-postgresql-2'
-    ```
-
-* If there are multiple components, you can use `--components` to specify a component.
-
-    ```bash
-    kbcli cluster promote mycluster -n demo --instance='mycluster-postgresql-2' --components='postgresql'
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Verify the switchover
-
-Check the instance status to verify whether the switchover is performed successfully.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
-
-kubectl -n demo get po -L kubeblocks.io/role 
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Handle an exception
-
-If an error occurs, refer to [Handle an exception](./../../handle-an-exception/handle-a-cluster-exception.md) to troubleshoot the operation.
diff --git a/docs/user_docs/kubeblocks-for-postgresql/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-postgresql/configuration/_category_.yml
deleted file mode 100644
index b19dea834..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-postgresql/configuration/configuration.md b/docs/user_docs/kubeblocks-for-postgresql/configuration/configuration.md
deleted file mode 100644
index 08dc5b497..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/configuration/configuration.md
+++ /dev/null
@@ -1,420 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [postgresql, parameter, configuration, reconfiguration]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-This guide shows how to configure cluster parameters.
-
-From v0.9.0, KubeBlocks supports dynamic configuration. When the specification of a database instance changes (e.g. a user vertically scales a cluster), KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is because different specifications of a database instance may require different optimal configurations to optimize performance and resource utilization. When you choose a different database instance specification, KubeBlocks automatically detects it and determines the best database configuration for the new specification, ensuring optimal performance and configuration of the database under the new specifications.
-
-This feature simplifies the process of configuring parameters, which saves you from manually configuring database parameters as KubeBlocks handles the updates and configurations automatically to adapt to the new specifications. This saves time and effort and reduces performance issues caused by incorrect configuration.
-
-But it's also important to note that the dynamic parameter configuration doesn't apply to all parameters. Some parameters may require manual configuration. Additionally, if you have manually modified database parameters before, KubeBlocks may overwrite your customized configurations when updating the database configuration template. Therefore, when using the dynamic configuration feature, it is recommended to back up and record your custom configuration so that you can restore them if needed.
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-KubeBlocks supports configuring cluster parameters by editing its configuration file.
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-postgresql -n demo
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `spec.configFileParams` part to configure `max_connections`.
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: postgresql
-     configItemDetails:
-     - configFileParams:
-         my.cnf:
-           parameters:
-             max_connections: "600"
-       configSpec:
-         constraintRef: postgresql14-cc
-         defaultMode: 292
-         keys:
-         - postgresql.conf
-         name: postgresql-configuration
-         namespace: kb-system
-         templateRef: postgresql-configuration
-         volumeName: postgresql-config
-       name: postgresql-configuration
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-postgresql-0 -- bash
-
-      root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-      Password: tf8fhsv2
-      >
-      postgres=# show max_connections;
-      max_connections
-      -----------------
-      600
-      (1 row)
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a YAML file named `mycluster-configuring-demo.yaml`. In this example, `max_connections` is configured as `600`.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: postgresql
-       configurations:
-       - keys:
-         - key: postgresql.conf
-           parameters:
-           - key: max_connections
-             value: "600"
-         name: postgresql-configuration
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply this OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      postgres
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      tf8fhsv2
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-postgresql-0 -- bash
-
-      root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-      Password: tf8fhsv2
-      >
-      postgres=# show max_connections;
-      max_connections
-      -----------------
-      600
-      (1 row)
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the current configuration file of a cluster.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-From the meta information, you can find the configuration files of this PostgreSQL cluster.
-
-You can also view the details of this configuration file and parameters.
-
-* View the details of the current configuration file.
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail
-   ```
-
-* View the parameter description.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* View the user guide of a specified parameter.
-  
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --param=max_connections
-  ```
-  
-  <details>
-
-  <summary>Output</summary>
-  
-  ```bash
-  template meta:
-    ConfigSpec: postgresql-configuration ComponentName: postgresql ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     max_connections
-    Allowed Values:     [6-8388607]
-    Scope:              Global
-    Dynamic:            true
-    Type:               integer
-    Description:        Sets the maximum number of concurrent connections.
-  ```
-
-  </details>
-
-  * Allowed Values: It defines the valid value range of this parameter.
-  * Dynamic: The value of `Dynamic` in `Configure Constraint` defines how the parameter configuration takes effect. There are two different configuration strategies based on the effectiveness type of modified parameters, i.e. **dynamic** and **static**.
-    * When `Dynamic` is `true`, it means the effectiveness type of parameters is **dynamic** and can be configured online.
-    * When `Dynamic` is `false`, it means the effectiveness type of parameters is **static** and a pod restarting is required to make the configuration effective.
-  * Description: It describes the parameter definition.
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-The example below takes configuring `max_connections` as an example.
-
-1. View the current values of `max_connections`.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   postgres=# show max_connections;
-    max_connections
-   -----------------
-    100
-   (1 row)
-   ```
-
-2. Adjust the values of `max_connections`.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --set=max_connections=200
-   ```
-
-:::note
-
-Make sure the value you set is within the Allowed Values of this parameter. If you set a value that does not meet the value range, the system prompts an error. For example,
-
-```bash
-kbcli cluster configure mycluster -n demo  --set=max_connections=5
->
-error: failed to validate updated config: [failed to cue template render configure: [pg.acllog-max-len: invalid value 5 (out of bound 6-8388607):
-343:34
-]
-]
-```
-
-:::
-
-3. View the status of the parameter configuration.
-
-   `Status.Progress` and `Status.Status` shows the overall status of the parameter configuration and `Conditions` show the details.
-
-   When the `Status.Status` shows `Succeed`, the configuration is completed.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-fq6q7 -n demo
-   ```
-
-   <details>
-
-   <summary>Output</summary>
-
-   ```bash
-   Spec:
-     Name: mycluster-reconfiguring-fq6q7 NameSpace: demo Cluster: mycluster Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=postgresql --config-specs=postgresql-configuration --config-file=postgresql.conf --set max_connections=100 --namespace=demo
-
-   Status:
-     Start Time:         Mar 17,2023 19:25 UTC+0800
-     Completion Time:    Mar 17,2023 19:25 UTC+0800
-     Duration:           2s
-     Status:             Succeed
-     Progress:           1/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                            STATUS   MESSAGE
-   Mar 17,2023 19:25 UTC+0800   Progressing          OpsRequestProgressingStarted      True     Start to process the OpsRequest: mycluster-reconfiguring-fq6q7 in Cluster: mycluster
-   Mar 17,2023 19:25 UTC+0800   Validated            ValidateOpsRequestPassed          True     OpsRequest: mycluster-reconfiguring-fq6q7 is validated
-   Mar 17,2023 19:25 UTC+0800   Reconfigure          ReconfigureStarted                True     Start to reconfigure in Cluster: mycluster, Component: postgresql
-   Mar 17,2023 19:25 UTC+0800   ReconfigureMerged    ReconfigureMerged                 True     Reconfiguring in Cluster: mycluster, Component: postgresql, ConfigSpec: postgresql-configuration, info: updated: map[postgresql.conf:{"max_connections":"200"}], added: map[], deleted:map[]
-   Mar 17,2023 19:25 UTC+0800   ReconfigureSucceed   ReconfigureSucceed                True     Reconfiguring in Cluster: mycluster, Component: postgresql, ConfigSpec: postgresql-configuration, info: updated policy: <operatorSyncUpdate>, updated: map[postgresql.conf:{"max_connections":"100"}], added: map[], deleted:map[]
-   Mar 17,2023 19:25 UTC+0800   Succeed              OpsRequestProcessedSuccessfully   True     Successfully processed the OpsRequest: mycluster-reconfiguring-fq6q7 in Cluster: mycluster
-   ```
-
-   </details>
-
-4. Connect to the database to verify whether the parameter is configured as expected.
-
-   It takes about 30 seconds for the configuration to take effect because the kubelet requires some time to sync changes in the ConfigMap to the Pod's volume.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   postgres=# show max_connections;
-    max_connections
-   -----------------
-    200
-   (1 row)
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool `edit-config` to help you configure parameters in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on the notepad.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   If there are multiple components in a cluster, use `--components` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-njk23 -n demo
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. For the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-<details>
-
-<summary>Output</summary>
-
-```bash
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME            FILE                  ENABLED   TEMPLATE                    CONSTRAINT        RENDERED                                         COMPONENT    CLUSTER
-postgresql-configuration    kb_restore.conf       false     postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-configuration    pg_hba.conf           false     postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-configuration    postgresql.conf       true      postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-configuration    kb_pitr.conf          false     postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-custom-metrics   custom-metrics.yaml   false     postgresql-custom-metrics                     mycluster-postgresql-postgresql-custom-metrics   postgresql   mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT    CONFIG-SPEC-NAME           FILE              STATUS    POLICY    PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-fq6q7   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed             1/1        Mar 17,2023 19:25 UTC+0800   {"postgresql.conf":"{\"max_connections\":\"100\"}"}
-mycluster-reconfiguring-bm84z   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed             1/1        Mar 17,2023 19:27 UTC+0800   {"postgresql.conf":"{\"max_connections\":\"200\"}"}
-mycluster-reconfiguring-cbqxd   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed             1/1        Mar 17,2023 19:35 UTC+0800   {"postgresql.conf":"{\"max_connections\":\"500\"}"}
-mycluster-reconfiguring-rcnzb   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed   restart   1/1        Mar 17,2023 19:38 UTC+0800   {"postgresql.conf":"{\"shared_buffers\":\"512MB\"}"}
-```
-
-</details>
-
-From the above results, there are three parameter modifications.
-
-Compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-bm84z mycluster-reconfiguring-rcnzb -n demo
->
-DIFF-CONFIG RESULT:
-  ConfigFile: postgresql.conf TemplateName: postgresql-configuration ComponentName: postgresql ClusterName: mycluster UpdateType: update
-
-PARAMETERNAME     MYCLUSTER-RECONFIGURING-BM84Z    MYCLUSTER-RECONFIGURING-RCNZB
-max_connections   200                              500
-shared_buffers    256MB                            512MB
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-postgresql/high-availability/_category_.yml b/docs/user_docs/kubeblocks-for-postgresql/high-availability/_category_.yml
deleted file mode 100644
index 8b8357b47..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: High Availability
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-postgresql/high-availability/high-availability.md b/docs/user_docs/kubeblocks-for-postgresql/high-availability/high-availability.md
deleted file mode 100644
index 0e4b0608d..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/high-availability/high-availability.md
+++ /dev/null
@@ -1,206 +0,0 @@
----
-title: High Availability for PostgreSQL
-description: High availability for a PostgreSQL cluster
-keywords: [postgresql, high availability]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# High availability
-
-KubeBlocks integrates [the open-source Patroni solution](https://patroni.readthedocs.io/en/latest/) to realize high availability and adopts Noop as the switch policy.
-
-## Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to manage the PostgreSQL cluster with `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* [Create a PostgreSQL Replication Cluster](./../cluster-management/create-and-connect-a-postgresql-cluster.md#create-a-postgresql-cluster).
-* Check whether the following role probe parameters exist to verify the role probe is enabled.
-
-    ```bash
-    kubectl get cd postgresql -o yaml
-    >
-    probes:
-      roleProbe:
-        failureThreshold: 2
-        periodSeconds: 1
-        timeoutSeconds: 1
-    ```
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the initial status of the PostgreSQL cluster and pods.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl -n demo get pod -L kubeblocks.io/role
-   ```
-
-   ![PostgreSQL cluster original status](./../../../img/api-ha-pg-original-status.png)
-
-   Currently, `mycluster-postgresql-0` is the primary pod and `mycluster-postgresql-1` is the secondary pod.
-
-2. Simulate a primary pod exception.
-
-   ```bash
-   # Enter the primary pod
-   kubectl exec -it mycluster-postgresql-0 -n demo -- bash
-
-   # Delete the data directory of PostgreSQL to simulate an exception
-   root@mycluster-postgresql-0:/home/postgres# rm -fr /home/postgres/pgdata/pgroot/data
-   ```
-
-3. View logs to observe how the roles of pods switch  when an exception occurs.
-
-   ```bash
-   # View the primary pod logs
-   kubectl logs mycluster-postgresql-0 -n demo
-   ```
-
-   In the logs, the leader lock is released from the primary pod and an HA switch occurs.
-
-   ```bash
-   2024-05-17 02:41:23,523 INFO: Lock owner: mycluster-postgresql-0; I am mycluster-postgresql-0
-   2024-05-17 02:41:23,702 INFO: Leader key released
-   2024-05-17 02:41:23,904 INFO: released leader key voluntarily as data dir empty and currently leader
-   2024-05-17 02:41:23,905 INFO: Lock owner: mycluster-postgresql-1; I am mycluster-postgresql-0
-   2024-05-17 02:41:23,906 INFO: trying to bootstrap from leader 'mycluster-postgresql-1'
-   ```
-
-   ```bash
-   # View secondary pod logs
-   kubectl logs mycluster-postgresql-1 -n demo
-   ```
-
-   In the logs, the original secondary pod has obtained the lock and become the leader.
-
-   ```bash
-   2024-05-17 02:41:35,806 INFO: no action. I am (mycluster-postgresql-1), the leader with the lock
-   2024-05-17 02:41:45,804 INFO: no action. I am (mycluster-postgresql-1), the leader with the lock
-   ```
-
-4. Connect to the PostgreSQL cluster to view the replication information.
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   postgres
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   shgkz4z9
-
-   kubectl exec -ti -n demo mycluster-postgresql-1 -- bash
-
-   root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-   Password: shgkz4z9
-   ```
-
-   ```bash
-   postgres=# select * from pg_stat_replication;
-   ```
-
-   ![PostgreSQL replication info](./../../../img/api-ha-pg-replication-info.png)
-
-   From the output, `mycluster-postgresql-0` has been assigned as the secondary pod.
-
-5. View the status of the PostgreSQL cluster and pods again.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl -n demo get pod -L kubeblocks.io/role
-   ```
-
-   ![PostgreSQL cluster status after HA](./../../../img/api-ha-pg-after.png)
-
-   After the failover, `mycluster-postgresql-0` becomes the secondary pod and `mycluster-postgresql-1` becomes the primary pod.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the initial status of the PostgreSQL cluster.
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-   ![PostgreSQL cluster original status](../../../img/pgsql-ha-before.png)
-
-   Currently, `mycluster-postgresql-1` is the primary pod and `mycluster-postgresql-0` is the secondary pod.
-
-2. Simulate a primary pod exception.
-
-   ```bash
-   # Enter the primary pod
-   kubectl exec -it mycluster-postgresql-1  -n demo -- bash
-
-   # Delete the data directory of PostgreSQL to simulate an exception
-   root@mycluster-postgresql-0:/home/postgres# rm -fr /home/postgres/pgdata/pgroot/data
-   ```
-
-3. View logs to observe how the roles of pods switch when an exception occurs.
-
-   ```bash
-   # View the primary pod logs
-   kubectl logs mycluster-postgresql-1 -n demo
-   ```
-
-   In the logs, the leader lock is released from the primary pod and an HA switch occurs.
-
-   ```bash
-   2024-09-28 09:54:15,199 INFO: Lock owner: mycluster-postgresql-1; I am mycluster-postgresql-1
-   2024-09-28 09:54:15,419 INFO: Leader key released
-   2024-09-28 09:54:15,632 INFO: released leader key voluntarily as data dir empty and currently leader
-   2024-09-28 09:54:15,634 INFO: Lock owner: mycluster-postgresql-0; I am mycluster-postgresql-1
-   2024-09-28 09:54:15,635 INFO: trying to bootstrap from leader 'mycluster-postgresql-0'
-   ```
-
-   ```bash
-   # View secondary pod logs
-   kubectl logs mycluster-postgresql-0 -n demo
-   ```
-
-   In the logs, the original secondary pod has obtained the lock and become the leader.
-
-   ```bash
-   2024-09-28 09:54:17,117 INFO: no action. I am (mycluster-postgresql-0), the leader with the lock
-   2024-09-28 09:54:17,516 INFO: no action. I am (mycluster-postgresql-0), the leader with the lock
-
-   ```
-
-4. Connect to the PostgreSQL cluster to view the replication information.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   postgres=# select * from pg_stat_replication;
-   ```
-
-   ![PostgreSQL replication info](../../../img/pgsql-ha-pg_stat_replication.png)
-
-   From the output, `mycluster-postgresql-1` has been assigned as the secondary pod.
-
-5. Describe the cluster and check the instance role.
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-   ![PostgreSQL cluster status after HA](../../../img/pgsql-ha-after.png)
-
-   After the failover, `mycluster-postgresql-1` becomes the secondary pod and `mycluster-postgresql-0` becomes the primary pod.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-postgresql/introduction/_category_.yml b/docs/user_docs/kubeblocks-for-postgresql/introduction/_category_.yml
deleted file mode 100644
index 12b891496..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/introduction/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Introduction
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-postgresql/introduction/introduction.md b/docs/user_docs/kubeblocks-for-postgresql/introduction/introduction.md
deleted file mode 100644
index 3427e09e2..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/introduction/introduction.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: PostgreSQL introduction
-description: PostgreSQL introduction
-keywords: [postgresql, introduction]
-sidebar_position: 1
----
-
-# PostgreSQL introduction
-
-PostgreSQL is a powerful, scalable, secure, and customizable open-source relational database management system that is suitable for various applications and environments. In addition to the PostgreSQL core features, the KubeBlocks PostgreSQL cluster supports a number of extensions and users can also add the extensions by themselves.
-
-* PostGIS: PostGIS is an open-source spatial database extension that adds geographic information system (GIS) functionality to the PostgreSQL database. It provides a set of spatial functions and types that can be used for storing, querying, and analyzing geospatial data, allowing you to run location queries with SQL.
-* pgvector: Pgvector is a PostgreSQL extension that supports vector data types and vector operations. It provides an efficient way to store and query vector data, supporting various vector operations such as similarity search, clustering, classification, and recommendation systems. Pgvector can be used to store AI model embeddings, adding persistent memory to AI.
-* pg_trgm: The pg_trgm module provides functions and operators for determining the similarity of alphanumeric text based on trigram matching, as well as index operator classes that support fast searching for similar strings.
-* postgres_fdw: The postgres_fdw extension can map tables from a remote database to a local table in PostgreSQL, allowing users to query and manipulate the data through the local database.
-
-**Reference**
-
-* [PostgreSQL features](https://www.postgresql.org/about/featurematrix/)
-* [PostGIS](https://postgis.net/)
-* [pgvector](https://github.com/pgvector/pgvector)
diff --git a/docs/user_docs/kubeblocks-for-postgresql/kubeblocks-for-postgresql.md b/docs/user_docs/kubeblocks-for-postgresql/kubeblocks-for-postgresql.md
deleted file mode 100644
index 4030a15dc..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/kubeblocks-for-postgresql.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: KubeBlocks for PostgreSQL
-description: Feature list of KubeBlocks for PostgreSQL
-keywords: [postgresql, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for PostgreSQL
-
-This tutorial illustrates how to create and manage a PostgreSQL cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/postgresql).
-
-* [Introduction](./introduction/introduction.md)
-* [Cluster Management](./cluster-management/create-and-connect-a-postgresql-cluster.md)
-* [Configuration](./configuration/configuration.md)
-* [High Availability](./high-availability/high-availability.md)
-* [PostgreSQL Connection Pool](./postgresql-connection-pool/postgresql-connection-pool.md)
diff --git a/docs/user_docs/kubeblocks-for-postgresql/postgresql-connection-pool/_category_.yaml b/docs/user_docs/kubeblocks-for-postgresql/postgresql-connection-pool/_category_.yaml
deleted file mode 100644
index 89d33c062..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/postgresql-connection-pool/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: PostgreSQL Connection Pool
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/kubeblocks-for-postgresql/postgresql-connection-pool/postgresql-connection-pool.md b/docs/user_docs/kubeblocks-for-postgresql/postgresql-connection-pool/postgresql-connection-pool.md
deleted file mode 100644
index 9d6d4e7e9..000000000
--- a/docs/user_docs/kubeblocks-for-postgresql/postgresql-connection-pool/postgresql-connection-pool.md
+++ /dev/null
@@ -1,179 +0,0 @@
----
-title: PostgreSQL connection pool
-description: Connect to PgBouncer to reduce too many PostgreSQL connections and to improve the throughput and stability of the database.
-keywords: [postgresql, connection pool, pgbouncer]
-sidebar_position: 1
-sidebar_label: Connection pool
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# PostgreSQL connection pool
-
-PostgreSQL adopts a multi-process architecture, which creates a separate backend process for each user connection. When there are too many user connections, it occupies a large amount of memory, which reduces the throughput and stability of the database. To solve these problems, KubeBlocks introduces a connection pool, PgBouncer, for PostgreSQL database clusters.
-
-When creating a PostgreSQL cluster with KubeBlocks, PgBouncer is installed by default.
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. View the status of the created PostgreSQL cluster and ensure this cluster is `Running`.
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-2. Describe the services and there are two connection links in Endpoints.
-
-    Port `5432` is used to connect to the primary pod of this database and port `6432` is used to connect to PgBouncer.
-
-    ```bash
-    kubectl get services mycluster-postgresql -n demo
-    >
-    NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
-    mycluster-postgresql   ClusterIP   10.97.123.178   <none>        5432/TCP,6432/TCP   39m       
-    ```
-
-3. Run the command below to get the `username` and `password` for the `kubectl exec` command.
-
-    ```bash
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-    >
-    postgres
-
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-    >
-    shgkz4z9
-   ```
-
-4. Connect the cluster with PgBouncer. The default example uses port `6432` and you can replace it with port `5432`.
-
-    ```bash
-    kubectl -n demo port-forward service/mycluster-postgresql 6432:6432
-    ```
-
-5. Open a new terminal window and run the `psql` command to connect to PgBouncer.
-
-    Fill the password obtained from step 3 into the `PGPASSWORD`.
-
-    ```bash
-    PGPASSWORD=shgkz4z9 psql -h127.0.0.1 -p 6432 -U postgres postgres
-    ```
-
-6. Run the following command in `psgl` to verify the connection.
-
-   If you can connect to `pgbouncer` and execute `show help` with the expected results below, this cluster connects to PgBouncer successfully.
-
-   ```bash
-   postgres=# \c pgbouncer
-   ```
-
-   ```bash
-   pgbouncer=# show help;
-   >
-   NOTICE:  Console usage
-   DETAIL:  
-           SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
-           SHOW PEERS|PEER_POOLS
-           SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM|STATE
-           SHOW DNS_HOSTS|DNS_ZONES
-           SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
-           SET key = arg
-           RELOAD
-           PAUSE [<db>]
-           RESUME [<db>]
-           DISABLE <db>
-           ENABLE <db>
-           RECONNECT [<db>]
-           KILL <db>
-           SUSPEND
-           SHUTDOWN
-           WAIT_CLOSE [<db>]
-   SHOW
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. View the status of the created PostgreSQL cluster and ensure this cluster is `Running`.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   ```
-
-2. Describe this cluster and there are two connection links in Endpoints.
-
-    Port `5432` is used to connect to the primary pod of this database and port `6432` is used to connect to PgBouncer.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    >
-    Endpoints:
-    COMPONENT    MODE        INTERNAL                                              EXTERNAL   
-    postgresql   ReadWrite   mycluster-postgresql.default.svc.cluster.local:5432   <none>     
-                             mycluster-postgresql.default.svc.cluster.local:6432         
-    ```
-
-3. Connect the cluster with PgBouncer.
-
-   This command shows how to connect to a cluster with CLI. The default example uses port `5432` and you can replace it with port `6432`.
-
-    ```bash
-    kbcli cluster connect --client=cli --show-example mycluster -n demo
-    >
-    kubectl port-forward service/mycluster-postgresql 6432:6432
-    PGPASSWORD=***** psql -h127.0.0.1 -p 6432 -U postgres postgres
-    ```
-
-4. Run `port-forward`.
-
-   ```bash
-   kubectl port-forward service/mycluster-postgresql 6432:6432
-   ```
-
-5. Open a new terminal window and run the `psql` command to connect to PgBouncer.
-
-   ```bash
-   PGPASSWORD=***** psql -h127.0.0.1 -p 6432 -U postgres postgres
-   ```
-
-6. Run the following command in `psgl` to verify the connection.
-
-   If you can connect to `pgbouncer` and execute `show help` with the expected results below, this cluster connects to PgBouncer successfully.
-
-   ```bash
-   postgres=# \c pgbouncer
-   ```
-
-   ```bash
-   pgbouncer=# show help;
-   >
-   NOTICE:  Console usage
-   DETAIL:  
-           SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
-           SHOW PEERS|PEER_POOLS
-           SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM|STATE
-           SHOW DNS_HOSTS|DNS_ZONES
-           SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
-           SET key = arg
-           RELOAD
-           PAUSE [<db>]
-           RESUME [<db>]
-           DISABLE <db>
-           ENABLE <db>
-           RECONNECT [<db>]
-           KILL <db>
-           SUSPEND
-           SHUTDOWN
-           WAIT_CLOSE [<db>]
-   SHOW
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-pulsar/_category_.yml b/docs/user_docs/kubeblocks-for-pulsar/_category_.yml
deleted file mode 100644
index 7dc386e2f..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 18
-label: KubeBlocks for Pulsar
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/_category_.yml
deleted file mode 100644
index 200a2feb5..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kubeblocks.md b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kubeblocks.md
deleted file mode 100644
index fd6ea8750..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kubeblocks.md
+++ /dev/null
@@ -1,203 +0,0 @@
----
-title: Create a Pulsar Cluster
-description: How to Create Pulsar Cluster on KubeBlocks
-keywords: [pulsar, create cluster]
-sidebar_position: 1
-sidebar_label: Create
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-## Introduction
-
-KubeBlocks can quickly integrate new engines through good abstraction. The functions tested in KubeBlocks include Pulsar cluster creation and deletion, vertical and horizontal scaling of Pulsar cluster components, storage expansion, restart, and configuration changes.
-
-KubeBlocks supports Pulsar's daily operations, including basic lifecycle operations such as cluster creation, deletion, and restart, as well as advanced operations such as horizontal and vertical scaling, storage expansion, and configuration changes.
-
-## Environment Recommendation
-
-Refer to the [Pulsar official document](https://pulsar.apache.org/docs/3.1.x/) for the configuration, such as memory, cpu, and storage, of each component.
-
-|      Components        |                                 Replicas                                  |
-| :--------------------  | :------------------------------------------------------------------------ |
-|       zookeeper        |          1 for test environment or 3 for production environment           |
-|        bookies         |  at least 3 for test environment, at lease 4 for production environment   |
-|        broker          |      at least 1, for production environment, 3 replicas recommended       |
-| recovery (Optional)    | 1; if autoRecovery is not enabled for bookie, at least 3 replicas needed  |
-|   proxy (Optional)     |           1; and for production environment, 3 replicas needed            |
-
-## Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to manage the StarRocks cluster with `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Check whether the Pulsar Addon is enabled. If this Addon is disabled, [enable it](./../../installation/install-addons.md) first.
-* View all the database types and versions available for creating a cluster.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get clusterdefinition pulsar
-  >
-  NAME    TOPOLOGIES                                        SERVICEREFS    STATUS      AGE
-  pulsar  pulsar-basic-cluster,pulsar-enhanced-cluster                     Available   16m
-  ```
-
-  View all available versions for creating a cluster.
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=pulsar
-  >
-  NAME            CLUSTER-DEFINITION   STATUS      AGE
-  pulsar-2.11.2   pulsar               Available   16m
-  pulsar-3.0.2    pulsar               Available   16m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo`.
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-## Create Pulsar cluster
-
-1. Create a Pulsar cluster in basic mode. For other cluster modes, check out the examples provided in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/pulsar). If you only have one node for deploying a Pulsar Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: pulsar
-     topology: pulsar-basic-cluster
-     services:
-       - name: broker-bootstrap
-         serviceName: broker-bootstrap
-         componentSelector: broker
-         spec:
-           type: ClusterIP
-           ports:
-             - name: pulsar
-               port: 6650
-               targetPort: 6650
-             - name: http
-               port: 80
-               targetPort: 8080
-             - name: kafka-client
-               port: 9092
-               targetPort: 9092
-       - name: zookeeper
-         serviceName: zookeeper
-         componentSelector: zookeeper
-         spec:
-           type: ClusterIP
-           ports:
-             - name: client
-               port: 2181
-               targetPort: 2181
-     componentSpecs:
-       - name: broker
-         serviceVersion: 3.0.2
-         replicas: 1
-         env:
-           - name: KB_PULSAR_BROKER_NODEPORT
-             value: "false"
-         resources:
-           limits:
-             cpu: "1"
-             memory: "512Mi"
-           requests:
-             cpu: "200m"
-             memory: "512Mi"
-       - name: bookies
-         serviceVersion: 3.0.2
-         replicas: 4
-         resources:
-           limits:
-             cpu: "1"
-             memory: "512Mi"
-           requests:
-             cpu: "200m"
-             memory: "512Mi"
-         volumeClaimTemplates:
-           - name: ledgers
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 8Gi
-           - name: journal
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 8Gi
-       - name: zookeeper
-         serviceVersion: 3.0.2
-         replicas: 1
-         resources:
-           limits:
-             cpu: "1"
-             memory: "512Mi"
-           requests:
-             cpu: "100m"
-             memory: "512Mi"
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 8Gi
-   EOF
-   ```
-
-   | Field                                 | Definition  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-a-pulsar-cluster.md#termination-policy). |
-   | `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. **Note: DO NOT UPDATE THIS FIELD**. The value must be `pulsar` to create a Pulsar Cluster. |
-   | `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. |
-   | `spec.services` | It defines a list of additional Services that are exposed by a Cluster. |
-   | `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-   | `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are [2.11.2,3.0.2]. |
-   | `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-   | `spec.componentSpecs.replicas`        | It specifies the amount of replicas of the component. |
-   | `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-   | `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-   For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-2. Verify the cluster created.
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    When the status is Running, the cluster is created successfully.
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/delete-a-pulsar-cluster.md b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/delete-a-pulsar-cluster.md
deleted file mode 100644
index 51e4df68f..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/delete-a-pulsar-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Delete a PostgreSQL Cluster
-description: How to delete a PostgreSQL Cluster
-keywords: [postgresql, delete a cluster]
-sidebar_position: 7
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete a Pulsar Cluster
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-## Termination policy
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION          TERMINATION-POLICY   STATUS     AGE
-mycluster      pulsar               pulsar-3.0.2     Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        pulsar               pulsar-3.0.2        Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Step
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, and then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/expand-volume.md
deleted file mode 100644
index 3521486c7..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,175 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of a Pulsar cluster
-sidebar_position: 3
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-## Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expand
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: bookies
-       volumeClaimTemplates:
-       - name: ledgers
-         storage: "200Gi"
-       - name: journal
-         storage: "40Gi"
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.components.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.components.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-3.0.2
-     componentSpecs:
-     - name: pulsar
-       componentDefRef: pulsar
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `--components`, `--volume-claim-templates`, and `--storage`, and run the command below to expand the volume.
-
-    :::note
-
-    Expand volume for `journal` first. `ledger` volume expansion must be performed after the `journal` volume expansion.
-
-    :::
-
-    - Expand volume for `journal`.
-
-      ```bash
-      kbcli cluster volume-expand mycluster --storage=40Gi --components=bookies -t journal -n demo
-      ```
-
-      - `--components` describes the component name for volume expansion.
-      - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-      - `--storage` describes the volume storage size.
-
-    - Expand volume for `ledger`.
-
-      ```bash
-      kbcli cluster volume-expand mycluster --storage=200Gi --components=bookies -t ledgers -n demo
-      ```
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-      KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-njd9n -n demo
-      ```
-
-    - View the cluster status.
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      ```
-
-      * STATUS=Updating: it means the volume expansion is in progress.
-      * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/restart-a-pulsar-cluster.md b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/restart-a-pulsar-cluster.md
deleted file mode 100644
index dc7e6e9ec..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/restart-a-pulsar-cluster.md
+++ /dev/null
@@ -1,90 +0,0 @@
----
-title: Restart Pulsar cluster
-description: How to restart a Pulsar cluster
-keywords: [pulsar, restart]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart a Pulsar cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-:::note
-
-The pod role may change after the cluster restarts.
-
-:::
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: Restart 
-     restart:
-     - componentName: bookies
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="pulsar" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME           CLUSTER-DEFINITION   VERSION          TERMINATION-POLICY   STATUS     AGE
-   mycluster      pulsar               pulsar-3.0.2     Delete               Running    19m
-   ```
-
-   * STATUS=Updating: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/scale-for-pulsar.md b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/scale-for-pulsar.md
deleted file mode 100644
index 0264b31bd..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/scale-for-pulsar.md
+++ /dev/null
@@ -1,427 +0,0 @@
----
-title: Scale for a Pulsar
-description: How to scale a Pulsar cluster, horizontal scaling, vertical scaling
-keywords: [pulsar, horizontal scaling, vertical scaling]
-sidebar_position: 2
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale for a Pulsar cluster
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl create -f -<< EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vscale
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: pulsar-broker
-       requests:
-         memory: "10Gi"
-         cpu: 3
-       limits:
-         memory: "10Gi"
-         cpu: 3
-     - componentName: bookies
-       requests:
-         memory: "10Gi"
-         cpu: 3
-       limits:
-         memory: "10Gi"
-         cpu: 3      
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. 
-
-   `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-3.0.2
-     componentSpecs:
-     - componentDefRef: pulsar
-       enabledLogs:
-       - running
-       disableExporter: true
-       name: pulsar
-       replicas: 1
-       resources: # Change values of resources
-         limits:
-           cpu: "2"
-           memory: 4Gi
-         requests:
-           cpu: "1"
-           memory: 2Gi
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  pulsar
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      pulsar
-    Replicas:  1
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu` and run the command.
-
-   ```bash
-   kbcli cluster vscale mycluster --cpu=3 --memory=10Gi --components=broker,bookies -n demo
-   ```
-
-   - `--components` describes the component name ready for vertical scaling.
-   - `--memory` describes the requested and limited size of the component memory.
-   - `--cpu` describes the requested and limited size of the component CPU.
-
-2. Validate the vertical scaling operation.
-
-   - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-njl6s -n demo
-       ```
-
-   - Check the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=updating: it means the vertical scaling is in progress.
-       - STATUS=Running: it means the vertical scaling operation has been applied.
-       - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-          > To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-    :::note
-
-    Vertical scaling does not synchronize parameters related to CPU and memory and it is required to manually call the OpsRequest of configuration to change parameters accordingly. Refer to [Configuration](./../configuration/configuration.md) for instructions.
-
-    :::
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-- It is recommended to keep 3 nodes without scaling for Zookeeper, and other components can scale horizontally for multiple or single components
-- The scaling of the Bookies node needs to be cautious. The data copy is related to the EnsembleSize, Write Quorum, and Ack Quorum configurations, scaling may cause data loss. Check [Pulsar official document](https://pulsar.apahe.org/docs/3.0.x/administration-zk-bk/#decommission-bookies-cleanly) for detailed information.
-- Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-    ```bash
-    kubectl create -f -<< EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-horizontalscaling
-      namespace: demo
-    spec:
-      clusterRef: mycluster
-      type: HorizontalScaling  
-      horizontalScaling:
-      - componentName: pulsar-proxy
-        scaleOut:
-          replicaChanges: 2
-    EOF
-    ```
-
-    If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-    ```bash
-    kubectl create -f -<< EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-horizontalscaling
-      namespace: demo
-    spec:
-      clusterRef: mycluster
-      type: HorizontalScaling  
-      horizontalScaling:
-      - componentName: pulsar-proxy
-        scaleIn:
-          replicaChanges: 2
-    EOF
-    ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file.
-
-   `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-3.0.2
-     componentSpecs:
-     - name: pulsar
-       componentDefRef: pulsar-proxy
-       replicas: 2 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Change configuration.
-
-   Configure the parameters `--components` and `--replicas`, and run the command.
-
-   ```bash
-   kbcli cluster hscale pulsar-cluster --replicas=5 --components=broker,bookies    
-   ```
-
-   - `--components` describes the component name ready for horizontal scaling.
-   - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation.
-
-   - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-9lfvc -n demo
-       ```
-
-   - View the cluster status.
-
-       Check the cluster STATUS to identify the horizontal scaling status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/mycluster-pulsar-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. Delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/stop-start-a-pulsar-cluster.md b/docs/user_docs/kubeblocks-for-pulsar/cluster-management/stop-start-a-pulsar-cluster.md
deleted file mode 100644
index 6a47e502e..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/cluster-management/stop-start-a-pulsar-cluster.md
+++ /dev/null
@@ -1,176 +0,0 @@
----
-title: Stop/Start a Pulsar cluster
-description: How to start/stop a Pulsar cluster
-keywords: [pulsar, stop a cluster, start a cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start a Pulsar Cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. Start this cluster again if you want to restore the cluster resources from the original storage by snapshots.
-
-## Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to stop a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure replicas as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: pulsar
-      clusterVersionRef: pulsar-3.0.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: pulsar
-        componentDefRef: pulsar
-        disableExporter: true 
-        replicas: 0
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Start a cluster
-  
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to start a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster 
-    ```
-
-    Change replicas back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: pulsar
-      clusterVersionRef: pulsar-3.0.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: pulsar
-        componentDefRef: pulsar
-        disableExporter: true  
-        replicas: 1
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-pulsar/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-pulsar/configuration/_category_.yml
deleted file mode 100644
index b19dea834..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-pulsar/configuration/configuration.md b/docs/user_docs/kubeblocks-for-pulsar/configuration/configuration.md
deleted file mode 100644
index 2fd4f7799..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/configuration/configuration.md
+++ /dev/null
@@ -1,299 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [pulsar, parameter, configuration, reconfiguration]
-sidebar_position: 4
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-From v0.6.0, KubeBlocks supports `kbcli cluster configure` and `kbcli cluster edit-config` to configure parameters. The difference is that KubeBlocks configures parameters automatically with `kbcli cluster configure` but `kbcli cluster edit-config` provides a visualized way for you to edit parameters directly.
-
-There are 3 types of parameters:
-
-1. Environment parameters, such as GC-related parameters, `PULSAR_MEM`, and `PULSAR_GC`, changes will apply to all components;
-2. Configuration parameters, such as `zookeeper` or `bookies.conf` configuration files, can be changed through `env` and changes restart the pod;
-3. Dynamic parameters, such as configuration files in `brokers.conf`, `broker` supports two types of change modes:
-    a. Parameter change requires a restart, such as `zookeeperSessionExpiredPolicy`;
-    b. For parameters that support dynamic parameters, you can obtain a list of all dynamic parameters with `pulsar-admin brokers list-dynamic-config`.
-
-:::note
-
-`pulsar-admin` is a management tool built in the Pulsar cluster. You can log in to the corresponding pod with `kubectl exec -it <pod-name> -- bash` (pod-name can be checked by `kubectl get pods` command, and you can choose any pod with the word `broker` in its name ), and there are corresponding commands in the `/pulsar/bin path` of the pod. For more information about pulsar-admin, please refer to the [official documentation](https://pulsar.apache.org/docs/3.0.x/admin-api-tools/
-).
-:::
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-KubeBlocks supports configuring cluster parameters by configuration file.
-
-1. Modify the Pulsar `broker.conf` file, in this case, it is `pulsar-broker-broker-config`.
-
-   ```bash
-   kubectl edit cm pulsar-broker-broker-config -n demo
-   ```
-
-2. Check whether the configuration is done.
-
-   ```bash
-   kubectl get pod -l app.kubernetes.io/name=pulsar-broker -n dmo
-   ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can use switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-KubeBlocks supports configuring cluster parameters with OpsRequest.
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a yaml file named `mycluster-configuring-demo.yaml`. In this example, `lostBookieRecoveryDelay` is configured as `1000`.
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: bookies
-       configurations:
-       - keys:
-         - key: bookkeeper.conf
-           parameters:
-           - key: lostBookieRecoveryDelay
-             value: "1000"
-         name: bookies-config
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   EOF
-   ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply the configuration OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. Verify the configuration.
-
-   1. Check the progress of configuration:
-
-      ```bash
-      kubectl get ops -n demo
-      ```
-
-   2. Check whether the configuration is done.
-
-      ```bash
-      kubectl get pod -l app.kubernetes.io/name=pulsar -n demo
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can use switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the current configuration file of a cluster.
-
-```bash
-kbcli cluster describe-config mycluster -n demo  
-```
-
-* View the details of the current configuration file.
-
-  ```bash
-  kbcli cluster describe-config mycluster -n demo --show-detail
-  ```
-
-* View the parameter description.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-#### Configure environment parameters
-
-***Steps***
-
-1. You need to specify the component name to configure parameters. Get the pulsar cluster component name.
-
-   ```bash
-   kbcli cluster list-components mycluster -n demo 
-   >
-   NAME               NAMESPACE   CLUSTER      TYPE               IMAGE
-   proxy              demo        mycluster    pulsar-proxy       docker.io/apecloud/pulsar:2.11.2
-   broker             demo        mycluster    pulsar-broker      docker.io/apecloud/pulsar:2.11.2
-   bookies-recovery   demo        mycluster    bookies-recovery   docker.io/apecloud/pulsar:2.11.2
-   bookies            demo        mycluster    bookies            docker.io/apecloud/pulsar:2.11.2
-   zookeeper          demo        mycluster    zookeeper          docker.io/apecloud/pulsar:2.11.2
-   ```
-
-2. Configure parameters.
-
-   We take `zookeeper` as an example.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components=zookeeper --set PULSAR_MEM="-XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=70" 
-   ```
-
-3. Verify the configuration.
-
-   a. Check the progress of configuration:
-
-   ```bash
-   kubectl get ops -n demo
-   ```
-
-   b. Check whether the configuration is done.
-
-   ```bash
-   kubectl get pod -l app.kubernetes.io/name=pulsar -n demo
-   ```
-
-#### Configure other parameters
-
-The following steps take the configuration of dynamic parameter `brokerShutdownTimeoutMs` as an example.
-
-***Steps***
-
-1. Get configuration information.
-
-   ```bash
-   kbcli cluster desc-config mycluster -n demo --components=broker
-   >
-   ConfigSpecs Meta:
-   CONFIG-SPEC-NAME         FILE                   ENABLED   TEMPLATE                   CONSTRAINT                   RENDERED                                  COMPONENT   CLUSTER
-   agamotto-configuration   agamotto-config.yaml   false     pulsar-agamotto-conf-tpl                                mycluster-broker-agamotto-configuration   broker      mycluster
-   broker-env               conf                   true      pulsar-broker-env-tpl      pulsar-env-constraints       mycluster-broker-broker-env               broker      mycluster
-   broker-config            broker.conf            true      pulsar-broker-config-tpl   brokers-config-constraints   mycluster-broker-broker-config            broker      mycluster
-   ```
-
-2. Configure parameters.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components=broker --config-specs=broker-config --set brokerShutdownTimeoutMs=66600
-   >
-   Will updated configure file meta:
-     ConfigSpec: broker-config          ConfigFile: broker.conf        ComponentName: broker        ClusterName: mycluster
-   OpsRequest mycluster-reconfiguring-qxw8s created successfully, you can view the progress:
-           kbcli cluster describe-ops mycluster-reconfiguring-qxw8s -n demo
-   ```
-
-3. Check the progress of configuration.
-
-   The ops name is printed with the command above.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-qxw8s -n demo
-   >
-   Spec:
-     Name: mycluster-reconfiguring-qxw8s        NameSpace: demo        Cluster: mycluster        Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster --components=broker --config-specs=broker-config --config-file=broker.conf --set brokerShutdownTimeoutMs=66600 --namespace=demo
-
-   Status:
-     Start Time:         Jul 20,2023 09:53 UTC+0800
-     Completion Time:    Jul 20,2023 09:53 UTC+0800
-     Duration:           1s
-     Status:             Succeed
-     Progress:           2/2
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool called `edit-config` to help you to configure parameter in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on notepad.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   If there are multiple components in a cluster, use `--components` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-nqxw8s -n demo
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. When using the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo --components=zookeeper
-```
-
-From the above results, there are three parameter modifications.
-
-Compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-qxw8s mycluster-reconfiguring-mwbnw
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-pulsar/kubeblocks-for-pulsar.md b/docs/user_docs/kubeblocks-for-pulsar/kubeblocks-for-pulsar.md
deleted file mode 100644
index 8822b4aba..000000000
--- a/docs/user_docs/kubeblocks-for-pulsar/kubeblocks-for-pulsar.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: KubeBlocks for Pulsar
-description: Feature list of KubeBlocks for Pulsar
-keywords: [pulsar, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for Pulsar
-
-This tutorial illustrates how to create and manage a Pulsar cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/pulsar).
-
-* [Cluster Management](./cluster-management/create-pulsar-cluster-on-kubeblocks.md)
-* [Configuration](./configuration/configuration.md)
diff --git a/docs/user_docs/kubeblocks-for-qdrant/_category_.yml b/docs/user_docs/kubeblocks-for-qdrant/_category_.yml
deleted file mode 100644
index 54c51e275..000000000
--- a/docs/user_docs/kubeblocks-for-qdrant/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 19
-label: KubeBlocks for Qdrant
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/kubeblocks-for-qdrant/manage-qdrant.md b/docs/user_docs/kubeblocks-for-qdrant/manage-qdrant.md
deleted file mode 100644
index d4b03b146..000000000
--- a/docs/user_docs/kubeblocks-for-qdrant/manage-qdrant.md
+++ /dev/null
@@ -1,1040 +0,0 @@
----
-title: Manage Qdrant with KubeBlocks
-description: How to manage Qdrant on KubeBlocks
-keywords: [qdrant, vector database, control plane]
-sidebar_position: 1
-sidebar_label: Manage Qdrant with KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Manage Qdrant with KubeBlocks
-
-The popularity of generative AI (Generative AI) has aroused widespread attention and completely ignited the vector database (Vector Database) market. Qdrant (read: quadrant) is a vector similarity search engine and vector database. It provides a production-ready service with a convenient API to store, search, and manage points—vectors with an additional payload Qdrant is tailored to extended filtering support. It makes it useful for all sorts of neural-network or semantic-based matching, faceted search, and other applications.
-
-KubeBlocks supports the management of Qdrant. This tutorial illustrates how to create and manage a Qdrant cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/qdrant).
-
-## Before you start
-
-- [Install kbcli](./../installation/install-kbcli.md) if you want to manage the Qdrant cluster with `kbcli`.
-- [Install KubeBlocks](./../installation/install-kubeblocks.md).
-- [Install and enable the Qdrant Addon](./../installation/install-addons.md).
-- To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-   ```bash
-   kubectl create namespace demo
-   ```
-
-## Create a cluster
-
-***Steps***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a Qdrant Replication cluster. Primary and Secondary are distributed on different nodes by default. But if you only have one node for deploying a Replication Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  clusterDef: qdrant
-  topology: cluster
-  componentSpecs:
-    - name: qdrant
-      serviceVersion: 1.10.0
-      replicas: 3
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-EOF
-```
-
-| Field                                 | Definition  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](#termination-policy). |
-| `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. **Note: DO NOT UPDATE THIS FIELD**. The value must be `qdrant` to create a Qdrant Cluster. |
-| `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. The valid option is [cluster]. |
-| `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-| `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are [1.10.0,1.5.0,1.7.3,1.8.1,1.8.4]. |
-| `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-| `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. Recommended values are [3,5,7]. |
-| `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-| `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-| `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster with `kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo`.
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-Run the following command to see the created Qdrant cluster object:
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Execute the following command to create a Qdrant cluster.
-
-   ```bash
-   kbcli cluster create qdrant mycluster -n demo
-   ```
-
-   If you want to customize your cluster specifications, kbcli provides various options, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-
-   ```bash
-   kbcli cluster create qdrant --help
-
-   kbcli cluster create qdrant -h
-   ```
-
-   If you only have one node for deploying a cluster with multiple replicas, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create qdrant mycluster \
-       --replicas=3
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Check whether the cluster is created.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        qdrant                              Delete               Running   Aug 15,2023 23:03 UTC+0800
-   ```
-
-3. Check the cluster information.
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   >
-   Name: mycluster         Created Time: Aug 15,2023 23:03 UTC+0800
-   NAMESPACE   CLUSTER-DEFINITION   VERSION        STATUS    TERMINATION-POLICY
-   demo        qdrant                              Running   Delete
-
-   Endpoints:
-   COMPONENT   MODE        INTERNAL                                                 EXTERNAL
-   qdrant      ReadWrite   mycluster-qdrant-qdrant.default.svc.cluster.local:6333   <none>
-                           mycluster-qdrant-qdrant.default.svc.cluster.local:6334
-
-   Topology:
-   COMPONENT   INSTANCE             ROLE     STATUS    AZ       NODE                   CREATED-TIME
-   qdrant      mycluster-qdrant-0   <none>   Running   <none>   x-worker3/172.20.0.3   Aug 15,2023 23:03 UTC+0800
-   qdrant      mycluster-qdrant-1   <none>   Running   <none>   x-worker2/172.20.0.5   Aug 15,2023 23:03 UTC+0800
-   qdrant      mycluster-qdrant-2   <none>   Running   <none>   x-worker/172.20.0.2    Aug 15,2023 23:04 UTC+0800
-
-   Resources Allocation:
-   COMPONENT   DEDICATED   CPU(REQUEST/LIMIT)   MEMORY(REQUEST/LIMIT)   STORAGE-SIZE   STORAGE-CLASS
-   qdrant      false       1 / 1                1Gi / 1Gi               data:20Gi      standard
-
-   Images:
-   COMPONENT   TYPE     IMAGE
-   qdrant      qdrant   docker.io/qdrant/qdrant:latest
-
-   Data Protection:
-   AUTO-BACKUP   BACKUP-SCHEDULE   TYPE     BACKUP-TTL   LAST-SCHEDULE   RECOVERABLE-TIME
-   Disabled      <none>            <none>   7d           <none>          <none>
-
-   Show cluster events: kbcli cluster list-events -n demo mycluster
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to a Qdrant cluster
-
-Qdrant provides both HTTP and gRPC protocols for client access on ports 6333 and 6334 respectively. Depending on where the client is, different connection options are offered to connect to the Qdrant cluster.
-
-<Tabs>
-
-<TabItem value="Port forward" label="Port forward" default>
-
-1. Run the following command to port forward the service.
-
-   ```bash
-   kubectl port-forward svc/mycluster-qdrant 6333:6333 -n demo
-   ```
-
-2. Open a new terminal and run the following command to connect to the database.
-
-   ```bash
-   curl http://127.0.0.1:6333/collections
-   ```
-
-   Refer to [the official Qdrant documents](https://qdrant.tech/documentation/) for the cluster operations.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-:::note
-
-If your cluster is on AWS, install the AWS Load Balancer Controller first.
-
-:::
-
-- If your client is inside a K8s cluster, run `kbcli cluster describe mycluster -n demo` to get the ClusterIP address of the cluster or the corresponding K8s cluster domain name.
-- If your client is outside the K8s cluster but in the same VPC as the server, run `kbcli cluster expose mycluster -n demo --enable=true --type=vpc` to get a VPC load balancer address for the database cluster.
-- If your client is outside the VPC, run `kbcli cluster expose mycluster -n demo --enable=true --type=internet` to open a public network reachable address for the database cluster.
-
-</TabItem>
-
-</Tabs>
-
-## Scale
-
-The scaling function for Qdrant is also supported.
-
-### Scale horizontally
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-#### Before you start
-
-Check whether the cluster status is Running. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                         Delete               Running   Aug 15,2023 23:03 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: qdrant
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: qdrant
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling status.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       replicas: 2 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--replicas` value according to your needs and perform the horizontal scaling.
-
-    ```bash
-    kbcli cluster hscale mycluster -n demo --replicas=5 --components=qdrant
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-  
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the horizontal scaling operation.
-
-   - View the OpsRequest progress.
-
-     KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-xpdwz -n demo
-     ```
-
-   - View the cluster status.
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-     mycluster   demo        qdrant                         Delete               Running   Jul 24,2023 11:38 UTC+0800
-     ```
-
-     - STATUS=Updating: it means horizontal scaling is in progress.
-     - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Scale vertically
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-#### Before you start
-
-Check whether the cluster status is Running. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                         Delete               Running   Aug 15,2023 23:03 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### Steps
-
-<Tabs>
-  
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: qdrant
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       replicas: 1
-       resources: # Change the values of resources.
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--cpu` and `--memory` values according to your needs and run the following command to perform vertical scaling.
-
-    ```bash
-    kbcli cluster vscale mycluster -n demo --cpu=0.5 --memory=512Mi --components=qdrant 
-    ```
-
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the vertical scaling operation.
-   - View the OpsRequest progress.
-
-      KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-      ```bash
-      kbcli cluster describe-ops mycluster-verticalscaling-rpw2l -n demo
-      >
-      NAME                              TYPE              CLUSTER      STATUS    PROGRESS   AGE
-      mycluster-verticalscaling-rpw2l   VerticalScaling   mycluster    Running   1/5        44s
-     ```
-
-   - Check the cluster status.
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-      mycluster   demo                                               Delete               Updating   Aug 15,2023 23:03 UTC+0800
-      ```
-
-      - STATUS=Updating: it means the vertical scaling is in progress.
-      - STATUS=Running: it means the vertical scaling operation has been applied.
-      - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-          >To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Volume Expansion
-
-### Before you start
-
-Check whether the cluster status is Running. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                         Delete               Running   Aug 15,2023 23:03 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: qdrant
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi"
-    EOF
-    ```
-
-2. Validate the volume expansion operation.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi # Change the volume storage size
-   ...
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--storage` value according to your need and run the command to expand the volume.
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --storage=40Gi --components=qdrant -t data
-    ```
-
-    The volume expansion may take a few minutes.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-   
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-5pbd2 -n demo
-       >
-       NAME                              TYPE              CLUSTER      STATUS   PROGRESS   AGE
-       mycluster-volumeexpansion-5pbd2   VolumeExpansion   mycluster    Running  1/1        67s
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-       mycluster   demo        qdrant                                 Delete               Updating   Aug 15,2023 23:03 UTC+0800
-       ```
-
-      * STATUS=Updating: it means the volume expansion is in progress.
-      * STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Restart
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: qdrant
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-   kubectl get ops ops-restart -n demo
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="qdrant" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION     VERSION         TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        qdrant                                 Delete               Running   Aug 15,2023 23:03 UTC+0800
-   ```
-
-   * STATUS=Updating: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
-
-## Stop/Start a cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again by snapshots if you want to restore the cluster resources.
-
-### Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Configure replicas as 0 to delete pods.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure the value of `spec.ComponentSpecs.replicas` as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: qdrant
-      clusterVersionRef: qdrant-1.8.1
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: qdrant
-        componentDefRef: qdrant
-        disableExporter: true  
-        replicas: 0 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-  
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Run the command below to start a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Change replicas back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: qdrant
-      clusterVersionRef: qdrant-1.8.1
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: qdrant
-        componentDefRef: qdrant
-        disableExporter: true  
-        replicas: 1 # Change this value
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Delete a cluster
-
-### Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION     VERSION         TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                                 Delete               Running   Aug 15,2023 23:03 UTC+0800 
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## Backup and restore
-
-The backup and restore operations for Qdrant are the same as those of other clusters and you can refer to [the backup and restore documents](./../maintenance/backup-and-restore/introduction.md) for details. Remember to use `--method` parameter.
diff --git a/docs/user_docs/kubeblocks-for-rabbitmq/_category_.yml b/docs/user_docs/kubeblocks-for-rabbitmq/_category_.yml
deleted file mode 100644
index 8189b4a60..000000000
--- a/docs/user_docs/kubeblocks-for-rabbitmq/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 22
-label: KubeBlocks for RabbitMQ
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-rabbitmq/manage-rabbitmq.md b/docs/user_docs/kubeblocks-for-rabbitmq/manage-rabbitmq.md
deleted file mode 100644
index 095646429..000000000
--- a/docs/user_docs/kubeblocks-for-rabbitmq/manage-rabbitmq.md
+++ /dev/null
@@ -1,610 +0,0 @@
----
-title: Manage RabbitMQ with KubeBlocks
-description: How to manage RabbitMQ on KubeBlocks
-keywords: [rabbitmq, message queue, streaming, broker]
-sidebar_position: 1
-sidebar_label: Manage RabbitMQ with KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Manage RabbitMQ with KubeBlocks
-
-RabbitMQ is a reliable and mature messaging and streaming broker, which is easy to deploy on cloud environments, on-premises, and on your local machine.
-
-KubeBlocks supports the management of RabbitMQ. This tutorial illustrates how to create and manage a Qdrant cluster by `kubectl` and YAML files. You can find more YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/rabbitmq).
-
-## Before you start
-
-- [Install KubeBlocks](./../installation/install-kubeblocks.md).
-- [Install and enable the rabbitmq addon](./../installation/install-addons.md).
-
-## Create a cluster
-
-KubeBlocks implements a Cluster CRD to define a cluster. Here is an example of creating a RabbitMQ cluster with three replicas. Pods are distributed on different nodes by default. But if you only have one node for a cluster with three replicas, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-    - name: rabbitmq
-      componentDef: rabbitmq
-      serviceVersion: 3.13.7
-      serviceAccountName: kb-rabbitmq-cluster
-      replicas: 3
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  name: rabbitmq-cluster-peer-discovery
-  namespace: demo
-rules:
-- apiGroups:
-  - ""
-  resources:
-  - endpoints
-  verbs:
-  - get
-- apiGroups:
-  - ""
-  resources:
-  - events
-  verbs:
-  - create
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: kb-rabbitmq-cluster
-  namespace: demo
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  name: kb-rabbitmq-cluster
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: rabbitmq-cluster-peer-discovery
-subjects:
-  - kind: ServiceAccount
-    name: kb-rabbitmq-cluster
-    namespace: demo
-EOF
-```
-
-| Field                                 | Definition  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](#termination-policy). |
-| `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-| `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are [3.10.25,3.11.28,3.12.14,3.13.2,3.13.7,3.8.14,3.9.29]. |
-| `spec.componentSpecs.serviceAccountName` | It specifies the name of the ServiceAccount required by the running Component. RabbitMQ needs the `peer-discovery` role to create events and get endpoints. This is essential for discovering other RabbitMQ nodes and forming a cluster. |
-| `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. RabbitMQ prefers ODD numbers like [3, 5, 7]. All data/state is replicated across all replicas. |
-| `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-| `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-| `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster with `kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo`.
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-Run the following command to see the created RabbitMQ cluster object:
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-## Connect to the cluster
-
-Use the [RabbitMQ tools](https://www.rabbitmq.com/docs/cli) to connect to and manage the RabbitMQ cluster.
-
-## Scale
-
-### Scale vertically
-
-Before you start, check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-#### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: rabbitmq
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot it with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     componentSpecs:
-     - name: rabbitmq
-       componentDefRef: rabbitmq
-       replicas: 3
-       resources: # Change the values of resources
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Scale horizontally
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-Before you start, check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-#### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: rabbitmq
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn` and change the value in `replicaChanges`.
-
-2. Check the operation status to validate the horizontal scaling status.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   2/2        6m
-   ```
-
-   If an error occurs, you can troubleshoot it with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: rabbitmq
-       componentDefRef: rabbitmq
-       replicas: 1 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Volume expansion
-
-Before you start, check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: rabbitmq
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi"
-    EOF
-    ```
-
-2. Validate the volume expansion operation.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    ops-volume-expansion   VolumeExpansion   mycluster   Succeed   1/1        6m
-    ```
-
-    If an error occurs, you can troubleshoot it with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources`.
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: rabbitmq
-       componentDefRef: rabbitmq
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-   ...
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Restart
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: rabbitmq
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops -n demo
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-## Stop/Start a cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again by snapshots if you want to restore the cluster resources.
-
-### Stop a cluster
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-Run the command below to stop a cluster.
-
-```bash
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: mycluster-stop
-  namespace: demo
-spec:
-  clusterName: mycluster
-  type: Stop
-EOF
-```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-```bash
-kubect edit cluster mycluster -n demo
-```
-
-Configure `replicas` as 0 to delete pods.
-
-```bash
-kubectl edit cluster mycluster -n demo
-```
-
-Edit the value of `replicas`.
-
-```yaml
-...
-spec:
-  terminationPolicy: Delete
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-      - kubernetes.io/hostname
-  componentSpecs:
-    - name: rabbitmq
-      componentDef: rabbitmq
-      serviceVersion: 3.13.2
-      replicas: 0 # Change this value
-...
-```
-
-</TabItem>
-
-</Tabs>
-
-### Start a cluster
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-Run the command below to start a cluster.
-
-```bash
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: mycluster-start
-  namespace: demo
-spec:
-  clusterName: mycluster
-  type: Start
-EOF 
-```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-```bash
-kubectl edit cluster mycluster -n demo
-```
-
-Change replicas back to the original amount to start this cluster again.
-
-```bash
-kubectl edit cluster mycluster -n demo
-```
-
-Edit the value of `replicas`.
-
-```yaml
-...
-spec:
-  terminationPolicy: Delete
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-      - kubernetes.io/hostname
-  componentSpecs:
-    - name: rabbitmq
-      componentDef: rabbitmq
-      serviceVersion: 3.13.2
-      replicas: 3 # Change this value
-...
-```
-
-</TabItem>
-
-</Tabs>
-
-## Delete a cluster
-
-### Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   55m
-```
-
-### Steps
-
-Run the command below to delete a specified cluster.
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
diff --git a/docs/user_docs/kubeblocks-for-redis/_category_.yml b/docs/user_docs/kubeblocks-for-redis/_category_.yml
deleted file mode 100644
index 7fb27f09f..000000000
--- a/docs/user_docs/kubeblocks-for-redis/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 15
-label: KubeBlocks for Redis
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/_category_.yml b/docs/user_docs/kubeblocks-for-redis/cluster-management/_category_.yml
deleted file mode 100644
index 200a2feb5..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Cluster Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/create-and-connect-a-redis-cluster.md b/docs/user_docs/kubeblocks-for-redis/cluster-management/create-and-connect-a-redis-cluster.md
deleted file mode 100644
index 39d39bd03..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/create-and-connect-a-redis-cluster.md
+++ /dev/null
@@ -1,297 +0,0 @@
----
-title: Create and connect to a Redis Cluster
-description: How to create and connect to a Redis cluster
-keywords: [redis, create a redis cluster, connect to a redis cluster, cluster, redis sentinel]
-sidebar_position: 1
-sidebar_label: Create and connect
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Create and Connect to a Redis cluster
-
-This tutorial shows how to create and connect to a Redis cluster.
-
-## Create a Redis cluster
-
-### Before you start
-
-* [Install kbcli](./../../installation/install-kbcli.md) if you want to create a Redis cluster by `kbcli`.
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* Make sure the Redis Addon is enabled. The Redis Addon is enabled by KubeBlocks by default. If you disable it when installing KubeBlocks, [enable it](./../../installation/install-addons.md) first.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io redis
-  >
-  NAME      TYPE   VERSION   PROVIDER   STATUS    AGE
-  redis     Helm                        Enabled   61m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                      TYPE   STATUS     EXTRAS         AUTO-INSTALL   
-  ...
-  redis                     Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* View all the database types and versions available for creating a cluster.
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get clusterdefinition redis
-  >
-  NAME    TOPOLOGIES                                              SERVICEREFS   STATUS      AGE
-  redis   replication,replication-twemproxy,standalone                          Available   16m
-  ```
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=redis
-  >
-  NAME          CLUSTER-DEFINITION   STATUS      AGE
-  redis-7.0.6   redis                Available   16m
-  redis-7.2.4   redis                Available   16m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  >
-  NAME               TOPOLOGIES                                              SERVICEREFS   STATUS      AGE
-  redis              replication,replication-twemproxy,standalone                          Available   16m
-
-  kbcli clusterversion list
-  >
-  NAME                 CLUSTER-DEFINITION   STATUS      IS-DEFAULT   CREATED-TIME
-  redis-7.0.6          redis                Available   false        Sep 27,2024 11:36 UTC+0800
-  redis-7.2.4          redis                Available   false        Sep 27,2024 11:36 UTC+0800
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-### Create a cluster
-
-KubeBlocks supports creating two types of Redis clusters: Standalone and Replication Cluster. Standalone only supports one replica and can be used in scenarios with lower requirements for availability. For scenarios with high availability requirements, it is recommended to create a Replication Cluster, which supports automatic failover. To ensure high availability, Primary and Secondary are distributed on different nodes by default.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a Replication cluster. KubeBlocks also supports creating a Redis cluster in other modes. You can refer to the examples provided in the [GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/redis).
-
-If you only have one node for deploying a Replication Cluster, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  clusterDef: redis
-  topology: replication
-  componentSpecs:
-    - name: redis
-      serviceVersion: "7.2.4"
-      disableExporter: false
-      replicas: 2
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    - name: redis-sentinel
-      replicas: 3
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-EOF
-```
-
-| Field                                 | Definition  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](./delete-a-redis-cluster.md#termination-policy). |
-| `spec.clusterDef` | It specifies the name of the ClusterDefinition to use when creating a Cluster. **Note: DO NOT UPDATE THIS FIELD**. The value must be `redis` to create a Redis Cluster. |
-| `spec.topology` | It specifies the name of the ClusterTopology to be used when creating the Cluster. |
-| `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster.   |
-| `spec.componentSpecs.serviceVersion` | It specifies the version of the Service expected to be provisioned by this Component. Valid options are [7.0.6,7.2.4]. |
-| `spec.componentSpecs.disableExporter` | It determines whether metrics exporter information is annotated on the Component's headless Service. Valid options are [true, false]. |
-| `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-| `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-| `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-| `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-Run the following command to see the created Redis cluster object:
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Create an Redis cluster.
-
-   ```bash
-   kbcli cluster create redis mycluster -n demo
-   ```
-
-   If you want to customize your cluster specifications, kbcli provides various options, such as setting cluster version, termination policy, CPU, and memory. You can view these options by adding `--help` or `-h` flag.
-
-   ```bash
-   kbcli cluster create redis --help
-
-   kbcli cluster create redis -h
-   ```
-
-   If you only have one node for deploying a cluster with multiple replicas, you can configure the cluster affinity by setting `--pod-anti-affinity`, `--tolerations`, and `--topology-keys` when creating a cluster. But you should note that for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability. For example,
-
-   ```bash
-   kbcli cluster create redis mycluster \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. Verify whether this cluster is created successfully.
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS     CREATED-TIME
-   mycluster   demo        redis                          Delete               Running    Sep 29,2024 09:46 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## Connect to a Redis Cluster
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-You can use `kubectl exec` to exec into a Pod and connect to a database.
-
-KubeBlocks operator has created a new Secret called `mycluster-conn-credential` to store the connection credential of the Redis cluster. This secret contains the following keys:
-
-* `username`: the root username of the Redis cluster.
-* `password`: the password of the root user.
-* `port`: the port of the Redis cluster.
-* `host`: the host of the Redis cluster.
-* `endpoint`: the endpoint of the Redis cluster and it is the same as `host:port`.
-
-1. Get the `username` and `password` for the `kubectl exec` command.
-
-   ```bash
-   kubectl get secrets -n demo mycluster-redis-account-default -o jsonpath='{.data.username}' | base64 -d
-   >
-   default
-
-   kubectl get secrets -n demo mycluster-redis-account-default -o jsonpath='{.data.password}' | base64 -d
-   >
-   5bv7czc4
-   ```
-
-2. Exec into the pod `mycluster-redis-0` and connect to the database using username and password.
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-   root@mycluster-redis-0:/# redis-cli -a 5bv7czc4  --user default
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-You can also port forward the service to connect to the database from your local machine.
-
-1. Run the following command to port forward the service.
-  
-   ```bash
-   kubectl port-forward -n demo svc/mycluster-redis 6379:6379
-   ```
-
-2. Open a new terminal and run the following command to connect to the database.
-
-   ```bash
-   root@mycluster-redis-0:/# redis-cli -a 5bv7czc4  --user default
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-For the detailed database connection guide, refer to [Connect database](./../../connect_database/overview-of-database-connection.md).
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/delete-a-redis-cluster.md b/docs/user_docs/kubeblocks-for-redis/cluster-management/delete-a-redis-cluster.md
deleted file mode 100644
index 13d32f960..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/delete-a-redis-cluster.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-title: Delete a Redis Cluster
-description: How to delete a Redis Cluster
-keywords: [redis, delete a cluster, delete protection]
-sidebar_position: 6
-sidebar_label: Delete protection
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Delete a Redis Cluster
-
-## Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   redis                              Delete               Running   10m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Apr 10,2023 20:27 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Step
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/expand-volume.md b/docs/user_docs/kubeblocks-for-redis/cluster-management/expand-volume.md
deleted file mode 100644
index fef6e8b96..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,217 +0,0 @@
----
-title: Expand volume
-description: How to expand the volume of a Redis cluster
-keywords: [redis, expand volume]
-sidebar_position: 3
-sidebar_label: Expand volume
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Expand volume
-
-You can expand the storage volume size of each pod.
-
-:::note
-
-Volume expansion triggers a concurrent restart and the pod role may change after the operation.
-
-:::
-
-## Before you start
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      redis                               Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: redis
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. Validate the volume expansion operation.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Edit the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage`.
-
-    ```yaml
-    ...
-    spec:
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      clusterDefinitionRef: redis
-      componentSpecs:
-      - componentDef: redis
-        enabledLogs:
-        - running
-        disableExporter: true
-        name: redis
-        replicas: 1
-        resources:
-          limits:
-            cpu: "0.5"
-            memory: 0.5Gi
-          requests:
-            cpu: "0.5"
-            memory: 0.5Gi
-        serviceAccountName: kb-redis
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-            - ReadWriteOnce
-            resources:
-              requests:
-                storage: 40Gi # Change the volume storage size
-    ...
-    ```
-
-2. Check whether the corresponding cluster resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-   View the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage`.
-
-   ```yaml
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Change configuration.
-
-   Configure the values of `--components`, `--volume-claim-templates`, and `--storage`, and run the command below to expand the volume.
-
-   ```bash
-   kbcli cluster volume-expand mycluster -n demo --components="redis" --volume-claim-templates="data" --storage="40Gi"
-   ```
-
-   - `--components` describes the component name for volume expansion.
-   - `--volume-claim-templates` describes the VolumeClaimTemplate names in components.
-   - `--storage` describes the volume storage size.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-ih2r4 -n demo
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME                CLUSTER-DEFINITION        VERSION           TERMINATION-POLICY        STATUS          CREATED-TIME
-       redis-cluster        redis                                      Delete                    Updating        Sep 29,2024 09:46 UTC+0800
-       ```
-
-   - STATUS=Updating: it means the volume expansion is in progress.
-   - STATUS=Running: it means the volume expansion operation has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/restart-a-redis-cluster.md b/docs/user_docs/kubeblocks-for-redis/cluster-management/restart-a-redis-cluster.md
deleted file mode 100644
index 2ee64703a..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/restart-a-redis-cluster.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Restart a Redis cluster
-description: How to restart a Redis cluster
-keywords: [redis, restart]
-sidebar_position: 4
-sidebar_label: Restart
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restart a Redis cluster
-
-You can restart all pods of the cluster. When an exception occurs in a database, you can try to restart it.
-
-:::note
-
-The pod role may change after the cluster restarts.
-
-:::
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Create an OpsRequest to restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: redis
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                READY   STATUS            RESTARTS   AGE
-   mycluster-redis-0   3/4     Terminating       0          5m32s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Restart a cluster.
-  
-   Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster --components="redis" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restart operation.
-
-   Check the cluster status to identify the restart status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-   ```
-
-   - STATUS=Updating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/scale-for-a-redis-cluster.md b/docs/user_docs/kubeblocks-for-redis/cluster-management/scale-for-a-redis-cluster.md
deleted file mode 100644
index abdc215ea..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/scale-for-a-redis-cluster.md
+++ /dev/null
@@ -1,411 +0,0 @@
----
-title: Scale for a Redis cluster
-description: How to scale a Redis cluster, horizontal scaling, vertical scaling
-keywords: [redis, horizontal scaling, vertical scaling, scale]
-sidebar_position: 2
-sidebar_label: Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scale for a Redis cluster
-
-You can scale Redis DB instances in two ways, vertical scaling and horizontal scaling.
-
-## Vertical scaling
-
-You can vertically scale a cluster by changing resource requirements and limits (CPU and storage). For example, you can change the resource class from 1C2G to 2C4G by performing vertical scaling.
-
-### Before you start
-
-Run the command below to check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      redis                               Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-vertical-scaling
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VerticalScaling 
-      verticalScaling:
-      - componentName: redis
-        requests:
-          memory: "2Gi"
-          cpu: "1"
-        limits:
-          memory: "4Gi"
-          cpu: "2"
-    EOF
-    ```
-
-2. Check the operation status to validate the vertical scaling.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-    ```
-
-   If an error occurs to the vertical scaling operation, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file.
-
-   `spec.componentSpecs.resources` controls the requests and limits of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the values of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: redis
-     componentSpecs:
-     - name: redis
-       componentDef: redis
-       replicas: 1
-       resources: # Change values of resources
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components`, `--memory`, and `--cpu` and run the command.
-
-   ```bash
-   kbcli cluster vscale mycluster --components="redis" --memory="4Gi" --cpu="2"
-   ```
-
-   - `--components` describes the component name ready for vertical scaling.
-   - `--memory` describes the requested and limited size of the component memory.
-   - `--cpu` describes the requested and limited size of the component CPU.
-
-2. Validate the vertical scaling operation.
-
-   - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-enbr9 -n demo
-       ```
-
-   - Check the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-       mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-       ```
-
-       - STATUS=Updating: it means the vertical scaling is in progress.
-       - STATUS=Running: it means the vertical scaling operation has been applied.
-       - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be the normal instances number is less than the total instance number or the leader instance is running properly while others are abnormal.
-          > To solve the problem, you can check manually to see whether resources are sufficient. If AutoScaling is supported, the system recovers when there are enough resources, otherwise, you can create enough resources and check the result with kubectl describe command.
-
-    :::note
-
-    Vertical scaling does not synchronize parameters related to CPU and memory and it is required to manually call the OpsRequest of configuration to change parameters accordingly. Refer to [Configuration](./../configuration/configuration.md) for instructions.
-
-    :::
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Horizontal scaling
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      redis                               Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: redis
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: redis
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the value of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: redis
-     componentSpecs:
-     - name: redis
-       componentDef: redis
-       replicas: 2 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components` and `--replicas`, and run the command.
-
-   ```bash
-   kbcli cluster hscale mycluster --components="redis" --replicas=2
-   ```
-
-   - `--components` describes the component name ready for horizontal scaling.
-   - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-2. Validate the horizontal scaling operation.
-
-   - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-we2r3 -n demo
-       ```
-
-   - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-       mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-       ```
-
-       - STATUS=Updating: it means horizontal scaling is in progress.
-       - STATUS=Running: it means horizontal scaling has been applied.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-04-10T18:20:26Z"
-    message: VolumeSnapshot/mycluster-redis-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. Delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-***Result***
-
-The horizontal scaling continues after the backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/kubeblocks-for-redis/cluster-management/stop-start-a-redis-cluster.md b/docs/user_docs/kubeblocks-for-redis/cluster-management/stop-start-a-redis-cluster.md
deleted file mode 100644
index bf8d1dec2..000000000
--- a/docs/user_docs/kubeblocks-for-redis/cluster-management/stop-start-a-redis-cluster.md
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: Stop/Start a Redis cluster
-description: How to start/stop a Redis cluster
-keywords: [redis, stop a cluster, start a cluster]
-sidebar_position: 5
-sidebar_label: Stop/Start
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Stop/Start a Redis Cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again to restore it to the state it was in before it was stopped.
-
-## Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Run the command below to stop a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure the values of `replicas` as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      clusterDefinitionDef: redis
-      componentSpecs:
-      - componentDef: redis-7
-        enabledLogs:
-        - running
-        disableExporter: true
-        name: redis
-        replicas: 0 # Change this value
-        ...
-      - componentDef: redis-sentinel-7
-        name: redis-sentinel
-        replicas: 0 # Change this value
-        ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## Start a cluster
-  
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to start the cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit cluster YAML file" label="Edit cluster YAML File">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Change the values of `replicas` back to the original amount to start this cluster again.
-
-    ```yaml
-    ...
-    spec:
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      clusterDefinitionDef: redis
-      componentSpecs:
-      - componentDef: redis-7
-        enabledLogs:
-        - running
-        disableExporter: true
-        name: redis
-        replicas: 3 # Change this value
-        ...
-      - componentDef: redis-sentinel-7
-        name: redis-sentinel
-        replicas: 3 # Change this value
-        ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-2. Check the status of the cluster to see whether it is running again.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/docs/user_docs/kubeblocks-for-redis/configuration/_category_.yml b/docs/user_docs/kubeblocks-for-redis/configuration/_category_.yml
deleted file mode 100644
index b19dea834..000000000
--- a/docs/user_docs/kubeblocks-for-redis/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Configuration
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-redis/configuration/configuration.md b/docs/user_docs/kubeblocks-for-redis/configuration/configuration.md
deleted file mode 100644
index bdf4ba961..000000000
--- a/docs/user_docs/kubeblocks-for-redis/configuration/configuration.md
+++ /dev/null
@@ -1,392 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [redis, parameter, configuration, reconfiguration]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure cluster parameters
-
-The KubeBlocks configuration function provides a set of consistent default configuration generation strategies for all the databases running on KubeBlocks and also provides a unified parameter configuration interface to facilitate managing parameter configuration, searching the parameter user guide, and validating parameter effectiveness.
-
-From v0.6.0, KubeBlocks supports `kbcli cluster configure` and `kbcli cluster edit-config` to configure parameters. The difference is that KubeBlocks configures parameters automatically with `kbcli cluster configure` but `kbcli cluster edit-config` provides a visualized way for you to edit parameters directly.
-
-<Tabs>
-
-<TabItem value="Edit config file" label="Edit config file" default>
-
-1. Get the configuration file of this cluster.
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-redis -n demo
-   ```
-
-2. Configure parameters according to your needs. The example below adds the `- configFileParams` part to configure `acllog-max-len`.
-
-    ```yaml
-    spec:
-      clusterRef: mycluster
-      componentName: redis
-      configItemDetails:
-      - configSpec:
-          constraintRef: redis7-config-constraints
-          name: redis-replication-config
-          namespace: demo
-          reRenderResourceTypes:
-          - vscale
-          templateRef: redis7-config-template
-          volumeName: redis-config
-      - configFileParams:
-          redis.conf:
-            parameters:
-              acllog-max-len: "256"
-        name: mycluster-redis-redis-replication-config
-    ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      default
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      kpz77mcs
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-      root@mycluster-redis-0:/# redis-cli -a kpz77mcs  --user default
-
-      127.0.0.1:6379> config get parameter acllog-max-len
-      1) "acllog-max-len"
-      2) "256"
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. Define an OpsRequest file and configure the parameters in the OpsRequest in a yaml file named `mycluster-configuring-demo.yaml`. In this example, `acllog-max-len` is configured as `256`.
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-configuring-demo
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      reconfigure:
-        componentName: redis
-        configurations:
-        - keys:
-          - key: redis.conf
-            parameters:
-            - key: acllog-max-len
-              value: "256"
-          name: redis-replication-config
-      preConditionDeadlineSeconds: 0
-      type: Reconfiguring
-    ```
-
-   | Field                                                  | Definition     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | It specifies the name of this OpsRequest. |
-   | `metadata.namespace`                                   | It specifies the namespace where this cluster is created. |
-   | `spec.clusterName`                                     | It specifies the cluster name that this operation is targeted at. |
-   | `spec.reconfigure`                                     | It specifies a component and its configuration updates. |
-   | `spec.reconfigure.componentName`                       | It specifies the component name of this cluster.  |
-   | `spec.configurations`                                  | It contains a list of ConfigurationItem objects, specifying the component's configuration template name, upgrade policy, and parameter key-value pairs to be updated. |
-   | `spec.reconfigure.configurations.keys.key`             | It specifies the configuration map. |
-   | `spec.reconfigure.configurations.keys.parameters`      | It defines a list of key-value pairs for a single configuration file. |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | It represents the name of the parameter you want to edit. |
-   | `spec.reconfigure.configurations.keys.parameter.value` | It represents the parameter values that are to be updated. If set to nil, the parameter defined by the Key field will be removed from the configuration file.  |
-   | `spec.reconfigure.configurations.name`                 | It specifies the configuration template name.  |
-   | `preConditionDeadlineSeconds`                          | It specifies the maximum number of seconds this OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed. |
-
-2. Apply the configuration OpsRequest.
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. Connect to this cluster to verify whether the configuration takes effect.
-
-   1. Get the username and password.
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      default
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      kpz77mcs
-      ```
-
-   2. Connect to this cluster and verify whether the parameters are configured as expected.
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-      root@mycluster-redis-0:/# redis-cli -a kpz77mcs  --user default
-      
-      127.0.0.1:6379> config get parameter acllog-max-len
-      1) "acllog-max-len"
-      2) "256"
-      ```
-
-:::note
-
-Just in case you cannot find the configuration file of your cluster, you can switch to the `kbcli` tab to view the current configuration file of a cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## View parameter information
-
-View the current configuration file of a cluster.
-
-```bash
-kbcli cluster describe-config mycluster --components=redis -n demo
-```
-
-From the meta information, the cluster `mycluster` has a configuration file named `redis.cnf`.
-
-You can also view the details of this configuration file and parameters.
-
-* View the details of the current configuration file.
-
-  ```bash
-  kbcli cluster describe-config mycluster -n demo --components=redis --show-detail
-  ```
-
-* View the parameter description.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --components=redis |head -n 20
-  ```
-
-* View the user guide of a specified parameter.
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --components=redis --param=acllog-max-len
-  ```
-
-  <details>
-  <summary>Output</summary>
-
-  ```bash
-  template meta:
-    ConfigSpec: redis-replication-config	ComponentName: redis	ClusterName: mycluster -n demo
-
-  Configure Constraint:
-    Parameter Name:     acllog-max-len
-    Allowed Values:     [1-10000]
-    Scope:              Global
-    Dynamic:            true
-    Type:               integer
-    Description: 
-  ```
-
-  </details>
-
-  * Allowed Values: It defines the valid value range of this parameter.
-  * Dynamic: The value of `Dynamic` in `Configure Constraint` defines how the parameter configuration takes effect. There are two different configuration strategies based on the effectiveness type of modified parameters, i.e. **dynamic** and **static**.
-    * When `Dynamic` is `true`, it means the effectiveness type of parameters is **dynamic** and can be updated online.
-    * When `Dynamic` is `false`, it means the effectiveness type of parameters is **static** and a pod restarting is required to make the configuration effective.
-  * Description: It describes the parameter definition.
-
-## Configure parameters
-
-### Configure parameters with configure command
-
-The example below configures `acllog-max-len`.
-
-1. View the current values of `acllog-max-len`.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   127.0.0.1:6379> config get parameter acllog-max-len
-   1) "acllog-max-len"
-   2) "128"
-   ```
-
-2. Adjust the values of `acllog-max-len`.
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components=redis --set=acllog-max-len=256
-   ```
-
-   :::note
-
-   Make sure the value you set is within the Allowed Values of this parameter. If you set a value that does not meet the value range, the system prompts an error. For example,
-
-   ```bash
-   kbcli cluster configure mycluster -n demo  --set=acllog-max-len=1000000
-   >
-   error: failed to validate updated config: [failed to cue template render configure: [configuration."acllog-max-len": 2 errors in empty disjunction:
-   configuration."acllog-max-len": conflicting values 128 and 1000000:
-       20:43
-       155:16
-   configuration."acllog-max-len": invalid value 1000000 (out of bound <=10000):
-       20:32
-   ]
-   ]
-   ```
-
-   :::
-
-3. View the status of the parameter configuration.
-
-   `Status.Progress` and `Status.Status` shows the overall status of the parameter configuration and `Conditions` show the details.
-
-   When the `Status.Status` shows `Succeed`, the configuration is completed.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-zjztm -n demo
-   ```
-
-   <details>
-   <summary>Output</summary>
-
-   ```bash
-   Spec:
-     Name: mycluster-reconfiguring-zjztm	NameSpace: demo	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=redis --config-specs=redis-replication-config --config-file=redis.conf --set acllog-max-len=256 --namespace=demo
-
-   Status:
-     Start Time:         Sep 29,2024 10:46 UTC+0800
-     Duration:           10s
-     Status:             Running
-     Progress:           1/2
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                         STATUS   MESSAGE
-   Sep 29,2024 10:46 UTC+0800   Progressing          Progressing                    True     wait for the controller to process the OpsRequest: mycluster-reconfiguring-zjztm in Cluster: mycluster
-   Sep 29,2024 10:46 UTC+0800   Validated            ValidateOpsRequestPassed       True     OpsRequest: mycluster-reconfiguring-zjztm is validated
-   Sep 29,2024 10:46 UTC+0800   Reconfigure          ReconfigureStarted             True     Start to reconfigure in Cluster: mycluster, Component: redis
-   ```
-
-   </details>
-
-4. Connect to the database to verify whether the parameter is configured as expected.
-
-   It takes about 30 seconds for the configuration to take effect because the kubelet requires some time to sync changes in the ConfigMap to the Pod's volume.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   127.0.0.1:6379> config get parameter acllog-max-len
-   1) "acllog-max-len"
-   2) "256"
-   ```
-
-### Configure parameters with edit-config command
-
-For your convenience, KubeBlocks offers a tool `edit-config` to help you configure parameters in a visualized way.
-
-For Linux and macOS, you can edit configuration files by vi. For Windows, you can edit files on the notepad.
-
-1. Edit the configuration file.
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   If there are multiple components in a cluster, use `--component` to specify a component.
-
-   :::
-
-2. View the status of the parameter configuration.
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-nflq8 -n demo
-   ```
-
-3. Connect to the database to verify whether the parameters are configured as expected.
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. For the `edit-config` function, static parameters and dynamic parameters cannot be edited at the same time.
-   2. Deleting a parameter will be supported later.
-
-   :::
-
-## View history and compare differences
-
-After the configuration is completed, you can search the configuration history and compare the parameter differences.
-
-View the parameter configuration history.
-
-```bash
-kbcli cluster describe-config mycluster -n demo --components=redis
-```
-
-<details>
-<summary>Output</summary>
-
-```bash
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME           FILE         ENABLED   TEMPLATE                 CONSTRAINT                  RENDERED                                       COMPONENT   CLUSTER
-redis-replication-config   redis.conf   true      redis7-config-template   redis7-config-constraints   mycluster-redis-redis-replication-config   redis       mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME           FILE         STATUS    POLICY    PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-zjztm   mycluster   redis       redis-replication-config   redis.conf   Succeed   restart   1/1        Sep 29,2024 10:46 UTC+0800
-mycluster-reconfiguring-zrkq7   mycluster   redis       redis-replication-config   redis.conf   Succeed   restart   1/1        Sep 29,2024 11:08 UTC+0800   {"redis.conf":"{\"databases\":\"32\",\"maxclients\":\"20000\"}"}
-mycluster-reconfiguring-mwbnw   mycluster   redis       redis-replication-config   redis.conf   Succeed   restart   1/1        Sep 29,2024 11:20 UTC+0800   {"redis.conf":"{\"maxclients\":\"40000\"}"}
-```
-
-</details>
-
-From the above results, there are three parameter modifications.
-
-Compare these modifications to view the configured parameters and their different values for different versions.
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-zrkq7 mycluster-reconfiguring-mwbnw
->
-DIFF-CONFIG RESULT:
-  ConfigFile: redis.conf	TemplateName: redis-replication-config	ComponentName: redis	ClusterName: mycluster	UpdateType: update
-
-PARAMETERNAME   MYCLUSTER-RECONFIGURING-ZRKQ7   MYCLUSTER-RECONFIGURING-MWBNW
-maxclients      20000                           40000
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-redis/high-availability/_category_.yml b/docs/user_docs/kubeblocks-for-redis/high-availability/_category_.yml
deleted file mode 100644
index 8ce89efb2..000000000
--- a/docs/user_docs/kubeblocks-for-redis/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: High Availability
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-redis/high-availability/high-availability.md b/docs/user_docs/kubeblocks-for-redis/high-availability/high-availability.md
deleted file mode 100644
index 4148b3fb0..000000000
--- a/docs/user_docs/kubeblocks-for-redis/high-availability/high-availability.md
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: High Availability for Redis
-description: High availability for a Redis cluster
-keywords: [redis, high availability]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# High availability
-
-KubeBlocks integrates [the official Redis Sentinel solution](https://redis.io/docs/management/sentinel/) to realize high availability and adopts Noop as the switch policy.
-
-Redis Sentinel is the high availability solution for a Redis Replication Cluster, which is recommended by Redis and is also the main-stream solution in the community.
-
-In the Redis Replication Cluster provided by KubeBlocks, Sentinel is deployed as an independent component.
-
-## Before you start
-
-* [Install KubeBlocks](./../../installation/install-kubeblocks.md).
-* [Create a Redis Replication Cluster](./../cluster-management/create-and-connect-a-redis-cluster.md#create-a-redis-cluster).
-* Check the Switch Policy and the role probe.
-  * Check whether the switch policy is `Noop`.
-
-    ```bash
-    kubectl get cluster redis-cluster -o yaml
-    >
-    spec:
-      componentSpecs:
-      - name: redis
-        componentDefRef: redis
-        switchPolicy:
-          type: Noop
-    ```
-
-  * Check whether the following role probe parameters exist to verify the role probe is enabled.
-
-    ```bash
-    kubectl get cd redis -o yaml
-    >
-    probes:
-      roleProbe:
-        failureThreshold: 2
-        periodSeconds: 2
-        timeoutSeconds: 1
-    ```
-
-## Steps
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-This section takes the cluster `mycluster` in the namespace `demo` as an example.
-
-1. View the initial status of the Redis cluster.
-
-    ```bash
-    kubectl get pods -l kubeblocks.io/role=primary -n demo
-    >
-    NAME                READY   STATUS    RESTARTS   AGE
-    mycluster-redis-0   3/3     Running   0          24m
-
-    kubectl get pods -l kubeblocks.io/role=secondary -n demo
-    >
-    NAME                READY   STATUS    RESTARTS      AGE
-    mycluster-redis-1   3/3     Running   1 (24m ago)   24m
-    ```
-
-   Currently, `mycluster-redis-0` is the primary pod and `mycluster-redis-1` is the secondary pod.
-
-   :::note
-
-   To fetch a more complete output, you can modify the `-o` parameter.
-
-   ```bash
-   kubectl get pods  -o custom-columns=NAME:.metadata.name,ROLE_LABEL:.metadata.labels."kubeblocks\.io/role"
-   ```
-
-   :::
-
-2. Simulate a primary pod exception.
-
-   ```bash
-   # Enter the primary pod
-   kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-   # Execute the debug sleep command to simulate a primary pod exception
-   root@mycluster-redis-0:/# redis-cli debug sleep 30
-   ```
-
-3. Open the Redis Sentinel log to view the failover.
-
-   ```bash
-   kubectl logs mycluster-redis-sentinel-0 -n demo
-   ```
-
-   In the logs, we can view when a high-availability switch occurs.
-
-   ```bash
-   1:X 18 Apr 2023 06:13:17.072 # +switch-master mycluster-redis-sentinel mycluster-redis-0.mycluster-redis-headless.default.svc 6379 mycluster-redis-1.mycluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.074 * +slave slave mycluster-redis-0.mycluster-redis-headless.default.svc:6379 mycluster-redis-0.mycluster-redis-headless.default.svc 6379 @ mycluster-redis-sentinel mycluster-redis-1.mycluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.077 * Sentinel new configuration saved on disk
-   ```
-
-4. Connect to the Redis cluster to view the primary pod information after the exception simulation.
-
-    ```bash
-    127.0.0.1:6379> info replication
-    ```
-
-   Now `mycluster-redis-1` has been assigned as the primary's pod.
-
-5. Describe the cluster and check the instance role.
-
-   ```bash
-   kubectl get pods -l kubeblocks.io/role=primary -n demo
-   kubectl get pods -l kubeblocks.io/role=secondary -n demo
-   ```
-
-   After the failover, `mycluster-redis-0` becomes the secondary pod and `mycluster-redis-1` becomes the primary pod.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-This section takes the cluster `redis-cluster` in the namespace `default` as an example.
-
-1. View the initial status of the Redis cluster.
-
-   ```bash
-   kbcli cluster describe redis-cluster
-   ```
-
-   ![Redis cluster original status](../../../img/redis-ha-before.png)
-
-   Currently, `redis-cluster-redis-0` is the primary pod and `redis-cluster-redis-1` is the secondary pod.
-
-2. Simulate a primary pod exception.
-
-   ```bash
-   # Enter the primary pod
-   kubectl exec -it redis-cluster-redis-0  -- bash
-
-   # Execute the debug sleep command to simulate a primary pod exception
-   root@redis-redis-0:/# redis-cli debug sleep 30
-   ```
-
-3. Open the Redis Sentinel log to view the failover.
-
-   ```bash
-   kubectl logs redis-cluster-redis-sentinel-0
-   ```
-
-   In the logs, we can view when a high-availability switch occurs.
-
-   ```bash
-   1:X 18 Apr 2023 06:13:17.072 # +switch-master redis-cluster-redis-sentinel redis-cluster-redis-0.redis-cluster-redis-headless.default.svc 6379 redis-cluster-redis-1.redis-cluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.074 * +slave slave redis-cluster-redis-0.redis-cluster-redis-headless.default.svc:6379 redis-cluster-redis-0.redis-cluster-redis-headless.default.svc 6379 @ redis-cluster-redis-sentinel redis-cluster-redis-1.redis-cluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.077 * Sentinel new configuration saved on disk
-   ```
-
-4. Connect to the Redis cluster to view the primary pod information after the exception simulation.
-
-   ```bash
-   kbcli cluster connect redis-cluster
-   ```
-
-   ```bash
-   # View the current primary pod
-   127.0.0.1:6379> info replication
-   ```
-
-   ![Redis info replication](../../../img/redis-ha-info-replication.png)
-
-   From the output, `redis-cluster-redis-1` has been assigned as the primary's pod.
-
-5. Describe the cluster and check the instance role.
-
-   ```bash
-   kbcli cluster describe redis-cluster
-   ```
-
-   ![Redis cluster status after HA](./../../../img/redis-ha-after.png)
-
-   After the failover, `redis-cluster-redis-0` becomes the secondary pod and `redis-cluster-redis-1` becomes the primary pod.
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/kubeblocks-for-redis/kubeblocks-for-redis.md b/docs/user_docs/kubeblocks-for-redis/kubeblocks-for-redis.md
deleted file mode 100644
index f363f330e..000000000
--- a/docs/user_docs/kubeblocks-for-redis/kubeblocks-for-redis.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: KubeBlocks for Redis
-description: Feature list of KubeBlocks for Redis
-keywords: [redis, introduction, feature]
-sidebar_position: 1
----
-
-# KubeBlocks for Redis
-
-This tutorial illustrates how to create and manage a Redis cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/redis).
-
-* [Cluster Management](./cluster-management/create-and-connect-a-redis-cluster.md)
-* [Configuration](./configuration/configuration.md)
-* [High Availability](./high-availability/high-availability.md)
diff --git a/docs/user_docs/kubeblocks-for-redis/redis-cluster-mode.md b/docs/user_docs/kubeblocks-for-redis/redis-cluster-mode.md
deleted file mode 100644
index 0af21ae7d..000000000
--- a/docs/user_docs/kubeblocks-for-redis/redis-cluster-mode.md
+++ /dev/null
@@ -1,439 +0,0 @@
----
-title: Redis Cluster Mode
-description: A brief overview of Redis Cluster Mode and its basic operations
-keywords: [redis, redis cluster, feature]
-sidebar_position: 7
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Redis Cluster Mode
-
-While Redis Sentinel clusters provide excellent failover support, they do not inherently provide data sharding. All data remains on a single Redis instance, limited by its memory and performance capacity. Therefore, it may impact horizontal scalability when dealing with large datasets and high read/write operations.
-
-KubeBlocks now supports Redis Cluster Mode, which not only allows for greater memory distribution but also parallel processing, significantly improving performance for data-intensive operations. A brief overview of Redis Cluster Mode and its basic operations will be elaborated in this documentation.
-
-## What is Redis Cluster Mode
-
-Redis Cluster Mode is a distributed deployment mode of the Redis database used to horizontally scale data storage and improve system availability across multiple nodes.
-
-In Redis Cluster Mode, the cluster manages data through a sharding mechanism and provides capabilities for data replication, failover, and traffic routing among shards. This sharding mechanism enables distributing a large amount of data across different nodes, achieving horizontal scalability and load balancing.
-
-Redis Cluster Mode ensures high availability through master-slave replication. Each master node can have one or more slave nodes that replicate the data from the master and provide read services. In case of a master node failure, a slave node can automatically take over the master's role and continue serving, ensuring failover and fault tolerance.
-
-Redis Cluster Mode also provides communication and data migration mechanisms among cluster nodes. When there are changes in the cluster, such as adding nodes, node failures, or node removal, Redis Cluster automatically performs data migration and resharding to maintain data balance and availability.
-
-## Basic Ops
-
-Below is a brief introduction to the basic operations of Redis Cluster Mode.
-
-### Before you start
-
-* [Install KubeBlocks](./../installation/install-kubeblocks.md).
-    Make sure your KubeBlocks and addon are version 0.9 or above.
-* Make sure the Redis Addon is enabled.
-* View all the database types and versions available for creating a cluster.
-
-  Make sure you can get the redis `componentdefinition`. It is used to describe and define the components in a database cluster, and usually presents basic information such as the name, type, version, status, etc.
-
-  ```bash
-  kubectl get componentdefinition redis-cluster-7.0
-  >
-  NAME                SERVICE         SERVICE-VERSION   STATUS      AGE
-  redis-cluster-7.0   redis-cluster   7.0.6             Available   33m
-  ```
-
-* To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-### Create clusters
-
-Since Redis Cluster Mode is based on the latest ShardingSpec API, currently it can only be created by Helm or YAML files using kubectl.
-
-:::note
-
-Redis Cluster Mode requires a minimum of three shards, so the number of shards cannot be less than 3.
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-```bash
-# Example 1: Creating a Redis Cluster with three shards, each shard having one replica (one master, one replica)
-helm install redisc xxxxx(chart remote address) --set mode=cluster --set redisCluster.shardCount=3 --set replicas=2 -n demo
-
-# Example 2: Creating a Redis Cluster with three shards, each shard having one replica (one master, one replica), and enabling NodePort access
-helm install redisc xxxxx(chart remote address) --set mode=cluster --set nodePortEnabled=true --set redisCluster.shardCount=3 --set replicas=2 -n demo
-```
-
-</TabItem>
-
-<TabItem value="YAML" label="YAML">
-
-```bash
-kubectl apply -f redis-cluster-example.yaml
-```
-
-**Example 1: Redis Cluster without NodePort enabled**
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: redisc
-  namespace: demo
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-  clusterVersionRef: redis-7.0.6
-  shardingSpecs:
-  - name: shard
-    # Specify the number of shards, which cannot be less than 3
-    shards: 3
-    template:
-      componentDef: redis-cluster-7
-      name: redis
-      replicas: 2
-      # Specify resources for a single shard
-      resources:
-        limits:
-          cpu: 500m
-          memory: 512Mi
-        requests:
-          cpu: 500m
-          memory: 512Mi
-      serviceVersion: 7.0.6
-      volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-          - ReadWriteOnce
-          resources:
-            requests:
-              storage: 20Gi
-  terminationPolicy: Delete
-```
-
-**Example 2: Redis Cluster with NodePort enabled**
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: redisc
-  namespace: demo
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-  clusterVersionRef: redis-7.0.6
-  shardingSpecs:
-  - name: shard
-    # Specify the number of shards, which cannot be less than 3
-    shards: 3
-    template:
-      componentDef: redis-cluster-7.0
-      name: redis
-      replicas: 2
-      # Specify resources for a single shard
-      resources:
-        limits:
-          cpu: 500m
-          memory: 512Mi
-        requests:
-          cpu: 500m
-          memory: 512Mi
-      serviceVersion: 7.0.6
-      # Enable NodePort
-      services:
-      - name: redis-advertised
-        podService: true
-        serviceType: NodePort
-      volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-          - ReadWriteOnce
-          resources:
-            requests:
-              storage: 20Gi
-  terminationPolicy: Delete
-```
-
-</TabItem>
-
-</Tabs>
-
-Once the cluster is created, wait until the cluster status changes to `running`. Then, run `kubectl get component -n demo | grep redisc-shard` to view the roles of nodes in the cluster.
-
-```bash
-kubectl get component -n demo | grep redisc-shard
->
-redisc-shard-5hn            redis-cluster          Running   79m
-redisc-shard-7zk            redis-cluster          Running   79m
-redisc-shard-5tw            redis-cluster          Running   79m
-```
-
-### Connect to clusters
-
-<Tabs>
-
-<TabItem value="SDK" label="SDK" default>
-
-Redis Cluster Mode requires using specific client SDKs for connection. Currently, there are Redis Cluster client SDK implementations available in different popular programming languages. You can choose the appropriate SDK based on your requirements. For example, Jedis or Lettuce for Java, go-redis for Golang, etc.
-
-Note that when using an SDK, you need to configure the addresses of each node in the Redis Cluster. According to whether NodePort is enabled or not, there are two different configurations:
-
-**Example 1: Redis Cluster without NodePort enabled**
-
-Configure each Pod's headless address.
-
-```bash
-redisc-shard-qst-0.redisc-shard-qst-headless:6379
-redisc-shard-qst-1.redisc-shard-qst-headless:6379
-redisc-shard-kr2-0.redisc-shard-kr2-headless:6379
-redisc-shard-kr2-1.redisc-shard-kr2-headless:6379
-redisc-shard-mv6-0.redisc-shard-mv6-headless:6379
-redisc-shard-mv6-1.redisc-shard-mv6-headless:6379
-```
-
-**Example 2: Redis Cluster with NodePort enabled**
-
-Configure each Pod's HostIP and the corresponding NodePort.
-
-```bash
-# 172.18.0.3 is the host IP of redisc-shard-qst-0 node, and 32269 is the NodePort mapped to the Redis 6379 server port.
-172.18.0.3:32269
-172.18.0.4:32051
-172.18.0.5:32650
-172.18.0.6:30151
-172.18.0.7:31603
-172.18.0.8:31718
-```
-
-</TabItem>
-
-<TabItem value="Direct connect" label="Direct connect">
-
-:::note
-
-Direct connection is only for testing.
-
-:::
-
-For simple connectivity verification, you can use kubectl commands to log in to a specific Pod in the cluster and check the cluster's status.
-
-```bash
-# Log in to a pod
-➜  ~ kubectl exec -it redisc-shard-qst-0 -c redis-cluster -- bash
-root@redisc-shard-qst-0:/#
-
-# Check cluster topology
-root@redisc-shard-qst-0:/# redis-cli -a $REDIS_DEFAULT_PASSWORD cluster nodes
-Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
-f2f729eb9074d42dc58ba544f35be0b6652134c2 172.18.0.3:32650@31171,redisc-shard-mv6-1.redisc-shard-mv6-headless.default.svc slave 04e309001ce12857558ab721b47ce802e15b84f4 0 1713927855356 3 connected
-04e309001ce12857558ab721b47ce802e15b84f4 172.18.0.3:32051@32632,redisc-shard-mv6-0.redisc-shard-mv6-headless.default.svc master - 0 1713927854000 3 connected 12288-16383
-11da6bb8875ed4b3787888fec56bf9212e664246 172.18.0.3:32663@32115,redisc-shard-qst-1.redisc-shard-qst-headless.default.svc slave 7f062b0b5fdd0d09ea70920a5ad3612a9d217c9d 0 1713927853848 2 connected
-7f062b0b5fdd0d09ea70920a5ad3612a9d217c9d 172.18.0.3:30649@30003,redisc-shard-qst-0.redisc-shard-qst-headless.default.svc myself,master - 0 1713927853000 2 connected 6827-10922
-a04da6edbf99faff53b2b94d0fc64f378d27b4aa 172.18.0.3:30151@31667,redisc-shard-kr2-0.redisc-shard-kr2-headless.default.svc master - 0 1713927853000 1 connected 1365-5460
-d392d129e27ced8603681cd666f705bfad7ae91a 172.18.0.3:31718@30646,redisc-shard-fm6-1.redisc-shard-fm6-headless.default.svc slave 568bb6ced7f186caddb2b2b7ab560e61ff95438c 0 1713927853036 4 connected
-b695dbac46efd9ec24ea608358f92dfd749e8e71 172.18.0.3:31603@30000,redisc-shard-kr2-1.redisc-shard-kr2-headless.default.svc slave a04da6edbf99faff53b2b94d0fc64f378d27b4aa 0 1713927854350 1 connected
-568bb6ced7f186caddb2b2b7ab560e61ff95438c 172.18.0.3:32269@31457,redisc-shard-fm6-0.redisc-shard-fm6-headless.default.svc master - 0 1713927853340 4 connected 0-1364 5461-6826 10923-12287
-```
-
-</TabItem>
-
-</Tabs>
-
-### Scale shards
-
-:::note
-
-1. Currently, only scaling up or down one shard node at a time is supported. If you need to scale multiple shards, you need to perform the operations sequentially. This will be optimized in future versions.
-
-2. Scaling shards using kbcli or ops will be supported in future versions.
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl patch" label="kubectl patch" default>
-
-You can use `kubectl patch` to update the shards field and scale the shards.
-
-```bash
-# Scale up to 4 shards
-kubectl patch cluster redisc --type='json' -p='[{"op": "replace", "path": "/spec/shardingSpecs/0/shards", "value":4}]' -n demo
-
-# Scale down to 3 shards
-kubectl patch cluster redisc --type='json' -p='[{"op": "replace", "path": "/spec/shardingSpecs/0/shards", "value":3}]' -n demo
-```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-You can use `kubectl edit` to directly edit the cluster YAML and modify the value of `spec.shardingSpecs[0].shards`.
-
-```bash
-kubectl edit cluster redisc
-```
-
-</TabItem>
-
-</Tabs>
-
-### Scale replicas
-
-The number of replicas applies to all shards.
-
-<Tabs>
-
-<TabItem value="kubectl patch" label="kubectl patch" default>
-
-You can use `kubectl patch` to update the replicas field and scale the shard replicas.
-
-```bash
-# Scale to 3 replicas (1 master and 2 replicas per shard)
-kubectl patch cluster redisc --type='json' -p='[{"op": "replace", "path": "/spec/shardingSpecs/0/template/replicas", "value": 3}]' -n default
-```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-You can Use `kubectl edit` to directly edit the cluster YAML and modify the value of `spec.shardingSpecs[0].template.replicas`.
-
-```bash
-kubectl edit cluster redisc
-```
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-You can apply an OpsRequest to scale replicas.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: horizontal-scaling-redisc
-spec:
-  clusterName: redisc
-  horizontalScaling:
-  - componentName: shard
-    replicas: 3
-  type: HorizontalScaling
-```
-
-</TabItem>
-
-</Tabs>
-
-### Resource scaling/reconfiguration
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: vertical-scaling-redisc
-spec:
-  clusterName: redisc
-  verticalScaling:
-  - componentName: shard
-    limits:
-      cpu: 2
-      memory: 4Gi
-    requests:
-      cpu: 2
-      memory: 4Gi
-  type: VerticalScaling
-```
-
-### Expand volume
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: volume-expand-redisc
-spec:
-  clusterName: redisc
-  volumeExpansion:
-  - componentName: shard
-    volumeClaimTemplates:
-    - name: data
-      storage: 200Gi
-  type: VolumeExpansion
-```
-
-### Restart
-
-Currently, restarting a Redis Cluster is not supported and it will be supported in the future.
-
-### Stop/Start
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: stop-redisc
-spec:
-  clusterName: redisc
-  type: Stop
-```
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: start-redisc
-spec:
-  clusterName: redisc
-  type: Start
-```
-
-### Back up & Restore
-
-To back up a cluster:
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: backup-redisc-1
-spec:
-  clusterName: redisc
-  type: Backup
-  backup:
-    backupMethod: datafile
-    backupName: backup-redisc-1
-    backupPolicyName: redisc-redis-backup-policy
-    deletionPolicy: Delete
-```
-
-To restore a cluster:
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: restore-redisc-backup
-spec:
-  clusterName: restore-redisc
-  type: Backup
-  restore:
-    backupName: backup-redisc-1
-```
diff --git a/docs/user_docs/kubeblocks-for-starrocks/_category_.yml b/docs/user_docs/kubeblocks-for-starrocks/_category_.yml
deleted file mode 100644
index 557e6f62b..000000000
--- a/docs/user_docs/kubeblocks-for-starrocks/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 21
-label: KubeBlocks for StarRocks
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/kubeblocks-for-starrocks/manage-starrocks.md b/docs/user_docs/kubeblocks-for-starrocks/manage-starrocks.md
deleted file mode 100644
index 207afb25f..000000000
--- a/docs/user_docs/kubeblocks-for-starrocks/manage-starrocks.md
+++ /dev/null
@@ -1,917 +0,0 @@
----
-title: Manage StarRocks with KubeBlocks
-description: How to manage StarRocks on KubeBlocks
-keywords: [starrocks, analytic, data warehouse, control plane]
-sidebar_position: 1
-sidebar_label: Manage StarRocks with KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Manage StarRocks with KubeBlocks
-
-StarRocks is a next-gen, high-performance analytical data warehouse that enables real-time, multi-dimensional, and highly concurrent data analysis.
-
-This tutorial illustrates how to create and manage a StarRocks cluster by `kbcli`, `kubectl` or a YAML file. You can find the YAML examples and guides in [the GitHub repository](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/starrocks).
-
-## Before you start
-
-- [Install kbcli](./../installation/install-kbcli.md) if you want to manage the StarRocks cluster with `kbcli`.
-- [Install KubeBlocks](./../installation/install-kubeblocks.md).
-- [Install and enable the starrocks Addon](./../installation/install-addons.md).
-- To keep things isolated, create a separate namespace called `demo` throughout this tutorial.
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-## Create a cluster
-
-KubeBlocks implements a `Cluster` CRD to define a cluster. Here is an example of creating a StarRocks cluster. If you only have one node for deploying a cluster with multiple replicas, configure the cluster affinity by setting `spec.schedulingPolicy` or `spec.componentSpecs.schedulingPolicy`. For details, you can refer to the [API docs](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy). But for a production environment, it is not recommended to deploy all replicas on one node, which may decrease the cluster availability.
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: fe
-    componentDef: starrocks-ce-fe
-    serviceAccountName: kb-starrocks-cluster
-    replicas: 1
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-  - name: be
-    componentDef: starrocks-ce-be
-    replicas: 2
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-EOF
-```
-
-| Field                                 | Definition  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | It is the policy of cluster termination. Valid values are `DoNotTerminate`, `Delete`, `WipeOut`. For the detailed definition, you can refer to [Termination Policy](#termination-policy). |
-| `spec.componentSpecs`                 | It is the list of ClusterComponentSpec objects that define the individual Components that make up a Cluster. This field allows customized configuration of each component within a cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster. |
-| `spec.componentSpecs.replicas`        | It specifies the number of replicas of the component. |
-| `spec.componentSpecs.resources`       | It specifies the resources required by the Component.  |
-| `spec.componentSpecs.volumeClaimTemplates` | It specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. |
-| `spec.componentSpecs.volumeClaimTemplates.name` | It refers to the name of a volumeMount defined in `componentDefinition.spec.runtime.containers[*].volumeMounts`. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | It is the name of the StorageClass required by the claim. If not specified, the StorageClass annotated with `storageclass.kubernetes.io/is-default-class=true` will be used by default. |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | You can set the storage size as needed. |
-
-For more API fields and descriptions, refer to the [API Reference](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster).
-
-KubeBlocks operator watches for the `Cluster` CRD and creates the cluster and all dependent resources. You can get all the resources created by the cluster with `kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo`.
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-Run the following command to see the created StarRocks cluster object:
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-## Scale
-
-### Scale vertically
-
-#### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   starrocks            starrocks-3.1.1   Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS        CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running       Jul 17,2024 19:06 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: fe
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                         TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        mycluster-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the values of `spec.componentSpecs.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     componentSpecs:
-     - name: fe
-       componentDefRef: fe
-       replicas: 2
-       resources: # Change the values of resources
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--cpu` and `--memory` values according to your needs and run the following command to perform vertical scaling.
-
-    ```bash
-    kbcli cluster vscale mycluster -n demo --cpu=2 --memory=20Gi --components=be
-    ```
-
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the vertical scaling operation.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-smx8b -n demo
-       ```
-
-    - Check the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS     CREATED-TIME
-       mycluster   demo        starrocks            starrocks-3.1.1     Delete               Updating   Jul 17,2024 19:06 UTC+0800
-       ```
-
-       - STATUS=Updating: it means the vertical scaling is in progress.
-       - STATUS=Running: it means the vertical scaling operation has been applied.
-       - STATUS=Abnormal: it means the vertical scaling is abnormal. The reason may be that the number of the normal instances is less than that of the total instance or the leader instance is running properly while others are abnormal.
-          > To solve the problem, you can manually check whether this error is caused by insufficient resources. Then if AutoScaling is supported by the Kubernetes cluster, the system recovers when there are enough resources. Otherwise, you can create enough resources and troubleshoot with `kubectl describe` command.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### Scale horizontally
-
-Horizontal scaling changes the amount of pods. For example, you can scale out replicas from three to five.
-
-From v0.9.0, besides replicas, KubeBlocks also supports scaling in and out instances, refer to the [Horizontal Scale tutorial](./../maintenance/scale/horizontal-scale.md) for more details and examples.
-
-#### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   starrocks            starrocks-3.1.1   Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS        CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running       Jul 17,2024 19:06 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to a specified cluster. Configure the parameters according to your needs.
-
-   The example below means adding two replicas for the component `fe`.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: fe
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   If you want to scale in replicas, replace `scaleOut` with `scaleIn`.
-
-   The example below means deleting two replicas for the component `fe`.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: fe
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. Check the operation status to validate the horizontal scaling status.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                           TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        mycluster-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.replicas` in the YAML file. `spec.componentSpecs.replicas` stands for the pod amount and changing this value triggers a horizontal scaling of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the values of `spec.componentSpecs.replicas`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     componentSpecs:
-     - name: fe
-       componentDefRef: fe
-       replicas: 2 # Change this value
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the parameters `--components` and `--replicas`, and run the command.
-
-    ```bash
-    kbcli cluster hscale mycluster --replicas=3 --components=be -n demo
-    ```
-
-    - `--components` describes the component name ready for horizontal scaling.
-    - `--replicas` describes the replica amount of the specified components. Edit the amount based on your demands to scale in or out replicas.
-
-    Please wait a few seconds until the scaling process is over.
-
-2. Validate the vertical scaling.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the OpsRequest progress. The output includes the status of this OpsRequest and Pods. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating: it means horizontal scaling is in progress.
-       - STATUS=Running: it means horizontal scaling has been applied.
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Volume expansion
-
-### Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   starrocks            starrocks-3.1.1   Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS        CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running       Jul 17,2024 19:06 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Change the value of storage according to your need and run the command below to expand the volume of a cluster.
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: be
-        volumeClaimTemplates:
-        - name: be-storage
-          storage: "40Gi"
-    EOF
-    ```
-
-2. Validate the volume expansion operation.
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                         TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        mycluster-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-1. Change the value of `spec.componentSpecs.volumeClaimTemplates.spec.resources` in the cluster YAML file.
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` is the storage resource information of the pod and changing this value triggers the volume expansion of a cluster.
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the values of `spec.componentSpecs.volumeClaimTemplates.spec.resources`.
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     componentSpecs:
-     - name: be
-       componentDefRef: be
-       volumeClaimTemplates:
-       - name: be-storage
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # Change the volume storage size
-   ...
-   ```
-
-2. Check whether the corresponding cluster resources change.
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Set the `--storage` value according to your need and run the command to expand the volume.
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --storage=40Gi --components=be
-    ```
-
-    The volume expansion may take a few minutes.
-
-2. Validate the volume expansion operation.
-
-    - View the OpsRequest progress.
-
-       KubeBlocks outputs a command automatically for you to view the details of the OpsRequest progress. The output includes the status of this OpsRequest and PVC. When the status is `Succeed`, this OpsRequest is completed.
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-5pbd2 -n demo
-       ```
-
-    - View the cluster status.
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-       mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running   Jul 17,2024 19:06 UTC+0800
-       ```
-
-3. After the OpsRequest status is `Succeed` or the cluster status is `Running` again, check whether the corresponding resources change.
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## Restart
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Restart a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: be
-   EOF
-   ```
-
-2. Check the pod and operation status to validate the restarting.
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   ```
-
-   During the restarting process, there are two status types for pods.
-
-   - STATUS=Terminating: it means the cluster restart is in progress.
-   - STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Configure the values of `components` and `ttlSecondsAfterSucceed` and run the command below to restart a specified cluster.
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="starrocks" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` describes the component name that needs to be restarted.
-   - `ttlSecondsAfterSucceed` describes the time to live of an OpsRequest job after the restarting succeeds.
-
-2. Validate the restarting.
-
-   Run the command below to check the cluster status to check the restarting status.
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION     VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        starrocks               starrocks-3.1.1    Delete               Running   Jul 17,2024 19:06 UTC+0800
-   ```
-
-   * STATUS=Updating: it means the cluster restart is in progress.
-   * STATUS=Running: it means the cluster has been restarted.
-
-</TabItem>
-
-</Tabs>
-
-## Stop/Start a cluster
-
-You can stop/start a cluster to save computing resources. When a cluster is stopped, the computing resources of this cluster are released, which means the pods of Kubernetes are released, but the storage resources are reserved. You can start this cluster again by snapshots if you want to restore the cluster resources.
-
-### Stop a cluster
-
-1. Configure the name of your cluster and run the command below to stop this cluster.
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    Apply an OpsRequest to restart a cluster.
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="Edit Cluster YAML File" label="Edit Cluster YAML File">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    Configure replicas as 0 to delete pods.
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: starrocks-ce
-      clusterVersionRef: starrocks-ce-3.1.1
-      terminationPolicy: Delete
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      tolerations:
-        - key: kb-data
-          operator: Equal
-          value: 'true'
-          effect: NoSchedule
-      componentSpecs:
-      - name: fe
-        componentDefRef: fe
-        serviceAccountName: kb-starrocks-cluster
-        replicas: 0 # Change this value
-      - name: be
-        componentDefRef: be
-        replicas: 0 # Change this value
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. Check the status of the cluster to see whether it is stopped.
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### Start a cluster
-
-1. Configure the name of your cluster and run the command below to start this cluster.
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   Apply an OpsRequest to start a cluster.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF 
-   ```
-
-   </TabItem>
-
-   <TabItem value="Edit Cluster YAML File" label="Edit Cluster YAML File">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Change replicas back to the original amount to start this cluster again.
-
-   ```yaml
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     terminationPolicy: Delete
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     tolerations:
-       - key: kb-data
-         operator: Equal
-         value: 'true'
-         effect: NoSchedule
-     componentSpecs:
-     - name: fe
-       componentDefRef: fe
-       serviceAccountName: kb-starrocks-cluster
-       replicas: 1 # Change this value
-     - name: be
-       componentDefRef: be
-       replicas: 2 # Change this value
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. Check the status of the cluster to see whether it is running again.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-## Delete a cluster
-
-### Termination policy
-
-:::note
-
-The termination policy determines how a cluster is deleted.
-
-:::
-
-| **terminationPolicy** | **Deleting Operation**                           |
-|:----------------------|:-------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` prevents deletion of the Cluster. This policy ensures that all resources remain intact.       |
-| `Delete`              | `Delete` deletes Cluster resources like Pods, Services, and Persistent Volume Claims (PVCs), leading to a thorough cleanup while removing all persistent data.   |
-| `WipeOut`             | `WipeOut` is an aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.  |
-
-To check the termination policy, execute the following command.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   starrocks            starrocks-3.1.1   Delete               Running   34m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION     VERSION         TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 30,2024 13:03 UTC+0800 
-```
-
-</TabItem>
-
-</Tabs>
-
-### Steps
-
-Run the command below to delete a specified cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-If you want to delete a cluster and its all related resources, you can modify the termination policy to `WipeOut`, then delete the cluster.
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/maintenance/_category_.yaml b/docs/user_docs/maintenance/_category_.yaml
deleted file mode 100644
index c230a0fa4..000000000
--- a/docs/user_docs/maintenance/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 7
-label: Maintenance
-collapsible: true 
-collapsed: true
diff --git a/docs/user_docs/maintenance/backup-and-restore/_category_.yaml b/docs/user_docs/maintenance/backup-and-restore/_category_.yaml
deleted file mode 100644
index f3d397189..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Backup and Restore
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/backup-and-restore/backup/_category_.yaml b/docs/user_docs/maintenance/backup-and-restore/backup/_category_.yaml
deleted file mode 100644
index 5f6508564..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/backup/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Backup
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/backup-and-restore/backup/backup-repo.md b/docs/user_docs/maintenance/backup-and-restore/backup/backup-repo.md
deleted file mode 100644
index a8c2cc1ba..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/backup/backup-repo.md
+++ /dev/null
@@ -1,631 +0,0 @@
----
-title: Configure BackupRepo
-description: How to configure BackupRepo
-keywords: [introduction, backup, restore]
-sidebar_position: 1
-sidebar_label: Configure BackupRepo
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Introduction
-
-BackupRepo is the storage repository for backup data. Currently, KubeBlocks supports configuring various object storage services as backup repositories, including OSS (Alibaba Cloud Object Storage Service), S3 (Amazon Simple Storage Service), COS (Tencent Cloud Object Storage), GCS (Google Cloud Storage), OBS (Huawei Cloud Object Storage), MinIO, and other S3-compatible services.
-
-You can create multiple BackupRepos to suit different scenarios. For example, based on different businesses, the data of business A is stored in repository A, and the data of business B is stored in repository B. Or you can configure multiple repositories by region to realize geo-disaster recovery. But it is required to specify backup repositories when you create a backup. You can also create a default backup repository and KubeBlocks uses this default repository to store backup data if no specific repository is specified.
-
-## Before you start
-
-Make sure you have all the following prepared.
-
-* [Install kbcli](./../../../installation/install-kbcli.md).
-* [Install kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl).
-* [Install Helm](https://helm.sh/docs/intro/install/).
-* [Install KubeBlocks](./../../../installation/install-kubeblocks.md).
-
-## Install MinIO
-
-If you don't have an object storage service from a cloud provider, you can deploy the open-source service MinIO in Kubernetes and use it to configure BackupRepo. If you are using an object storage service provided by a cloud provider, directly skip to [Configure BackupRepo](#configure-backuprepo).
-
-***Steps***
-
-1. Install MinIO in the `kb-system` namespace.
-
-   ```bash
-   helm install minio oci://registry-1.docker.io/bitnamicharts/minio --namespace kb-system --create-namespace --set "extraEnvVars[0].name=MINIO_BROWSER_LOGIN_ANIMATION" --set "extraEnvVars[0].value=off"
-   ```
-
-   Get the initial username and password:
-
-   ```bash
-   # Initial username
-   echo $(kubectl get secret --namespace kb-system minio -o jsonpath="{.data.root-user}" | base64 -d)
-
-   # Initial password
-   echo $(kubectl get secret --namespace kb-system minio -o jsonpath="{.data.root-password}" | base64 -d)
-   ```
-
-2. Generate credentials.
-
-   Access the login page by running `kubectl port-forward --namespace kb-system svc/minio 9001:9001` and then accessing `127.0.0.1:9001`.
-
-   Once you are logged in to the dashboard, you can generate an `access key` and `secret key`.
-
-   ![backup-and-restore-backup-repo-1](./../../../../img/backup-and-restore-backup-repo-1.png)
-
-3. Create a bucket.
-
-   Create a bucket named `test-minio` for the test.
-
-   ![backup-and-restore-backup-repo-2](./../../../../img/backup-and-restore-backup-repo-2.png)
-   ![backup-and-restore-backup-repo3](./../../../../img/backup-and-restore-backup-repo-3.png)
-
-  :::note
-
-  The access address (endpoint) for the installed MinIO is `http://minio.kb-system.svc.cluster.local:9000`, which will be used to configure BackupRepo. In this case, `kb-system` is the name of the namespace where MinIO is installed.
-
-  :::
-
-## Configure BackupRepo
-
-With object storage services prepared, it's time to configure BackupRepo. KubeBlocks provides two ways for the configuration:
-
-* Automatic BackupRepo configuration during KubeBlocks installation;
-* Manual BackupRepo configuration for on-demand scenarios.
-  
-### Access BackupRepo
-
-There are two methods to access remote object storage:
-
-* Use command-line tools to directly access remote storage.
-* Mount the remote storage to the local system with a CSI driver, allowing the work processes to access the remote storage as if it were local files.
-  
-The two access methods are referred to as "Tool" and "Mount". When creating BackupRepo, you can specify the access method through the `accessMethod` field, which can not be changed after creation.
-
-Generally, it is recommended to use the "Tool" method as it does not require installing an additional CSI driver, thus reducing dependencies.
-
-However, as backup and restore tasks require running in the namespace of the database cluster, using the "Tool" approach automatically synchronizes the necessary credentials for accessing the remote storage as secret resources in those namespaces. These credentials are used by the data transfer tool. If you have concerns about security risks associated with synchronizing secrets in a multi-tenant environment, you can choose to use the "Mount" method.
-
-### Manual BackupRepo configuration
-
-If you do not configure the BackupRepo information when installing KubeBlocks, you can manually configure it by the following instructions.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. Install the S3 CSI driver (only used in the Mount method).
-
-    ```bash
-    helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
-    helm install csi-s3 kubeblocks/csi-s3 --version=0.7.0 -n kb-system
-
-    # You can add flags to customize the installation of this addon
-    # CSI-S3 installs a daemonSet Pod on all nodes by default and you can set tolerations to install it on the specified node
-    --set-json tolerations='[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"taintValue"}]'
-    --set-json daemonsetTolerations='[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"taintValue"}]'
-    ```
-
-2. Create BackupRepo.
-
-   <Tabs>
-
-   <TabItem value="S3" label="S3" default>
-
-   ```bash
-   # Create a secret to save the access key for S3
-   kubectl create secret generic s3-credential-for-backuprepo \
-     -n kb-system \
-     --from-literal=accessKeyId=<ACCESS KEY> \
-     --from-literal=secretAccessKey=<SECRET KEY>
-
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: s3
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       endpoint: ""
-       mountOptions: --memory-limit 1000 --dir-mode 0777 --file-mode 0666
-       region: cn-northwest-1
-     credential:
-       name: s3-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="OSS" label="OSS">
-
-   ```bash
-   # Create a secret to save the access key for OSS
-   kubectl create secret generic oss-credential-for-backuprepo \
-     -n kb-system \
-     --from-literal=accessKeyId=<ACCESS KEY> \
-     --from-literal=secretAccessKey=<SECRET KEY>
-
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: oss
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       mountOptions: ""
-       endpoint: ""
-       region: cn-zhangjiakou
-     credential:
-       name: oss-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="OBS" label="OBS">
-
-   ```bash
-   # Create a secret to save the access key for OBS
-   kubectl create secret generic obs-credential-for-backuprepo \
-   -n kb-system \
-   --from-literal=accessKeyId=<ACCESS KEY> \
-   --from-literal=secretAccessKey=<SECRET KEY>
-
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: obs
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       mountOptions: ""
-       endpoint: ""
-       region: cn-north-4
-     credential:
-       name: obs-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="COS" label="COS">
-
-   ```bash
-   # Create a secret to save the access key for COS
-   kubectl create secret generic cos-credential-for-backuprepo \
-     -n kb-system \
-     --from-literal=accessKeyId=<ACCESS KEY> \
-     --from-literal=secretAccessKey=<SECRET KEY>
-
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: cos
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       mountOptions: ""
-       endpoint: ""
-       region: ap-guangzhou
-     credential:
-       name: cos-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="GCS" label="GCS">
-
-   ```bash
-   # Create a secret to save the access key for GCS
-   kubectl create secret generic gcs-credential-for-backuprepo \
-     -n kb-system \
-     --from-literal=accessKeyId=<ACCESS KEY> \
-     --from-literal=secretAccessKey=<SECRET KEY>
-
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: gcs-s3comp
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       mountOptions: ""
-       endpoint: ""
-       region: auto
-     credential:
-       name: gcs-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="MinIO" label="MinIO">
-
-   ```bash
-   # Create a secret to save the access key for MinIO
-   kubectl create secret generic minio-credential-for-backuprepo \
-     -n kb-system \
-     --from-literal=accessKeyId=<ACCESS KEY> \
-     --from-literal=secretAccessKey=<SECRET KEY>
-
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: minio
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       mountOptions: ""
-       endpoint: <ip:port>
-     credential:
-       name: minio-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="S3-compatible" label="S3-compatible">
-
-   ```bash
-   # Create a secret to save the access key for the S3 compatible storage
-   kubectl create secret generic s3-comp-credential-for-backuprepo \
-     -n kb-system \
-     --from-literal=accessKeyId=<ACCESS KEY> \
-     --from-literal=secretAccessKey=<SECRET KEY>
-   
-   # Create the BackupRepo resource
-   kubectl apply -f - <<-'EOF'
-   apiVersion: dataprotection.kubeblocks.io/v1alpha1
-   kind: BackupRepo
-   metadata:
-     name: my-repo
-     annotations:
-       dataprotection.kubeblocks.io/is-default-repo: "true"
-   spec:
-     storageProviderRef: s3-compatible
-     accessMethod: Tool
-     pvReclaimPolicy: Retain
-     volumeCapacity: 100Gi
-     config:
-       bucket: test-kb-backup
-       endpoint: <endpoint>
-       forcePathStyle: true
-     credential:
-       name: s3-comp-credential-for-backuprepo
-       namespace: kb-system
-   EOF
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-3. View the BackupRepo and its status. If the status is `Ready`, the BackupRepo is ready.
-
-   ```bash
-   kubectl get backuprepo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Install the S3 CSI driver (only used in the Mount method).
-
-    ```bash
-    # Enable the CSI-S3 addon
-    kbcli addon enable csi-s3
-
-    # You can add flags to customize the installation of this addon
-    # CSI-S3 installs a daemonSet Pod on all nodes by default and you can set tolerations to install it on the specified node
-    kbcli addon enable csi-s3 \
-      --tolerations '[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"true"}]' \
-      --tolerations 'daemonset:[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"true"}]'
-
-    # View the status of CSI-S3 driver and make sure it is Enabled
-    kbcli addon list csi-s3
-    ```
-
-2. Create BackupRepo.
-
-   <Tabs>
-
-   <TabItem value="S3" label="S3" default>
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider s3 \
-     --region cn-northwest-1 \
-     --bucket test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \ 
-     --default
-   ```
-
-   You can also specify `--access-method` as `Mount`.
-
-   </TabItem>
-
-   <TabItem value="OSS" label="OSS">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider oss \
-     --region cn-zhangjiakou \
-     --bucket  test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \ 
-     --default
-   ```
-
-   You can also explicitly specify the OSS endpoint using the `--endpoint` flag. For example,
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider oss \
-     --region cn-zhangjiakou \
-     --bucket  test-kb-backup \
-     --endpoint https://oss-cn-zhangjiakou-internal.aliyuncs.com \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \ 
-     --default
-   ```
-
-   </TabItem>
-
-   <TabItem value="OBS" label="OBS">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider obs \
-     --region cn-north-4 \
-     --bucket  test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   </TabItem>
-
-   <TabItem value="COS" label="COS">
-
-    For COS, the naming format of a bucket is `<BucketName-APPID>`，where APPID is automatically generated by Tencent Cloud. When setting `--bucket`, first create the bucket on the Tencent Cloud console and retrieve the bucket name.
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider cos \
-     --region ap-guangzhou \
-     --bucket  test-kb-backup \ 
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   </TabItem>
-
-   <TabItem value="GCS" label="GCS">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider gcs-s3comp \
-     --region auto \
-     --bucket  test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   GCS supported by KubeBlocks is the S3-compatible version provided by Google Cloud.
-
-   </TabItem>
-
-   <TabItem value="MinIO" label="MinIO">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider minio \
-     --endpoint <ip:port> \
-     --bucket test-minio \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   The address for the deployed MinIO is http://minio.kb-system.svc.cluster.local:9000.
-
-   </TabItem>
-
-   <TabItem value="S3-compatible" label="S3-compatible">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider s3-compatible \
-     --endpoint <endpoint> \
-     --bucket test-minio \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --force-path-style=true \
-     --default
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-   The above command creates a default backup repository `my-repo`.
-
-   * `my-repo` is the name of the created backup repository. If you do not specify a name, the system creates a random name, following the format `backuprepo-xxxxx`.
-   * `--default` means that this repository is set as the default repository. Note that there can only be one default global repository. If there exist multiple default repositories, KubeBlocks cannot decide which one to use (similar to the default StorageClass of Kubernetes), which further results in backup failure. Using kbcli to create BackupRepo can avoid such problems because kbcli checks whether there is another default repository before creating a new one.
-   * `--provider` specifies the storage type, i.e. `storageProvider`, and is required for creating a BakcupRepo. The available values are `s3`, `cos`, `gcs-s3comp`, `obs`, `oss`, `minio`, `s3-compatible`, `ftp`, and `nfs`. Parameters for different storage providers vary and you can run `kbcli backuprepo create --provider STORAGE-PROVIDER-NAME -h` to view the flags for different storage providers. Please note that `--provider` is mandatory in configuration.
-
-   After `kbcli backuprepo create` is executed successfully, the system creates the K8s resource whose type is `BackupRepo`. You can modify the annotation of this resource to adjust the default repository.
-
-   ```bash
-   # Cancel the default repository
-   kubectl annotate backuprepo old-default-repo \
-     --overwrite=true \
-     dataprotection.kubeblocks.io/is-default-repo=false
-   ```
-
-   ```bash
-   # Set a new default repository
-   kubectl annotate backuprepo backuprepo-4qms6 \
-     --overwrite=true \
-     dataprotection.kubeblocks.io/is-default-repo=true
-   ```
-
-3. View the BackupRepo and its status. If the status is `Ready`, the BackupRepo is ready.
-
-   ```bash
-   kbcli backuprepo list
-   ```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-If the BackupRepo status shows Failed or remains in PreChecking for a long time, run `kubectl describe backuprepo my-repo` or `kbcli backuprepo describe my-repo` to check the `status.conditions` for details.
-
-To troubleshoot:
-
-* Check whether configuration parameters, such as `endpoint`, `accessKeyId`, and `secretAccessKey`, are correctly specified.
-* For self-hosted object storage (e.g., Ceph Object Storage), try using `s3-compatible` as StorageProvider. The default `s3` StorageProvider uses a virtual hosting URL style, which some self-hosted storage may not support.
-* If an `InvalidLocationConstraint` error occurs, check whether its parameter is correctly configured. If this error persists, leave the `region` parameter empty and try again.
-* If the status remains in the `PreChecking` state, check your network connection. Ensure the storage service is accessible from within the Kubernetes cluster. You can test this by running a Pod and connecting to the storage service using the corresponding client.
-* KubeBlocks uses [rclone](https://rclone.org/) internally for data transfer. Check whether rclone can successfully access the storage service.
-
-:::
-
-### Automatic BackupRepo configuration
-
-You can specify the BackupRepo information in a YAML configuration file when installing KubeBlocks, and KubeBlocks will create the BackupRepo accordingly.
-
-1. Prepare the configuration file.
-
-   Taking AWS S3 as an example, the configuration file `backuprepo.yaml` is:
-
-    ```yaml
-    backupRepo:
-      create: true
-      storageProvider: s3
-      config:
-        region: cn-northwest-1
-        bucket: test-kb-backup
-      secrets:
-        accessKeyId: <ACCESS KEY>
-        secretAccessKey: <SECRET KEY>
-    ```
-
-    * `region`: specifies the region where S3 is located.
-    * `bucket`: specifies the bucket name of S3.
-    * `accessKeyId`: specifies the Access Key of AWS.
-    * `secretAccessKey`: specifies the Secret Key of AWS.
-    * `storageProvider`：specifies the object storage provider, which is S3 in this case.
-
-:::note
-
-* In KubeBlocks, the available `storageProvider` options are `s3`, `cos`, `gcs-s3comp`, `obs`, `oss`, `minio`, `s3-compatible`, `ftp`, and `nfs`.
-* For different `storageProvider`, the configuration may differ. `config` and `secrets` in the above example are applied to S3.
-* Execute the command `kubectl get storageproviders.dataprotection.kubeblocks.io` to view the supported `storageProvider` options.
-
-:::
-
-2. Specify the configuration file when installing KubeBlocks.
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl create -f backuprepo.yaml
-   ```
-
-   Use the command below to check the BackupRepo after installation.
-
-   ```bash
-   kubectl get backuprepo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli kubeblocks install -f backuprepo.yaml
-   ```
-
-   Use the command below to check the BackupRepo after installation.
-
-   ```bash
-   kbcli backuprepo list
-   ```
-
-   </TabItem>
-
-   </Tabs>
diff --git a/docs/user_docs/maintenance/backup-and-restore/backup/configure-backuppolicy.md b/docs/user_docs/maintenance/backup-and-restore/backup/configure-backuppolicy.md
deleted file mode 100644
index dadf3ae31..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/backup/configure-backuppolicy.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-title: Configure BackupPolicy
-description: How to configure BackupPolicy
-keywords: [backup, backup policy]
-sidebar_position: 2
-sidebar_label: Configure BackupPolicy
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure BackupPolicy
-
-## Configure encryption key
-
-To ensure that the restored cluster can access the data properly, KubeBlocks encrypts the cluster's credentials during the backup process and securely stores it in the Annotation of the Backup object. Therefore, to protect your data security, it is strongly recommended to carefully assign Get/List permissions for backup objects and specify an encryption key during the installation or upgrade of KubeBlocks. These measures will help ensure the proper protection of your data.
-
-KubeBlocks has integrated data encryption functionality for datasafed since v0.9.0. Currently, the supported encryption algorithms include `AES-128-CFB`, `AES-192-CFB`, and `AES-256-CFB`. This function allows backup data to be encrypted before being written to storage. The encryption key then will be used to encrypt connection passwords and also to back up data. You can reference existing keys or create different secret keys for database clusters according to actual needs.
-
-### Reference an existing key
-
-If the secret already exists, you can choose to directly reference it without setting the `dataProtection.encryptionKey`. KubeBlocks provides a quick way to reference an existing key for encryption.
-
-Assuming there is a pre-defined secret named `dp-encryption-key` and a key `encryptionKey` inside it. For example, a secret created by this command.
-
-```bash
-kubectl create secret generic dp-encryption-key \
-    --from-literal=encryptionKey='S!B\*d$zDsb='
-```
-
-And then you can reference it when installing or upgrading KubeBlocks.
-
-```bash
-kbcli kubeblocks install \
-    --set dataProtection.encryptionKeySecretKeyRef.name="dp-encryption-key" \
-    --set dataProtection.encryptionKeySecretKeyRef.key="encryptionKey"
-# The above command is equivalent to:
-# kbcli kubeblocks install --set dataProtection.encryptionKey='S!B\*d$zDsb='
-```
-
-### Create a new key
-
-If you do not need to enable backup encryption by default, or if you need to use a separate `encryptionKey`, just create a Secret and manually enable backup encryption by following the steps below.
-
-1. Create a Secret to store the encryption key.
-
-    ```bash
-    kubectl create secret generic backup-encryption \
-    --from-literal=secretKey='your secret key'
-    ```
-
-2. Enable encryption.
-
-   Remember to reference the key created before.
-
-    ```bash
-    kubectl --type merge patch backuppolicy mysqlcluster-mysql-backup-policy \
-    -p '{"spec":{"encryptionConfig":{"algorithm":"AES-256-CFB","passPhraseSecretKeyRef":{"name":"backup-encryption","key":"secretKey"}}}}'
-    ```
-
-:::note
-
-You can also use `kbcli` to simplify the process.
-
-```bash
-# enable encryption
-kbcli cluster edit-backup-policy <backup-policy-name> --set encryption.algorithm=AES-256-CFB --set encryption.passPhrase="SECRET!"
-      
-# disable encryption
-kbcli cluster edit-backup-policy <backup-policy-name> --set encryption.disabled=true
-```
-
-:::
-
-Now you can perform backups and restores as usual.
-
-:::note
-
-The secret created in Step 1 should not be modified or deleted; otherwise, decryption of backups may fail.
-
-:::
-
-By default, the `encrytpionKey` is only used for encrypting the connection password, if you want to use it to encrypt backup data as well, add `--set dataProtection.enableBackupEncryption=true` to the above command. After that, all newly-created clusters are enabled for backup encryption by default.
-
-## Create a cluster
-
-Prepare a cluster for testing the backup and restore function. The following instructions use the MySQL cluster `mysql-cluster` in the default namespace as an example.
-
-```shell
-# Create a MySQL cluster
-kbcli cluster create mysql mysql-cluster
-
-# View backupPolicy
-kbcli cluster list-backup-policy mysql-cluster
->
-NAME                                       DEFAULT   CLUSTER         CREATE-TIME                  STATUS      
-mysql-cluster-mysql-backup-policy          true      mysql-cluster   May 23,2023 19:53 UTC+0800   Available   
-mysql-cluster-mysql-backup-policy-hscale   false     mysql-cluster   May 23,2023 19:53 UTC+0800   Available
-```
-
-By default, all the backups are stored in the default global repository. You can execute the following command to view all BackupRepos. When the `DEFAULT` field is `true`, the BackupRepo is the default BackupRepo.
-
-```bash
-# View BackupRepo
-kbcli backuprepo list
-```
-
-## View BackupPolicy
-
-After creating a database cluster, a BackupPolicy is created automatically for databases that support backup. Execute the following command to view the BackupPolicy of the cluster.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get backuppolicy | grep mycluster
->
-mycluster-mysql-backup-policy                            Available   35m
-mycluster-mysql-backup-policy-hscale                     Available   35m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-backup-policy mysql-cluster
->
-NAME                                       NAMESPACE   DEFAULT   CLUSTER         CREATE-TIME                  STATUS
-mysql-cluster-mysql-backup-policy          default     true      mysql-cluster   Oct 30,2023 14:34 UTC+0800   Available
-mysql-cluster-mysql-backup-policy-hscale   default     false     mysql-cluster   Oct 30,2023 14:34 UTC+0800   Available
-```
-
-</TabItem>
-
-</Tabs>
-
-The backup policy includes the backup methods supported by the cluster. Execute the following command to view the backup methods.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get backuppolicy mycluster-mysql-backup-policy -o yaml
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster describe-backup-policy mysql-cluster
-> 
-kbcli cluster describe-backup-policy mysql-cluster
-Summary:
-  Name:               mysql-cluster-mysql-backup-policy
-  Cluster:            mysql-cluster
-  Namespace:          default
-  Default:            true
-
-Backup Methods:
-NAME              ACTIONSET                           SNAPSHOT-VOLUMES
-xtrabackup        xtrabackup-for-apecloud-mysql       false
-volume-snapshot   volumesnapshot-for-apecloud-mysql   true
-```
-
-</TabItem>
-
-</Tabs>
-
-For a MySQL cluster, two default backup methods are supported: `xtrabackup` and `volume-snapshot`. The former uses the backup tool `xtrabackup` to backup MySQL data to an object storage, while the latter utilizes the volume snapshot capability of cloud storage to backup data through snapshots. When creating a backup, you can specify which backup method to use.
diff --git a/docs/user_docs/maintenance/backup-and-restore/backup/on-demand-backup.md b/docs/user_docs/maintenance/backup-and-restore/backup/on-demand-backup.md
deleted file mode 100644
index 05b7e3fea..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/backup/on-demand-backup.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: On-demand backup
-description: How to back up databases on-demand by snapshot and backup tool
-keywords: [backup, on-demand backup, snapshot backup, backup tool]
-sidebar_position: 4
-sidebar_label: On-demand backup
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# On-demand backup
-
-KubeBlocks supports on-demand backups. You can customize your backup method by specifying `--method`. The instructions below take using a backup tool and volume snapshot as examples.
-
-## Backup tool
-
-The following command uses the `xtrabackup` backup method to create a backup named `mybackup`.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-# Create a backup
-kubectl apply -f - <<-'EOF'
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: Backup
-metadata:
-  name: mybackup
-  namespace: default
-  annotations:
-    dataprotection.kubeblocks.io/connection-password: Bw1cR15mzfldc9hzGuK4m1BZQOzha6aBb1i9nlvoBdoE9to4
-spec:
-  backupMethod: xtrabackup
-  backupPolicyName: mysql-cluster-mysql-backup-policy
-EOF
-
-# View the backup
-kubectl get backup mybackup
->
-NAME       POLICY                              METHOD       REPO      STATUS      TOTAL-SIZE   DURATION   CREATION-TIME          COMPLETION-TIME        EXPIRATION-TIME
-mybackup   mysql-cluster-mysql-backup-policy   xtrabackup   my-repo   Completed   4426858      2m8s       2023-10-30T07:19:21Z   2023-10-30T07:21:28Z
-```
-
-:::note
-
-The `dataprotection.kubeblocks.io/connection-password` in annotations uses the password of the original cluster.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-# Create a backup
-kbcli cluster backup mysql-cluster --name mybackup --method xtrabackup
->
-Backup mybackup created successfully, you can view the progress:
-        kbcli cluster list-backups --name=mybackup -n default
-        
-# View the backup
-kbcli cluster list-backups --name=mybackup -n default
->
-NAME       NAMESPACE   SOURCE-CLUSTER   METHOD       STATUS      TOTAL-SIZE   DURATION   CREATE-TIME                  COMPLETION-TIME              EXPIRATION
-mybackup   default     mysql-cluster    xtrabackup   Completed   4426858      2m8s       Oct 30,2023 15:19 UTC+0800   Oct 30,2023 15:21 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## Volume snapshot backup
-
-To create a backup using the snapshot, the `backupMethod` in the YAML configuration file or the `--method` field in the kbcli command should be set to `volume-snapshot`.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-# Create a backup
-kubectl apply -f - <<-'EOF'
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: Backup
-metadata:
-  name: mybackup
-  namespace: default
-spec:
-  backupMethod: volume-snapshot
-  backupPolicyName: mycluster-mysql-backup-policy
-EOF
-
-# View the backup
-kubectl get backup mybackup
->
-NAME       POLICY                              METHOD            REPO      STATUS      TOTAL-SIZE   DURATION   CREATION-TIME          COMPLETION-TIME        EXPIRATION-TIME
-mybackup   mycluster-mysql-backup-policy       volume-snapshot   my-repo   Completed   4426858      2m8s       2023-10-30T07:19:21Z   2023-10-30T07:21:28Z
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-# Create a backup
-kbcli cluster backup mysql-cluster --name mybackup --method volume-snapshot
->
-Backup mybackup created successfully, you can view the progress:
-        kbcli cluster list-backups --name=mybackup -n default
-        
-# View the backup
-kbcli cluster list-backups --name=mybackup -n default
->
-NAME       NAMESPACE   SOURCE-CLUSTER   METHOD            STATUS      TOTAL-SIZE   DURATION   CREATE-TIME                  COMPLETION-TIME              EXPIRATION
-mybackup   default     mysql-cluster    volume-snapshot   Completed   4426858      2m8s       Oct 30,2023 15:19 UTC+0800   Oct 30,2023 15:21 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-:::caution
-
-1. When creating backups using snapshots, ensure that the storage used supports the snapshot feature; otherwise, the backup may fail.
-
-2. Backups created manually using `kbcli` will not be automatically deleted. You need to manually delete them.
-
-:::
diff --git a/docs/user_docs/maintenance/backup-and-restore/backup/scheduled-backup.md b/docs/user_docs/maintenance/backup-and-restore/backup/scheduled-backup.md
deleted file mode 100644
index 157600874..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/backup/scheduled-backup.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: Scheduled backup
-description: How to back up databases by schedule
-keywords: [backup and restore, schedule, automatic backup, scheduled backup]
-sidebar_position: 3
-sidebar_label: Scheduled backup
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Scheduled backup
-
-KubeBlocks supports configuring scheduled backups for clusters.
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-Modify the backup field with kubectl as follows.
-
-```bash
-kubectl edit cluster -n default mysql-cluster
-```
-
-Edit the cluster YAML.
-
-```yaml
-spec:
-  ...
-  backup:
-    # Whether to enable automatic backups
-    enabled: true
-    # UTC timezone, the example below stands for 2 A.M. every Monday
-    cronExpression: 0 18 * * *
-    # Use xtrabackup for backups. If your storage supports snapshot, you can change it to volume-snapshot
-    method: xtrabackup
-    # Whether to enable PITR
-    pitrEnabled: false
-    # Retention period for a backup set
-    retentionPeriod: 7d
-    # BackupRepo
-    repoName: my-repo
-```
-
-In the above YAML file, you can set whether to enable automatic backups and PITR as needed, and also specify backup methods, repo names, retention periods, etc.
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster update mysql-cluster --backup-enabled=true \
---backup-method=xtrabackup --backup-repo-name=my-repo \
---backup-retention-period=7d --backup-cron-expression="0 18 * * *"
-```
-
-- `--backup-enabled` indicates whether to enable scheduled backups.
-- `--backup-method` specifies the backup method. You can use the `kbcli cluster describe-backup-policy mysql-cluster` command to view the supported backup methods.
-- `--backup-repo-name` specifies the name of the BackupRepo.
-- `--backup-retention-period` specifies the retention period for backups, which is 7 days in the example.
-- `--backup-cron-expression` specifies the backup schedule using a cron expression in UTC timezone. Refer to [cron](https://en.wikipedia.org/wiki/Cron) for the expression format.
-
-</TabItem>
-
-</Tabs>
-
-After the scheduled backup is enabled, execute the following command to check if a CronJob object has been created:
-
-```bash
-kubectl get cronjob
->
-NAME                                            SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
-96523399-mysql-cluster-default-xtrabackup       0 18 * * *   False     0        <none>          57m
-```
-
-You can also execute the following command to view cluster information, where the `Data Protection:` section displays the configuration details of automatic backups.
-
-```bash
-kbcli cluster describe mysql-cluster
->
-...
-Data Protection:
-BACKUP-REPO   AUTO-BACKUP   BACKUP-SCHEDULE   BACKUP-METHOD   BACKUP-RETENTION
-my-repo       Enabled       0 18 * * *        xtrabackup      7d
-```
diff --git a/docs/user_docs/maintenance/backup-and-restore/introduction.md b/docs/user_docs/maintenance/backup-and-restore/introduction.md
deleted file mode 100644
index 6ee516256..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/introduction.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Introduction
-description: Introduction of KubeBlocks backup and restore functions
-keywords: [introduction, backup, restore]
-sidebar_position: 1
-sidebar_label: Introduction
----
-
-# Introduction
-
-KubeBlocks provides the backup and restore function to ensure the safety and reliability of your data. The backup and restore function of KubeBlocks relies on BackupRepo and before using the full backup and restore function, you need to [configure BackupRepo first](./backup/backup-repo.md).
-
-KubeBlocks adopts physical backup which takes the physical files in a database as the backup object. You can choose one backup option based on your demands to back up the cluster data on demand or by schedule.
-
-* [On-demand backup](./backup/on-demand-backup.md): Based on different backup options, on-demand backup can be further divided into backup tool and snapshot backup.
-  * Backup tool: You can use the backup tool of the corresponding data product, such as MySQL XtraBackup and PostgreSQL pg_basebackup. KubeBlocks supports configuring backup tools for different data products.
-  * Snapshot backup: If your data is stored in a cloud disk that supports snapshots, you can create a data backup by snapshots. Snapshot backup is usually faster than a backup tool, and thus is recommended.
-
-* [Scheduled backup](./backup/scheduled-backup.md): You can specify retention time, backup method, time, and other parameters to customize your backup schedule.
-
-As for the restore function, KubeBlocks supports restoring data from the backup set.
-
-* Restore
-  * [Restore data from the backup set](./restore/restore-data-from-backup-set.md)
-
-Follow the steps below to back up and restore your cluster.
-
-1. [Configure BackupRepo](./backup/backup-repo.md).
-2. [Configure BackupPolicy](./backup/configure-backuppolicy.md).
-3. Backup your cluster [on demand](./backup/on-demand-backup.md) or [by schedule](./backup/scheduled-backup.md).
-4. Restore your data by [PITR](./restore/pitr.md) or from the [backup set](./restore/restore-data-from-backup-set.md).
diff --git a/docs/user_docs/maintenance/backup-and-restore/restore/_category_.yaml b/docs/user_docs/maintenance/backup-and-restore/restore/_category_.yaml
deleted file mode 100644
index 027fc711b..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/restore/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Restore
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/backup-and-restore/restore/pitr.md b/docs/user_docs/maintenance/backup-and-restore/restore/pitr.md
deleted file mode 100644
index b44b229ec..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/restore/pitr.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-title: PITR
-description: How to perform PITR
-keywords: [backup and restore, restore, PITR, postgresql]
-sidebar_position: 2
-sidebar_label: PITR
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# PITR
-
-## What is PITR (Point-in-Time Recovery)?
-
-PITR (Point-in-Time Recovery) is a database backup and recovery technique commonly used in Relational Database Management Systems (RDBMS). It allows for the recovery of data changes to a specific point in time, restoring the database to a state prior to that point. In PITR, the database system regularly creates full backups and logs all transactions thereafter, including insert, update, and delete operations. During recovery, the system first restores the most recent full backup, and then applies the transaction logs recorded after the backup, bringing the database back to the desired state.
-
-KubeBlocks supports PITR for databases such as MySQL and PostgreSQL. This documentation takes PostgreSQL PITR as an example.
-
-## How to perform PITR?
-
-1. View the timestamps to which the cluster can be restored.
-
-     <Tabs>
-
-     <TabItem value="kubectl" label="kubectl" default>
-
-     ```bash
-     # 1. Get all backup objects for the current cluster
-     kubectl get backup -l app.kubernetes.io/instance=pg-cluster
-
-     # 2. Get the backup time range for Continuous Backup
-     kubectl get backup -l app.kubernetes.io/instance=pg-cluster -l dataprotection.kubeblocks.io/backup-type=Continuous -oyaml
-     ...
-     status:
-         timeRange:
-         end: "2024-05-07T10:47:14Z"
-         start: "2024-05-07T10:07:45Z"
-     ```
-
-     It can be seen that the current backup time range is `2024-05-07T10:07:45Z ~2024-05-07T10:47:14Z`. Still, a full backup is required for data restoration, and this full backup must be completed within the time range of the log backups.
-
-     </TabItem>
-
-     <TabItem value="kbcli" label="kbcli">
-
-     ```bash
-     kbcli cluster describe pg-cluster
-     >
-     ...
-     Data Protection:
-     BACKUP-REPO   AUTO-BACKUP   BACKUP-SCHEDULE   BACKUP-METHOD   BACKUP-RETENTION   RECOVERABLE-TIME
-     minio         Enabled       */5 * * * *       archive-wal     8d                 May 07,2024 15:29:46 UTC+0800 ~ May 07,2024 15:48:47 UTC+0800
-     ```
-
-     `RECOVERABLE-TIME` represents the time range within which the cluster can be restored.
-
-     It can be seen that the current backup time range is `May 07,2024 15:29:46 UTC+0800 ~ May 07,2024 15:48:47 UTC+0800`. Still, a full backup is required for data restoration, and this full backup must be completed within the time range of the log backups.
-
-     </TabItem>
-
-     </Tabs>
-
-2. Restore the cluster to a specific point in time.
-
-     <Tabs>
-
-     <TabItem value="kubectl" label="kubectl" default>
-
-     ```yaml
-     apiVersion: operations.kubeblocks.io/v1alpha1
-     kind: OpsRequest
-     metadata:
-        name:  pg-cluster-pitr
-        namespace: default
-     spec:
-     clusterName:  pg-cluster-pitr
-     restore:
-         backupName: 818aa0e0-pg-kubeblocks-cloud-n-archive-wal
-         restorePointInTime: "2024-05-07T10:07:45Z"
-         volumeRestorePolicy: Parallel
-     type: Restore
-     ```
-
-     </TabItem>
-
-     <TabItem value="kbcli" label="kbcli">
-
-     ```bash
-     kbcli cluster restore pg-cluster-pitr --restore-to-time 'May 07,2024 15:48:47 UTC+0800' --backup <continuousBackupName>
-     ```
-
-     </TabItem>
-
-     </Tabs>
-
-3. Check the status of the new cluster.
-
-     <Tabs>
-
-     <TabItem value="kubectl" label="kubectl" default>
-
-     ```bash
-     kubectl get cluster pg-cluster-pitr
-     ```
-
-     </TabItem>
-
-     <TabItem value="kbcli" label="kbcli">
-
-     ```bash
-     kbcli cluster list pg-cluster-pitr
-     ```
-
-     </TabItem>
-
-     </Tabs>
-
-    Once the status turns to `Running`, it indicates a successful operation.
diff --git a/docs/user_docs/maintenance/backup-and-restore/restore/restore-data-from-backup-set.md b/docs/user_docs/maintenance/backup-and-restore/restore/restore-data-from-backup-set.md
deleted file mode 100644
index bdce0bbfd..000000000
--- a/docs/user_docs/maintenance/backup-and-restore/restore/restore-data-from-backup-set.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-title: Restore data from backup set
-description: How to restore data from backup set
-keywords: [backup and restore, restore, backup set]
-sidebar_position: 1
-sidebar_label: Restore from backup set
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Restore data from backup set
-
-KubeBlocks supports restoring clusters from backups with the following instructions.
-
-1. View backups.
-
-     <Tabs>
-
-     <TabItem value="kubectl" label="kubectl" default>
-
-     ```bash
-     kubectl get backups
-     ```
-
-     </TabItem>
-
-     <TabItem value="kbcli" label="kbcli">
-
-     For existing clusters, execute:
-
-     ```bash
-     kbcli cluster list-backups mysql-cluster
-     ```
-
-     If the cluster has been deleted, execute:
-
-     ```bash
-     kbcli dataprotection list-backups
-     ```
-
-     </TabItem>
-
-     </Tabs>
-
-2. Restore clusters from a specific backup.
-
-     <Tabs>
-
-     <TabItem value="kubectl" label="kubectl" default>
-
-     You can set the `connectionPassword.annotations` of the restored cluster as that of the original cluster. The password of the original cluster can be accessed by viewing the annotation of `dataprotection.kubeblocks.io/connection-password` in the backup YAML file.
-
-     ```bash
-     kubectl apply -f - <<-'EOF'
-     apiVersion: apps.kubeblocks.io/v1
-     kind: Cluster
-     metadata:
-       name: myrestore
-       namespace: default
-       annotations:
-         kubeblocks.io/restore-from-backup: '{"mysql":{"name":"mybackup","namespace":"default","connectionPassword": "Bw1cR15mzfldc9hzGuK4m1BZQOzha6aBb1i9nlvoBdoE9to4"}}'
-     spec:
-       clusterDefinitionRef: apecloud-mysql
-       clusterVersionRef: ac-mysql-8.0.30
-       terminationPolicy: WipeOut
-       componentSpecs:
-         - name: mysql
-           componentDefRef: mysql
-           replicas: 1
-           volumeClaimTemplates:
-             - name: data
-               spec:
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 20Gi
-     EOF
-     ```
-
-     </TabItem>
-
-     <TabItem value="kbcli" label="kbcli">
-
-     ```bash
-     # Restore new cluster
-     kbcli cluster restore myrestore --backup mybackup
-     >
-     Cluster myrestore created
-
-     # View the status of the restored cluster
-     kbcli cluster list myrestore
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-     myrestore   default     apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Oct 30,2023 16:26 UTC+0800
-     ```
-
-     </TabItem>
-
-     </Tabs>
-
-3. Connect to the restored cluster for verification.  Once the cluster status is `Running`, [connect to the cluster](./../../../kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md#connect-to-a-cluster) for verification.
diff --git a/docs/user_docs/maintenance/cross-k8s-deployment/_category_.yaml b/docs/user_docs/maintenance/cross-k8s-deployment/_category_.yaml
deleted file mode 100644
index a62c5d34d..000000000
--- a/docs/user_docs/maintenance/cross-k8s-deployment/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: Cross K8s Deployment
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/cross-k8s-deployment/cross-k8s-deployment.md b/docs/user_docs/maintenance/cross-k8s-deployment/cross-k8s-deployment.md
deleted file mode 100644
index c8b5278cf..000000000
--- a/docs/user_docs/maintenance/cross-k8s-deployment/cross-k8s-deployment.md
+++ /dev/null
@@ -1,346 +0,0 @@
----
-title: Deploy a Cluster across Multiple Kubernetes Clusters by KubeBlocks
-description: How to deploy a Cluster across Multiple Kubernetes Clusters by KubeBlocks
-keywords: [user account]
-sidebar_position: 1
-sidebar_label: Deploy a Cluster across Multiple Kubernetes Clusters by KubeBlocks
----
-
-# Deploy a Cluster across Multiple Kubernetes Clusters by KubeBlocks
-
-KubeBlocks supports managing multiple Kubernetes clusters to provide new options for instance disaster recovery and K8s cluster management. KubeBlocks introduces the control plane and data plane to support cross-K8s management.
-
-* Control plane: An independent K8s cluster in which the KubeBlocks operator runs. Most of the objects defined by KubeBlocks, such as definition, cluster, backup, and ops, are stored in this cluster. Users interact with the API of this cluster to manage multiple cluster instances.
-* Data plane: A K8s cluster that is used to run the actual workloads. There can be one or more clusters in the data plane. These clusters host resources such as pods, persistent volume claims (PVC), services, service accounts (SA), config maps (CM), secrets, jobs, etc., related to the instances. But in KubeBlocks v0.9.0, the KubeBlocks operator does not run in the data plane.
-
-In terms of actual physical deployment, the control plane can be deployed in a single availability zone (AZ) for simplicity and flexibility. It can also be deployed in multiple different AZs to provide higher availability guarantees. Alternatively, it can be deployed by reusing a data plane, which offers a lower-cost approach to running the control plane.
-
-## Prepare an environment
-
-Create several K8s clusters and prepare the configuration information for deploying KubeBlocks. This tutorial takes three data plane K8s clusters as an example and their contexts are named as k8s-1, k8s-2, and k8s-3.
-
-* Create K8s clusters: one for the control plane and several for data plane. Make sure the API servers of these data plane K8s clusters can be reached from the control plane, which should include both network connectivity and access configuration.
-* Prepare the configuration information for the KubeBlocks operator to access the data plane K8s clusters. Store this information in the control plane cluster as a secret and this secrect should passed when deploying the KubeBlocks operator. The secret key should be "kubeconfig" and its value should follow the standard kubeconfig format. For example,
-
-   ```bash
-   apiVersion: v1
-   kind: Secret
-   metadata:
-     namespace: kb-system
-     name: <your-secret-name> 
-   type: kubernetes.kubeconfig
-   stringData:
-     kubeconfig: |
-       apiVersion: v1
-       clusters:
-         ...
-       contexts:
-         ...
-       kind: Config
-       users:
-         ...
-   ```
-
-## Deploy cross-K8s clusters
-
-### Deploy the Kubeblocks operator
-
-Install KubeBlocks in the control plane.
-
-1. Run the command below to install KubeBlocks.
-
-   ```bash
-   # multiCluster.kubeConfig specifies the secret where the kubeconfig information for the data plane k8s clusters is stored
-   # multiCluster.contexts specifies the contexts of the data plane k8s clusters
-   kbcli kubeblocks install --version=0.9.0 --set multiCluster.kubeConfig=<secret-name> --set multiCluster.contexts=<contexts>
-   ```
-
-2. Validate the installation.
-
-   ```bash
-   kbcli kubeblocks status
-   ```
-
-### RBAC
-
-When the workload instances are running in the data plane k8s clusters, specific RBAC (Role-Based Access Control) resources are required to perform management actions. Therefore, it is necessary to install the required RBAC resources for KubeBlocks in each data plane cluster separately.
-
-```bash
-# 1. Extract the required clusterrole resource from the control plane dump: kubeblocks-cluster-pod-role
-kubectl get clusterrole kubeblocks-cluster-pod-role -o yaml > /tmp/kubeblocks-cluster-pod-role.yaml
-
-# 2. Edit the file content to remove unnecessary meta information such as UID and resource version, while retaining other content
-
-# 3.Apply the file to the other data plane clusters
-kubectl apply -f /tmp/kubeblocks-cluster-pod-role.yaml --context=k8s-1
-kubectl apply -f /tmp/kubeblocks-cluster-pod-role.yaml --context=k8s-2
-kubectl apply -f /tmp/kubeblocks-cluster-pod-role.yaml --context=k8s-3
-```
-
-### Network
-
-KubeBlocks leverages the abstraction of K8s services to provide internal and external service access. For service abstraction, there is usually a default implementation for accessing k8s within the cluster, while traffic from outside the cluster typically requires users to provide their own solutions. In the context of multi K8s clusters, whether it's replication traffic between instances or client access traffic, it essentially falls under external traffic. Therefore, to ensure the smooth operation of cross-cluster instances, additional network handling is generally required.
-
-Here illustrates a set of optional solutions to describe the entire process. In the actual environment, you can choose the appropriate deployment solution based on your own cluster and network environment.
-
-#### East-West traffic
-
-##### For the cloud environment
-
-The K8s services provided by the cloud providers include both internal and external load balancer services. You can directly build the inter-instance communication based on the LB service in a simply and user-friendly way.
-
-##### For the self-host environment
-
-This tutorial takes Cilium Cluster Mesh as an example. Deploy Cilium as the overlay mode and the cluster configuration for each data plane clusters is as follows:
-
-| Cluster | Context | Name  | ID | CIDR        |
-|:-------:|:-------:|:-----:|:--:|:-----------:|
-| 1       | k8s-1   | k8s-1 | 1  | 10.1.0.0/16 |
-| 2       | k8s-2   | k8s-2 | 2  | 10.2.0.0/16 |
-| 3       | k8s-3   | k8s-3 | 3  | 10.3.0.0/16 |
-
-:::note
-
-The CIDR mentioned here refers to the address of the Cilium Overlay network. When configuring it, it should be distinct from the host network address.
-
-:::
-
-***Steps:***
-
-The following steps can be performed separately in each cluster (without the `--context` parameter) or collectively in an environment with the information of three contexts (by specifying the `--context` parameter for each).
-
-1. Install Cilium, specifying the cluster ID/name and the cluster pool pod CIDR. Refer to the Cilium doc for details: [Specify the Cluster Name and ID](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#specify-the-cluster-name-and-id).
-
-   ```bash
-   cilium install --set cluster.name=k8s-1 --set cluster.id=1 --set ipam.operator.clusterPoolIPv4PodCIDRList=10.1.0.0/16 —context k8s-1
-   cilium install --set cluster.name=k8s-2 --set cluster.id=2 --set ipam.operator.clusterPoolIPv4PodCIDRList=10.2.0.0/16 —context k8s-2
-   cilium install --set cluster.name=k8s-3 --set cluster.id=3 --set ipam.operator.clusterPoolIPv4PodCIDRList=10.3.0.0/16 —context k8s-3
-   ```
-
-2. Enable Cilium Cluster Mesh and wait for it to be ready. NodePort here is used to provide access to the clustermesh control plane. Refer to [the official doc](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#enable-cluster-mesh) for other optional methods and specific information.
-
-   ```bash
-   cilium clustermesh enable --service-type NodePort —context k8s-1
-   cilium clustermesh enable --service-type NodePort —context k8s-2
-   cilium clustermesh enable --service-type NodePort —context k8s-3
-   cilium clustermesh status —wait —context k8s-1
-   cilium clustermesh status —wait —context k8s-2
-   cilium clustermesh status —wait —context k8s-3
-   ```
-
-3. Establish connectivity between the clusters and wait for them to be ready. Refer to [the official doc](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#connect-clusters) for details.
-
-   ```bash
-   cilium clustermesh connect --context k8s-1 --destination-context k8s-2
-   cilium clustermesh connect --context k8s-1 --destination-context k8s-3
-   cilium clustermesh connect --context k8s-2 --destination-context k8s-3
-   cilium clustermesh status —wait —context k8s-1
-   cilium clustermesh status —wait —context k8s-2
-   cilium clustermesh status —wait —context k8s-3
-   ```
-
-4. (Optional) Check the status of the tunnels between cluster by using the cilium-dbg tool. Refer to [the official doc](https://docs.cilium.io/en/stable/cmdref/cilium-dbg/) for details.
-
-   ```bash
-   cilium-dbg bpf tunnel list
-   ```
-
-5. (Optional) Test the cluster connectivity. Refer to [the official doc](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#test-pod-connectivity-between-clusters) for details.
-
-#### South-North traffic
-
-The South-North traffic provides services for clients and requires each Pod in the data plane k8s clusters to have a connection address accessible from outside. This address can be implemented using NodePort, LoadBalancer, or other solutions. This tutorial takes NodePort and LoadBalancer as examples.
-
-If the clients do not have routing capabilities for read and write, in addition to the Pod addresses, read-write separation addresses are also required. This can be achieved using a 7-layer proxy, 4-layer SDN VIP, or pure DNS-based solutions. To simplify the problem, this tutorial assumes that the clients have routing capabilities for read and write and can directly configure the connection addresses for all Pods.
-
-##### NodePort
-
-For each Pod in the data plane, a NodePort service is created. Clients can connect using the host network IP and NodePort.
-
-##### LoadBalancer
-
-Here takes MetalLB as an example for providing LoadBalancer Services.
-
-1. Prepare the LB subnet for the data plane. This subnet needs to be reachable by client routing, and it should be different for each k8s cluster:
-
-   | Cluster | Context | Name  | ID | CIDR        |
-   |:-------:|:-------:|:-----:|:--:|:-----------:|
-   | 1       | k8s-1   | k8s-1 | 1  | 10.4.0.0/16 |
-   | 2       | k8s-2   | k8s-2 | 2  | 10.5.0.0/16 |
-   | 3       | k8s-3   | k8s-3 | 3  | 10.6.0.0/16 |
-
-2. Deploy MetalLB in all the data place K8s clusters.
-
-   ```bash
-   helm repo add metallb https://metallb.github.io/metallb
-   helm install metallb metallb/metallb
-   ```
-
-3. Wait for the Pods to be ready.
-
-   ```bash
-   kubectl wait --namespace metallb-system --for=condition=ready pod --selector=app=metallb --timeout=90s
-   ```
-
-4. Apply the YAML file below in three data plane K8s clusters. Replace `spec.addresses` as the LB network address of the corresponding clusters.
-
-   ```yaml
-   apiVersion: metallb.io/v1beta1
-   kind: IPAddressPool
-   metadata:
-     name: example
-     namespace: metallb-system
-   spec:
-     addresses:
-     - x.x.x.x/x
-   ---
-   apiVersion: metallb.io/v1beta1
-   kind: L2Advertisement
-   metadata:
-     name: empty
-     namespace: metallb-system
-   ```
-
-5. Create a LoadBalancer Service for each Pod in the data plane K8s clusters and obtain all the VIPs (Virtual IP addresses) so that clients can connect to them.
-
-## Verify cross-K8s clusters
-
-When running multiple cluster instances, the access addresses between the replicas cannot directly use the addresses within the original domain (such as Pod FQDN). It requires explicit creation and configuration of service addresses for cross-cluster communication. Therefore, some adaptation work needs to be done for the addons.
-
-This tutorial takes the community edition of etcd as an example. You can refer to [the etcd addon](https://github.com/apecloud/kubeblocks-addons/blob/release-0.9/addons/etcd/templates/componentdefinition.yaml) for the related adaptation results.
-
-### Create an instance
-
-Since different network configurations have different requirements, the following sections provide examples of creating a cross-cluster etcd instance using both cloud-based and self-hosted approaches.
-
-#### Cloud
-
-This example illustrates creating an etcd cluster on Alibaba Cloud. For the configurations of other cloud providers, you can refer to the official docs.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  namespace: default
-  generateName: etcd
-  annotations:
-    # optional：You can use this annotation to explicitly specify the cluster where the current instance should be distributed
-    apps.kubeblocks.io/multi-cluster-placement: "k8s-1,k8s-2,k8s-3"
-spec:
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - componentDef: etcd-0.9.0
-      name: etcd
-      replicas: 3
-      resources:
-        limits:
-          cpu: 100m
-          memory: 100M
-        requests:
-          cpu: 100m
-          memory: 100M
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi # The smallest size required by the cloud provisioning?
-        - name: peer
-          serviceType: LoadBalancer
-          annotations:
-            # If you are running on a mutual access solution based on LoadBalancer services, this annotation key is required.
-            apps.kubeblocks.io/multi-cluster-service-placement: unique
-            #  The annotation key required by ACK LoadBalancer service
-            service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: intranet
-          podService: true
-```
-
-The example below illustrates how to deploy clusters across cloud providers.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  namespace: default
-  generateName: etcd
-  annotations:
-    # optional：You can use this annotation to explicitly specify the cluster where the current instance should be distributed
-    apps.kubeblocks.io/multi-cluster-placement: "k8s-1,k8s-2,k8s-3"
-spec:
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - componentDef: etcd-0.9.0
-      name: etcd
-      replicas: 3
-      resources:
-        limits:
-          cpu: 100m
-          memory: 100M
-        requests:
-          cpu: 100m
-          memory: 100M
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi # The smallest size required by the cloud provisioning?
-      services:
-        - name: peer
-          serviceType: LoadBalancer
-          annotations:
-            # If you are running on a mutual access solution based on LoadBalancer services, this annotation key is required.
-            apps.kubeblocks.io/multi-cluster-service-placement: unique
-            # The annotation key required by the ACK LoadBalancer service. Since cross-cloud access is required, this key should be configured as a public network type.
-            service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
-            # The annotation keys required by the VKE LoadBalancer service. Since cross-cloud access is required, this key should be configured as a public network type.
-            service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id: <subnet-id>
-            service.beta.kubernetes.io/volcengine-loadbalancer-address-type: "PUBLIC"
-          podService: true
-```
-
-#### Self-hosted environment
-
-The example below illustrates how to create an instance in the self-hosted environment.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  namespace: default
-  generateName: etcd
-  annotations:
-    # optional：You can use this annotation to explicitly specify the cluster where the current instance should be distributed
-    apps.kubeblocks.io/multi-cluster-placement: "k8s-1,k8s-2,k8s-3"
-spec:
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - componentDef: etcd-0.9.0
-      name: etcd
-      replicas: 3
-      resources:
-        limits:
-          cpu: 100m
-          memory: 100M
-        requests:
-          cpu: 100m
-          memory: 100M
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 1Gi
-      services:
-        - name: peer
-          serviceType: ClusterIP
-          annotations:
-            service.cilium.io/global: "true" # cilium clustermesh global service
-          podService: true
-```
diff --git a/docs/user_docs/maintenance/in-place-update/_category_.yaml b/docs/user_docs/maintenance/in-place-update/_category_.yaml
deleted file mode 100644
index 13c584445..000000000
--- a/docs/user_docs/maintenance/in-place-update/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: In Place Update
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/in-place-update/ignore-vertical-scale.md b/docs/user_docs/maintenance/in-place-update/ignore-vertical-scale.md
deleted file mode 100644
index a1772b545..000000000
--- a/docs/user_docs/maintenance/in-place-update/ignore-vertical-scale.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: Enable in-place update
-description: Enable in-place update
-keywords: [in-place update]
-sidebar_position: 2
-sidebar_label: Enable in-place update
----
-
-# Enable in-place update
-
-In Kubernetes versions below 1.27, we have seen support for in-place updates of Resources in many Kubernetes distributions. Different distributions may adopt different approaches to implement this feature.
-
-To accommodate these Kubernetes distributions, KubeBlocks has introduced the `IgnorePodVerticalScaling` feature switch. When this feature is enabled, KubeBlocks ignores updates to CPU and Memory in Resources during instance updates, ensuring that the Resources configuration of the final rendered Pod remains consistent with the Resources configuration of the currently running Pod.
diff --git a/docs/user_docs/maintenance/in-place-update/overview.md b/docs/user_docs/maintenance/in-place-update/overview.md
deleted file mode 100644
index c15577a4a..000000000
--- a/docs/user_docs/maintenance/in-place-update/overview.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Overview on in-place update
-description: Overview on in-place update
-keywords: [in-place update, overview]
-sidebar_position: 1
-sidebar_label: Overview on in-place update
----
-
-# Overview on in-place update
-
-In its earlier versions, KubeBlocks ultimately generated Workloads as StatefulSets. For StatefulSets, any change in the segment of PodTemplate may result in the update of all pods, and the method of update is called `Recreate`, that deletes all current pods and creates a new one. This is obviously not the best practice for database management, which has a high requirement on system availability.
-To address this issue, KubeBlocks introduced the instance in-place update feature starting from version 0.9, reducing the impact on system availability during instance updates.
-
-## Which fields of an instance support in-place updates?
-
-In principle, KubeBlocks instance in-place updates leverage [the Kubernetes Pod API's in-place update capability](https://kubernetes.io/docs/concepts/workloads/pods/#pod-update-and-replacement). Therefore, the specific supported fields are as follows:
-
-* `annotations`
-* `labels`
-* `spec.activeDeadlineSeconds`
-* `spec.initContainers[*].image`
-* `spec.containers[*].image`
-* `spec.tolerations (only supports adding Toleration)`
-
-Starting from Kubernetes version 1.27, support for in-place updates of CPU and Memory can be further enabled through the `InPlacePodVerticalScaling` feature switch. KubeBlocks also supports the `InPlacePodVerticalScaling` feature switch which further supports the following capabilities:
-
-For Kubernetes versions equal to or greater than 1.27 with InPlacePodVerticalScaling enabled, the following fields' in-place updates are supported:
-
-* `spec.containers[*].resources.requests["cpu"]`
-* `spec.containers[*].resources.requests["memory"]`
-* `spec.containers[*].resources.limits["cpu"]`
-* `spec.containers[*].resources.limits["memory"]`
-
-It is important to note that after successful resource resizing, some applications may need to be restarted to recognize the new resource configuration. In such cases, further configuration of container `restartPolicy` is required in ClusterDefinition or ComponentDefinition.
-
-For PVC, KubeBlocks also leverages the capabilities of the PVC API and only supports volume expansion. If the expansion fails for some reason, it supports reverting to the original capacity. However, once a VolumeClaimTemplate in a StatefulSet is declared, it cannot be modified. Currently, the Kubernetes community is [developing this capability](https://github.com/kubernetes/enhancements/pull/4651), but it won't be available until at least Kubernetes version 1.32.
-
-## From the upper-level API perspective, which fields utilize in-place updates after being updated?
-
-KubeBlocks upper-level APIs related to instances include Cluster, ClusterDefinition, ClusterVersion, ComponentDefinition, and ComponentVersion. Within these APIs, several fields will ultimately be directly or indirectly used to render instance objects, potentially triggering in-place updates for instances.
-
-There are numerous fields across these APIs. See below table for brief descriptions.
-
-:::note
-
-Fields marked as deprecated or immutable in the API are not included in the list.
-
-:::
-
-| API |   Fields    |   Description  |
-|:-----|:-------|:-----------|
-|Cluster| `annotations`, <p>`labels`, </p><p>`spec.tolerations`, </p><p>`spec.componentSpecs[*].serviceVersion`, </p><p>`spec.componentSpecs[*].tolerations`, </p><p>`spec.componentSpecs[*].resources`, </p><p>`spec.componentSpecs[*].volumeClaimTemplates`, </p><p>`spec.componentSpecs[*].instances[*].annotations`, </p><p>`spec.componentSpecs[*].instances[*].labels`, </p><p>`spec.componentSpecs[*].instances[*].image`, </p><p>`spec.componentSpecs[*].instances[*].tolerations`, </p><p>`spec.componentSpecs[*].instances[*].resources`, </p><p>`spec.componentSpecs[*].instances[*].volumeClaimTemplates`, </p><p>`spec.shardingSpecs[*].template.serviceVersion`, </p><p>`spec.shardingSpecs[*].template.tolerations`, </p><p>`spec.shardingSpecs[*].template.resources`, </p><p>`spec.shardingSpecs[*].template.volumeClaimTemplates`</p> | Resources related fields means: <p>`requests["cpu"]`,</p><p>`requests["memory"]`,</p><p>`limits["cpu"]`,</p>`limits["memory"]` |
-|   ComponentVersion  | `spec.releases[*].images`   | Whether in-place update is triggered depends on whether the corresponding image is changed.            |
-| KubeBlocks Built-in |  `annotations`, `labels` |    |
diff --git a/docs/user_docs/maintenance/instance-template/_category_.yml b/docs/user_docs/maintenance/instance-template/_category_.yml
deleted file mode 100644
index 06181e101..000000000
--- a/docs/user_docs/maintenance/instance-template/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: Instance Template
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/instance-template/how-to-use-instance-template.md b/docs/user_docs/maintenance/instance-template/how-to-use-instance-template.md
deleted file mode 100644
index 708fa51e2..000000000
--- a/docs/user_docs/maintenance/instance-template/how-to-use-instance-template.md
+++ /dev/null
@@ -1,218 +0,0 @@
----
-title: Apply instance template
-description: Apply instance template
-keywords: [apply instance template, instance template]
-sidebar_position: 2
-sidebar_label: Apply instance template
----
-
-# Apply instance template
-
-Instance templates can be applied to many scenarios. In this section, we take a RisingWave cluster as an example.
-
-KubeBlocks supports the management of RisingWave clusters. The RisingWave addon is contributed by the RisingWave official team. For RisingWave to function optimally, it relies on an external storage solution, such as AWS S3 or Alibaba Cloud OSS, to serve as its state backend. When creating a RisingWave cluster, it is necessary to configure credentials and other information for the external storage to ensure normal operation, and this information may vary for each cluster.
-
-In the official image of RisingWave, this information can be injected via environment variables. Therefore, in KubeBlocks 0.9, we can configure corresponding environment variables in the instance template and set the values of these environment variables each time a cluster is created, so as to inject credential information into the container of RisingWave.
-
-## An example
-
-In the default template of RisingWave addon, [the environment variables](https://github.com/apecloud/kubeblocks-addons/blob/main/addons/risingwave/templates/cmpd-compute.yaml#L26) are configured as follows:
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ComponentDefinition
-metadata:
-  name: risingwave
-# ...
-spec:
-#...
-  runtime:
-    containers:
-      - name: compute
-        securityContext:
-          allowPrivilegeEscalation: false
-          capabilities:
-            drop:
-            - ALL
-          privileged: false
-        command:
-        - /risingwave/bin/risingwave
-        - compute-node
-        env:
-        - name: RUST_BACKTRACE
-          value: "1"
-        - name: RW_CONFIG_PATH
-          value: /risingwave/config/risingwave.toml
-        - name: RW_LISTEN_ADDR
-          value: 0.0.0.0:5688
-        - name: RW_ADVERTISE_ADDR
-          value: $(KB_POD_FQDN):5688
-        - name: RW_META_ADDR
-          value: load-balance+http://$(metaSvc)-headless:5690
-        - name: RW_METRICS_LEVEL
-          value: "1"
-        - name: RW_CONNECTOR_RPC_ENDPOINT
-          value: $(connectorSvc):50051
-        - name: RW_PROMETHEUS_LISTENER_ADDR
-          value: 0.0.0.0:1222
-# ...
-```
-
-After adding an instance template to the [cluster resources](https://github.com/apecloud/kubeblocks-addons/blob/main/addons-cluster/risingwave/templates/cluster.yaml):
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: {{ include "risingwave-cluster.name" . }}
-  namespace: {{ .Release.Namespace }}
-# ...
-spec:
-  componentSpecs:
-  - componentDef: compute
-    name: compute
-    replicas: {{ .Values.risingwave.compute.replicas }}
-    instances:
-    - name: instance
-      replicas: {{ .Values.risingwave.compute.replicas }}
-      env:
-      - name: RW_STATE_STORE
-        value: "hummock+s3://{{ .Values.risingwave.stateStore.s3.bucket }}"
-      - name: AWS_REGION
-        value: "{{ .Values.risingwave.stateStore.s3.region }}"
-      {{- if eq .Values.risingwave.stateStore.s3.authentication.serviceAccountName "" }}
-      - name: AWS_ACCESS_KEY_ID
-        value: "{{ .Values.risingwave.stateStore.s3.authentication.accessKey }}"
-      - name: AWS_SECRET_ACCESS_KEY
-        value: "{{ .Values.risingwave.stateStore.s3.authentication.secretAccessKey }}"
-      {{- end }}
-      - name: RW_DATA_DIRECTORY
-        value: "{{ .Values.risingwave.stateStore.dataDirectory }}"
-      {{- if .Values.risingwave.stateStore.s3.endpoint }}
-      - name: RW_S3_ENDPOINT
-        value: "{{ .Values.risingwave.stateStore.s3.endpoint }}"
-      {{- end }}
-      {{- if .Values.risingwave.metaStore.etcd.authentication.enabled }}
-      - name: RW_ETCD_USERNAME
-        value: "{{ .Values.risingwave.metaStore.etcd.authentication.username }}"
-      - name: RW_ETCD_PASSWORD
-        value: "{{ .Values.risingwave.metaStore.etcd.authentication.password }}"
-      {{- end }}
-      - name: RW_ETCD_ENDPOINTS
-        value: "{{ .Values.risingwave.metaStore.etcd.endpoints }}"
-      - name: RW_ETCD_AUTH
-        value: "{{ .Values.risingwave.metaStore.etcd.authentication.enabled}}"
-# ...
-```
-
-In the example above, we added an instance template through the `instances` field, named `instance`. This template defines several environment variables such as `RW_STATE_STORE` and `AWS_REGION`. These environment variables will be appended by KubeBlocks to the list of environment variables defined in the default template. Consequently, the rendered instance will contain both the default template and all the environment variables defined in this instance template.
-
-Additionally, the `replicas` field in the instance template is identical to that in the `componentSpec` (both are `{{ .Values.risingwave.compute.replicas }}`), indicating that after overriding the default template, this instance template will be used to render all instances within this component.
-
-## Detailed information on instance template
-
-- `Name` field: For each component, multiple instance templates can be defined. The template name is configured with the `Name` field and must remain unique within the same component.
-- `Replica` field: Each template can set the number of instances rendered based on that template via the `Replicas` field, of which the default value is 1. The sum of `Replicas` for all instance templates within the same component must be less than or equal to the `Replicas` value of the component. If the number of instances rendered based on the instance templates is less than the total number required by the component, the remaining instances will be rendered using the default template.
-
-The pattern for the names of instances rendered based on instance templates is `$(cluster name)-$(component name)-$(instance template name)-ordinal`. For example, in the above RisingWave cluster, the cluster name is `risingwave`, the component name is `compute`, the instance template name is `instance`, and the number of `Replicas` is 3. Therefore, the rendered instance names are risingwave-compute-instance-0, risingwave-compute-instance-1, and risingwave-compute-instance-2.
-
-Instance templates can be used during cluster creation and can be updated during the operations period. Specifically, this includes adding, deleting, or updating instance templates. Updating instance templates may update, delete, or reconstruct instances. You are recommended to carefully evaluate whether the final changes meet expectations before performing updates.
-
-### Annotations
-
-The `Annotations` in the instance template are used to override the `Annotations` field in the default template. If a Key in the `Annotations` of the instance template already exists in the default template, the `value` corresponding to the Key will use the value in the instance template; if the Key does not exist in the default template, the Key and Value will be added to the final `Annotations`.
-
-***Example:***
-
-The `annotations` in the default template are:
-
-```yaml
-annotations:
-  "foo0": "bar0"
-  "foo1": "bar"
-```
-
-And `annotations` in the instance templates are:
-
-```yaml
-annotations:
-  "foo1": "bar1"
-  "foo2": "bar2"
-```
-
-Then, after rendering, the actual annotations are:
-
-```yaml
-annotations:
-  "foo0": "bar0"
-  "foo1": "bar1"
-  "foo2": "bar2"
-```
-
-:::note
-
-KubeBlocks adds system `Annotations`, and do not overwrite them.
-
-:::
-
-### Labels
-
-You can also set `Labels` with the instance template.
-
-Similar to `Annotations`, `Labels` in instance templates follow the same overriding logic applied to existing labels.
-
-:::note
-
-KubeBlocks adds system `Labels`, and do not overwrite them.
-
-:::
-
-### Image
-
-The `Image` field in the instance template is used to override the `Image` field of the first container in the default template.
-
-:::note
-
-`Image` field should be used with caution: for the StatefulSet like databases, changing the `Image` often involves compatibility issues with data formats. When changing this field, please ensure that the image version in the instance template is fully compatible with that in the default template.
-
-:::
-
-With KubeBlocks version 0.9 and above, detailed design for image versions is provided through `ComponentVersion`. It is recommended to manage versions using `ComponentVersion`.
-
-### NodeName
-
-`NodeName` in the instance template overrides the same field in the default template.
-
-### NodeSelector
-
-`NodeSelector` in the instance template overrides the same field in the default template.
-
-### Tolerations
-
-`Tolerations` in the instance template overrides the same field in the default template.
-
-If the `Toleration` in the instance template is identical to a `Toleration` in the default template (with the same `Key`, `Operator`, `Value`, `Effect`, and `TolerationSeconds`), then that `Toleration` will be ignored. Otherwise, it will be added to the list of `Tolerations` in the default template.
-
-### RuntimeClassName
-
-`RuntimeClassName` in the instance template overrides the same field in the default template.
-
-### Resources
-
-`Resources` in the instance template overrides the same field in the default template and gets the highest priority.
-
-### Env
-
-The environment variables (`Env`) defined in the instance template will override any other environment variables except for the default `Env` set by KubeBlocks. The overriding logic is similar to `Annotations` and `Labels`. If an environment variable name is the same, the value or value source from the instance template will be used; if it's different, it will be added as a new environment variable.
-
-### Volumes
-
-Used to override the `Volumes` field of the first container in the default template. The overriding logic is similar to `Env`, if the `Volume Name` is the same, the `VolumeSource` from the instance template will be used; otherwise, it will be added as a new `Volume`.
-
-### VolumeMounts
-
-Used to override the `VolumeMounts` field of the first container in the default template. The overriding logic is similar to `Volumes`, meaning if the `VolumeMount` `Name` is the same, the `MountPath` and other values from the instance template will be used; otherwise, it will be added as a new `VolumeMount`.
-
-### VolumeClaimTemplates
-
-Used to override the `VolumeClaimTemplates` generated by `ClusterComponentVolumeClaimTemplate` within the Component. The overriding logic is similar to `Volumes`, meaning if the `PersistentVolumeClaim` `Name` is the same, the `PersistentVolumeClaimSpec` values from the instance template will be used; otherwise, it will be added as a new `PersistentVolumeClaim`.
diff --git a/docs/user_docs/maintenance/instance-template/introduction.md b/docs/user_docs/maintenance/instance-template/introduction.md
deleted file mode 100644
index 14526cfc4..000000000
--- a/docs/user_docs/maintenance/instance-template/introduction.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: Introduction of Instance Template
-description: Introduction of Instance Template
-keywords: [instance template]
-sidebar_position: 1
-sidebar_label: Introduction of instance template
----
-
-# Introduction of instance template
-
-## What is an instance template
-
-An *instance* serves as the fundamental unit in KubeBlocks, comprising a Pod along with several auxiliary objects. To simplify, you can initially think of it as a Pod, and henceforth, we'll consistently refer to it as an "Instance."
-
-Starting from version 0.9, we're able to establish multiple instance templates for a particular component within a cluster. These instance templates include several fields such as Name, Replicas, Annotations, Labels, Env, Tolerations, NodeSelector, etc. These fields will ultimately override the corresponding ones in the default template (originating from ClusterDefinition and ComponentDefinition) to generate the final template for rendering the instance.
-
-## Why do we introduce the instance template
-
-In KubeBlocks, a *Cluster* is composed of several *Components*, where each *Component* ultimately oversees multiple *Pods* and auxiliary objects.
-
-Prior to version 0.9, these pods were rendered from a shared PodTemplate, as defined in either ClusterDefinition or ComponentDefinition. However, this design can’t meet the following demands:
-
- - For Clusters rendered from the same addon, setting separate scheduling configurations such as *NodeName*, *NodeSelector*, or *Tolerations*.
- - For Components rendered from the same addon, adding custom *Annotations*, *Labels*, or ENV to the Pods they manage.
- - For Pods managed by the same Component, configuring different *CPU*, *Memory*, and other *Resource Requests* and *Limits*.
-
-With various similar requirements emerging, the Cluster API introduced the Instance Template feature from version 0.9 onwards to cater to these needs.
diff --git a/docs/user_docs/maintenance/resource-scheduling/_category_.yml b/docs/user_docs/maintenance/resource-scheduling/_category_.yml
deleted file mode 100644
index e71247aac..000000000
--- a/docs/user_docs/maintenance/resource-scheduling/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: Resource Scheduling
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/resource-scheduling/resource-scheduling.md b/docs/user_docs/maintenance/resource-scheduling/resource-scheduling.md
deleted file mode 100644
index ce235f440..000000000
--- a/docs/user_docs/maintenance/resource-scheduling/resource-scheduling.md
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title: Configure pod affinity for database clusters
-description: How to configure pod affinity for database clusters
-keywords: [pod affinity]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Configure pod affinity for database clusters
-
-Affinity controls the selection logic of pod allocation on nodes. By a reasonable allocation of Kubernetes pods on different nodes, the business availability, resource usage rate, and stability are improved.
-
-Affinity and toleration can be set by `kbcli` or editing the spec of a cluster or a component. Note that `kbcli` only supports the cluster-level configuration. If you want to realize the cluster-level and component-level configurations, you can configure the CR YAML file.
-
-<Tabs>
-
-<TabItem value="Edit YAML file" label="Edit YAML file" default>
-
-You can configure pod affinity and toleration in either the spec of a cluster or the spec of a component.
-
-The cluster-level configuration is used as the default configuration of all components; if the pod affinity configuration exists in a component, the component-level configuration will take effect and cover the default cluster-level configuration.
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-    nodeLabels:
-      topology.kubernetes.io/zone: us-east-1a
-  tolerations:
-  - key: EngineType
-    operator: Equal
-    value: mysql
-    effect: NoSchedule
-  componentSpecs:
-  - name: mysql
-    componentDefRef: mysql
-    affinity:
-      podAntiAffinity: Required
-      topologyKeys:
-        - kubernetes.io/hostname
-...
-```
-
-**Description of parameters in the YAML file**
-
-* Affinity
-  
-  Parameters related to pod affinity are under the object of `spec.affinity` in the Cluster CR YAML file.
-  The pod affinity configuration can be applied to the cluster or component and the component-level configuration covers the cluster-level configuration.
-
-* Toleration
-  
-  Parameters related to toleration are under the object of `spec.tolerations` in the Cluster CR YAML file and Kubernetes native semantics are used. For the toleration parameter configuration, refer to the Kubernetes official document [Taints and Tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/).
-  Like affinity configuration, toleration also supports component-level and cluster-level configurations. The cluster-level configuration is set as default and the component-level configuration covers the cluster-level configuration.
-
-| **Parameter**   | **Value**                                    | **Description**  |
-| :--             | :--                                          | :--              |
-| podAntiAffinity | - Required <br/> - Preferred (default)      | It stands for the anti-affinity level of the pod under the current component.<br/> - Required means pods must be spread evenly in the fault domain specified by `topologyKeys`. <br/> - Preferred means pods can be spread as evenly as possible in the fault domain specified by `topologyKeys`. |
-| topologyKeys    |                                              | TopologyKey is the key of the node label. The node with the same value as this key is considered to be in the same topology, i.e. the same fault domain.<br/>For example, if the TopologyKey is `kubernetes.io/hostname`, every node is a domain of this topology. If the TopologyKey is `topology.kubernetes.io/zone`, every available zone is a domain of this topology. |
-| nodeLabels      |                                              | NodeLabels specifies a pod can only be scheduled to the node with the specified node label. |
-| tenancy         | - SharedNode (default) <br/> - DedicatedNode | It refers to the pod tenancy type:<br/> - SharedNode means that multiple pods share a node.<br/> - DedicatedNode means that a node is dedicated to a pod. |
-
-## Examples
-
-The following examples show the common situations of how to use pod affinity and toleration configuration.
-
-### Default configuration
-
-No affinity parameters are required.
-
-### Spread evenly as much as possible
-
-You can configure the pod affinity as "Preferred" if you want the pods of the cluster to be deployed in different topological domains, but do not want deployment failure due to failing to meet distribution requirements.
-
-The example below creates and sets a cluster to be deployed evenly across nodes as much as possible.
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-```
-
-### Forced spread evenly
-
-You can configure the pod affinity as "Required" if the pods of the cluster must be deployed in different topological domains to ensure that the cluster can be disaster-tolerant across topological domains.
-The example below creates and sets a cluster that must be deployed across nodes.
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Required
-```
-
-### Deploy pods in specified nodes
-
-You can specify a node label to deploy a cluster on the specified node.
-The example below creates and sets a cluster to be deployed on the node with an available zone label of `topology.kubernetes.io/zone=us-east-1a`.
-
-```yaml
-spec:
-  affinity:
-    nodeLabels:
-      topology.kubernetes.io/zone: us-east-1a
-```
-
-### Deploy pods in dedicated nodes
-
-If you want to manage node groups by the taint and node labels and need the clusters to be deployed on a dedicated host group, you can set tolerations and specify a node label.
-
-For example, you have a host group for deploying database clusters and this host is added with a taint named `database=true:NoSchedule` and a label `database=true`, then you can follow the command below to create a cluster.
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-    nodeLabels:
-      database: true
-  tolerations:
-  - key: database
-    operator: Equal
-    value: true
-    effect: NoSchedule
-```
-
-### One node only for one pod
-
-If you need one cluster only for the online core business and need to ensure every pod of this cluster has its own node to avoid being affected by the cluster of the cluster, you can specify `tenancy` as "DedicatedNode".
-
-```yaml
-spec:
-  affinity:
-    tenancy: DedicatedNode
-```
-
-:::note
-
-This command will be performed successfully based on the prerequisite that you have added taints for these nodes. Otherwise, the business that is not managed by KubeBlocks can still be deployed on these nodes.
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-Run `kbcli cluster create -h` to view the examples and the parameter options of affinity and toleration configurations.
-
-```bash
-kbcli cluster create -h
->
-Create a cluster
-
-Examples:
-  ...
-  
-  # Create a cluster forced to scatter by node
-  kbcli cluster create --cluster-definition apecloud-mysql --topology-keys kubernetes.io/hostname --pod-anti-affinity
-Required
-  
-  # Create a cluster in specific labels nodes
-  kbcli cluster create --cluster-definition apecloud-mysql --node-labels
-'"topology.kubernetes.io/zone=us-east-1a","disktype=ssd,essd"'
-  
-  # Create a Cluster with two tolerations
-  kbcli cluster create --cluster-definition apecloud-mysql --tolerations
-'"key=engineType,value=mongo,operator=Equal,effect=NoSchedule","key=diskType,value=ssd,operator=Equal,effect=NoSchedule"'
-  
-  # Create a cluster, with each pod runs on their own dedicated node
-  kbcli cluster create --tenancy=DedicatedNode
-
-Options:
-    ...
-    --node-labels=[]:
-        Node label selector
-
-    --pod-anti-affinity='Preferred':
-        Pod anti-affinity type, one of: (Preferred, Required)
-        
-    --tenancy='SharedNode':
-        Tenancy options, one of: (SharedNode, DedicatedNode)
-
-    --tolerations=[]:
-        Tolerations for cluster, such as '"key=engineType,value=mongo,operator=Equal,effect=NoSchedule"'
-
-    --topology-keys=[]:
-        Topology keys for affinity
-    ...
-...
-```
-
-## Examples
-
-The following examples use `kbcli` to create cluster instances and show the common situations of how to use pod affinity and toleration configuration.
-
-### Default configuration
-
-No affinity parameters are required.
-
-### Spread evenly as much as possible
-
-You can configure the pod affinity as "Preferred" if you want the pods of the cluster to be deployed in different topological domains, but do not want deployment failure due to failing to meet distribution requirements.
-The example below creates and sets a cluster to be deployed evenly across nodes as much as possible.
-
-```bash
-kbcli cluster create --topology-keys kubernetes.io/hostname --pod-anti-affinity Preferred
-```
-
-### Forced spread evenly
-
-You can configure the pod affinity as "Required" if the pods of the cluster must be deployed in different topological domains to ensure that the cluster can be disaster-tolerant across topological domains.
-The example below creates and sets a cluster that must be deployed across nodes.
-
-```bash
-kbcli cluster create --topology-keys kubernetes.io/hostname --pod-anti-affinity Required
-```
-
-### Deploy pods in specified nodes
-
-You can specify a node label to deploy a cluster on the specified node.
-The example below creates and sets a cluster to be deployed on the node with an available zone label of `topology.kubernetes.io/zone=us-east-1a`.
-
-```bash
-kbcli cluster create --node-labels '"topology.kubernetes.io/zone=us-east-1a"'
-```
-
-### Deploy pods in dedicated nodes
-
-If you want to manage node groups by the taint and node labels and need the clusters to be deployed on a dedicated host group, you can set tolerations and specify a node label.
-
-For example, you have a host group for deploying database clusters and this host is added with a taint named `database=true:NoSchedule` and a label `database=true`, then you can follow the command below to create a cluster.
-
-```bash
-kbcli cluster create --node-labels '"databa=true"' --tolerations '"key=database,value=true,operator=Equal,effect=NoSchedule"
-```
-
-### One node only for one pod
-
-If you need one cluster only for the online core business and need to ensure every pod of this cluster has its own node to avoid being affected by the cluster of the cluster, you can specify `tenancy` as "DedicatedNode".
-
-```bash
-kbcli cluster create --tenancy=DedicatedNode
-```
-
-:::note
-
-This command will be performed successfully based on the prerequisite that you have added taints for these nodes. Otherwise, the business that is not managed by KubeBlocks can still be deployed on these nodes.
-
-:::
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/maintenance/scale/_category_.yaml b/docs/user_docs/maintenance/scale/_category_.yaml
deleted file mode 100644
index 1558192e1..000000000
--- a/docs/user_docs/maintenance/scale/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Scale
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/maintenance/scale/horizontal-scale.md b/docs/user_docs/maintenance/scale/horizontal-scale.md
deleted file mode 100644
index 50165923b..000000000
--- a/docs/user_docs/maintenance/scale/horizontal-scale.md
+++ /dev/null
@@ -1,389 +0,0 @@
----
-title: Horizontal Scale
-description: How to scale a cluster, scale replicas, scale instances
-keywords: [horizontal scaling, Horizontal Scale]
-sidebar_position: 2
-sidebar_label: Horizontal Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Horizontal Scale
-
-From v0.9.0, the horizontal scale provided by KubeBlocks supports ScaleIn and ScaleOut operations and supports scaling both replicas and instances.
-
-- ScaleIn: It supports scaling in the specified replicas and offloading specified instances.
-- ScaleOut: It supports scaling out the specified replicas and makes the offline instances online again.
-
-You can perform the horizontal scale by modifying the cluster in a declarative API style or creating an OpsRequest:
-
-- Modifying the Cluster in a declarative API style
-
-    With the declarative API style, users can directly modify the Cluster YAML file to specify the number of replicas for each component and instance template. If the new number of replicas is greater than the current number of Pods, it indicates a scale-out; conversely, if the new number of replicas is less than the current number of Pods, it indicates a scale-in.
-
-- Creating an OpsRequest
-
-    Another approach is to specify the replica count increment in the OpsRequest. The controller will calculate the desired number of replicas based on the current number of Pods in the Cluster's components and the increment value, and perform scaling accordingly.
-
-:::note
-
-- In cases of concurrent modifications, such as multiple controllers concurrently modifying the number of Pods, the calculated number of Pods might be inaccurate. You can ensure the order is on the client side or set KUBEBLOCKS_RECONCILE_WORKERS=1.
-- If there is an ongoing scaling operation using the declarative API, this operation will be terminated.
-- From v0.9.0, for MySQL and PostgreSQL, after horizontal scaling is performed, KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is the KubeBlocks dynamic configuration feature, which simplifies the process of configuring parameters, saves time and effort and reduces performance issues caused by incorrect configuration. For detailed instructions, refer to [Configuration](./../../kubeblocks-for-apecloud-mysql/configuration/configuration.md).
-
-:::
-
-## Why do you need to scale for specified instances
-
-Before v0.9.0, KubeBlocks generated workloads as *StatefulSets*, which was a double-edged sword. While KubeBlocks could leverage the advantages of a *StatefulSets* to manage stateful applications like databases, it inherited its limitations.
-
-One of these limitations is evident in horizontal scaling scenarios, where *StatefulSets* offload Pods sequentially based on *Ordinal* order, potentially impacting the availability of databases running within.
-
-Another issue arises in the same scenario: if the node hosting Pods experiences a hardware failure, causing disk damage and rendering data read-write inaccessible, according to operational best practices, we need to offload the damaged Pod and rebuild replicas on healthy nodes. However, performing such operational tasks based on *StatefulSets* isn't easy. [Similar discussions](https://github.com/kubernetes/kubernetes/issues/83224) can be observed in the Kubernetes community.
-
-To solve the limitations mentioned above, starting from version 0.9, KubeBlocks replaces *StatefulSets* with *InstanceSet* which is a general workload API and is in charge of a set of instances. With *InstanceSet*, KubeBlocks introduces the *specified instance scaling* feature to improve the availability.
-
-## Before you start
-
-This tutorial takes Redis for illustration and here is the original component topology.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: redis
-  namespace: kubeblocks-cloud-ns
-spec:
-  componentSpecs:
-  - name: proxy
-    componentDef: redis-proxy
-    replicas: 10
-    instances:
-    - name: proxy-2c
-      replicas: 3
-      resources:
-        limits:
-          cpu: 2
-          memory: 4Gi
-    resources:
-      limits:
-        cpu: 4
-        memory: 8Gi
-    offlineInstances:
-    - redis-proxy-proxy-2c4g-0
-    - redis-proxy-proxy-2c4g-1     
-```
-
-Check whether the cluster STATUS is `Running`. Otherwise, the following operations may fail.
-
-```bash
-kubectl get cluster redis
-```
-
-## ScaleIn
-
-### Example 1
-
-This example illustrates how to apply an OpsRequest to scale in replicas to 8. This example deletes pods according to the default rules without specifying any instances.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      replicaChanges: 2  
-EOF 
-```
-
-### Example 2
-
-This example illustrates how to apply an OpsRequest to scale in replicas to 8 and the specifications of the deleted instances should be 2C4G.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      replicaChanges: 2
-      instances: 
-      - name: proxy-2c4g
-        replicaChanges: 2
-EOF
-```
-
-### Example 3
-
-This example illustrates how to scale in the specified instance. In this example, both `replicas` and `instance replicas` will decrease 1 in amount.
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      onlineInstancesToOffline:
-      - redis-proxy-proxy-2c4g-2
-  ttlSecondsAfterSucceed: 0
-EOF
-```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-You can also edit the cluster YAML file to scale in a specified instance.
-
-```yaml
-kubectl edit cluster redis
-```
-
-Edit the value of `replicas`.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: redis
-spec:
-  componentSpecs:
-  - name: proxy
-    replicas: 9 # Change this value
-    offlineInstances: ["redis-proxy-proxy-2c4g-2"]
-...
-```
-
-</TabItem>
-</Tabs>
-
-## ScaleOut
-
-The following examples illustrate scaling out both replicas and instances. If you only need to scale out replicas, just edit `replicaChanges`. For example,
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut: 
-      replicaChanges: 6
-EOF
-```
-
-### Example 1
-
-This example illustrates how to scale out replicas to 16 by applying an OpsRequest.
-
-The created instances are as follows:
-
-Three replicas equipped with 4C8G: `redis-proxy-7`, `redis-proxy-8`, `redis-proxy-9`
-Three replicas equipped with 2C4G: `redis-proxy-2c4g-5`, `redis-proxy-2c4g-6`, `redis-proxy-2c4g-7`
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut: 
-      replicaChanges: 6
-      instances: 
-      - name: proxy-2c4g
-        replicasChanges: 3
-EOF
-```
-
-### Example 2
-
-This example illustrates how to apply an OpsRequest to scale out replicas to 16 and three of the new replicas are proxies equipped with 8C16G.
-
-The created instances are as follows:
-
-4C8G: `redis-proxy-7`, `redis-proxy-8`, `redis-proxy-9`
-8C16G: `redis-proxy-8c16g-0`, `redis-proxy-8c16g-1`, `redis-proxy-8c16g-2`
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut:
-      replicaChanges: 6 
-      newInstances:
-      - name: proxy-8c16g
-        replicas: 3
-        resources:
-          limits:
-            cpu: 8
-            memory: 16Gi  
-EOF
-```
-
-### Example 3
-
-This example illustrates how to apply an OpsRequest to add the offline instances to the cluster. After the operation, there will be 12 replicas.
-
-The added pods in this example are `redis-proxy-2c4g-0` and `redis-proxy-2c4g-1`.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut:
-      offlineInstancesToOnline:
-      - redis-proxy-proxy-2c4g-0
-      - redis-proxy-proxy-2c4g-1     
-EOF   
-```
-
-## ScaleIn and ScaleOut
-
-### Example 1
-
-This example illustrates how to apply an OpsRequest to scale in a specified instance and create a new instance.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      onlineInstancesToOffline:
-      - redis-proxy-proxy-2c4g-2  
-    scaleOut:
-      instances:
-      - name: 2c4g
-        replicaChanges: 1
-EOF
-```
-
-### Example 2
-
-This example illustrates how to apply an OpsRequest to scale in replicas to 8 and add the offline instances to the cluster.
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      replicaChanges: 4
-      instances:
-      - name: 2c4g
-        replicaChanges: 2
-    scaleOut: 
-      offlineInstancesToOnline:
-      - redis-proxy-proxy-2c4g-0
-      - redis-proxy-proxy-2c4g-1
-EOF
-```
-
-## Handle the snapshot exception
-
-If `STATUS=ConditionsError` occurs during the horizontal scaling process, you can find the cause from `cluster.status.condition.message` for troubleshooting.
-
-In the example below, a snapshot exception occurs.
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/reids-redis-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***Reason***
-
-This exception occurs because the `VolumeSnapshotClass` is not configured. This exception can be fixed after configuring `VolumeSnapshotClass`, but the horizontal scaling cannot continue to run. It is because the wrong backup (volumesnapshot is generated by backup) and volumesnapshot generated before still exist. First, delete these two wrong resources and then KubeBlocks re-generates new resources.
-
-***Steps:***
-
-1. Configure the VolumeSnapshotClass by running the command below.
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. Delete the wrong backup (volumesnapshot is generated by backup) and volumesnapshot resources.
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=redis
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=redis
-   ```
-
-***Result***
-
-The horizontal scaling continues after backup and volumesnapshot are deleted and the cluster restores to running status.
diff --git a/docs/user_docs/maintenance/scale/vertical-scale.md b/docs/user_docs/maintenance/scale/vertical-scale.md
deleted file mode 100644
index 4df8fd720..000000000
--- a/docs/user_docs/maintenance/scale/vertical-scale.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: Vertical Scale
-description: How to vertically scale a cluster
-keywords: [vertical scaling, vertical scale]
-sidebar_position: 2
-sidebar_label: Vertical Scale
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Vertical Scale
-
-You can change the resource requirements and limits (CPU and storage) by performing the vertical scale. For example, you can change the resource class from 1C2G to 2C4G.
-
-This tutorial takes MySQL as an example to illustrate how to vertically scale a cluster.
-
-:::note
-
-From v0.9.0, for MySQL and PostgreSQL, after vertical scaling is performed, KubeBlocks automatically matches the appropriate configuration template based on the new specification. This is the KubeBlocks dynamic configuration feature. This feature simplifies the process of configuring parameters, saves time and effort and reduces performance issues caused by incorrect configuration. For detailed instructions, refer to [Configuration](./../../kubeblocks-for-apecloud-mysql/configuration/configuration.md).
-
-:::
-
-## Before you start
-
-Check whether the cluster status is `Running`. Otherwise, the following operations may fail.
-
-```bash
-kubectl get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   4d18h
-```
-
-## Steps
-
-There are two ways to apply vertical scaling.
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. Apply an OpsRequest to the specified cluster. Configure the parameters according to your needs.
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: mysql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. Check the operation status to validate the vertical scaling.
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   If an error occurs, you can troubleshoot with `kubectl describe ops -n demo` command to view the events of this operation.
-
-3. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-  
-<TabItem value="Edit the cluster YAML file" label="Edit the cluster YAML file">
-
-1. Change the configuration of `spec.componentSpecs.resources` in the YAML file. `spec.componentSpecs.resources` controls the requirement and limit of resources and changing them triggers a vertical scaling.
-
-   ```yaml
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   Edit the values of `spec.componentSpecs.resources`.
-
-   ```yaml
-   >
-   ...
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 3
-       resources: # Change the values of resources
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. Check whether the corresponding resources change.
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/docs/user_docs/observability/_category_.yml b/docs/user_docs/observability/_category_.yml
deleted file mode 100644
index 8ca18aa4f..000000000
--- a/docs/user_docs/observability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 8
-label: Observability
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/observability/alert.md b/docs/user_docs/observability/alert.md
deleted file mode 100644
index 29613b894..000000000
--- a/docs/user_docs/observability/alert.md
+++ /dev/null
@@ -1,48 +0,0 @@
----
-title: Configure alert
-description: How to enable alert
-keywords: [mysql, alert, alert message, email alert]
-sidebar_position: 2
----
-
-# Configure alert
-
-## Configure alert
-
-Alerts are mainly used for daily error response to improve system availability. KubeBlocks uses the open-source version of Prometheus to configure alert rules and multiple notification channels. The alert capability of KubeBlocks can meet the operation and maintenance requirements of production-level online clusters.
-
-:::note
-
-The alert function is the same for all engines.
-
-:::
-
-### Alert rules
-
-KubeBlocks uses the open-source version of Prometheus to meet the needs of various data products. These alert rules provide the best practice for cluster operation and maintenance, which further improve alert accuracy and reduce the probability of false negatives and false positives by experience-based smoothing windows, alert thresholds, alert levels, and alert indicators.
-
-Taking PostgreSQL as an example, the alert rules have built-in common abnormal events, such as instance down, instance restart, slow query, connection amount, deadlock, and cache hit rate.
-
-The following example shows PostgreSQL alert rules (refer to [Prometheus](https://prometheus.io/docs/prometheus/latest/querying/basics/) for syntax). When the amount of active connections exceeds 80% of the threshold and lasts for 2 minutes, Prometheus triggers a warning alert and sends it to AlertManager.
-
-```bash
-alert: PostgreSQLTooManyConnections
-  expr: |
-    sum by (namespace,app_kubernetes_io_instance,pod) (pg_stat_activity_count{datname!~"template.*|postgres"})
-    > on(namespace,app_kubernetes_io_instance,pod)
-    (pg_settings_max_connections - pg_settings_superuser_reserved_connections) * 0.8
-  for: 2m
-  labels:
-    severity: warning
-  annotations:
-    summary: "PostgreSQL too many connections (> 80%)"
-    description: "PostgreSQL has too many connections and the value is {{ $value }}. (instance: {{ $labels.pod }})"
-```
-
-Configure alert rules as needed. For more details, please refer to [Prometheus alerting rules](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#defining-alerting-rules).
-
-### Notifications
-
-The alert message notification of KubeBlocks mainly adopts the AlertManager native capability. After receiving the Prometheus alert, KubeBlocks performs steps including deduplication, grouping, silence, suppression, and routing, and finally sends it to the corresponding notification channel.
-
-Configure notification channels as needed. For more details, please refer to [Prometheus alerting configuration](https://prometheus.io/docs/alerting/latest/configuration/).
\ No newline at end of file
diff --git a/docs/user_docs/observability/monitor-database.md b/docs/user_docs/observability/monitor-database.md
deleted file mode 100644
index 4b8edf63d..000000000
--- a/docs/user_docs/observability/monitor-database.md
+++ /dev/null
@@ -1,409 +0,0 @@
----
-title: Monitor database
-description: How to monitor your database
-keywords: [monitor database, monitor a cluster, monitor]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Monitor a database
-
-This tutorial demonstrates how to configure the monitoring function for a PostgreSQL cluster, using Prometheus and Grafana.
-
-## Step 1. Install Prometheus Operator and Grafana
-
-Install the Prometheus Operator and Grafana to monitor the performance of a database. Skip this step if a Prometheus Operator is already installed in your environment.
-
-1. Create a new namespace for Prometheus Operator.
-
-   ```bash
-   kubectl create namespace monitoring
-   ```
-
-2. Add the Prometheus Operator Helm repository.
-
-   ```bash
-   helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-   ```
-
-3. Install the Prometheus Operator.
-
-   ```bash
-   helm install prometheus-operator prometheus-community/kube-prometheus-stack --namespace monitoring
-   ```
-
-4. Verify the deployment of the Prometheus Operator. Make sure all pods are in the Ready state.
-
-   ```bash
-   kubectl get pods -n monitoring
-   ```
-
-5. Access the Prometheus and Grafana dashboards.
-
-   1. Check the service endpoints of Prometheus and Grafana.
-
-       ```bash
-       kubectl get svc -n monitoring
-       ```
-
-   2. Use port forwarding to access the Prometheus dashboard locally.
-
-       ```bash
-       kubectl port-forward svc/prometheus-operator-kube-p-prometheus -n monitoring 9090:9090
-       ```
-
-       You can also access the Prometheus dashboard by opening "http://localhost:9090" in your browser.
-
-   3. Retrieve the Grafana's login credential from the secret.
-
-       ```bash
-       kubectl get secrets prometheus-operator-grafana -n monitoring -o yaml
-       ```
-
-   4. Use port forwarding to access the Grafana dashboard locally.
-
-       ```bash
-       kubectl port-forward svc/prometheus-operator-grafana -n monitoring 3000:80
-       ```
-
-       You can also access the Grafana dashboard by opening "http://localhost:3000" in your browser.
-
-6. Configure the selectors for PodMonitor and ServiceMonitor to match your monitoring requirements.
-
-   Prometheus Operator uses Prometheus CRD to set up a Prometheus instance and to customize configurations of replicas, PVCs, etc.
-
-   To update the configuration on PodMonitor and ServiceMonitor, modify the Prometheus CR according to your needs:
-
-   ```yaml
-   apiVersion: monitoring.coreos.com/v1
-   kind: Prometheus
-   metadata:
-   spec:
-     podMonitorNamespaceSelector: {} # Namespaces to match for PodMonitors discovery
-     #  PodMonitors to be selected for target discovery. An empty label selector
-     #  matches all objects.
-     podMonitorSelector:
-       matchLabels:
-         release: prometheus # Make sure your PodMonitor CR labels matches the selector
-     serviceMonitorNamespaceSelector: {} # Namespaces to match for ServiceMonitors discovery
-     # ServiceMonitors to be selected for target discovery. An empty label selector
-     # matches all objects.
-     serviceMonitorSelector:
-       matchLabels:
-         release: prometheus # Make sure your ServiceMonitor CR labels matches the selector
-   ```
-
-## Step 2. Monitor a database cluster
-
-This section demonstrates how to use Prometheus and Grafana for monitoring a database cluster.
-
-### Enable the monitoring function for a database cluster
-
-#### For a new cluster
-
-Create a new cluster with the following command, ensuring the monitoring exporter is enabled.
-
-:::note
-
-Make sure `spec.componentSpecs.disableExporter` is set to `false` when creating a cluster.
-
-:::
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  clusterDef: postgresql
-  topology: replication
-  componentSpecs:
-    - name: postgresql
-      componentDef: postgresql
-      serviceVersion: "14.7.2"
-      disableExporter: false
-      labels:
-        apps.kubeblocks.postgres.patroni/scope: mycluster-postgresql
-      replicas: 2
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-
-EOF
-```
-
-#### For an existing cluster
-
-If a cluster already exists, you can run the command below to verify whether the monitoring exporter is enabled.
-
-```bash
-kubectl get cluster mycluster -o yaml
-```
-
-View the output.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-...
-spec:
-   ...
-   componentSpecs:
-   ...
-      disableExporter: false
-```
-
-Setting `disableExporter: false` or leaving this field unset enables the monitoring exporter, which is the prerequisite of the monitoring function. If the output shows `disableExporter: true`, you need to change it to `false` to enable the exporter.
-
-Note that updating `disableExporter` will restart all pods in the cluster.
-
-<Tabs>
-
-<TabItem value="kubectl patch" label="kubectl patch" default>
-
-```bash
-kubectl patch cluster mycluster -n demo --type "json" -p '[{"op":"add","path":"/spec/componentSpecs/0/disableExporter","value":false}]'
-```
-
-</TabItem>
-
-<TabItem value="Edit cluster YAML file" label="Edit cluster YAML file">
-
-You can also edit the `cluster.yaml` to enable/disable the monitoring function.
-
-```bash
-kubectl edit cluster mycluster -n demo
-```
-
-Edit the value of `disableExporter`.
-
-```yaml
-...
-componentSpecs:
-...
-    disableExporter: true # Set to `false` to enable exporter
-...
-```
-
-</TabItem>
-
-</Tabs>
-
-When the cluster is running, each Pod should have a sidecar container, named `exporter` running the postgres-exporter.
-
-### Create PodMonitor
-
-1. Query `scrapePath` and `scrapePort`.
-
-   Retrieve the `scrapePath` and `scrapePort` from the Pod's exporter container.
-
-   ```bash
-   kubectl get po mycluster-postgresql-0 -oyaml | yq '.spec.containers[] | select(.name=="exporter") | .ports '
-   ```
-
-   <details>
-
-   <summary>Expected Output</summary>
-
-   ```bash
-   - containerPort: 9187
-     name: http-metrics
-     protocol: TCP
-   ```
-
-   </details>
-
-2. Create `PodMonitor`.
-
-   Apply the `PodMonitor` file to monitor the cluster. Below are examples for different engines and you can edit the values according to your needs.
-
-   <Tabs>
-
-   <TabItem value="ApeCloud MySQL" label="ApeCloud MySQL">
-
-   You can also find the latest example YAML file in the [KubeBlocks Addons repo](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/apecloud-mysql/pod-monitor.yaml).
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # make sure `namespace` matches the settings in `prometheus.spec.podMonitorNamespaceSelector`
-     labels:               # make sure `labels` matches the settings in`prometheus.spec.podMonitorSelector`
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # Define the labels which are transferred from the
-     # associated Kubernetes `Pod` object onto the ingested metrics
-     # set the labels w.r.t your own needs
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - demo
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: mysql
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="MySQL Community Edition" label="MySQL Community Edition">
-
-   You can also find the latest example YAML file in the [KubeBlocks Addons repo](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/mysql/pod-monitor.yaml).
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # make sure `namespace` matches the settings in `prometheus.spec.podMonitorNamespaceSelector`
-     labels:               # make sure `labels` matches the settings in`prometheus.spec.podMonitorSelector`
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # Define the labels which are transferred from the
-     # associated Kubernetes `Pod` object onto the ingested metrics
-     # set the labels w.r.t your own needs
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - demo
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: mysql
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="PostgreSQL" label="PostgreSQL">
-
-   You can also find the latest example YAML file in the [KubeBlocks Addons repo](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/postgresql/pod-monitor.yaml).
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # make sure `namespace` matches the settings in `prometheus.spec.podMonitorNamespaceSelector`
-     labels:               # make sure `labels` matches the settings in`prometheus.spec.podMonitorSelector`
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # Define the labels which are transferred from the
-     # associated Kubernetes `Pod` object onto the ingested metrics
-     # set the labels w.r.t your own needs
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - demo
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: postgresql
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="Redis" label="Redis">
-
-   You can also find the latest example YAML file in the [KubeBlocks Addons repo](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/redis/pod-monitor.yaml).
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # make sure `namespace` matches the settings in `prometheus.spec.podMonitorNamespaceSelector`
-     labels:               # make sure `labels` matches the settings in`prometheus.spec.podMonitorSelector`
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # Define the labels which are transferred from the
-     # associated Kubernetes `Pod` object onto the ingested metrics
-     # set the labels w.r.t your own needs
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - demo
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: redis
-   EOF
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-3. Access the Grafana dashboard.
-
-   Log in to the Grafana dashboard and import the dashboard.
-
-   There is a pre-configured dashboard for PostgreSQL under the `APPS / PostgreSQL` folder in the Grafana dashboard. And more dashboards can be found in the [Grafana dashboard store](https://grafana.com/grafana/dashboards/).
-
-:::note
-
-Make sure the labels (such as the values of path and port in endpoint) are set correctly in the `PodMonitor` file to match your dashboard.
-
-:::
diff --git a/docs/user_docs/overview/_category_.yml b/docs/user_docs/overview/_category_.yml
deleted file mode 100644
index 7465557d7..000000000
--- a/docs/user_docs/overview/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: Overview
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/overview/about-this-manual.md b/docs/user_docs/overview/about-this-manual.md
deleted file mode 100644
index f4096eab8..000000000
--- a/docs/user_docs/overview/about-this-manual.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-title: About this manual
-description: KubeBlocks, kbcli, how to
-keywords: [kubeblocks, overview, introduction]
-sidebar_position: 5
----
-This manual introduces how to operate KubeBlocks with `kbcli`. For advanced users familiar with Kubernetes, this manual also includes guidance on how to operate KubeBlocks using `helm` and `kubectl`.
\ No newline at end of file
diff --git a/docs/user_docs/overview/concept.md b/docs/user_docs/overview/concept.md
deleted file mode 100644
index 25f08bae1..000000000
--- a/docs/user_docs/overview/concept.md
+++ /dev/null
@@ -1,157 +0,0 @@
----
-title: Concepts
-description: KubeBlocks, CRD
-keywords: [kubeblocks, concepts]
-sidebar_position: 2
----
-
-# Concepts
-
-You've already seen the benefits of using unified APIs to represent various databases in the section ["How Unified APIs Reduce Your Learning Curve"](./introduction.md#how-unified-apis-reduce-your-learning-curve). If you take a closer look at those examples, you'll notice two key concepts in the sample YAML files: **Cluster** and **Component**. For instance, `test-mysql` is a Cluster that includes a Component called `mysql` (with a componentDef of `apecloud-mysql`). Similarly, `test-redis` is also a Cluster, and it includes two Components: one called `redis` (with a componentDef of `redis-7`), which has two replicas, and another called `redis-sentinel` (with a componentDef of `redis-sentinel`), which has three replicas.
-
-In this document, we will explain the reasons behind these two concepts and provide a brief introduction to the underlying API (i.e., CRD).
-
-## Motivation of KubeBlocks’ Layered API
-In KubeBlocks, to support the management of various databases through a unified API, we need to abstract the topologies and characteristics of different databases.
-
-We’ve observed that database systems deployed in production environments often use a topology composed of multiple components. For example, a production MySQL cluster might include several Proxy nodes (such as ProxySQL, MaxScale, Vitess, WeScale, etc.) alongside multiple MySQL server nodes (like MySQL Community Edition, Percona, MariaDB, ApeCloud MySQL, etc.) to achieve higher availability and read-write separation. Similarly, Redis deployments typically consist of a primary node and multiple read replicas, managed for high availability via Sentinel. Some users even use twemproxy for horizontal sharding to achieve greater capacity and throughput.
-
-This modular approach is even more pronounced in distributed database systems, where the entire system is divided into distinct components with clear and singular responsibilities, such as data storage, query processing, transaction management, logging, and metadata management. These components interact over the network to ensure strong consistency and transactional guarantees similar to those of a single-node database, enabling complex operations such as load balancing, distributed transactions, and disaster recovery with failover capabilities.
-
-So KubeBlocks employs a design of layered API (i.e. CRDs), consisting of **Cluster** and **Component**, to accommodate the multi-component and highly variable deployment topology of database systems. These abstractions allow us to flexibly represent and manage the diverse and dynamic topologies of database systems when deployed on Kubernetes, and to easily assemble Components into Clusters with the chosen topology.
-
-Components serve as the building blocks of a Cluster. Actually Addon developers can define how multiple Components are assembled into different topologies within the ClusterDefinition (But wait, does that sound complicated? If you're not an Addon developer, you don't need to worry about the details of ClusterDefinition; you just need to know that Addons can provide different topologies for you to choose from). For example, the Redis Addon provides three topologies: "standalone" "replication" and "replication-twemproxy". Users can specify the desired topology when creating a Cluster.
-Here is an example that creates a Redis Cluster with `clusterDefinitionRef` and `topology`:
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: test-redis-use-topology
-  namespace: default
-spec:
-  clusterDefinitionRef: redis
-  topology: replication
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: redis
-    replicas: 2
-    disableExporter: true
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-  - name: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-            - ReadWriteOnce
-          resources:
-            requests:
-              storage: 10Gi
-```
-If you have a sharp eye, you'll notice that by specifying `clusterDefinitionRef` and `topology` in Cluster, you no longer need to specify `componentDef` for each Component.
-
-Lastly, here’s an interesting fact: do you know why this project is called KubeBlocks? You see, through the Component API, we package database containers into standardized building blocks that can be assembled into a database Cluster according to the specified topology and run on Kubernetes. We think this process feels a lot like building with Lego blocks.
-
-## Take a closer look at the KubeBlocks API
-
-The major KubeBlocks CRDs are illustrated in the diagram below. We have specifically highlighted the layered structure of the API. Other important APIs, such as OpsRequest, Backup, and Restore, are not shown in this diagram. They were omitted to keep the focus on the layering, making the diagram clearer. We will explain these additional APIs in other documents.
-
-![KubeBlocks API Layers](kubeblocks_api_layers.png)
-
-KubeBlocks' CRDs can be categorized into two major classes: those for users and those for Addons.
-
-**CRDs for users**
-
-The CRDs for users include Cluster, Component, and InstanceSet. When creating a database cluster with KubeBlocks, these CRs will be generated. Specifically:
-- The Cluster object is created by the user.
-- The Component object is a child resource recursively created by the KubeBlocks Cluster Controller when it detects the Cluster object.
-- The InstanceSet object is a child resource recursively created by the KubeBlocks Component Controller when it detects the Component object. The InstanceSet Controller then recursively creates the Pod and PVC objects.
-
-**CRDs for Addons**
-
-The CRDs for Addons include ClusterDefinition, ComponentDefinition, and ComponentVersion. These CRs are written by Addon developers and bundled within the Addon's Helm chart.
-
-:::note
-
-Although users do not need to write CRs for ClusterDefinition and ComponentDefinition, they do need to use these CRs. As seen in the previous examples of creating a Redis Cluster, when users create a Cluster, they either specify the name of the corresponding ComponentDefinition CR in each Component's `componentDef` or specify the name of the corresponding ClusterDefinition CR in `clusterDefinitionRef` and the desired topology.
-:::
-
-
-### KubeBlocks API for User
-
-#### Cluster
-A Cluster object represents an entire database cluster managed by KubeBlocks. A Cluster can include multiple Components. Users specify the configuration for each Component here, and the Cluster Controller will generate and reconcile corresponding Component objects. Additionally, the Cluster Controller manages all Service addresses that are exposed at the Cluster level.
-
-For distributed databases with a shared-nothing architecture, like Redis Cluster, the Cluster supports managing multiple shards, with each shard managed by a separate Component. This architecture also supports dynamic resharding: if you need to scale out and add a new shard, you simply add a new Component; conversely, if you need to scale in and reduce the number of shards, you remove a Component.
-
-#### Component
-Component is a fundamental building block of a Cluster object. For example, a Redis Cluster can include Components like `redis`, `sentinel`, and potentially a proxy like `twemproxy`.
-
-The Component object is responsible for managing the lifecycle of all replicas within a Component, It supports a wide range of operations including provisioning, stopping, restarting, termination, upgrading, configuration changes, vertical and horizontal scaling, failover, switchover, scheduling configuration, exposing Services, managing system accounts.
-
-Component is an internal sub-object derived from the user-submitted Cluster object. It is designed primarily to be used by the KubeBlocks controllers, users are discouraged from modifying Component objects directly and should use them only for monitoring Component statuses.
-
-#### InstanceSet
-Starting from KubeBlocks v0.9, we have replaced StatefulSet with InstanceSet.
-
-A database instance, or replica, consists of a Pod and several other auxiliary objects (PVC, Service, ConfigMap, Secret). InstanceSet is a Workload CRD responsible for managing a group of instances. In KubeBlocks, all workloads are ultimately managed through InstanceSet. Compared to Kubernetes native Workload CRDs like StatefulSet and Deployment, InstanceSet incorporates more considerations and designs specific to the database domain, such as each replica's role, higher availability requirements, and operational needs like taking specific nodes offline.
-
-### KubeBlocks API for Addon
-
-:::note
-
-Only Addon developers need to understand the ClusterDefinition and ComponentDefinition APIs. As a result, KubeBlocks users can easily bypass these two APIs.
-:::
-
-#### ClusterDefinition
-ClusterDefinition is an API used to define all available topologies of a database cluster, offering a variety of topological configurations to meet diverse deployment needs and scenarios.
-
-Each topology includes a list of components, each linked to a ComponentDefinition, which enhances reusability and reduce redundancy. For example, ComponentDefinition of widely used components such as etcd and Zookeeper can be defined once and reused across multiple ClusterDefinitions, simplifying the setup of new systems.
-
-Additionally, ClusterDefinition also specifies the sequence of startup, upgrade, and shutdown for components, ensuring a controlled and predictable management of component lifecycles.
-
-#### ComponentDefinition
-ComponentDefinition serves as a reusable blueprint or template for creating Components, encapsulating essential static settings such as Component description, Pod templates, configuration file templates, scripts, parameter lists, injected environment variables and their sources, and event handlers. ComponentDefinition works in conjunction with dynamic settings from the Component, to instantiate Components during Cluster creation.
-
-Key aspects that can be defined in a ComponentDefinition include:
-
-- PodSpec template: Specifies the PodSpec template used by the Component.
-- Configuration templates: Specify the configuration file templates required by the Component.
-- Scripts: Provide the necessary scripts for Component management and operations.
-- Storage volumes: Specify the storage volumes and their configurations for the Component.
-- Pod roles: Outlines various roles of Pods within the Component along with their capabilities.
-- Exposed Kubernetes Services: Specify the Services that need to be exposed by the Component.
-- System accounts: Define the system accounts required for the Component.
-
-ComponentDefinitions also enable defining reactive behaviors of the Component in response to events, such as member join/leave, Component addition/deletion, role changes, switch over, and more. This allows for automatic event handling, thus encapsulating complex behaviors within the Component.
-
-
-## What's Addon
-
-KubeBlocks uses Addons to extend support for various database engines. An Addon represents an extension for a specific database engine, such as MySQL Addon, PostgreSQL Addon, Redis Addon, MongoDB Addon, and Kafka Addon. There are currently over 30 Addons available in the KubeBlocks repository.
-
-An Addon includes CRs (Custom Resources) based on the ClusterDefinition, ComponentDefinition, and ComponentVersion CRDs, as well as some ConfigMaps (used as configuration templates or script file templates), script files, CRs defining how to perform backup and restore operations, and Grafana dashboard JSON objects.
-
-The Addon will be packaged and installed in the form of a Helm chart. After the user installs a certain database engine's addon, they can reference the ClusterDefinition CR and ComponentDefinition CR included in the Addon when creating a Cluster, allowing them to create a Cluster for the corresponding database engine.
diff --git a/docs/user_docs/overview/introduction.md b/docs/user_docs/overview/introduction.md
deleted file mode 100644
index 27d5e92d4..000000000
--- a/docs/user_docs/overview/introduction.md
+++ /dev/null
@@ -1,233 +0,0 @@
----
-title: Introduction
-description: introduction to KubeBlocks
-keywords: [kubeblocks, overview, introduction]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Introduction
-
-## What is KubeBlocks
-
-KubeBlocks is an open-source Kubernetes operator for databases (more specifically, for stateful applications, including databases and middleware like message queues), enabling users to run and manage multiple types of databases on Kubernetes. As far as we know, most database operators typically manage only one specific type of database. For example:
-- CloudNativePG, Zalando, CrunchyData, StackGres operator can manage PostgreSQL
-- Strimzi manages Kafka
-- Oracle and Percona MySQL operator manage MySQL
-
-In contrast, KubeBlocks is designed to be a **general-purpose database operator**. This means that when designing the KubeBlocks API, we didn’t tie it to any specific database. Instead, we abstracted the common features of various databases, resulting in a universal, engine-agnostic API. Consequently, the operator implementation developed around this abstract API is also agnostic to the specific database engine.
-
-![Design of KubeBlocks, a general purpose database operator](kubeblocks_general_purpose_arch.png)
-
-In above diagram, Cluster, Component, and InstanceSet are all CRDs provided by KubeBlocks. If you'd like to learn more about them, please refer to [concepts](concept.md).
-
-KubeBlocks offers an Addon API to support the integration of various databases. For instance, we currently have the following KubeBlocks Addons for mainstream open-source database engines:
-- MySQL
-- PostgreSQL
-- Redis
-- MongoDB
-- Kafka
-- RabbitMQ
-- Minio
-- Elasticsearch
-- StarRocks
-- Qdrant
-- Milvus
-- ZooKeeper
-- etcd
-- ...
-
-For a detailed list of Addons and their features, please refer to [supported addons](supported-addons.md).
-
-The unified API makes KubeBlocks an excellent choice if you need to run multiple types of databases on Kubernetes. It can significantly reduce the learning curve associated with mastering multiple operators.
-
-## How unified APIs reduce your learning curve
-
-Here is an example of how to use KubeBlocks' Cluster API to write a YAML file and create a MySQL Cluster with three replicas.
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: test-mysql
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: mysql
-    componentDef: apecloud-mysql
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-```
-Then, here comes the magic: with just a few modifications to some fields, you can create a PostgreSQL Cluster with two replicas! The same applies to MongoDB and Redis (the Redis example is slightly longer because it creates two components: redis-server and sentinel), and this approach works with a long list of engines.
-
-<Tabs>
-<TabItem value="PostgreSQL" label="PostgreSQL" default>
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: test-postgresql
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: postgresql
-    componentDef: postgresql
-    replicas: 2
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-```
-
-</TabItem>
-<TabItem value="MongoDB" label="MongoDB">
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: test-mongodb
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: mongodb
-    componentDef: mongodb
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-```
-
-</TabItem>
-<TabItem value="Redis" label="Redis">
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: test-redis
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: redis
-    componentDef: redis-7
-    replicas: 2
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-  - name: redis-sentinel
-    componentDef: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-            - ReadWriteOnce
-          resources:
-            requests:
-              storage: 10Gi
-```
-
-</TabItem>
-</Tabs>
-
-This means that managing multiple databases on Kubernetes becomes simple, efficient, and standardized, saving you a lot of time that would otherwise be spent searching through manuals and API references.
-
-## Key features
-
-- Provisioning and destroy database clusters.
-- Start, stop, and restart database clusters
-- Supports selecting a deployment topology provided by the engine's Addon when creating a cluster, such as Redis with options for Sentinel-based read-write separation or Redis Cluster; MySQL with optional Proxy for read-write separation and HA solutions, e.g. the built-in Raft consensus plugin, external etcd as the coordinator, or Orchestrator.
-- Supports having different configurations for multiple replicas within a single database cluster. This is common, for example, in a MySQL cluster where the primary instance uses 8 CPUs while the read replicas use 4 CPUs. Kubernetes' StatefulSet does not support this capability.
-- Flexible Network Management:
-  - Expose database access endpoints as Services (ClusterIP, LoadBalancer, NodePort) Dynamically.
-  - Support for HostNetwork.
-  - Some databases support access through a so-called Smart Client, which redirects requests to other nodes or handles read-write separation based on the node addresses returned by the server. Databases that with the Smart Client access mode include Redis, MongoDB, and Kafka. Additionally, some databases, such as etcd, have clients that implement automatic failover between replicas. For these databases, KubeBlocks supports assigning a service address to each Pod (Pod Service).
-- Supports a Wide Range of Day-2 Operations:
-  - Horizontal scaling (increasing and decreasing the number of replicas)
-  - Vertical scaling (adjusting CPU and memory resources for each replica)
-  - PVC Volume capacity expansion
-  - Backup and restore capabilities
-  - Configuration changes (and hot reload, if possible)
-  - Parameter modification
-  - Switchover
-  - Rolling upgrades
-  - Decommission a specific replica
-  - Minor version upgrades
-- In addition to the declarative API, KubeBlocks also offers an OpsRequest API for executing one-time operational tasks on database clusters. The OpsRequest API supports additional features such as queuing, concurrency control, progress tracking, and operation rollback.
-- Observability: Supports integration with Prometheus and Grafana.
-- Includes a powerful and intuitive command-line tool `kbcli`, which makes operating KubeBlocks CRs on Kubernetes more straightforward and reduces keystrokes. For those well-versed in Kubernetes, kbcli can be used alongside kubectl to provide a more streamlined way of performing operations.
-
-## Deployment Architecture
-Below is a typical diagram illustrating the deployment of KubeBlocks in a cloud environment.
-
-Kubernetes should be deployed in an environment where nodes can communicate with each other over the network (e.g., within a VPC). The KubeBlocks Operator is deployed in a dedicated namespace (kb-system), while database instances are deployed in user-specified namespaces.
-
-In a production environment, we recommend deploying the KubeBlocks Operator (along with Prometheus and Grafana, if installed) on different nodes from the databases. By default, multiple replicas of a database cluster are scheduled to run on different nodes using anti-affinity rules to ensure high availability. Users can also configure AZ-level anti-affinity to distribute database replicas across different availability zones (AZs), thereby enhancing disaster recovery capabilities.
-
-Each database replica runs within its own Pod. In addition to the container running the database process, the Pod includes several sidecar containers: one called `lorry` (which will be renamed to kbagent starting from KubeBlocks v1.0) that executes Action commands from the KubeBlocks controller, and another called `config-manager` that manages database configuration files and supports hot updates. Optionally, The engine's Addon may have an exporter container to collect metrics for Prometheus monitoring.
-
-![KubeBlocks Architecture](../../img/kubeblocks-architecture-ha.png)
diff --git a/docs/user_docs/overview/kubeblocks_api_layers.png b/docs/user_docs/overview/kubeblocks_api_layers.png
deleted file mode 100644
index f263ec7d6..000000000
Binary files a/docs/user_docs/overview/kubeblocks_api_layers.png and /dev/null differ
diff --git a/docs/user_docs/overview/kubeblocks_general_purpose_arch.png b/docs/user_docs/overview/kubeblocks_general_purpose_arch.png
deleted file mode 100644
index b5dbb9331..000000000
Binary files a/docs/user_docs/overview/kubeblocks_general_purpose_arch.png and /dev/null differ
diff --git a/docs/user_docs/overview/kubernetes_and_operator_101.md b/docs/user_docs/overview/kubernetes_and_operator_101.md
deleted file mode 100644
index 632231829..000000000
--- a/docs/user_docs/overview/kubernetes_and_operator_101.md
+++ /dev/null
@@ -1,116 +0,0 @@
----
-title: Kubernetes and Operator 101
-description: things about K8s you need to know 
-keywords: [K8s, operator, concept]
-sidebar_position: 3
----
-
-# Kubernetes and Operator 101
-
-# K8s
-
-What is Kubernetes? Some say it's a container orchestration system, others describe it as a distributed operating system, while some view it as a multi-cloud PaaS (Platform as a Service) platform, and others consider it a platform for building PaaS solutions.
-
-This article will introduce the key concepts and building blocks within Kubernetes.
-
-## K8s Control Plane
-
-The Kubernetes Control Plane is the brain and heart of Kubernetes. It manages the overall operation of the cluster, including processing API requests, storing configuration data, and ensuring the cluster's desired state. Key components include the API Server (which handles communication), etcd (which stores all cluster data), the Controller Manager (which enforces the desired state), the Scheduler (which assigns workloads to Nodes), and the Cloud Controller Manager (which manages cloud-specific integrations, such as load balancers, storage, and networking). Together, these components orchestrate the deployment, scaling, and management of containers across the cluster.
-
-## Node
-
-Some describe Kubernetes as a distributed operating system, capable of managing many Nodes. A Node is a physical or virtual machine that acts as a worker within the cluster. Each Node runs essential services, including the container runtime (such as Docker or containerd), the kubelet, and the kube-proxy. The kubelet ensures that containers are running as specified in a Pod, the smallest deployable unit in Kubernetes. The kube-proxy handles network routing, maintaining network rules, and enabling communication between Pods and services. Nodes provide the computational resources needed to run containerized applications and are managed by the Kubernetes Master, which distributes tasks, monitors Node health, and maintains the desired state of the cluster.
-
-:::note
-
-In certain contexts, the term "Node" can be confusing when discussing Kubernetes (K8s) alongside databases. In Kubernetes, a "Node" refers to a physical or virtual machine that is part of the Kubernetes cluster and serves as a worker to run containerized applications. However, when a database is running within Kubernetes, the term "Database Node" typically refers to a Pod that hosts a database instance.
-
-In the KubeBlocks documentation, "Node" generally refers to a Database Node. If we are referring to a Kubernetes Node, we will explicitly specify it as a "K8s Node" to avoid any confusion.
-
-:::
-
-## kubelet
-
-The kubelet is the agent that the Kubernetes Control Plane uses to manage each Node in the cluster. It ensures that containers are running in a Pod as defined by the Kubernetes control plane. The kubelet continuously monitors the state of the containers, making sure they are healthy and running as expected. If a container fails, the kubelet attempts to restart it according to the specified policies.
-
-## Pod
-
-In Kubernetes, a Pod is somewhat analogous to a virtual machine but is much more lightweight and specialized. It is the smallest deployable unit in Kubernetes.
-
-It represents one or more containers that are tightly coupled and need to work together, along with shared storage (volumes), network resources, and a specification for how to run the containers. These containers can communicate with each other using localhost and share resources like memory and storage.
-
-Kubernetes dynamically manages Pods, ensuring they are running as specified and automatically restarting or replacing them if they fail. Pods can be distributed across Nodes for redundancy, making them fundamental to deploying and managing containerized applications (including databases) in Kubernetes.
-
-## Storage Class
-
-When creating disks for workloads inside a Pod, such as databases, you may need to specify the type of disk media, whether it's HDD or SSD. In cloud environments, there are often more options available. For example, AWS EBS offers various volume types, such as General Purpose SSD (gp2/gp3), Provisioned IOPS SSD (io1/io2), and Throughput Optimized HDD (st1). In Kubernetes, you can select the desired disk type through a StorageClass.
-
-## PVC
-
-A Persistent Volume Claim (PVC) in Kubernetes is a request for storage by a user. A PVC is essentially a way to ask for storage with specific characteristics, such as storage class, size and access modes (e.g., read-write or read-only). PVCs enable Pods to use storage without needing to know the details of the underlying infrastructure.
-
-In K8s, to use this storage, users create a PVC. When a PVC is created, Kubernetes looks for a StorageClass that matches the request. If a matching StorageClass is found, it automatically provisions the storage according to the defined parameters—whether it's SSD, HDD, EBS or NAS. If a PVC does not specify a StorageClass, Kubernetes will use the default StorageClass (if one is configured) to provision storage.
-
-## CSI
-
-In Kubernetes, various StorageClasses are provided through the Container Storage Interface (CSI), which is responsible for provisioning the underlying storage "disks" used by applications. CSI functions similarly to a "disk driver" in Kubernetes, enabling the platform to adapt to and integrate with a wide range of storage systems, such as local disks, AWS EBS, and Ceph. These StorageClasses, and the associated storage resources, are provisioned by specific CSI drivers that handle the interaction with the underlying storage infrastructure.
-
-CSI is a standard API that enables Kubernetes to interact with various storage systems in a consistent and extensible manner. CSI drivers, created by storage vendors or the Kubernetes community, expose essential storage functions like dynamic provisioning, attaching, mounting, and snapshotting to Kubernetes.
-
-When you define a StorageClass in Kubernetes, it typically specifies a CSI driver as its provisioner. This driver automatically provisions Persistent Volumes (PVs) based on the parameters in the StorageClass and associated Persistent Volume Claims (PVCs), ensuring the appropriate type and configuration of storage—whether SSD, HDD, or otherwise—is provided for your applications.
-
-## PV
-
-In Kubernetes, a Persistent Volume (PV) represents a storage resource that can be backed by various systems like local disks, NFS, or cloud-based storage (e.g., AWS EBS, Google Cloud Persistent Disks), typically managed by different CSI drivers.
-
-A PV has its own lifecycle, independent of the Pod, and is managed by the Kubernetes control plane. It allows data to persist even if the associated Pod is deleted. PVs are bound to Persistent Volume Claims (PVCs), which request specific storage characteristics like size and access modes, ensuring that applications receive the storage they require.
-
-In summary, PV is the actual storage resource, while PVC is a request for storage. Through the StorageClass in the PVC, it can be bound to a PV provisioned by different CSI drivers.
-
-## Service
-
-In Kubernetes, a Service acts as a load balancer. It defines a logical set of Pods and provides a policy for accessing them. Since Pods are ephemeral and can be dynamically created and destroyed, their IP addresses are not stable. A Service resolves this issue by providing a stable network endpoint (a virtual IP address, known as a ClusterIP) that remains constant, allowing other Pods or external clients to communicate with the set of Pods behind the Service without needing to know their specific IP addresses.
-
-Service supports different types: ClusterIP (internal cluster access), NodePort (external access via `<NodeIP>:<NodePort>`), LoadBalancer (exposes the Service externally using a cloud provider's load balancer), and ExternalName (maps the Service to an external DNS).
-
-## ConfigMap
-
-A ConfigMap is used to store configuration data in key-value pairs, allowing you to decouple configuration from application code. This way, you can manage application settings separately and reuse them across multiple environments. ConfigMaps can be used to inject configuration data into Pods as environment variables, command-line arguments, or configuration files. They provide a flexible and convenient way to manage application configurations without hardcoding values directly into your application container.
-
-## Secret
-
-A Secret is used to store sensitive data such as passwords, tokens, or encryption keys. Secrets allow you to manage confidential information separately from your application code and avoid exposing sensitive data in your container images. Kubernetes Secrets can be injected into Pods as environment variables or mounted as files, ensuring that sensitive information is handled in a secure and controlled manner. 
-
-However, Secrets are not encrypted by default—they are simply base64-encoded, which does not provide real encryption. They should still be used with care, ensuring proper access controls are in place.
-
-## CRD
-
-If you want to manage database objects using Kubernetes, you need to extend the Kubernetes API to describe the database objects you're managing. This is where the CRD (Custom Resource Definition) mechanism comes in, allowing you to define custom resources specific to your use case, such as database clusters or backups, and manage them just like native Kubernetes resources.
-
-## CR
-
-A Custom Resource (CR) is an instance of a Custom Resource Definition (CRD). It represents a specific configuration or object that extends the Kubernetes API. CRs allow you to define and manage custom resources, such as databases or applications, using Kubernetes' native tools. Once a CR is created, Kubernetes controllers or Operators monitor it and perform actions to maintain the desired state.
-
-CRD and CR are the foundation for developing a Kubernetes Operator. CRDs are often used to implement custom controllers or operators, allowing for continuously watches for changes to CRs (representing, for example, database clusters) and automatically performs actions.
-
-## What is Kubernetes Operator?
-
-A Kubernetes Operator is a software, typically composed of one or more controllers,  that automates the management of complex applications by translating changes made to a Custom Resource (CR) into actions on native Kubernetes objects, such as Pods, Services, PVCs, ConfigMaps, and Secrets.
-
-- Input: User modifications to the CR.
-- Output: Corresponding changes to underlying Kubernetes resources or interactions with external systems (e.g., writing to a database or calling APIs), depending on the requirements of the managed application.
-
-The Operator continuously watches the state of these Kubernetes objects. When changes occur (e.g., a Pod crashes), the Operator automatically takes corrective actions, like recreating the Pod or adjusting traffic (e.g., updating Service Endpoints).
-
-In essence, a Kubernetes Operator encapsulates complex operational knowledge into software, automating tasks like deployment, scaling, upgrades, and backups, ensuring the application consistently maintains its desired state without manual intervention.
-
-## Helm and Helm Chart
-
-Helm is a popular package manager for Kubernetes that helps manage and deploy applications. It packages all the necessary Kubernetes resources into a single Helm Chart, allowing you to install applications with a single command (helm install). Helm also handles configuration management and updates (helm upgrade), making the entire lifecycle of the application much easier to manage. 
-Key components of a Helm Chart:
-
-- Templates: YAML files with placeholders that define Kubernetes resources (like Pods, Services, and ConfigMaps).
-- Values.yaml: A file where users specify default values for the templates, allowing easy customization. Helm allows you to take an existing chart and override the default values using values.yaml or command-line flags, enabling you to provide environment-specific configurations without modifying the underlying templates.
-- Chart.yaml: Metadata about the chart, including the name, version, and description.
-
-Helm integrates well with CI/CD tools like Jenkins, GitLab CI, and GitHub Actions. It can be used to automate deployments and rollbacks as part of a continuous delivery pipeline, ensuring that applications are consistently deployed across different environments.
diff --git a/docs/user_docs/overview/supported-addons.md b/docs/user_docs/overview/supported-addons.md
deleted file mode 100644
index 95acd57f1..000000000
--- a/docs/user_docs/overview/supported-addons.md
+++ /dev/null
@@ -1,223 +0,0 @@
----
-title: Supported Addons 
-description: Addons supported by KubeBlocks
-keywords: [addons, enable, KubeBlocks, prometheus, s3, alertmanager,]
-sidebar_position: 4
-sidebar_label: Supported addons 
----
-
-# Supported Addons
-
-KubeBlocks uses Addons to extend support for various database engines. And there are currently over 30 Addons available in the KubeBlocks repository, which can be further categorized as follows sections.
-
-For installing and enabling Addons, refer to [Addon installation tutorial](./../installation/install-addons.md).
-
-## Relational Databases
-
-MySQL and PostgreSQL are the two most popular open-source relational databases in the world, and they have branches/variants.
-
-### MySQL and its variants
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                                                                                                                                                                                                             |
-|:----------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| mysql           | This addon uses the community edition MySQL image officially released by Oracle.                                                                                                                                                                                                                                                                                        |
-| apecloud-mysql  | ApeCloud MySQL is a free, fully compatible drop-in replacement for MySQL Community Edition, offering enhanced high availability through a RAFT protocol replication plugin. The image is provided by ApeCloud. Additionally, ApeCloud MySQL includes an open-source proxy called WeScale, which provides features such as read-write splitting and connection pooling.  |
-| mariadb         | MariaDB is a high performance open source relational database management system that is widely used for web and application servers.                                                                                                                                                                                                                                    |
-
-**Supported Features**
-
-:::note
-
-The versions listed below may not be up-to-date, and some supported versions might be missing. For the latest addon versions, please refer to the [KubeBlocks addon GitHub repo](https://github.com/apecloud/kubeblocks-addons).
-
-:::
-
-| Addon (v0.9.0)     |           Supported Versions           | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover | 
-|:-------------------:|:--------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| mysql               | <p>5.7.44</p><p>8.0.33</p><p>8.4.2</p> | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | ✔️      | ✔️              | ✔️    | ✔️      | N/A                         | ✔️       | ✔️        | ✔️          |
-| apecloud-mysql     |             <p>8.0.30</p>              | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | ✔️      |✔️               | ✔️    | ✔️      | N/A                         | ✔️       | ✔️        | ✔️          |
-| mariadb             |                10.6.15                 | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-### Postgresql and its variants
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                  |
-|:----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| postgresql      | This addon provides PostgreSQL services using the Spilo image with Patroni for high availability (HA).                                                                       |
-| apecloud-postgresql | ApeCloud PostgreSQL is a free, fully compatible drop-in replacement for PostgreSQL,  offering enhanced high availability through a RAFT protocol replication plugin.         |
-| vanilla-postgresql | This Addon is based on the vanilla PostgreSQL, providing high availability capabilities for native PostgreSQL and its variants. |
-| orioledb        | OrioleDB is a new storage engine for PostgreSQL, bringing a modern approach to database capacity, capabilities and performance to the world's most-loved database platform.  |
-| neon            | Neon is Serverless Postgres.                                                                                                                                                 |
-
-**Supported Features**
-
-| Addon (v0.9.0)     |                                            Supported Versions                                             | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:---------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| postgresql |             <p>12.14.0</p><p>12.14.1</p><p>12.15.0</p><p>14.7.2</p><p>14.8.0</p><p>15.7.0</p>             | ✔️ | ✔️                | ✔️            | ✔️                | ✔️                | ✔️      | ✔️              | ✔️    | ✔️      | ✔️                           | ✔️       | ✔️        | ✔️          |
- apecloud-postgresql |                                                  14.11.0                                                  | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | ✔️      | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| vanilla-postgresql |     <p>12.15.0</p><p>14.7.0</p><p>15.6.1138</p><p>15.7.0</p>                    | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | ✔️    | ✔️            | ✔️  | ✔️    | N/A                         | ✔️     |✔️      | ✔️        |
-| orioledb            |                                               14.7.2-beta1                                                | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| neon | <p>neon-broker-1.0.0</p><p>neon-compute-1.0.0</p><p>neon-pageserver-1.0.0</p><p>neon-safekeeper-1.0.0</p> | ✔️ | N/A | N/A    | N/A              | N/A              | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## NoSQL
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                                                                                                                                                                                    |
-|:----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| mongodb         | MongoDB is a document-oriented NoSQL database used for high volume data storage.                                                                                                                                                                                                                                                               |
-| redis           | Redis is a fast, open source, in-memory, key-value data store.                                                                                                                                                                                                                                                                                 |
-| etcd            | etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines.                                                                                                                                                                |
-| zookeeper       | Apache ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.                                                                                                                                                                              |
-
-
-**Supported Features**
-
-
-| Addon (v0.9.0)     |                                                                             Supported Versions                                                                             | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| mongodb      |                                               <p>4.0.28</p><p>4.2.24</p><p>4.4.29</p><p>5.0.28</p><p>6.0.16</p><p>7.0.12</p>                                               | ✔️ | ✔️                | ✔️            | ✔️                | ✔️                | ✔️      | ✔️              | ✔️    | ✔️      | N/A                         | N/A     | ✔️        | ✔️          |
-| redis  | <p>redis-7.0.6</p><p>redis-7.2.4</p><p>redis-cluster-7.0.6</p><p>redis-cluster-7.2.4</p><p>redis-sentinel-7.0.6</p><p>redis-sentinel-7.2.4</p><p>redis-twemproxy-0.5.0</p> | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | ✔️      | ✔️              | ✔️    | ✔️      | N/A                         | ✔️       | ✔️        | N/A        |
-| etcd                |                                                                         <p>3.5.15</p><p>3.5.6</p>                                                                          | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| zookeeper |                                                       <p>3.4.14</p><p>3.6.4</p><p>3.7.2</p><p>3.8.4</p><p>3.9.2</p>                                                        | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | ✔️    | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-
-
-## OLAP Systems
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                                                                                                                                                                                    |
-|:----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| elasticsearch   | Elasticsearch is a distributed, RESTful search engine optimized for speed and relevance on production-scale workloads.                                                                                                                                                                                                                         |
-| starrocks-ce    | StarRocks is a next-gen, high-performance analytical data warehouse that enables real-time, multi-dimensional, and highly concurrent data analysis.                                                                                                                                                                                            |
-| clickhouse      | ClickHouse is a column-oriented database that enables its users to generate powerful analytics, using SQL queries, in real-time.                                                                                                                                                                                                               |
-| opensearch      | Open source distributed and RESTful search engine.                                                                                                                                                                                                                                                                                             |
-
-**Supported Features**
-
-| Addon (v0.9.0) |                                                Supported Versions                                                | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:--------------:|:----------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| elasticsearch  |                       <p>7.10.1</p><p>7.7.1</p><p>7.8.1</p><p>8.1.3</p><p>8.8.2 </p>8.8.2                        | ✔️    | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-|  starrocks-ce  | <p>starrocks-ce-be-3.2.2</p><p>starrocks-ce-be-3.3.0</p><p>starrocks-ce-fe-3.2.2</p><p>starrocks-ce-fe-3.3.0</p> | ✔️      | ✔️   | ✔️  | ✔️    | ✔️        | N/A    | N/A       | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-|   clickhouse   |                                                      22.9.4                                                      | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| opensearch          |                                                      2.7.0                                                       | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## Distributed SQL Databases
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                               |
-|:----------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| tidb            | TiDB is a MySQL-compatible distributed database, with the SQL layer developed in Go, the storage layer based on RocksDB, and the transaction model using Percolator. Provided by PingCap. |
-| oceanbase-ce    | OceanBase Community Edition is a MySQL-compatible distributed database developed in C++.                                                                                                  |
-| polardb-x       | PolarDB-X Community Edition is a MySQL-compatible distributed database that supports horizontal scaling based on MySQL. Provided by Alibaba Cloud, it is open-source.                     |
-
-
-**Supported Features**
-
-
-| Addon (v0.9.0)     |                                                                   Supported Versions                                                                   | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| tidb   | <p>6.5.10</p><p>7.1.5</p><p>7.5.2</p><p>tidb-pd-6.5.10</p><p>tidb-pd-7.1.5</p><p>tidb-pd-7.5.2</p><p>tikv-6.5.10</p><p>tikv-7.1.5</p><p>tikv-7.5.2</p> | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| oceanbase           |                                                                         4.3.0                                                                          | N/A              | ✔️                | ✔️            | N/A              | N/A              |        | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| polardb-x           |                                                                          2.3                                                                           | ✔️                | ✔️                | N/A          | ✔️                | N/A              | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## Message Queues
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                                                                |
-|:----------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| kafka           | Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications.          <br/>|
-| rabbitmq        | RabbitMQ is a reliable and mature messaging and streaming broker.                                                                                                                                                          |
-| pulsar          | Apache Pulsar is an open-source, distributed messaging and streaming platform.                                                                                                                                             |
-
-
-
-**Supported Features**
-
-
-| Addon (v0.9.0)     | Supported Versions                                                    | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:---------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| kafka               | <p>kafka-broker-3.3.2</p><p>kafka-combine-3.3.2</p><p>kafka-controller-3.3.2</p><p>kafka-exporter-1.6.0</p> | ✔️ | ✔️ | ✔️ | ✔️       | ✔️                | N/A    | N/A            | N/A  | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-| rabbitmq            | <p>3.13.2</p><p>3.12.14</p><p>3.11.28</p><p>3.10.25</p><p>3.9.29</p><p>3.8.14</p>    | ✔️   | ✔️  | ✔️            | ✔️                | ✔️                | ✔️      | N/A            | N/A  | N/A    | N/A                         | Managed by the RabbitMQ Management system.     | ✔️      | ✔️        |
-| pulsar | <p>pulsar-bkrecovery-2.11.2</p><p>pulsar-bkrecovery-3.0.2</p><p>pulsar-bookkeeper-2.11.2</p><p>pulsar-bookkeeper-3.0.2</p><p>pulsar-broker-2.11.2</p><p>pulsar-broker-3.0.2</p><p>pulsar-proxy-2.11.2</p><p>pulsar-proxy-3.0.2</p><p>pulsar-zookeeper-2.11.2</p><p>pulsar-zookeeper-3.0.2</p>  | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-
-## Vector Databases
-
-**Addon List**
-
-| Addons          | Description                                                                                |
-|:----------------|:-------------------------------------------------------------------------------------------|
-| qdrant          | Qdrant is a vector database & vector similarity search engine.                             |
-| weaviate        | Weaviate is an open-source vector database.                                                |
-| milvus          | Milvus is a flexible, reliable, & blazing-fast cloud-native, open-source vector database.  |
-
-
-**Supported Features**
-
-| Addon (v0.9.0)     | Supported Versions                                                    | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:---------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| qdrant  | <p>1.10.0</p><p>1.5.0</p><p>1.7.3</p><p>1.8.1</p><p>1.8.4</p>         | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | ✔️              | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| weaviate            | 1.23.1                                                    | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-| milvus              | 2.3.2                                                     | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## Time Series Databases
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                                     |
-|:----------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| influxdb        | InfluxDB enables real-time analytics by serving as a purpose-built database that optimizes processing and scaling for large time series data workloads.                                         |
-| victoria-metrics  | VictoriaMetrics is a fast, cost-effective and scalable monitoring solution and time series database.                                                                                            |
-| greptimedb      | GreptimeDB is an open-source time-series database with a special focus on scalability, analytical capabilities and efficiency.                                                                  |
-| tdengine        | TDengine™ is an industrial data platform purpose-built for the Industrial IoT, combining a time series database with essential features like stream processing, data subscription, and caching. |
-
-
-
-**Supported Features**
-
-
-| Addon (v0.9.0)     | Supported Versions                                                    | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:---------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| influxdb            | 2.7.4                                                     | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| victoria-metrics    | 1.0.0                                                     |                  |                  |              |                  |                  |        |                |      |        |                             |         |          |            |
-| greptimedb          | 0.3.2                                                     | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| tdengine            | 3.0.5                                                     | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## Graph Databases
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                    |
-|:----------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| nebula          | NebulaGraph is an open source graph database that can store and process graphs with trillions of edges and vertices. |
-
-
-
-**Supported Features**
-
-
-| Addon (v0.9.0)     | Supported Versions                                                    | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:---------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| nebula              | 3.5.0                                                     | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## Storage System
-
-**Addon List**
-
-| Addons          | Description                                                                                                                                                                                                                                                                                                                                  |
-|:----------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| minio           | MinIO is an object storage solution that provides an Amazon Web Services S3-compatible API and supports all core S3 features. |
-
-
-**Supported Features**
-
-
-| Addon (v0.9.0)     | Supported Versions                                                    | Vscale           | Hscale           | Volumeexpand | Stop/Start       | Restart          | Expose | Backup/Restore | Logs | Config | Upgrade (DB engine version) | Account | Failover | Switchover |
-|:-------------------:|:---------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| minio               | RELEASE.2024-06-29T01-20-47Z                              | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
diff --git a/docs/user_docs/try-out-on-playground/_category_.yml b/docs/user_docs/try-out-on-playground/_category_.yml
deleted file mode 100644
index 9099e0ac0..000000000
--- a/docs/user_docs/try-out-on-playground/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: Try out KubeBlocks with Playground
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/try-out-on-playground/try-kubeblocks-on-cloud.md b/docs/user_docs/try-out-on-playground/try-kubeblocks-on-cloud.md
deleted file mode 100644
index 3af72778a..000000000
--- a/docs/user_docs/try-out-on-playground/try-kubeblocks-on-cloud.md
+++ /dev/null
@@ -1,467 +0,0 @@
----
-title: Try out KubeBlocks on Cloud
-description: How to run Playground on Cloud
-keywords: [Playground, try out, cloud]
-sidebar_position: 1
-sidebar_label: Try out KubeBlocks on cloud
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Try out KubeBlocks on Cloud
-
-This guide walks you through the quickest way to get started with KubeBlocks on cloud, demonstrating how to create a demo environment (Playground) with one command.
-
-## Preparation
-
-When deploying KubeBlocks on the cloud, cloud resources are initialized with the help of [the terraform script](https://github.com/apecloud/cloud-provider). `kbcli` downloads the script and stores it locally, then calls the terraform commands to initialize a fully-managed Kubernetes cluster and deploy KubeBlocks on this cluster.
-
-<Tabs>
-<TabItem value="AWS" label="AWS" default>
-
-### Before you start to try KubeBlocks on AWS
-
-Make sure you have all the followings prepared.
-
-* [Install AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
-* [Install kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
-* [Install kbcli](./../installation/install-kbcli.md)
-
-### Configure access key
-
-**Option 1.** Use `aws configure`.
-
-Fill in an access key and run the command below to authenticate the requests.
-
-```bash
-aws configure
-AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
-AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
-```
-
-You can refer to [Quick configuration with aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) for detailed information.
-
-**Option 2.** Use environment variables.
-
-```bash
-export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
-export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
-```
-
-### Initialize Playground
-
-```bash
-kbcli playground init --cloud-provider aws --region us-west-2
-```
-
-* `cloud-provider` specifies the cloud provider.
-* `region` specifies the region to deploy a Kubernetes cluster.
-   You can find the region list on [the official website](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/?nc1=h_ls).
-
-During the initialization, `kbcli` clones [the GitHub repository](https://github.com/apecloud/cloud-provider) to the directory `~/.kbcli/playground`, installs KubeBlocks, and creates a MySQL cluster. After executing the `kbcli playground init` command, kbcli automatically switches the current context of kubeconfig to the new Kubernetes cluster.
-Run the command below to view the created cluster.
-
-```bash
-# View kbcli version
-kbcli version
-
-# View the cluster list
-kbcli cluster list
-```
-
-:::note
-
-The initialization lasts about 20 minutes. If the installation fails after a long time, please check your network.
-
-:::
-
-</TabItem>
-<TabItem value="GCP" label="GCP">
-
-### Before you start to try KubeBlocks on GCP
-
-Make sure you have all the followings prepared.
-
-* Google Cloud account
-* [Install kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
-* [Install kbcli](./../installation/install-kbcli.md)
-  
-### Configure GCP environment
-
-***Steps：***
-
-1. Install Google Cloud SDK.
-
-   ```bash
-   # macOS brew install
-   brew install --cask google-cloud-sdk
-
-   # windows
-   choco install gcloudsdk
-   ```
-
-2. Initialize GCP.
-
-   ```bash
-   gcloud init
-   ```
-
-3. Log in to GCP.
-
-   ```bash
-   gcloud auth application-default login
-   ```
-
-4. Configure GOOGLE_PROJECT environment variables，```kbcli playground``` creates GKE cluster in the project.
-
-   ```bash
-   export GOOGLE_PROJECT=<project-name>
-   ```
-
-### Initialize Playground
-
-The following command deploys a GKE service in the region `us-central1` on GCP, and installs KubeBlocks.
-
-```bash
-kbcli playground init --cloud-provider gcp --region us-central1
-```
-
-* `cloud-provider` specifies the cloud provider.
-* `region` specifies the region to deploy a Kubernetes cluster.
-
-During the initialization, `kbcli` clones [the GitHub repository](https://github.com/apecloud/cloud-provider) to the directory `~/.kbcli/playground`, installs KubeBlocks, and creates a MySQL cluster. After executing the `kbcli playground init` command, kbcli automatically switches the current context of kubeconfig to the new Kubernetes cluster.
-Run the command below to view the created cluster.
-
-```bash
-# View kbcli version
-kbcli version
-
-# View the cluster list
-kbcli cluster list
-```
-
-:::note
-
-The initialization takes about 20 minutes. If the installation fails after a long time, please check your network.
-
-:::
-
-</TabItem>
-<TabItem value="Tencent Cloud" label="Tencent Cloud">
-
-### Before you start to try KubeBlocks on Tencent Cloud
-
-Make sure you have all the followings prepared.
-
-* Tencent Cloud account
-* [Install kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)
-* [Install kbcli](./../installation/install-kbcli.md)
-  
-### Configure TKE environment
-
-***Steps：***
-
-1. Log in to Tencent Cloud.
-2. Go to [Tencent Kubernetes Engine (TKE)](https://console.cloud.tencent.com/tke2) to grant resource operation permission to your account before using the container service.
-3. Go to [API Console](https://console.cloud.tencent.com/cam/overview) -> **Access Key** -> **API Keys** and click **Create Key** to create a pair of Secret ID and Secret Key.
-4. Add the Secret ID and Secret Key to the environment variables.
-
-   ```bash
-   export TENCENTCLOUD_SECRET_ID=YOUR_SECRET_ID
-   export TENCENTCLOUD_SECRET_KEY=YOUR_SECRET_KEY
-   ```
-
-### Initialize Playground
-
-The following command deploys a Kubernetes service in the region `ap-chengdu` on Tencent Cloud and installs KubeBlocks.
-
-```bash
-kbcli playground init --cloud-provider tencentcloud --region ap-chengdu
-```
-
-* `cloud-provider` specifies the cloud provider.
-* `region` specifies the region to deploy a Kubernetes cluster.
-
-During the initialization, `kbcli` clones [the GitHub repository](https://github.com/apecloud/cloud-provider) to the directory `~/.kbcli/playground`, installs KubeBlocks, and creates a MySQL cluster. After executing the `kbcli playground init` command, kbcli automatically switches the current context of kubeconfig to the new Kubernetes cluster.
-Run the command below to view the created cluster.
-
-```bash
-# View kbcli version
-kbcli version
-
-# View the cluster list
-kbcli cluster list
-```
-
-:::note
-
-The initialization takes about 20 minutes. If the installation fails after a long time, please check your network.
-
-:::
-
-</TabItem>
-<TabItem value="Alibaba Cloud" label="Alibaba Cloud">
-
-### Before you start to try KubeBlocks on Alibaba Cloud
-
-Make sure you have all the followings prepared.
-
-* Alibaba Cloud account.
-* [Install kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl).
-* [Install kbcli](./../installation/install-kbcli.md).
-  
-### Configure ACK environment
-
-***Steps：***
-
-1. Log in to Alibaba Cloud.
-2. Follow the instructions in [Quick start for first-time users](https://www.alibabacloud.com/help/en/container-service-for-kubernetes/latest/quick-start-for-first-time-users) to check whether you have activated Alibaba Cloud Container Service for Kubernetes (ACK) and assigned roles.
-
-   :::note
-
-   For users who deploy Alibaba Cloud in China Mainland, refer to [the corresponding guide](https://help.aliyun.com/document_detail/161387.htm?spm=a2c4g.85903.0.0.478d2246FdHMGt#task-2470091).
-
-   :::
-3. Click [AliyunOOSLifecycleHook4CSRole](https://ram.console.aliyun.com/role/authorize?spm=5176.2020520152.0.0.5b4716ddI6QevL&request=%7B%22ReturnUrl%22%3A%22https%3A%2F%2Fram.console.aliyun.com%22%2C%22Services%22%3A%5B%7B%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunOOSLifecycleHook4CSRole%22%2C%22TemplateId%22%3A%22AliyunOOSLifecycleHook4CSRole%22%7D%5D%2C%22Service%22%3A%22OOS%22%7D%5D%7D) and click **Agree to Authorization** to create an AliyunOOSLifecycleHook4CSRole role.
-
-   This operation grant permissions to access Operation Orchestration Service (OOS) and to access the resources in other cloud products since creating and managing a node pool is required for creating an ACK cluster.
-
-   Refer to [Scale a node pool](https://www.alibabacloud.com/help/zh/container-service-for-kubernetes/latest/scale-up-and-down-node-pools) for details.
-4. Create an AccessKey ID and the corresponding AccessKey secret.
-
-   1. Go to [Alibaba Cloud Management Console](https://homenew.console.aliyun.com/home/dashboard/ProductAndService). Hover the pointer over your account console and click **AccessKey Management**.
-       ![AccessKey Management](./../../img/quick-start-alibaba-cloud-ak-management.png)
-   2. Click **Create AccessKey** to create the AccessKey ID and the corresponding AccessKey secret.
-   3. Add the AccessKey ID and AccessKey secret to the environment variable to configure identity authorization information.
-
-       ```bash
-       export ALICLOUD_ACCESS_KEY="YOUR_ACCESS_KEY"
-       export ALICLOUD_SECRET_KEY="YOUR_SECRET_KEY"
-       ```
-
-   :::note
-
-   Refer to [Create an AccessKey pair](https://www.alibabacloud.com/help/en/resource-access-management/latest/accesskey-pairs-create-an-accesskey-pair-for-a-ram-user) for details.
-
-   :::
-
-### Initialize Playground
-
-The following command deploys an ACK cluster in the region `cn-hangzhou` on Alibaba Cloud, and installs KubeBlocks.
-
-```bash
-kbcli playground init --cloud-provider alicloud --region cn-hangzhou
-```
-
-* `cloud-provider` specifies the cloud provider.
-* `region` specifies the region to deploy a Kubernetes cluster.
-
-During the initialization, `kbcli` clones [the GitHub repository](https://github.com/apecloud/cloud-provider) to the directory `~/.kbcli/playground`, installs KubeBlocks, and creates a MySQL cluster. After executing the `kbcli playground init` command, kbcli automatically switches the current context of kubeconfig to the new Kubernetes cluster.
-Run the command below to view the created cluster.
-
-```bash
-# View kbcli version
-kbcli version
-
-# View the cluster list
-kbcli cluster list
-```
-
-:::note
-
-The initialization takes about 20 minutes. If the installation fails after a long time, please check your network.
-
-:::
-
-</TabItem>
-</Tabs>
-
-## Try KubeBlocks with Playground
-Go through the following instructions to try basic features of KubeBlocks.
-
-### Describe a MySQL cluster
-
-***Steps:***
-
-1. View the database cluster list.
-
-    ```bash
-    kbcli cluster list
-    ```
-
-2. View the details of a specified database cluster, such as `STATUS`, `Endpoints`, `Topology`, `Images`, and `Events`.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-### Access a MySQL cluster
-
-**Option 1.** Connect database from container network.
-
-Wait until the status of this cluster is `Running`, then run `kbcli cluster connect` to access a specified database cluster. For example,
-
-```bash
-kbcli cluster connect mycluster
-```
-
-**Option 2.** Connect database remotely.
-
-***Steps:***
-
-1. Get Credentials.
-   ```bash
-   kbcli cluster connect --show-example --show-password --client=cli mycluster
-   ```
-2. Run `port-forward`.
-
-   ```bash
-   kubectl port-forward service/mycluster-mysql 3306:3306
-   >
-   Forwarding from 127.0.0.1:3306 -> 3306
-   Forwarding from [::1]:3306 -> 3306
-   ```
-
-3. Open another terminal tab to connect the database cluster.
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306 -u root -p"******"
-   >
-   ...
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql> show databases;
-   >
-   +--------------------+
-   | Database           |
-   +--------------------+
-   | information_schema |
-   | mydb               |
-   | mysql              |
-   | performance_schema |
-   | sys                |
-   +--------------------+
-   5 rows in set (0.02 sec)
-   ```
-
-### High availability of MySQL
-
-This guide shows a simple failure simulation to show you the failure recovery capability of MySQL.
-
-#### Delete the Standalone MySQL cluster
-
-Delete the Standalone MySQL cluster before trying out high availability.
-
-```bash
-kbcli cluster delete mycluster
-```
-
-#### Create a Raft MySQL cluster
-
-You can use `kbcli` to create a Raft MySQL cluster. The following is an example of creating a Raft MySQL cluster with default configurations.
-
-```bash
-kbcli cluster create --cluster-definition='apecloud-mysql' --set replicas=3
-```
-
-#### Simulate leader pod failure recovery
-
-In this example, delete the leader pod to simulate a failure.
-
-***Steps:***
-
-1. Make sure the newly created cluster is `Running`.
-
-   ```bash
-   kbcli cluster list
-   ```
-
-2. Find the leader pod name in `Topology`. In this example, the leader pod's name is maple05-mysql-1.
-
-   ```bash
-   kbcli cluster describe maple05
-   >
-   Name: maple05         Created Time: Jan 27,2023 17:33 UTC+0800
-   NAMESPACE        CLUSTER-DEFINITION        VERSION                STATUS         TERMINATION-POLICY
-   default          apecloud-mysql            ac-mysql-8.0.30        Running        WipeOut
-
-   Endpoints:
-   COMPONENT        MODE             INTERNAL                EXTERNAL
-   mysql            ReadWrite        10.43.29.51:3306        <none>
-
-   Topology:
-   COMPONENT        INSTANCE               ROLE            STATUS         AZ            NODE                                                 CREATED-TIME
-   mysql            maple05-mysql-1        leader          Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-2        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-0        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-
-   Resources Allocation:
-   COMPONENT        DEDICATED        CPU(REQUEST/LIMIT)        MEMORY(REQUEST/LIMIT)        STORAGE-SIZE        STORAGE-CLASS
-   mysql            false            <none>                    <none>                       <none>              <none>
-
-   Images:
-   COMPONENT        TYPE         IMAGE
-   mysql            mysql        docker.io/apecloud/wesql-server:8.0.30-5.alpha2.20230105.gd6b8719
-
-   Events(last 5 warnings, see more:kbcli cluster list-events -n default mycluster):
-   TIME        TYPE        REASON        OBJECT        MESSAGE
-   ```
-
-3. Delete the leader pod.
-
-   ```bash
-   kubectl delete pod maple05-mysql-1
-   >
-   pod "maple05-mysql-1" deleted
-   ```
-
-4. Connect to the Raft MySQL cluster. It can be accessed within seconds.
-
-   ```bash
-   kbcli cluster connect maple05
-   >
-   Connect to instance maple05-mysql-2: out of maple05-mysql-2(leader), maple05-mysql-1(follower), maple05-mysql-0(follower)
-   Welcome to the MySQL monitor.  Commands end with ; or \g.
-   Your MySQL connection id is 33
-   Server version: 8.0.30 WeSQL Server - GPL, Release 5, Revision d6b8719
-
-   Copyright (c) 2000, 2022, Oracle and/or its affiliates.
-
-   Oracle is a registered trademark of Oracle Corporation and/or its
-   affiliates. Other names may be trademarks of their respective
-   owners.
-
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql>
-   ```
-
-## Destroy Playground
-
-1. Before destroying Playground, it is recommended to delete the database clusters created by KubeBlocks.
-
-   ```bash
-   # View all clusters
-   kbcli cluster list -A
-
-   # Delete a cluster
-   # A double-check is required or you can add --auto-approve to skip it
-   kbcli cluster delete <name>
-
-   # Uninstall KubeBlocks
-   # A double-check is required or you can add --auto-approve to skip it
-   kbcli kubeblocks uninstall --remove-pvcs --remove-pvs
-   ```
-
-2. Destroy Playground.
-
-   ```bash
-   kbcli playground destroy 
-   ```
-
-:::caution
-
-`kbcli playground destroy` deletes the Kubernetes cluster on the cloud, but there might be residual resources on the cloud, such as volumes and snapshots. Please delete them in time to avoid unexpected costs.
-
-:::
diff --git a/docs/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop.md b/docs/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop.md
deleted file mode 100644
index 3c7dfbc15..000000000
--- a/docs/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop.md
+++ /dev/null
@@ -1,290 +0,0 @@
----
-title: Try out KubeBlocks in 5 minutes on laptop
-description: A quick tour of KubeBlocks Playground
-keywords: [Playground, try out, laptop,]
-sidebar_position: 1
-sidebar_label: Try out KubeBlocks on laptop
----
-
-# Try out KubeBlocks in 5 minutes on laptop
-
-This guide walks you through the quickest way to get started with KubeBlocks, demonstrating how to create a demo environment (Playground) with one command.
-
-## Before you start
-
-Meet the following requirements for a smooth user experience:
-
-* Minimum system requirements:
-  * CPU: 4 cores, use `sysctl hw.physicalcpu` command to check CPU;
-  * RAM: 4 GB, use `top -d` command to check memory.
-
-* Make sure the following tools are installed on your laptop:
-  * [Docker](https://docs.docker.com/get-docker/): v20.10.5 (runc ≥ v1.0.0-rc93) or above;
-  * [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl): it is used to interact with Kubernetes clusters;
-  * [kbcli](./../installation/install-kbcli.md): it is used for the interaction between Playground and KubeBlocks.
-
-## Initialize Playground
-
-***Steps:***
-
-1. Install Playground.
-
-   ```bash
-   kbcli playground init
-   ```
-
-   This command:
-   1. Creates a Kubernetes cluster in the container with [K3d](https://k3d.io/v5.4.6/).
-   2. Deploys KubeBlocks in the K3d cluster.
-   3. Creates a standalone MySQL cluster.
-
-   :::note
-
-   * If you previously ran `kbcli playground init` and it failed, running it again may cause errors. Please run the `kbcli playground destroy` command first to clean up the environment, then run `kbcli playground init` again.
-   * If you run Playground on Windows and the error below occurs, it is caused by the safety strategy of Windows 11 and the `kbcli.exe` you operate might be tampered with by a third party (or when you built the kbcli binary file through source on Windows).
-
-   ```bash
-   error: failed to set up k3d cluster: failed to create k3d cluster kb-playground: Failed Cluster Start: Failed to start server k3d-kb-playground-server-0: Node k3d-kb-playground-server-0 failed to get ready: error waiting for log line `k3s is up and running` from node 'k3d-kb-playground-server-0': stopped returning log lines
-   ```
-
-   You can follow the steps to solve this problem.
-
-   1. Uninstall or delete the current `kbcli.exe`.
-   2. Download the latest kbcli by `winget` or visit the [GitHub release page](https://github.com/apecloud/kubeblocks/releases) of KubeBlocks to download kbcli again.
-
-   :::
-
-
-2. Check the MySQL cluster repeatedly until the status becomes `Running`.
-
-   ```bash
-   kbcli cluster list
-   ```
-
-   **Result:**
-
-   You just created a cluster named `mycluster` in the default namespace. You can find the user guide under the installation success tip. View this guide again by running `kbcli playground init -h`.
-
-## Try KubeBlocks with Playground
-
-You can explore KubeBlocks, by referring to [Describe a MySQL cluster](#describe-a-mysql-cluster), [Access a MySQL cluster](#access-a-mysql-cluster), [Observe a MySQL cluster](#observe-a-mysql-cluster), and [High availability](#high-availability-of-mysql). Go through the following instructions to try basic features of KubeBlocks.
-
-### Describe a MySQL cluster
-
-***Steps:***
-
-1. View the database cluster list.
-
-    ```bash
-    kbcli cluster list
-    ```
-
-2. View the details of a specified database cluster, such as `STATUS`, `Endpoints`, `Topology`, `Images`, and `Events`.
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-### Access a MySQL cluster
-
-**Option 1.** Connect database from container network.
-
-Wait until the status of this cluster is `Running`, then run `kbcli cluster connect` to access a specified database cluster. For example,
-
-```bash
-kbcli cluster connect mycluster
-```
-
-**Option 2.** Connect database from host network.
-
-***Steps:***
-
-1. Get Credentials.
-   ```bash
-   kbcli cluster connect --show-example --show-password --client=cli mycluster
-   ```
-3. Run `port-forward`.
-
-   ```bash
-   kubectl port-forward service/mycluster-mysql 3306:3306
-   >
-   Forwarding from 127.0.0.1:3306 -> 3306
-   Forwarding from [::1]:3306 -> 3306
-
-3. Open another terminal tab to connect the database cluster.
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306 -u root -paiImelyt
-   >
-   ...
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql> show databases;
-   >
-   +--------------------+
-   | Database           |
-   +--------------------+
-   | information_schema |
-   | mydb               |
-   | mysql              |
-   | performance_schema |
-   | sys                |
-   +--------------------+
-   5 rows in set (0.02 sec)
-   ```
-
-### High availability of MySQL
-
-This guide shows a simple failure simulation to show you the failure recovery capability of MySQL.
-
-#### Delete the Standalone MySQL cluster
-
-Delete the Standalone MySQL cluster before trying out high availability.
-
-```bash
-kbcli cluster delete mycluster
-```
-
-#### Create a Raft MySQL cluster
-
-You can use `kbcli` to create a Raft MySQL cluster. The following is an example of creating a Raft MySQL cluster with default configurations.
-
-```bash
-kbcli cluster create --cluster-definition='apecloud-mysql' --set replicas=3
-```
-
-#### Simulate leader pod failure recovery
-
-In this example, delete the leader pod to simulate a failure.
-
-***Steps:***
-
-1. Make sure the newly created cluster is `Running`.
-
-   ```bash
-   kbcli cluster list
-   ```
-
-2. Find the leader pod name in `Topology`. In this example, the leader pod's name is maple05-mysql-1.
-
-   ```bash
-   kbcli cluster describe maple05
-   >
-   Name: maple05         Created Time: Jan 27,2023 17:33 UTC+0800
-   NAMESPACE        CLUSTER-DEFINITION        VERSION                STATUS         TERMINATION-POLICY
-   default          apecloud-mysql            ac-mysql-8.0.30        Running        WipeOut
-
-   Endpoints:
-   COMPONENT        MODE             INTERNAL                EXTERNAL
-   mysql            ReadWrite        10.43.29.51:3306        <none>
-
-   Topology:
-   COMPONENT        INSTANCE               ROLE            STATUS         AZ            NODE                                                 CREATED-TIME
-   mysql            maple05-mysql-1        leader          Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-2        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-0        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-
-   Resources Allocation:
-   COMPONENT        DEDICATED        CPU(REQUEST/LIMIT)        MEMORY(REQUEST/LIMIT)        STORAGE-SIZE        STORAGE-CLASS
-   mysql            false            <none>                    <none>                       <none>              <none>
-
-   Images:
-   COMPONENT        TYPE         IMAGE
-   mysql            mysql        docker.io/apecloud/wesql-server:8.0.30-5.alpha2.20230105.gd6b8719
-
-   Events(last 5 warnings, see more:kbcli cluster list-events -n default mycluster):
-   TIME        TYPE        REASON        OBJECT        MESSAGE
-   ```
-
-3. Delete the leader pod.
-
-   ```bash
-   kubectl delete pod maple05-mysql-1
-   >
-   pod "maple05-mysql-1" deleted
-   ```
-
-4. Connect to the Raft MySQL cluster. It can be accessed within seconds.
-
-   ```bash
-   kbcli cluster connect maple05
-   >
-   Connect to instance maple05-mysql-2: out of maple05-mysql-2(leader), maple05-mysql-1(follower), maple05-mysql-0(follower)
-   Welcome to the MySQL monitor.  Commands end with ; or \g.
-   Your MySQL connection id is 33
-   Server version: 8.0.30 WeSQL Server - GPL, Release 5, Revision d6b8719
-
-   Copyright (c) 2000, 2022, Oracle and/or its affiliates.
-
-   Oracle is a registered trademark of Oracle Corporation and/or its
-   affiliates. Other names may be trademarks of their respective
-   owners.
-
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql>
-   ```
-
-#### Demonstrate availability failure by NON-STOP NYAN CAT (for fun)
-
-The above example uses `kbcli cluster connect` to test availability, in which the changes are not obvious to see.
-
-NON-STOP NYAN CAT is a demo application to observe how the database cluster exceptions affect actual businesses. Animations and real-time key information display provided by NON-STOP NYAN CAT can directly show the availability influences of database services.
-
-***Steps:***
-
-1. Install the NYAN CAT demo application.
-
-   ```bash
-   kbcli addon enable nyancat
-   ```
-
-   <details>
-
-   <summary>Expected output</summary>
-
-   ```bash
-   addon.extensions.kubeblocks.io/nyancat enabled   
-   ```
-
-   </details>
-
-2. Check the NYAN CAT addon status and when its status is `Enabled`, this application is ready.
-
-   ```bash
-   kbcli addon list | grep nyancat 
-   ```
-
-3. Open the web page.
-
-   ```bash
-   kbcli dashboard open kubeblocks-nyancat
-   ```
-
-4. Open another terminal tab and delete the leader pod. Then view the influences on the Raft MySQL cluster through the NYAN CAT page.
-
-   ```bash
-   kubectl delete pod maple05-mysql-1
-   ```
-
-   ![NYAN CAT](./../../img/quick_start_nyan_cat.png)
-
-5. Uninstall the NYAN CAT demo application after your trial.
-
-   ```bash
-   kbcli addon disable nyancat
-   ```
-
-## Destroy Playground
-
-Destroying Playground cleans up resources and data:
-
-* Delete all KubeBlocks database clusters.
-* Uninstall KubeBlocks.
-* Delete the Kubernetes cluster created by K3d.
-
-Destroy Playground.
-
-```bash
-kbcli playground destroy
-```
diff --git a/docs/user_docs/upgrade-kubeblocks/_category_.yml b/docs/user_docs/upgrade-kubeblocks/_category_.yml
deleted file mode 100644
index 25b131bc4..000000000
--- a/docs/user_docs/upgrade-kubeblocks/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: Upgrade KubeBlocks
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/docs/user_docs/upgrade-kubeblocks/faq.md b/docs/user_docs/upgrade-kubeblocks/faq.md
deleted file mode 100644
index ad6b97e3b..000000000
--- a/docs/user_docs/upgrade-kubeblocks/faq.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: FAQ
-description: Upgrade, faq, tips and notes
-keywords: [upgrade, FAQ]
-sidebar_position: 3
-sidebar_label: FAQ
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# FAQ
-
-This guide addresses common questions and issues that may arise when upgrading KubeBlocks, ensuring a smooth and efficient process.
-
-## Manually mark Addons
-
-In earlier versions, KubeBlocks pre-installed some Addons in the Helm chart, but some of these Addons have been removed in the new version. Consequently, if you upgrade directly from an older version to the latest, Helm will remove the CRs of these removed Addons, affecting the clusters created by these Addons. To prevent this, it is recommended to add the `"helm.sh/resource-policy": "keep"` annotation for Addons to ensure they remain during upgrading.
-
-### View the Addon annotation
-
-Run the command below to view the annotations of Addons.
-
-```bash
-kubectl get addon -o json | jq '.items[] | {name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-```
-
-### Manually add an annotation for Addons
-
-Replace `-l app.kubernetes.io/name=kubeblocks` with your actual filter and run the command below to add an annotation.
-
-```bash
-kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-```
-
-If you want to add the annotation for a specified Addon, replace `{addonName}` with the actual Addon name and run the command below.
-
-```bash
-kubectl annotate addons.extensions.kubeblocks.io {addonName} helm.sh/resource-policy=keep
-```
-
-If you want to check whether the annotation for an Addon was added successfully, replace `{addonName}` with the actual Addon name and run the command below.
-
-```bash
-kubectl get addon {addonName} -o json | jq '{name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-```
-
-## Fix "cannot patch 'kubeblocks-dataprotection' with kind Deployment" error
-
-When upgrading KubeBlocks to v0.8.x/v0.9.x, you might encounter the following error:
-
-```bash
-Error: UPGRADE FAILED: cannot patch "kubeblocks-dataprotection" with kind Deployment: Deployment.apps "kubeblocks-dataprotection" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/component":"dataprotection", "app.kubernetes.io/instance":"kubeblocks", "app.kubernetes.io/name":"kubeblocks"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "kubeblocks" with kind Deployment: Deployment.apps "kubeblocks" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/component":"apps", "app.kubernetes.io/instance":"kubeblocks", "app.kubernetes.io/name":"kubeblocks"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
-```
-
-This error occurs due to label modifications introduced for KubeBlocks and KubeBlocks-DataProtection in KubeBlocks v0.9.x.
-
-To resolve the issue, manually delete the `kubeblocks` and `kubeblocks-dataprotection` deployments, then run helm upgrade to complete the upgrade to v0.9.x.
-
-```bash
-# Scale to 0 replica
-kubectl -n kb-system scale deployment kubeblocks --replicas 0
-kubectl -n kb-system scale deployment kubeblocks-dataprotection --replicas 0
-
-# Delete deployments
-kubectl delete -n kb-system deployments.apps kubeblocks kubeblocks-dataprotection
-```
-
-## Specify an image registry during upgrading KubeBlocks
-
-Starting from v0.9.0, one of KubeBlocks' image registries has changed. Specifically, the registry prefix for one of the repositories has been updated from `infracreate-registry` to `apecloud-registry`. Other image registries remain unaffected. If you installed KubeBlocks before v0.9.0, check and update your image registry configuration during the upgrade.
-
-1. Check the image registry of KubeBlocks.
-
-   ```bash
-   helm -n kb-system get values kubeblocks -a | yq .image.registry
-   ```
-
-   If the image registry starts with `infracreate-registry` as shown below, you must specify the new image registry during the upgrade by changing the image registry prefix to `apecloud-registry`.
-
-   <details>
-
-   <summary>Output</summary>
-
-   ```text
-   infracreate-registry.cn-xxx.xxx.com
-   ```
-
-   </details>
-
-2. Override the default image registry by specifying the following parameters.
-
-   <Tabs>
-
-   <TabItem value="Helm" label="Helm" default>
-
-   ```bash
-   helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.2 \
-     --set admissionWebhooks.enabled=true \
-     --set admissionWebhooks.ignoreReplicasCheck=true \
-     --set image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set dataProtection.image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set addonChartsImage.registry=apecloud-registry.cn-xxx.xxx.com
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli kb upgrade --version 0.9.2 \
-     --set admissionWebhooks.enabled=true \
-     --set admissionWebhooks.ignoreReplicasCheck=true \
-     --set image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set dataProtection.image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set addonChartsImage.registry=apecloud-registry.cn-xxx.xxx.com
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-   Here is an introduction to the flags in the above command.
-
-   - `--set image.registry=apecloud-registry.cn-xxx.xxx.com` specifies the KubeBlocks image registry.
-   - `--set dataProtection.image.registry=apecloud-registry.cn-xxx.xxx.com` specifies the KubeBlocks-DataProtection image registry.
-   - `--set addonChartsImage.registry=apecloud-registry.cn-xxx.xxx.com` specifies Addon Charts image registry.
diff --git a/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md b/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md
deleted file mode 100644
index 74d9c6b70..000000000
--- a/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-title: Upgrade to v0.8
-description: Upgrade to KubeBlocks v0.8, operation, tips and notes
-keywords: [upgrade, 0.8]
-draft: true
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Upgrade to KubeBlocks v0.8
-
-In this tutorial, you will learn how to upgrade to KubeBlocks v0.8.
-
-:::note
-
-Execute `helm -n kb-system list | grep kubeblocks` or `kbcli version` to check the current KubeBlocks version you are running, and then upgrade it.
-
-:::
-
-## Upgrade from KubeBlocks v0.7
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. Set keepAddons.
-
-    KubeBlocks v0.8 streamlines the default installed engines and separates the addons from KubeBlocks operators to KubeBlocks-Addons repo, such as greptime, influxdb, neon, oracle-mysql, orioledb, tdengine, mariadb, nebula, risingwave, starrocks, tidb, and zookeeper. To avoid deleting addon resources that are already in use during the upgrade, execute the following commands:
-
-- Check the current KubeBlocks version.
-
-    ```bash
-    helm -n kb-system list | grep kubeblocks
-    ```
-
-- Set the value of keepAddons as true.
-
-    ```bash
-    helm repo add kubeblocks https://apecloud.github.io/helm-charts
-    helm repo update kubeblocks
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version {VERSION} --set keepAddons=true
-    ```
-
-    Replace {VERSION} with your current KubeBlocks version, such as 0.7.2.
-
-- Check addons.
-
-    Execute the following command to ensure that the addon annotations contain `"helm.sh/resource-policy": "keep"`.
-
-    ```bash
-    kubectl get addon -o json | jq '.items[] | {name: .metadata.name, annotations: .metadata.annotations}'
-    ```
-
-2. Install CRD.
-
-    To reduce the size of Helm chart, KubeBlocks v0.8 removes CRD from the Helm chart. Before upgrading, you need to install CRD.
-
-    ```bash
-    kubectl replace -f https://github.com/apecloud/kubeblocks/releases/download/v0.8.1/kubeblocks_crds.yaml
-    ```
-
-3. Upgrade KubeBlocks.
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.8.1 --set dataProtection.image.datasafed.tag=0.1.0
-    ```
-
-:::note
-
-To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.8, the versions of already-installed addons will not be upgraded by default. If you want to upgrade the addons to the versions built into KubeBlocks v0.8, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-```bash
-helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.8.1 --set upgradeAddons=true
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Download kbcli v0.8.
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.8.1
-    ```
-
-2. Upgrade KubeBlocks.
-
-    ```bash
-    kbcli kb upgrade --version 0.8.1 --set dataProtection.image.datasafed.tag=0.1.0
-    ```
-
-    kbcli will automatically add the annotation `"helm.sh/resource-policy": "keep"` to ensure that existing addons are not deleted during the upgrade.
-
-</TabItem>
-
-</Tabs>
-
-## Upgrade from KubeBlocks v0.6
-
-If you are currently running KubeBlocks v0.6, please upgrade to v0.7.2 first.
-
-1. Download kbcli v0.7.2.
-
-    ```shell
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.7.2
-    ```
-
-2. Upgrade to KubeBlocks v0.7.2.
-
-    ```shell
-    kbcli kb upgrade --version 0.7.2
-    ```
-
-## FAQ
-
-Refer to the [FAQ](./faq.md) to address common questions and issues that may arise when upgrading KubeBlocks. If your question isn't covered, you can [submit an issue](https://github.com/apecloud/kubeblocks/issues/new/choose) or [start a discussion](https://github.com/apecloud/kubeblocks/discussions) on upgrading on GitHub.
diff --git a/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.9.0.md b/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.9.0.md
deleted file mode 100644
index 376ed7532..000000000
--- a/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.9.0.md
+++ /dev/null
@@ -1,175 +0,0 @@
----
-title: Upgrade to v0.9.0
-description: Upgrade to KubeBlocks v0.9.0, operation, tips and notes
-keywords: [upgrade, 0.9.0]
-draft: true
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Upgrade to KubeBlocks v0.9.0
-
-In this tutorial, you will learn how to upgrade to KubeBlocks v0.9.0.
-
-:::note
-
-Execute `helm -n kb-system list | grep kubeblocks` or `kbcli version` to check the current KubeBlocks version you are running, and then upgrade KubeBlocks.
-
-:::
-
-## Compatibility
-
-KubeBlocks 0.9.0 is compatible with KubeBlocks 0.8 APIs, but compatibility with APIs from versions prior to v0.8 is not guaranteed. If you are using Addons from KubeBlocks 0.7 or earlier (0.6, etc), DO [upgrade KubeBlocks and all Addons to v0.8 first](https://github.com/apecloud/kubeblocks/blob/main/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md) to ensure service availability before upgrading to v0.9.0.
-
-## Upgrade from KubeBlocks v0.8
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. Add the `"helm.sh/resource-policy": "keep"` for Addons.
-
-    KubeBlocks v0.8 streamlines the default installed engines. To avoid deleting Addon resources that are already in use during the upgrade, execute the following commands first.
-
-    - Add the `"helm.sh/resource-policy": "keep"` for Addons. You can replace `-l app.kubernetes.io/name=kubeblocks` with your actual filter name.
-
-         ```bash
-         kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-         ```
-
-    - Check Addons.
-
-         Execute the following command to ensure that the Addon annotations contain `"helm.sh/resource-policy": "keep"`.
-
-         ```bash
-         kubectl get addon -o json | jq '.items[] | {name: .metadata.name, annotations: .metadata.annotations}'
-         ```
-
-2. Delete the incompatible OpsDefinition.
-
-   ```bash
-   kubectl delete opsdefinitions.apps.kubeblocks.io kafka-quota kafka-topic kafka-user-acl switchover
-   ```
-
-3. Install the StorageProvider CRD before the upgrade.
-
-    If the network is slow, it's recommended to download the CRD YAML file on your localhost before further operations.
-
-    ```bash
-    kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.0/dataprotection.kubeblocks.io_storageproviders.yaml
-    ```
-
-4. Upgrade KubeBlocks.
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.0
-    ```
-
-    :::note
-
-    To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.9.0, the versions of already-installed Addons will not be upgraded by default. If you want to upgrade the Addons to the versions built into KubeBlocks v0.9.0, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.0 \
-    --set upgradeAddons=true
-    ```
-
-    :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Download kbcli v0.9.0.
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.9.0
-    ```
-
-2. Upgrade KubeBlocks.
-
-    ```bash
-    kbcli kb upgrade --version 0.9.0 
-    ```
-
-    :::note
-
-    To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.9.0, the versions of already-installed Addons will not be upgraded by default. If you want to upgrade the Addons to the versions built into KubeBlocks v0.9.0, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-    ```bash
-    kbcli kb upgrade --version 0.9.0 --set upgradeAddons=true
-    ```
-
-    :::
-
-    kbcli will automatically add the annotation `"helm.sh/resource-policy": "keep"` to ensure that existing Addons are not deleted during the upgrade.
-
-</TabItem>
-
-</Tabs>
-
-## Upgrade Addons
-
-If you didn't specify `upgradeAddons` as `true` or your Addon is not included in the default installed Addons, you can upgrade Addons by running the commands provided below to use the v0.9.0 API.
-
-:::note
-
-If the Addon you want to upgrade is `mysql`, you need to upgrade this Addon and restart the cluster. Otherwise, the cluster created in KubeBlocks v0.8 cannot be used in v0.9.0.
-
-If the Addon you want to use is `clickhouse/milvus/elasticsearch/llm`, you need to upgrade KubeBlocks first and then upgrade this Addon. Otherwise, these Addons cannot be used in KubeBlocks v0.9.0 normally.
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-```bash
-# Add Helm repo 
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-
-# Update helm repo
-helm repo update
-
-# Update Addon version
-helm upgrade -i {addon-release-name} kubeblocks-addons/{addon-name} --version x.y.z -n kb-system  
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-# View the Addon index list
-kbcli addon index list
-
-# Update one index and the default index is kubeblocks
-kbcli addon index update kubeblocks
-
-# Search available Addon versions
-kbcli addon search <addonName>
-
-# Install an Addon
-kbcli addon install <addonName> --version x.y.z
-
-# Upgrade this Addon to a specified version
-kbcli addon upgrade <addonName> --version x.y.z
-
-# Force to upgrade to a specified version
-kbcli addon upgrade <addonName> --version x.y.z --force
-
-# View the available Addon versions
-kbcli addon list | grep <addonName>
-```
-
-</TabItem>
-
-</Tabs>
-
-## FAQ
-
-Refer to the [FAQ](./faq.md) to address common questions and issues that may arise when upgrading KubeBlocks. If your question isn't covered, you can [submit an issue](https://github.com/apecloud/kubeblocks/issues/new/choose) or [start a discussion](https://github.com/apecloud/kubeblocks/discussions) on upgrading on GitHub.
diff --git a/docs/user_docs/upgrade-kubeblocks/upgrade-to-latest-version.md b/docs/user_docs/upgrade-kubeblocks/upgrade-to-latest-version.md
deleted file mode 100644
index 4baec8d91..000000000
--- a/docs/user_docs/upgrade-kubeblocks/upgrade-to-latest-version.md
+++ /dev/null
@@ -1,301 +0,0 @@
----
-title: Upgrade to v0.9.3
-description: Upgrade to KubeBlocks v0.9.3, operation, tips and notes
-keywords: [upgrade, 0.9.3]
-sidebar_position: 1
-sidebar_label: Upgrade to v0.9.3
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Upgrade to KubeBlocks v0.9.3
-
-:::note
-
-- Before upgrading, check your current KubeBlocks version:
-
-   Run `helm -n kb-system list | grep kubeblocks` or `kbcli version`.
-- For upgrading to different versions:
-
-   - For v0.9.2 and v0.9.1, follow this upgrade tutorial, replacing the version number with v0.9.2 or v0.9.1 respectively.
-   - [v0.9.0 upgrade guide](https://github.com/apecloud/kubeblocks/blob/main/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.9.0.md).
-   - [v0.8.x upgrade guide](https://github.com/apecloud/kubeblocks/blob/main/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md).
-
-   Installing the latest version is recommended for better performance and features.
-
-:::
-
-## Compatibility
-
-KubeBlocks v0.9.3 is compatible with KubeBlocks v0.8 APIs, but compatibility with APIs from versions prior to v0.8 is not guaranteed. If you are using Addons from KubeBlocks v0.7 or earlier (v0.6, etc), DO [upgrade KubeBlocks and all Addons to v0.8 first](https://github.com/apecloud/kubeblocks/blob/main/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md) to ensure service availability before upgrading to v0.9.
-
-If you are upgrading from v0.8 to v0.9, it's recommended to enable webhook to ensure the availability.
-
-## Upgrade from KubeBlocks v0.9.x
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. View Addon and check whether the `"helm.sh/resource-policy": "keep"` annotation exists.
-
-    KubeBlocks streamlines the default installed engines. Add the `"helm.sh/resource-policy": "keep"` annotation to avoid deleting Addon resources that are already in use during the upgrade.
-
-    Check whether the `"helm.sh/resource-policy": "keep"` annotation is added.
-
-    ```bash
-    kubectl get addon -o json | jq '.items[] | {name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-    ```
-
-    If the annotation doesn't exist, run the command below to add it. You can replace `-l app.kubernetes.io/name=kubeblocks` with your actual filter name.
-
-    ```bash
-    kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-    ```
-
-2. Install CRD.
-
-    To reduce the size of Helm chart, KubeBlocks v0.8 removes CRD from the Helm chart. Before upgrading, you need to install CRD.
-
-    ```bash
-    kubectl replace -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.3/kubeblocks_crds.yaml
-    ```
-
-3. Upgrade KubeBlocks.
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 --set crd.enabled=false
-    ```
-
-    Upgrading from v0.9.0/v0.9.1/v0.9.2 to v0.9.3 doesn't include API change, so you can set `--set crd.enabled=false` to skip the API upgrade task.
-
-    :::warning
-
-    To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.9.3, the versions of already-installed Addons will not be upgraded by default. If you want to upgrade the Addons to the versions built into KubeBlocks v0.9.3, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 \
-      --set upgradeAddons=true \
-      --set crd.enabled=false
-    ```
-
-    :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Download kbcli v0.9.3.
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.9.3
-    ```
-
-2. Upgrade KubeBlocks.
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3
-    ```
-
-    :::warning
-
-    To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.9.3, the versions of already-installed Addons will not be upgraded by default. If you want to upgrade the Addons to the versions built into KubeBlocks v0.9.3, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3 --set upgradeAddons=true
-    ```
-
-    :::
-
-   `kbcli` will automatically add the annotation `"helm.sh/resource-policy": "keep"` to ensure that existing Addons are not deleted during the upgrade.
-
-</TabItem>
-
-</Tabs>
-
-## Upgrade from KubeBlocks v0.8.x
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. View Addon and check whether the `"helm.sh/resource-policy": "keep"` annotation exists.
-
-    KubeBlocks streamlines the default installed engines. Add the `"helm.sh/resource-policy": "keep"` annotation to avoid deleting Addon resources that are already in use during the upgrade.
-
-    Check whether the `"helm.sh/resource-policy": "keep"` annotation is added.
-
-    ```bash
-    kubectl get addon -o json | jq '.items[] | {name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-    ```
-
-    If the annotation doesn't exists, run the command below to add it. You can replace `-l app.kubernetes.io/name=kubeblocks` with your actual filter name.
-
-    ```bash
-    kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-    ```
-
-2. Delete the incompatible OpsDefinition.
-
-   ```bash
-   kubectl delete opsdefinitions.apps.kubeblocks.io kafka-quota kafka-topic kafka-user-acl switchover
-   ```
-
-3. Install CRD.
-
-    To reduce the size of Helm chart, KubeBlocks v0.8 removed CRD from the Helm chart and changed the group of StorageProvider. Before upgrading, you need to install StorageProvider CRD first.
-
-    If the network is slow, it's recommended to download the CRD YAML file on your localhost before further operations.
-
-    ```bash
-    kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.3/dataprotection.kubeblocks.io_storageproviders.yaml
-    ```
-
-4. Upgrade KubeBlocks.
-
-    Here are some options that need your attention before the upgrade.
-
-    - Setting `admissionWebhooks.enabled=true` enables the webhook, supporting the multi-version conversion of the ConfigConstraint API.
-    - Setting `admissionWebhooks.ignoreReplicasCheck=true` enables the webhook by default only when KubeBlocks is deployed with 3 replicas. If only a single replica is deployed, you can configure this variable to bypass the check.
-    - If the KubeBlocks you are running uses the image registry starting with `infracreate-registry`, it is recommended to explicitly configure the image registry during the upgrade. Refer to [FAQ](./faq.md#specify-an-image-registry-during-upgrading-kubeblocks) for details.
-
-    ```bash
-    helm repo add kubeblocks https://apecloud.github.io/helm-charts
-
-    helm repo update kubeblocks
-
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true
-    ```
-
-    :::warning
-
-    To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.9.3, the versions of already-installed Addons will not be upgraded by default. If you want to upgrade the Addons to the versions built into KubeBlocks v0.9.3, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 \
-      --set upgradeAddons=true \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true 
-    ```
-
-    :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. Download kbcli v0.9.3.
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.9.3
-    ```
-
-2. Upgrade KubeBlocks.
-
-    Check the kbcli version and make sure you're using kbcli v0.9.3.
-
-    ```bash
-    kbcli version
-    ```
-
-    Here are some options that need your attention before the upgrade.
-
-    - Setting `admissionWebhooks.enabled=true` enables the webhook, supporting the multi-version conversion of the ConfigConstraint API.
-    - Setting `admissionWebhooks.ignoreReplicasCheck=true` enables the webhook by default only when KubeBlocks is deployed with 3 replicas. If only a single replica is deployed, you can configure this variable to bypass the check.
-    - If the KubeBlocks you are running uses the image registry starting with `infracreate-registry`, it is recommended to explicitly configure the image registry during the upgrade. Refer to [FAQ](./faq.md#specify-an-image-registry-during-upgrading-kubeblocks) for details.
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3 \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true
-    ```
-
-    :::warning
-
-    To avoid affecting existing database clusters, when upgrading to KubeBlocks v0.9.3, the versions of already-installed Addons will not be upgraded by default. If you want to upgrade the Addons to the versions built into KubeBlocks v0.9.3, execute the following command. Note that this may restart existing clusters and affect availability. Please proceed with caution.
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3 \
-      --set upgradeAddons=true \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true
-    ```
-
-    :::
-
-    `kbcli` will automatically add the annotation `"helm.sh/resource-policy": "keep"` to ensure that existing Addons are not deleted during the upgrade.
-
-</TabItem>
-
-</Tabs>
-
-## Upgrade Addons
-
-If you didn't specify `upgradeAddons` as `true` or your Addon is not included in the default installed Addons, you can upgrade Addons by running the commands provided below to use the v0.9.x API.
-
-:::note
-
-- If the Addon you want to upgrade is `mysql`, you need to upgrade this Addon and restart the cluster. Otherwise, the cluster created in KubeBlocks v0.8.x cannot be used in v0.9.x.
-
-- If the Addon you want to use is `clickhouse/milvus/elasticsearch/llm`, you need to upgrade KubeBlocks first and then upgrade this Addon. Otherwise, these Addons cannot be used in KubeBlocks v0.9.x normally.
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-```bash
-# Add Helm repo 
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-
-# If github is not accessible or the network is very slow for you, please use following repo instead
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-
-# Update helm repo
-helm repo update
-
-# Search the available Addon versions
-helm search repo kubeblocks-addons/{addon-name} --versions --devel 
-
-# Update addon version
-helm upgrade -i {addon-release-name} kubeblocks-addons/{addon-name} --version x.y.z -n kb-system   
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-# View the Addon index list
-kbcli addon index list
-
-# Update one index and the default index is kubeblocks
-kbcli addon index update kubeblocks
-
-# Search available Addon versions
-kbcli addon search {addon-name}
-
-# Install an Addon
-kbcli addon install {addon-name} --version x.y.z
-
-# Upgrade this Addon to a specified version
-kbcli addon upgrade {addon-name} --version x.y.z
-
-# Force to upgrade to a specified version
-kbcli addon upgrade {addon-name} --version x.y.z --force
-
-# View the available Addon versions
-kbcli addon list | grep {addon-name}
-```
-
-</TabItem>
-
-</Tabs>
-
-## FAQ
-
-Refer to the [FAQ](./faq.md) to address common questions and issues that may arise when upgrading KubeBlocks. If your question isn't covered, you can [submit an issue](https://github.com/apecloud/kubeblocks/issues/new/choose) or [start a discussion](https://github.com/apecloud/kubeblocks/discussions) on upgrading on GitHub.
diff --git a/docs/user_docs/user-management/_category_.yml b/docs/user_docs/user-management/_category_.yml
deleted file mode 100644
index 7a1535733..000000000
--- a/docs/user_docs/user-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 9
-label: User Management
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/docs/user_docs/user-management/manage_user_accounts.md b/docs/user_docs/user-management/manage_user_accounts.md
deleted file mode 100644
index 89a5fb37b..000000000
--- a/docs/user_docs/user-management/manage_user_accounts.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: Manage user accounts
-description: How to manage user accounts
-keywords: [user account]
-sidebar_position: 1
-sidebar_label: Manage user accounts
----
-
-# Manage user accounts
-
-KubeBlocks offers a variety of services to enhance the usability, availability, and observability of database clusters. Different components require user accounts with different permissions to create connections.
-
-:::note
-
-Currently, KubeBlocks only supports managing user accounts for ApeCloud MySQL, MySQL Community version, PostgreSQL, and Redis.
-
-:::
-
-***Steps***
-
-- Create a user account
-
-  ```bash
-  kbcli cluster create-account <clustername> --name <username> --password <pwd> 
-  ```
-
-- Grant a role to a user
-
-  ```bash
-  kbcli cluster grant-role  <clustername> --name <username> --role <rolename>
-  ```
-
-  KubeBlocks provides three role levels of permission.
-
-  - Superuser: with all permissions.
-  - ReadWrite: read and write.
-  - ReadOnly: read only.
-  
-  For different database engines, the detailed permission are varied. Check the table below.
-
-    | Role      | MySQL    | PostgreSQL | Redis  |
-    | :------   | :------- | :------    | :----- |
-    | Superuser | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON * a user | ALTER USER WITH SUPERUSER | +@ALL allkeys|
-    | ReadWrite | GRANT SELECT, INSERT, DELETE ON * TO a user | GRANT pg_write_all_data TO a user | -@ALL +@Write +@READ allkeys |
-    | ReadOnly  | GRANT SELECT, SHOW VIEW ON * TO a user | GRANT pg_read_all_data TO a user | -@ALL +@READ allkeys |
-
-- Check the role level of a user account
-
-  ```bash
-  kbcli cluster describe-account <clustername> --name <username>
-  ```
-
-- Revoke role from a user account
-
-  ```bash
-  kbcli cluster revoke-role <clustername> --name <name> --role <rolename> 
-  ```
-
-- List all user accounts
-
-  ```bash
-  kbcli cluster list-accounts  <clustername>  
-  ```
-
-  :::note
-
-  For security reasons, the `list-accounts` command does not show all accounts. Accounts with high privilege such as operational accounts and superuser accounts that meet certain rules are hidden. Refer to the table below to view the hidden accounts.
-
-  :::
-
-  | Database    | Hidden Accounts                     |
-  | :---        | :---                                |
-  | MySQL       | root <br />kb* <br />Localhost = '' |
-  | PostgreSQL  | Postgres <br />kb*                  |
-
-- Delete a user account
-
-  ```bash
-  kbcli cluster delete-account <clustername> --name <username> 
-  ```
diff --git a/docs/yarn.lock b/docs/yarn.lock
deleted file mode 100644
index fb57ccd13..000000000
--- a/docs/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
diff --git a/examples/apecloud-mysql/README.md b/examples/apecloud-mysql/README.md
deleted file mode 100644
index 9caab620f..000000000
--- a/examples/apecloud-mysql/README.md
+++ /dev/null
@@ -1,179 +0,0 @@
-# Apecloud-mysql
-
-ApeCloud MySQL is a database that is compatible with MySQL syntax and achieves high availability through the utilization of the RAFT consensus protocol. This example shows how it can be managed in Kubernetes with KubeBlocks.
-
-## Prerequisites
-
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform. 
-
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
-```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
-
-# Update helm repo
-helm repo update
-
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
-
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
-
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
-```
- 
-
-## Examples
-
-### [Create](cluster.yaml) 
-Create an apecloud-mysql cluster with specified cluster definition 
-```bash
-kubectl apply -f examples/apecloud-mysql/cluster.yaml
-```
-Starting from kubeblocks 0.9.0, we introduced a more flexible cluster creation method based on components, allowing customization of cluster topology, functionalities and scale according to specific requirements.
-```bash
-kubectl apply -f examples/apecloud-mysql/cluster-cmpd.yaml
-```
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/horizontalscale.yaml
-```
-
-### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/verticalscale.yaml
-```
-
-### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/volumeexpand.yaml
-```
-
-### [Restart](restart.yaml)
-Restart the specified components in the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/restart.yaml
-```
-
-### [Stop](stop.yaml)
-Stop the cluster and release all the pods of the cluster, but the storage will be reserved
-```bash
-kubectl apply -f examples/apecloud-mysql/stop.yaml
-```
-
-### [Start](start.yaml)
-Start the stopped cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/start.yaml
-```
-
-### [Switchover](switchover.yaml)
-Switchover a non-primary or non-leader instance as the new primary or leader of the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/switchover.yaml
-```
-
-### [Switchover-specified-instance](switchover-specified-instance.yaml)
-Switchover a specified instance as the new primary or leader of the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/switchover-specified-instance.yaml
-```
-
-### [Configure](configure.yaml)
-Configure parameters with the specified components in the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/configure.yaml
-```
-
-### [BackupRepo](backuprepo.yaml)
-BackupRepo is the storage repository for backup data, using the full backup and restore function of KubeBlocks relies on BackupRepo
-```bash
-# Create a secret to save the access key
-kubectl create secret generic <storage-provider>-credential-for-backuprepo\
-  --from-literal=accessKeyId=<ACCESS KEY> \
-  --from-literal=secretAccessKey=<SECRET KEY> \
-  -n kb-system 
-  
-kubectl apply -f examples/apecloud-mysql/backuprepo.yaml
-```
-
-### [Backup](backup.yaml)
-Create a backup for the cluster
-```bash
-kubectl apply -f examples/apecloud-mysql/backup.yaml
-```
-
-### [Restore](restore.yaml)
-Restore a new cluster from backup
-```bash
-# Get backup connection password
-kubectl get backup acmysql-cluster-backup -ojsonpath='{.metadata.annotations.dataprotection\.kubeblocks\.io\/connection-password}' -n default
-
-kubectl apply -f examples/apecloud-mysql/restore.yaml
-```
-
-### Expose
-Expose a cluster with a new endpoint
-#### [Enable](expose-enable.yaml)
-```bash
-kubectl apply -f examples/apecloud-mysql/expose-enable.yaml
-```
-#### [Disable](expose-disable.yaml)
-```bash
-kubectl apply -f examples/apecloud-mysql/expose-disable.yaml
-```
-
-### Delete
-If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
-```bash
-kubectl patch cluster acmysql-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete cluster acmysql-cluster
-```
-
-## SmartEngine
-
-SmartEngine is an OLTP storage engine based on LSM-Tree architecture and supports complete ACID transaction constraints.
-
-### [Enable](smartengine-enable.yaml)
-
-```bash
-kubectl apply -f examples/apecloud-mysql/smartengine-enable.yaml
-```
-
-### [Disable](smartengine-disable.yaml)
-
-```bash
-kubectl apply -f examples/apecloud-mysql/smartengine-disable.yaml
-```
-
-## ApeCloud MySQL Proxy
-
-ApeCloud MySQL Proxy is a database proxy designed to be highly compatible with MySQL.
-It supports the MySQL wire protocol, read-write splitting without stale reads, connection pooling, and transparent failover.
-
-### [Create Proxy](cluster-proxy.yaml)
-```bash
-kubectl apply -f examples/apecloud-mysql/cluster-proxy.yaml
-```
-
-### [Configure Vtgate](configure-vtgate.yaml)
-```bash
-kubectl apply -f examples/apecloud-mysql/configure-vtgate.yaml
-```
-
-### [Configure Vttablet](configure-vttablet.yaml)
-```bash
-kubectl apply -f examples/apecloud-mysql/configure-vttablet.yaml
-```
diff --git a/examples/apecloud-mysql/backup.yaml b/examples/apecloud-mysql/backup.yaml
deleted file mode 100644
index 159de8431..000000000
--- a/examples/apecloud-mysql/backup.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: Backup
-metadata:
-  name: acmysql-cluster-backup
-  namespace: default
-spec:
-  # Specifies the backup method name that is defined in the backup policy.
-  # - xtrabackup
-  # - volume-snapshot
-  backupMethod: xtrabackup
-  # Specifies the backup policy to be applied for this backup.
-  backupPolicyName: acmysql-cluster-mysql-backup-policy
-  # Determines whether the backup contents stored in the backup repository should be deleted when the backup custom resource(CR) is deleted. Supported values are `Retain` and `Delete`.
-  # - `Retain` means that the backup content and its physical snapshot on backup repository are kept.
-  # - `Delete` means that the backup content and its physical snapshot on backup repository are deleted.
-  deletionPolicy: Delete
diff --git a/examples/apecloud-mysql/backuprepo.yaml b/examples/apecloud-mysql/backuprepo.yaml
deleted file mode 100644
index 890891407..000000000
--- a/examples/apecloud-mysql/backuprepo.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: BackupRepo
-metadata:
-  name: s3-repo
-  annotations:
-    dataprotection.kubeblocks.io/is-default-repo: 'true'
-spec:
-  # Specifies the name of the `StorageProvider` used by this backup repository.
-  # Currently, KubeBlocks supports configuring various object storage services as backup repositories
-  # - s3 (Amazon Simple Storage Service)
-  # - oss (Alibaba Cloud Object Storage Service)
-  # - cos (Tencent Cloud Object Storage)
-  # - gcs (Google Cloud Storage)
-  # - obs (Huawei Cloud Object Storage)
-  # - minio, and other S3-compatible services.
-  storageProviderRef: s3
-  # Specifies the access method of the backup repository.
-  # - Tool
-  # - Mount
-  accessMethod: Tool
-  # Specifies reclaim policy of the PV created by this backup repository.
-  pvReclaimPolicy: Retain
-  # Specifies the capacity of the PVC created by this backup repository.
-  volumeCapacity: 100Gi
-  # Stores the non-secret configuration parameters for the `StorageProvider`.
-  config:
-    bucket: <storage-provider-bucket-name>
-    endpoint: ''
-    mountOptions: --memory-limit 1000 --dir-mode 0777 --file-mode 0666
-    region: <storage-provider-region-name>
-  # References to the secret that holds the credentials for the `StorageProvider`.
-  credential:
-    # name is unique within a namespace to reference a secret resource.
-    name: s3-credential-for-backuprepo
-    # namespace defines the space within which the secret name must be unique.
-    namespace: kb-system
diff --git a/examples/apecloud-mysql/cluster-cmpd.yaml b/examples/apecloud-mysql/cluster-cmpd.yaml
deleted file mode 100644
index eac8f6b97..000000000
--- a/examples/apecloud-mysql/cluster-cmpd.yaml
+++ /dev/null
@@ -1,48 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: acmysql-cluster
-  namespace: default
-  labels:
-    auditLogEnabled: "false"
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule.
-  - name: mysql
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: apecloud-mysql
-    # Specifies which types of logs should be collected for the Cluster.
-    enabledLogs:
-    - error
-    - general
-    - slow
-    # Determines whether the metrics exporter needs to be published to the service endpoint.
-    disableExporter: true
-    # Specifies the name of the ServiceAccount required by the running Component.
-    serviceAccountName: kb-acmysql-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 2
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/apecloud-mysql/cluster-proxy.yaml b/examples/apecloud-mysql/cluster-proxy.yaml
deleted file mode 100644
index aecda0ffe..000000000
--- a/examples/apecloud-mysql/cluster-proxy.yaml
+++ /dev/null
@@ -1,89 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: acmysql-cluster
-  namespace: default
-  annotations:
-    kubeblocks.io/extra-env: '{"KB_PROXY_ENABLED":"on","ETCDCTL_API": "3"}'
-  labels:
-    auditLogEnabled: "false"
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: mysql
-    componentDef: apecloud-mysql
-    enabledLogs:
-    - error
-    - slow
-    disableExporter: true
-    replicas: 3
-    serviceAccountName: kb-acmysql-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - componentDef: etcd
-    disableExporter: true
-    name: etcd
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - componentDef: wescale-ctrl
-    disableExporter: true
-    name: wescale-ctrl
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - componentDef: wescale
-    enabledLogs:
-    - error
-    - warning
-    - info
-    - queryLog
-    disableExporter: true
-    name: wescale
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
diff --git a/examples/apecloud-mysql/cluster.yaml b/examples/apecloud-mysql/cluster.yaml
deleted file mode 100644
index 781c839e8..000000000
--- a/examples/apecloud-mysql/cluster.yaml
+++ /dev/null
@@ -1,42 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: acmysql-cluster
-  namespace: default
-  labels:
-    auditLogEnabled: "false"
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: mysql
-    componentDef: apecloud-mysql
-    enabledLogs:
-    - error
-    - general
-    - slow
-    disableExporter: true
-    replicas: 1
-    serviceAccountName: kb-acmysql-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/apecloud-mysql/configure-vtgate.yaml b/examples/apecloud-mysql/configure-vtgate.yaml
deleted file mode 100644
index 362aa7860..000000000
--- a/examples/apecloud-mysql/configure-vtgate.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-vtgate-reconfiguring
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
-  force: false
-  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
-    # Specifies the name of the Component.
-    componentName: wescale
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: vtgate.cnf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: healthcheck_timeout
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: 2s
-      # Specifies the name of the configuration template.
-      name: vtgate-config
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
diff --git a/examples/apecloud-mysql/configure-vttablet.yaml b/examples/apecloud-mysql/configure-vttablet.yaml
deleted file mode 100644
index cab055b10..000000000
--- a/examples/apecloud-mysql/configure-vttablet.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-vttablet-reconfiguring
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
-  force: false
-  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
-    # Specifies the name of the Component.
-    componentName: mysql
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-      - keys:
-          # Represents the unique identifier for the ConfigMap.
-          - key: vttablet.cnf
-            # Defines a list of key-value pairs for a single configuration file.
-            # These parameters are used to update the specified configuration settings.
-            parameters:
-              # Represents the name of the parameter that is to be updated.
-              - key: health_check_interval
-                # Represents the parameter values that are to be updated.
-                # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-                value: 4s
-        # Specifies the name of the configuration template.
-        name: vttablet-config
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
diff --git a/examples/apecloud-mysql/configure.yaml b/examples/apecloud-mysql/configure.yaml
deleted file mode 100644
index 2773fe39f..000000000
--- a/examples/apecloud-mysql/configure.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-reconfiguring
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
-  force: false
-  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
-    # Specifies the name of the Component.
-    componentName: mysql
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: my.cnf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: innodb_buffer_pool_size
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: 512M
-        - key: max_connections
-          value: '600'
-      # Specifies the name of the configuration template.
-      name: mysql-consensusset-config
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
diff --git a/examples/apecloud-mysql/restore-cmpd.yaml b/examples/apecloud-mysql/restore-cmpd.yaml
deleted file mode 100644
index a211757f0..000000000
--- a/examples/apecloud-mysql/restore-cmpd.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: acmysql-cluster-restore
-  namespace: default
-  labels: 
-    auditLogEnabled: "false"
-  annotations:
-    kubeblocks.io/restore-from-backup: '{"mysql":{"connectionPassword":"<backup-connection-password>","name":"acmysql-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. 
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule. 
-  - name: mysql
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: apecloud-mysql
-    # Specifies which types of logs should be collected for the Cluster. 
-    enabledLogs:
-    - error
-    - general
-    - slow
-    # Determines whether the metrics exporter needs to be published to the service endpoint.  
-    disableExporter: true
-    # Specifies the name of the ServiceAccount required by the running Component.
-    serviceAccountName: kb-acmysql-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 3
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. 
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
diff --git a/examples/apecloud-mysql/restore.yaml b/examples/apecloud-mysql/restore.yaml
deleted file mode 100644
index 51141e12c..000000000
--- a/examples/apecloud-mysql/restore.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: acmysql-cluster-restore
-  namespace: default
-  labels:
-    auditLogEnabled: "false"
-  annotations:
-    kubeblocks.io/restore-from-backup: '{"mysql":{"connectionPassword":"<backup-connection-password>","name":"acmysql-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: mysql
-    componentDef: apecloud-mysql
-    enabledLogs:
-    - error
-    - general
-    - slow
-    disableExporter: true
-    serviceAccountName: kb-acmysql-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
diff --git a/examples/apecloud-mysql/smartengine-disable.yaml b/examples/apecloud-mysql/smartengine-disable.yaml
deleted file mode 100644
index 80507e474..000000000
--- a/examples/apecloud-mysql/smartengine-disable.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-disable-smartengine
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
-  force: false
-  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
-    # Specifies the name of the Component.
-    componentName: mysql
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-      - keys:
-          # Represents the unique identifier for the ConfigMap.
-          - key: my.cnf
-            # Defines a list of key-value pairs for a single configuration file.
-            # These parameters are used to update the specified configuration settings.
-            parameters:
-              # Represents the name of the parameter that is to be updated.
-              - key: loose_smartengine
-                # Represents the parameter values that are to be updated.
-                # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-                value: "OFF"
-              - key: binlog_format
-                value: "MIXED"
-              - key: default_storage_engine
-                value: "InnoDB"
-        # Specifies the name of the configuration template.
-        name: mysql-consensusset-config
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
diff --git a/examples/apecloud-mysql/smartengine-enable.yaml b/examples/apecloud-mysql/smartengine-enable.yaml
deleted file mode 100644
index a04d9a0ba..000000000
--- a/examples/apecloud-mysql/smartengine-enable.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-enable-smartengine
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
-  force: false
-  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
-    # Specifies the name of the Component.
-    componentName: mysql
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-      - keys:
-          # Represents the unique identifier for the ConfigMap.
-          - key: my.cnf
-            # Defines a list of key-value pairs for a single configuration file.
-            # These parameters are used to update the specified configuration settings.
-            parameters:
-              # Represents the name of the parameter that is to be updated.
-              - key: loose_smartengine
-                # Represents the parameter values that are to be updated.
-                # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-                value: "ON"
-              - key: binlog_format
-                value: "ROW"
-              - key: default_storage_engine
-                value: "smartengine"
-        # Specifies the name of the configuration template.
-        name: mysql-consensusset-config
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
diff --git a/examples/apecloud-mysql/switchover-specified-instance.yaml b/examples/apecloud-mysql/switchover-specified-instance.yaml
deleted file mode 100644
index 8dd83c502..000000000
--- a/examples/apecloud-mysql/switchover-specified-instance.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-switchover-specify
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  type: Switchover
-  # Lists Switchover objects, each specifying a Component to perform the switchover operation.
-  switchover:
-    # Specifies the name of the Component.
-  - componentName: mysql
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: acmysql-cluster-mysql-2
diff --git a/examples/apecloud-mysql/switchover.yaml b/examples/apecloud-mysql/switchover.yaml
deleted file mode 100644
index 272e9ce54..000000000
--- a/examples/apecloud-mysql/switchover.yaml
+++ /dev/null
@@ -1,16 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: acmysql-switchover
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
-  type: Switchover
-  # Lists Switchover objects, each specifying a Component to perform the switchover operation.
-  switchover:
-    # Specifies the name of the Component.
-  - componentName: mysql
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: '*'
diff --git a/examples/elasticsearch/README.md b/examples/elasticsearch/README.md
new file mode 100644
index 000000000..d39e42f56
--- /dev/null
+++ b/examples/elasticsearch/README.md
@@ -0,0 +1,452 @@
+# Elasticsearch
+
+Elasticsearch is a distributed, RESTful search engine optimized for speed and relevance on production-scale workloads.
+Each Elasticsearch cluster consists of one or more nodes, and each node in a cluster has a role and communicates with other nodes to share data and responsibilities. A node can assume multiple roles up to your requirements. Types of roles include [^1]:
+
+- master
+- data
+- data_content
+- data_hot
+- data_warm
+- data_cold
+- data_frozen
+- ingest
+- ml
+- remote_cluster_client
+- transform
+
+## Features In KubeBlocks
+
+### Lifecycle Management
+
+| Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| Yes                    | Yes                   | Yes               | Yes       | Yes        | No       | Yes    | N/A     |
+
+### Versions
+
+| Major Versions | Description |
+|---------------|-------------|
+| 7.x | 7.7.1,7.8.1,7.10.1 |
+| 8.x | 8.1.3, 8.8.2 |
+
+## Prerequisites
+
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- Elasticsearch Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
+
+## Examples
+
+### Create
+
+#### Create a Single-Node Cluster
+
+A Single-Node Cluster is a cluster with only one node and this node assume all roles. It is suitable for development and testing purposes.
+
+```bash
+kubectl apply -f examples/elasticsearch/cluster-single-node.yaml
+```
+
+The configs in Cluster API:
+
+```yaml
+  configs:
+    - name: es-cm
+      variables:
+        mode: "single-node"
+```
+
+Where,
+
+- `es-cm` refers to the config template defined in ComponentDefinition `elasticsearch-`
+- "mode=single-node" (default to multi-node), is used to specify the mode of the Elasticsearch cluster.
+
+To check the role of the node, you may log in to the pod and run the following command:
+
+```bash
+curl -X GET "http://localhost:9200/_cat/nodes?v&h=name,ip,role"
+```
+
+And the expected output is as follows:
+
+```text
+name                  ip           role
+es-single-node-mdit-0 12.345.678 cdfhilmrstw
+```
+
+The role is `cdfhilmrstw`. Please refer to [Elasticsearch Nodes](https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html) for more information about the roles.
+
+#### Create a Multi-Node Cluster
+
+Create a elasticsearch cluster with multiple nodes and each node assume specified roles.
+
+```bash
+kubectl apply -f examples/elasticsearch/cluster-multi-node.yaml
+```
+
+There are four components specified in this cluster, i.e 'master', 'data', 'ingest', and 'transform',  and each component has different roles. Roles are specified in `configs` for each component:
+
+```yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+spec:
+  componentSpecs:
+    - name: data
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: data,ingest,transform
+            mode: multi-node
+      ...
+    - name: master
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: master
+            mode: multi-node
+```
+
+Where,
+
+- `es-cm` refers to the config template defined in ComponentDefinition `elasticsearch-`
+- "mode=multi-node" (default to multi-node), is used to specify the mode of the Elasticsearch cluster.
+- "roles: data,ingest,transform" specifies the list of roles this component should assume.
+
+> [!IMPORTANT]
+>
+> - Roles will take effect only when `mode` is set to `multi-node`, or the `mode` is not set.
+> - there must be one and only one component containing role 'master'
+> - the component for role `mater` must be named to `master`
+
+If you want to create a cluster with more roles, you can add more components and specify the roles in the configs.
+
+```yaml
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: master
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: master
+    - name: data
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: data
+    - name: ingest
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: ingest
+    - name: transform
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: transform
+...
+```
+
+### Horizontal scaling
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out elasticsearch cluster by adding ONE `MASTER` replica:
+
+```bash
+kubectl apply -f examples/elasticsearch/scale-out.yaml
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in elasticsearch cluster by deleting ONE `MASTER` replica:
+
+```bash
+kubectl apply -f examples/elasticsearch/scale-in.yaml
+```
+
+On scaling in, the pod with the highest ordinal number (if not otherwise specified) will be deleted. And it will be cleared from voting configuration exclusions of this cluster before deletion, to make sure the cluster is healthy.
+
+After scaling in, you can check the cluster health by running the following command:
+
+```bash
+curl -X GET "http://<ES_ENDPOINT>:9200/_cluster/health?pretty"  # replace <ES_ENDPOINT> with the actual endpoint
+```
+
+> [!IMPORTANT]
+> Make sure there are at least ONE replica for each component
+> If you want to scale in the last replica, may be you should consider to `STOP` the cluster.
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: master
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      replicas: 3 # Update `replicas` to your need.
+```
+
+### [Vertical scaling](verticalscale.yaml)
+
+Vertical scaling involves increasing or decreasing resources to an existing database cluster.
+Resources that can be scaled include:, CPU cores/processing power and Memory (RAM).
+
+To vertical scaling up or down specified component, you can apply the following yaml file:
+
+```bash
+kubectl apply -f examples/elasticsearch/verticalscale.yaml
+```
+
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: master
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
+### [Expand volume](volumeexpand.yaml)
+
+Volume expansion is the ability to increase the size of a Persistent Volume Claim (PVC) after it's created. It is introduced in Kubernetes v1.11 and goes GA in Kubernetes v1.24. It allows Kubernetes users to simply edit their PersistentVolumeClaim objects  without requiring any downtime at all if possible.
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster
+
+```bash
+kubectl apply -f examples/elasticsearch/volumeexpand.yaml
+```
+
+After the operation, you will see the volume size of the specified component is increased to `30Gi` in this case. Once you've done the change, check the `status.conditions` field of the PVC to see if the resize has completed.
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: master
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 30Gi  # specify new size, and make sure it is larger than the current size
+```
+
+### [Restart](restart.yaml)
+
+Restart the specified component `data` in the cluster. If not specified, all components will be restarted.
+
+```bash
+kubectl apply -f examples/elasticsearch/restart.yaml
+```
+
+### [Stop](stop.yaml)
+
+Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+```bash
+kubectl apply -f examples/elasticsearch/stop.yaml
+```
+
+#### Stop using Cluster API
+
+Alternatively, you may stop ONE component by setting the `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: master
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      stop: true  # set stop `true` to stop the component
+      replicas: 3
+```
+
+### [Start](start.yaml)
+
+Start the stopped cluster
+
+```bash
+kubectl apply -f examples/elasticsearch/start.yaml
+```
+
+#### Start using Cluster API
+
+Alternatively, you may start the cluster by setting the `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: master
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      stop: false  # set to `false` (or remove this field) to start the component
+      replicas: 3
+```
+
+### Expose
+
+It is recommended to access the Elasticsearch cluster from within the Kubernetes cluster using Kibana or other tools. However, if you need to access the Elasticsearch cluster from outside the Kubernetes cluster, you can expose the Elasticsearch service using a `LoadBalancer` service type.
+
+#### [Enable](expose-enable.yaml)
+
+```bash
+kubectl apply -f examples/elasticsearch/expose-enable.yaml
+```
+
+In this example, a service with type `LoadBalancer` will be created to expose the Elasticsearch cluster. You can access the cluster using the `external IP` of the service.
+
+#### [Disable](expose-disable.yaml)
+
+```bash
+kubectl apply -f examples/elasticsearch/expose-disable.yaml
+```
+
+#### Expose SVC using Cluster API
+
+Alternatively, you may expose service by updating `spec.services`
+
+```yaml
+spec:
+  # append service to the list
+  services:
+    # add annotation for cloud loadbalancer if
+    # services.spec.type is LoadBalancer
+    # here we use annotation for alibaba cloud for example
+  - annotations:
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: ""
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
+    componentSelector: master
+    name: master-internet
+    serviceName: master-internet
+    spec:
+      ports:
+      - name: es-http
+        nodePort: 32751
+        port: 9200
+        protocol: TCP
+        targetPort: es-http
+      type: LoadBalancer
+```
+
+If the service is of type `LoadBalancer`, please add annotations for cloud loadbalancer depending on the cloud provider you are using. Here list annotations for some cloud providers:
+
+```yaml
+# alibaba cloud
+service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"  # or "intranet"
+
+# aws
+service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+
+# azure
+service.beta.kubernetes.io/azure-load-balancer-internal: "true" # or "false" for internet
+
+# gcp
+networking.gke.io/load-balancer-type: "Internal" # for internal access
+cloud.google.com/l4-rbs: "enabled" # for internet
+```
+
+Please consult your cloud provider for more accurate and update-to-date information.
+
+### Observability
+
+There are various ways to monitor the cluster. Here we use Prometheus and Grafana to demonstrate how to monitor the cluster.
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+##### Step 1. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/elasticsearch/pod-monitor.yaml
+```
+
+It set up the PodMonitor to scrape the metrics (port `9114`) from the Elasticsearch cluster.
+
+```yaml
+    - path: /metrics
+      port: metrics
+      scheme: http
+```
+
+##### Step 2. Access the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard.
+You can import the dashboard provided by Grafana or create your own dashboard, e.g.
+
+- <https://grafana.com/grafana/dashboards/2322-elasticsearch/>
+
+> [!NOTE]
+> Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+
+### Delete
+
+If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
+```bash
+kubectl patch cluster -n demo es-multinode -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete cluster -n demo es-multinode
+```
+
+## References
+
+[^1]: Elasticsearch Nodes, <https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html>
diff --git a/examples/elasticsearch/cluster-multi-node-708.yaml b/examples/elasticsearch/cluster-multi-node-708.yaml
new file mode 100644
index 000000000..e193127e3
--- /dev/null
+++ b/examples/elasticsearch/cluster-multi-node-708.yaml
@@ -0,0 +1,58 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: es-multinode-708
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: data
+      componentDef: elasticsearch-7
+      serviceVersion: 7.8.1
+      configs:
+        - name: es-cm
+          variables:
+            version: 7.8.1
+            roles: data,ingest,transform
+      replicas: 3
+      disableExporter: false
+      resources:
+        limits:
+          cpu: "1"
+          memory: "2Gi"
+        requests:
+          cpu: "1"
+          memory: "2Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+    - name: master
+      componentDef: elasticsearch-7
+      serviceVersion: 7.8.1
+      configs:
+        - name: es-cm
+          variables:
+            version: 7.8.1
+            roles: master
+      replicas: 3
+      disableExporter: false
+      resources:
+        limits:
+          cpu: "1"
+          memory: "2Gi"
+        requests:
+          cpu: "1"
+          memory: "2Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/elasticsearch/cluster-multi-node.yaml b/examples/elasticsearch/cluster-multi-node.yaml
new file mode 100644
index 000000000..0a6fba6c5
--- /dev/null
+++ b/examples/elasticsearch/cluster-multi-node.yaml
@@ -0,0 +1,58 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: es-multinode
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: data
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: data,ingest,transform
+      replicas: 3
+      disableExporter: false
+      resources:
+        limits:
+          cpu: "1"
+          memory: "2Gi"
+        requests:
+          cpu: "1"
+          memory: "2Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+    - name: master
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      configs:
+        - name: es-cm
+          variables:
+            # use key `roles` to specify roles this component assume
+            roles: master
+      replicas: 3
+      disableExporter: false
+      resources:
+        limits:
+          cpu: "1"
+          memory: "2Gi"
+        requests:
+          cpu: "1"
+          memory: "2Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/elasticsearch/cluster-single-node-with-sp.yaml b/examples/elasticsearch/cluster-single-node-with-sp.yaml
new file mode 100644
index 000000000..0ee405f3f
--- /dev/null
+++ b/examples/elasticsearch/cluster-single-node-with-sp.yaml
@@ -0,0 +1,48 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: es-singlenode-with-sp
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: mdit
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      schedulingPolicy:
+        affinity:
+          podAntiAffinity:
+            preferredDuringSchedulingIgnoredDuringExecution:
+            - podAffinityTerm:
+                labelSelector:
+                  matchLabels:
+                    app.kubernetes.io/instance: es-cluster
+                    apps.kubeblocks.io/component-name: mdit
+                topologyKey: kubernetes.io/hostname
+              weight: 100
+            requiredDuringSchedulingIgnoredDuringExecution:
+            - labelSelector:
+                matchLabels:
+                  app.kubernetes.io/instance: es-cluster
+                  apps.kubeblocks.io/component-name: mdit
+              topologyKey: kubernetes.io/hostname
+      replicas: 1
+      configs:
+        - name: es-cm
+          variables:
+            mode: "single-node"
+      resources:
+        limits:
+          cpu: "1"
+          memory: "2Gi"
+        requests:
+          cpu: "1"
+          memory: "2Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/elasticsearch/cluster-single-node.yaml b/examples/elasticsearch/cluster-single-node.yaml
new file mode 100644
index 000000000..e41c37f7f
--- /dev/null
+++ b/examples/elasticsearch/cluster-single-node.yaml
@@ -0,0 +1,31 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: es-singlenode
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  componentSpecs:
+    - name: mdit
+      componentDef: elasticsearch-8
+      serviceVersion: 8.8.2
+      replicas: 1
+      configs:
+        - name: es-cm
+          variables:
+            mode: "single-node"
+      resources:
+        limits:
+          cpu: "1"
+          memory: "2Gi"
+        requests:
+          cpu: "1"
+          memory: "2Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/apecloud-mysql/expose-enable.yaml b/examples/elasticsearch/expose-disable.yaml
similarity index 71%
rename from examples/apecloud-mysql/expose-enable.yaml
rename to examples/elasticsearch/expose-disable.yaml
index 7f2e74fac..8e6a4e1a3 100644
--- a/examples/apecloud-mysql/expose-enable.yaml
+++ b/examples/elasticsearch/expose-disable.yaml
@@ -1,22 +1,30 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-expose-enable
-  namespace: default
+  name: es-expose-disable
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: es-multinode
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
-  - componentName: mysql
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: master
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
-      roleSelector: leader
       serviceType: LoadBalancer
+      ports:
+      - name: es-http
+        port: 9200
+        protocol: TCP
+        targetPort: es-http
     # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
-    switch: Enable
+    switch: Disable
   # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
   preConditionDeadlineSeconds: 0
   type: Expose
diff --git a/examples/elasticsearch/expose-enable.yaml b/examples/elasticsearch/expose-enable.yaml
new file mode 100644
index 000000000..d60d77f76
--- /dev/null
+++ b/examples/elasticsearch/expose-enable.yaml
@@ -0,0 +1,38 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: es-expose-enable
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: es-multinode
+  # Lists Expose objects, each specifying a Component and its services to be exposed.
+  expose:
+    # Specifies the name of the Component.
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: master
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
+    services:
+    - name: internet
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`.
+      serviceType: LoadBalancer
+      # Contains cloud provider related parameters if ServiceType is LoadBalancer.
+      # Following is an example for Aliyun ACK, please adjust the following annotations as needed.
+      annotations:
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: ""
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
+      ports:
+      - name: es-http
+        port: 9200
+        protocol: TCP
+        targetPort: es-http
+    # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
+    switch: Enable
+  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
+  preConditionDeadlineSeconds: 0
+  type: Expose
diff --git a/examples/elasticsearch/pod-monitor.yaml b/examples/elasticsearch/pod-monitor.yaml
new file mode 100644
index 000000000..ec9ac8e54
--- /dev/null
+++ b/examples/elasticsearch/pod-monitor.yaml
@@ -0,0 +1,18 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: es-cluster-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  podMetricsEndpoints:
+    - path: /metrics
+      port: metrics
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: es-multinode
\ No newline at end of file
diff --git a/examples/elasticsearch/restart.yaml b/examples/elasticsearch/restart.yaml
new file mode 100644
index 000000000..d821c1562
--- /dev/null
+++ b/examples/elasticsearch/restart.yaml
@@ -0,0 +1,17 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: elasticsearch-restart
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: es-multinode
+  type: Restart
+  # Lists Components to be restarted. ComponentOps specifies the Component to be operated on.
+  restart:
+    # Specifies the name of the Component.If not specified, ALL Components will be restarted.
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: data
diff --git a/examples/elasticsearch/scale-in.yaml b/examples/elasticsearch/scale-in.yaml
new file mode 100644
index 000000000..3776455dd
--- /dev/null
+++ b/examples/elasticsearch/scale-in.yaml
@@ -0,0 +1,22 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: es-scale-in
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: es-multinode
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: master
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/elasticsearch/scale-out.yaml b/examples/elasticsearch/scale-out.yaml
new file mode 100644
index 000000000..59dc19e5a
--- /dev/null
+++ b/examples/elasticsearch/scale-out.yaml
@@ -0,0 +1,22 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: es-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: es-multinode
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: master
+    # Specifies the replica changes for scaling in components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/elasticsearch/start.yaml b/examples/elasticsearch/start.yaml
new file mode 100644
index 000000000..1e2b6997f
--- /dev/null
+++ b/examples/elasticsearch/start.yaml
@@ -0,0 +1,9 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: elasticsearch-start
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: es-multinode
+  type: Start
diff --git a/examples/apecloud-mysql/stop.yaml b/examples/elasticsearch/stop.yaml
similarity index 51%
rename from examples/apecloud-mysql/stop.yaml
rename to examples/elasticsearch/stop.yaml
index 877eca5b3..c66071f2f 100644
--- a/examples/apecloud-mysql/stop.yaml
+++ b/examples/elasticsearch/stop.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-stop
-  namespace: default
+  name: elasticsearch-stop
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: es-multinode
   type: Stop
diff --git a/examples/pulsar/verticalscale.yaml b/examples/elasticsearch/verticalscale.yaml
similarity index 56%
rename from examples/pulsar/verticalscale.yaml
rename to examples/elasticsearch/verticalscale.yaml
index 5df4220ae..cb91a16bd 100644
--- a/examples/pulsar/verticalscale.yaml
+++ b/examples/elasticsearch/verticalscale.yaml
@@ -1,24 +1,24 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: pulsar-verticalscaling
-  namespace: default
+  name: elasticsearch-verticalscaling
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
+  clusterName: es-multinode
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
-    # - pulsar-broker
-    # - pulsar-proxy
-    # - bookies
-    # - bookies-recovery
-    # - zookeeper
-  - componentName: bookies
+    # Specifies the name of the Component.
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: master
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
     requests:
       cpu: '1'
-      memory: 1Gi
+      memory: '3Gi'
     limits:
       cpu: '1'
-      memory: 1Gi
+      memory: '3Gi'
diff --git a/examples/pulsar/volumeexpand.yaml b/examples/elasticsearch/volumeexpand.yaml
similarity index 55%
rename from examples/pulsar/volumeexpand.yaml
rename to examples/elasticsearch/volumeexpand.yaml
index eb97f65f5..b00d1f3c4 100644
--- a/examples/pulsar/volumeexpand.yaml
+++ b/examples/elasticsearch/volumeexpand.yaml
@@ -1,28 +1,22 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: pulsar-volumeexpansion
-  namespace: default
+  name: elasticsearch-volumeexpansion
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
+  clusterName: es-multinode
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
-    # - pulsar-broker
-    # - pulsar-proxy
-    # - bookies
-    # - bookies-recovery
-    # - zookeeper
-  - componentName: bookies
+    # - master
+    # - data
+    # - ingest
+    # - transform
+  - componentName: data
     # volumeClaimTemplates specifies the storage size and volumeClaimTemplate name.
     volumeClaimTemplates:
       # A reference to the volumeClaimTemplate name from the cluster components.
-      # - pulsar-broker, data
-      # - pulsar-proxy, data
-      # - bookies, journal or ledgers
-      # - bookies-recovery, data
-      # - zookeeper, data
-    - name: journal
+    - name: data
       storage: 30Gi
diff --git a/examples/kafka/README.md b/examples/kafka/README.md
index 1a5eb5848..6c6805978 100644
--- a/examples/kafka/README.md
+++ b/examples/kafka/README.md
@@ -2,93 +2,367 @@
 
 Apache Kafka is a distributed streaming platform designed to build real-time pipelines and can be used as a message broker or as a replacement for a log aggregation solution for big data applications.
 
-## Prerequisites
+- A broker is a Kafka server that stores data and handles requests from producers and consumers. Kafka clusters consist of multiple brokers, each identified by a unique ID. Brokers work together to distribute and replicate data across the cluster.
+- KRaft was introduced in Kafka 3.3.1 in October 2022 as an alternative to Zookeeper. A subset of brokers are designated as controllers, and these controllers provide the consensus services that used to be provided by Zookeeper.
 
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform.
+## Features In KubeBlocks
 
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
-```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
+### Lifecycle Management
 
-# Update helm repo
-helm repo update
+| Topology | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|----------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| Combined/Separated | Yes          | Yes                   | Yes               | Yes       | Yes        | Yes       | Yes    | N/A   |
 
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
+- Combine Mode: KRaft (Controller) and Broker components are combined in the same pod.
+- Separated Mode: KRaft (Controller) and Broker components are deployed in different pods.
 
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
+### Backup and Restore
 
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
-```
- 
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| N/A | N/A | N/A |
+
+### Versions
+
+| Versions |
+|----------|
+| 3.3.2 |
+
+## Prerequisites
+
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- Kafka Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
 
 ## Examples
 
-### [Create](cluster.yaml) 
-Create a kafka cluster with combined controller and broker components 
+### Create
+
+Create a Kafka cluster with combined controller and broker components
+
 ```bash
-kubectl apply -f examples/kafka/cluster.yaml
+kubectl apply -f examples/kafka/cluster-combined.yaml
 ```
-Create a kafka cluster with separated controller and broker components
+
+Create a Kafka cluster with separated controller and broker components:
+
 ```bash
 kubectl apply -f examples/kafka/cluster-separated.yaml
 ```
 
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
+### Horizontal scaling
+
+> [!IMPORTANT]
+> As per the Kafka documentation, the number of KRaft replicas should be odd to avoid split-brain scenarios.
+> Make sure the number of KRaft replicas, i.e. Controller replicas,  is always odd after Horizontal Scaling, either in Separated or Combined mode.
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out `kafka-combine` component in cluster `kafka-combined-cluster` by adding ONE more replica:
+
+```bash
+kubectl apply -f examples/kafka/scale-out.yaml
+```
+
+After applying the operation, you will see a new pod created. You can check the progress of the scaling operation with following command:
+
 ```bash
-kubectl apply -f examples/kafka/horizontalscale.yaml
+kubectl describe -n demo ops kafka-combined-scale-out
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in  `kafka-combine` component in cluster `kafka-combined-cluster` by deleting ONE replica:
+
+```bash
+kubectl apply -f examples/kafka/scale-in.yaml
+```
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: kafka-combine
+      replicas: 1 # Set the number of replicas to your desired number
 ```
 
 ### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
+Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster:
+
 ```bash
 kubectl apply -f examples/kafka/verticalscale.yaml
 ```
 
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: kafka-combine
+      replicas: 1
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
 ### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
+
+Volume expansion is the ability to increase the size of a Persistent Volume Claim (PVC) after it's created. It is introduced in Kubernetes v1.11 and goes GA in Kubernetes v1.24. It allows Kubernetes users to simply edit their PersistentVolumeClaim objects  without requiring any downtime at all if possible.
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster:
+
 ```bash
 kubectl apply -f examples/kafka/volumeexpand.yaml
 ```
 
+After the operation, you will see the volume size of the specified component is increased to `30Gi` in this case. Once you've done the change, check the `status.conditions` field of the PVC to see if the resize has completed.
+
+```bash
+kubectl get pvc -l app.kubernetes.io/instance=kafka-combined-cluster -n demo
+```
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: kafka-combine
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 30Gi  # specify new size, and make sure it is larger than the current size
+        - name: metadata
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 10Gi  # specify new size, and make sure it is larger than the current size
+```
+
 ### [Restart](restart.yaml)
+
 Restart the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/kafka/restart.yaml
 ```
 
 ### [Stop](stop.yaml)
+
 Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
 ```bash
 kubectl apply -f examples/kafka/stop.yaml
 ```
 
+#### Stop using Cluster API
+
+Alternatively, you may stop the cluster by setting the `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: kafka-combine
+      stop: true  # set stop `true` to stop the component
+      replicas: 1
+```
+
 ### [Start](start.yaml)
+
 Start the stopped cluster
+
 ```bash
 kubectl apply -f examples/kafka/start.yaml
 ```
 
-### [Configure](configure.yaml)
+#### Start using Cluster API
+
+Alternatively, you may start the cluster by setting the `spec.componentSpecs.stop` field to `false`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: kafka-combine
+      stop: false  # set to `false` (or remove this field) to start the component
+      replicas: 1
+```
+
+### [Reconfigure](configure.yaml)
+
 Configure parameters with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/kafka/configure.yaml
 ```
 
+This example update `log.flush.interval.ms` parameter of the `kafka-combine` component in the cluster `kafka-combined-cluster` to `1000`.
+This parameter is the maximum time in ms that a message in any topic is kept in memory before flushed to disk. If not set, the value in log.flush.scheduler.interval.ms is used.
+
+To verify the configuration change, you may log into the pod and check the configuration file.
+
+```bash
+cat  /opt/bitnami/kafka/config/kraft/server.properties | grep 'log.flush.interval.ms'
+```
+
 ### Delete
+
 If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
+```bash
+kubectl patch cluster -n demo kafka-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete cluster -n demo kafka-cluster
+```
+
+### Observability
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+#### Create Cluster
+
+Create a Kafka cluster with separated controller and broker components for instance:
+
+```bash
+kubectl apply -f examples/kafka/cluster-separated.yaml
+```
+
+#### Create PodMonitor
+
+##### Step 1. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster.
+Please set the labels correctly in the `PodMonitor` file to match the target pods.
+
+```yaml
+# cat pod monitor file
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: kafka-separated-cluster  # cluster name, set it to your cluster name
+      apps.kubeblocks.io/component-name: kafka-controller  # component name
+```
+
+- Pod Monitor Kafka JVM:
+
 ```bash
-kubectl patch cluster kafka-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+kubectl apply -f examples/kafka/jvm-pod-monitor.yaml
+```
+
+- Pod Monitor for Kafka Exporter:
+
+```bash
+kubectl apply -f examples/kafka/exporter-pod-monitor.yaml
+```
+
+##### Step 2. Accessing the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard.
+
+KubeBlocks provides a Grafana dashboard for monitoring the Kafka cluster. You can find it at [Kafka Dashboard](https://github.com/apecloud/kubeblocks-addons/tree/main/addons/kafka).
+
+> [!NOTE]
+>
+> - Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+> - set `job` to `kubeblocks` on Grafana dashboard to view the metrics.
+
+### FAQ
+
+#### How to Access Kafka Cluster
+
+##### With Direct Pod Access
+
+To connect to the Kafka cluster, you can use the following command to get the service for connection:
+
+```bash
+kubectl get svc -l app.kubernetes.io/instance=kafka-combined-cluster -n demo
+```
+
+And the excepted output is like below:
+
+```text
+NAME                                                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
+kafka-combined-cluster-kafka-combine-advertised-listener-0   ClusterIP   10.96.221.254   <none>        9092/TCP   28m
+```
+
+You can connect to the Kafka cluster using the `CLUSTER-IP` and `PORT`.
+
+##### With NodePort Service
+
+Currently only `nodeport` and `clusterIp` network modes are supported for Kafka
+To access the Kafka cluster using the `nodeport` service, you can create Kafka cluster with the following configuration,  refer to [Kafka Network Modes Example](./cluster-combined-nodeport.yaml) for more details.
 
-kubectl delete cluster kafka-cluster
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: kafka-combine
+      stop: false  # set to `false` (or remove this field) to start the component
+      services:
+        - name: advertised-listener
+          serviceType: NodePort
+          podService: true
+      replicas: 1
+      env:
+        - name: KB_KAFKA_BROKER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_KAFKA_CONTROLLER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_BROKER_DIRECT_POD_ACCESS # set KB_BROKER_DIRECT_POD_ACCESS to FALSE to disable direct pod access
+          value: "false"
 ```
diff --git a/examples/kafka/cluster-2x-ext-zk-svc-descriptor.yaml b/examples/kafka/cluster-2x-ext-zk-svc-descriptor.yaml
new file mode 100644
index 000000000..bb1e5750c
--- /dev/null
+++ b/examples/kafka/cluster-2x-ext-zk-svc-descriptor.yaml
@@ -0,0 +1,87 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: kafka2-ext-zk-descriptor
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `kafaka` to create a Kafka Cluster
+  clusterDef: kafka
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # - combined: combined Kafka controller (KRaft) and broker in one Component
+  # - combined_monitor: combined mode with monitor component
+  # - separated: separated KRaft and Broker Components.
+  # - separated_monitor: separated mode with monitor component
+  # Valid options are: [combined,combined_monitor,separated,separated_monitor,kafka2-external-zk]
+  topology: kafka2-external-zk
+  services:
+    - name: bootstrap
+      serviceName: bootstrap
+      componentSelector: kafka-broker
+      spec:
+        type: ClusterIP
+        ports:
+          - name: kafka-client
+            targetPort: 9092
+            port: 9092
+  componentSpecs:
+    - name: kafka-broker
+      componentDef: kafka27-broker
+      serviceRefs:
+        - name: kafkaZookeeper
+          namespace: demo
+          serviceDescriptor: kafka-cluster-zookeeper-service
+      tls: false
+      replicas: 3
+      env:
+        - name: KB_BROKER_DIRECT_POD_ACCESS
+          value: 'true'
+        - name: KAFKA_HEAP_OPTS
+          value: "-Xmx500m -Xms500m"
+        - name: KB_KAFKA_ZK_SUB_PATH
+          value: "test"   # set sub path to use for sharing zk, default value is $(CLUSTER_NAME), set empty string for root
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+        - name: metadata
+          spec:
+            storageClassName: null
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 5Gi
+---
+apiVersion: apps.kubeblocks.io/v1
+kind: ServiceDescriptor
+metadata:
+  name: kafka-cluster-zookeeper-service
+  namespace: demo
+spec:
+  # Specifies the type or nature of the service.
+  # Should represent a well-known application cluster type, such as {mysql, redis, zookeeper}.
+  serviceKind: zookeeper
+  # Represents the version of the service reference.
+  serviceVersion: 3.8.5
+  # Represents the endpoint of the service connection credential.
+  endpoint:
+    # your external zk endpoints here
+    value: "zookeeper-cluster-zookeeper-0.zookeeper-cluster-zookeeper-headless.demo:2181,zookeeper-cluster-zookeeper-1.zookeeper-cluster-zookeeper-headless.demo:2181,zookeeper-cluster-zookeeper-2.zookeeper-cluster-zookeeper-headless.demo:2181"
+  # Represents the port of the service connection credential.
+  port:
+    value: "2181"
\ No newline at end of file
diff --git a/examples/kafka/cluster-cmpd.yaml b/examples/kafka/cluster-cmpd.yaml
deleted file mode 100644
index 98cc80cd2..000000000
--- a/examples/kafka/cluster-cmpd.yaml
+++ /dev/null
@@ -1,77 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: kafka-cluster
-  namespace: default
-  annotations:
-    # kafka broker's jvm heap setting
-    "kubeblocks.io/extra-env": '{"KB_KAFKA_ENABLE_SASL":"false","KB_KAFKA_BROKER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_CONTROLLER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_PUBLIC_ACCESS":"false", "KB_KAFKA_BROKER_NODEPORT": "false"}'
-    # Define kafka cluster annotation keys for nodeport feature gate.
-    kubeblocks.io/enabled-pod-ordinal-svc: broker
-    # enable NodePort
-    # kubeblocks.io/enabled-node-port-svc: broker
-    # kubeblocks.io/disabled-cluster-ip-svc: broker
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Defines the list of services that are exposed by a Cluster. This field allows selected components, either from `componentSpecs` or `shardingSpecs`, to be exposed as cluster-level services. Services defined here can be referenced by other clusters using the ServiceRefClusterSelector.
-  services:
-    # Defines the list of services that are exposed by a Cluster. This field allows selected components, either from `componentSpecs` or `shardingSpecs`, to be exposed as cluster-level services. Services defined here can be referenced by other clusters using the ServiceRefClusterSelector.
-  - name: bootstrap
-    # Defines the list of services that are exposed by a Cluster. This field allows selected components, either from `componentSpecs` or `shardingSpecs`, to be exposed as cluster-level services. Services defined here can be referenced by other clusters using the ServiceRefClusterSelector.
-    serviceName: bootstrap
-    # Defines the list of services that are exposed by a Cluster. This field allows selected components, either from `componentSpecs` or `shardingSpecs`, to be exposed as cluster-level services. Services defined here can be referenced by other clusters using the ServiceRefClusterSelector.
-    componentSelector: broker
-    # Defines the list of services that are exposed by a Cluster. This field allows selected components, either from `componentSpecs` or `shardingSpecs`, to be exposed as cluster-level services. Services defined here can be referenced by other clusters using the ServiceRefClusterSelector.
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: kafka-client
-        targetPort: 9092
-        port: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: broker
-    componentDef: kafka-combine
-    tls: false
-    replicas: 1
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: metadata
-      spec:
-        storageClassName: null
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: metrics-exp
-    componentDef: kafka-exporter
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
diff --git a/examples/kafka/cluster-combined-cmpd.yaml b/examples/kafka/cluster-combined-cmpd.yaml
deleted file mode 100644
index b71804961..000000000
--- a/examples/kafka/cluster-combined-cmpd.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: kafka-cluster
-  namespace: default
-  annotations:
-    # kafka broker's jvm heap setting
-    "kubeblocks.io/extra-env": '{"KB_KAFKA_ENABLE_SASL":"false","KB_KAFKA_BROKER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_CONTROLLER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_PUBLIC_ACCESS":"false"}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: broker
-    componentDef: kafka-combine
-    tls: false
-    replicas: 1
-    serviceVersion: 3.3.2
-    services:
-# If enable client protocol in NodePort network type
-#      - name: advertised-listener
-#        podService: true
-#        serviceType: NodePort
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: metadata
-      spec:
-        storageClassName: null
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: metrics-exp
-    componentDef: kafka-exporter
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
diff --git a/examples/kafka/cluster-combined-nodeport.yaml b/examples/kafka/cluster-combined-nodeport.yaml
new file mode 100644
index 000000000..b71fc1780
--- /dev/null
+++ b/examples/kafka/cluster-combined-nodeport.yaml
@@ -0,0 +1,58 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: kafka-combined-cluster-np
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  clusterDef: kafka
+  topology: combined_monitor
+  componentSpecs:
+    - name: kafka-combine
+      # Override per-pod servcie named 'advertised-listener'
+      # by setting its `serviceType` to `NodePort` (default to `ClusterIP`)
+      services:
+        - name: advertised-listener
+          serviceType: NodePort
+          podService: true
+      env:
+        - name: KB_KAFKA_BROKER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_KAFKA_CONTROLLER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_BROKER_DIRECT_POD_ACCESS # set KB_BROKER_DIRECT_POD_ACCESS to FALSE to disable direct pod access
+          value: "false"
+      replicas: 1
+      resources:
+        limits:
+          cpu: "1"
+          memory: "1Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+        - name: metadata
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 1Gi
+    - name: kafka-exporter
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "1Gi"
+        requests:
+          cpu: "0.1"
+          memory: "0.2Gi"
\ No newline at end of file
diff --git a/examples/kafka/cluster-combined.yaml b/examples/kafka/cluster-combined.yaml
new file mode 100644
index 000000000..e956172a4
--- /dev/null
+++ b/examples/kafka/cluster-combined.yaml
@@ -0,0 +1,82 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: kafka-combined-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `kafaka` to create a Kafka Cluster
+  clusterDef: kafka
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # - combined: combined Kafka controller (KRaft) and broker in one Component
+  # - combined_monitor: combined mode with monitor component
+  # - separated: separated KRaft and Broker Components.
+  # - separated_monitor: separated mode with monitor component
+  # Valid options are: [combined,combined_monitor,separated,separated_monitor]
+  topology: combined_monitor
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: kafka-combine
+      env:
+        - name: KB_KAFKA_BROKER_HEAP # use this ENV to set BROKER HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_KAFKA_CONTROLLER_HEAP # use this ENV to set CONTOLLER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+          # Whether to enable direct Pod IP address access mode.
+          # - If set to 'true', Kafka clients will connect to Brokers using the Pod IP address directly.
+          # - If set to 'false', Kafka clients will connect to Brokers using the Headless Service's FQDN.
+        - name: KB_BROKER_DIRECT_POD_ACCESS
+          value: "false"
+      # Update `replicas` to your need.
+      replicas: 1
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: "1"
+          memory: "1Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+        - name: metadata
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 1Gi
+    - name: kafka-exporter # component for exporter
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "1Gi"
+        requests:
+          cpu: "0.1"
+          memory: "0.2Gi"
\ No newline at end of file
diff --git a/examples/kafka/cluster-separated-cmpd.yaml b/examples/kafka/cluster-separated-cmpd.yaml
deleted file mode 100644
index 88e236cc8..000000000
--- a/examples/kafka/cluster-separated-cmpd.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: kafka-cluster
-  namespace: default
-  annotations:
-    # kafka broker's jvm heap setting
-    "kubeblocks.io/extra-env": '{"KB_KAFKA_ENABLE_SASL":"false","KB_KAFKA_BROKER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_CONTROLLER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_PUBLIC_ACCESS":"false"}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: broker
-    componentDef: kafka-broker
-    tls: false
-    replicas: 1
-# If enable client protocol in NodePort network type
-#    services:
-#      - name: advertised-listener
-#        podService: true
-#        serviceType: NodePort
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: metadata
-      spec:
-        storageClassName: null
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 5Gi
-  - name: controller
-    componentDefRef: controller
-    componentDef: kafka-controller
-    tls: false
-    replicas: 1
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: metadata
-      spec:
-        storageClassName: null
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: metrics-exp
-    componentDef: kafka-exporter
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
diff --git a/examples/kafka/cluster-separated.yaml b/examples/kafka/cluster-separated.yaml
index faac00a86..fbd948f4f 100644
--- a/examples/kafka/cluster-separated.yaml
+++ b/examples/kafka/cluster-separated.yaml
@@ -1,98 +1,88 @@
 apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
-  name: kafka-cluster
-  namespace: default
-  annotations:
-    # kafka broker's jvm heap setting
-    "kubeblocks.io/extra-env": '{"KB_KAFKA_ENABLE_SASL":"false","KB_KAFKA_BROKER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_CONTROLLER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_PUBLIC_ACCESS":"false", "KB_KAFKA_BROKER_NODEPORT": "false"}'
-    # Define kafka cluster annotation keys for nodeport feature gate.
-    kubeblocks.io/enabled-pod-ordinal-svc: broker
-    # enable NodePort
-    # kubeblocks.io/enabled-node-port-svc: broker
-    # kubeblocks.io/disabled-cluster-ip-svc: broker
+  name: kafka-separated-cluster
+  namespace: demo
 spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: kafka
-  # Refers to the ClusterVersion name. Deprecated since v0.9, use ComponentVersion instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases.
-  clusterVersionRef: kafka-3.3.2
   # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
   # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
   # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
   # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Defines the services to access a cluster.
-  services:
-  - name: bootstrap
-    serviceName: bootstrap
-    componentSelector: broker
-    spec:
-      type: ClusterIP
-      ports:
-      - name: kafka-client
-        targetPort: 9092
-        port: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `kafaka` to create a Kafka Cluster
+  clusterDef: kafka
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # - combined: combined Kafka controller (KRaft) and broker in one Component
+  # - combined_monitor: combined mode with monitor component
+  # - separated: separated KRaft and Broker Components.
+  # - separated_monitor: separated mode with monitor component
+  # Valid options are: [combined,combined_monitor,separated,separated_monitor]
+  topology: separated_monitor
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
   componentSpecs:
-  - name: broker
-    componentDef: kafka-broker
-    tls: false
-    replicas: 1
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: metadata
-      spec:
-        storageClassName: null
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 5Gi
-  - name: controller
-    componentDefRef: controller
-    componentDef: kafka-controller
-    tls: false
-    replicas: 1
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: metadata
-      spec:
-        storageClassName: null
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: metrics-exp
-    componentDefRef: kafka-exporter
-    componentDef: kafka-exporter
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
+    - name: kafka-broker
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      env:
+        - name: KB_KAFKA_BROKER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_KAFKA_CONTROLLER_HEAP
+          value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
+        - name: KB_BROKER_DIRECT_POD_ACCESS
+          value: "true"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+        - name: metadata
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 1Gi
+    - name: kafka-controller
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: metadata
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 1Gi
+    - name: kafka-exporter
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "1Gi"
+        requests:
+          cpu: "0.1"
+          memory: "0.2Gi"
\ No newline at end of file
diff --git a/examples/kafka/cluster.yaml b/examples/kafka/cluster.yaml
deleted file mode 100644
index 7d7423b77..000000000
--- a/examples/kafka/cluster.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: kafka-cluster
-  namespace: default
-  annotations:
-    # kafka broker's jvm heap setting
-    "kubeblocks.io/extra-env": '{"KB_KAFKA_ENABLE_SASL":"false","KB_KAFKA_BROKER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_CONTROLLER_HEAP":"-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64","KB_KAFKA_PUBLIC_ACCESS":"false", "KB_KAFKA_BROKER_NODEPORT": "false"}'
-    # Define kafka cluster annotation keys for nodeport feature gate.
-    kubeblocks.io/enabled-pod-ordinal-svc: broker
-    # enable NodePort
-    # kubeblocks.io/enabled-node-port-svc: broker
-    # kubeblocks.io/disabled-cluster-ip-svc: broker
-spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: kafka
-  # Refers to the ClusterVersion name. Deprecated since v0.9, use ComponentVersion instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases.
-  clusterVersionRef: kafka-3.3.2
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  services:
-  - name: bootstrap
-    serviceName: bootstrap
-    componentSelector: broker
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: kafka-client
-        targetPort: 9092
-        port: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: broker
-    componentDef: kafka-combine
-    tls: false
-    replicas: 1
-    serviceAccountName: kb-kafka-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: metadata
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: metrics-exp
-    componentDefRef: kafka-exporter
-    componentDef: kafka-exporter
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
diff --git a/examples/kafka/configure.yaml b/examples/kafka/configure.yaml
index 679d2f328..a03e93523 100644
--- a/examples/kafka/configure.yaml
+++ b/examples/kafka/configure.yaml
@@ -1,34 +1,24 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-reconfiguring
-  namespace: default
+  name:  kafka-combined-reconfiguring
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName: kafka-combined-cluster
   # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
   force: false
   # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
+  reconfigures:
     # Specifies the name of the Component.
-    componentName: broker
+  - componentName: kafka-combine
    # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: server.properties
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: log.flush.interval.ms
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: "2000"
-      # Specifies the name of the configuration template.
-      name: kafka-configuration-tpl
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+    - key: log.flush.interval.ms
+      # Represents the parameter values that are to be updated.
+      # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
+      value: "2000"
   # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
   preConditionDeadlineSeconds: 0
   type: Reconfiguring
diff --git a/examples/kafka/exporter-pod-monitor.yaml b/examples/kafka/exporter-pod-monitor.yaml
new file mode 100644
index 000000000..f6e9b4010
--- /dev/null
+++ b/examples/kafka/exporter-pod-monitor.yaml
@@ -0,0 +1,28 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: kafka-exporter-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: metrics
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: kafka-separated-cluster
+      apps.kubeblocks.io/component-name: kafka-exporter
\ No newline at end of file
diff --git a/examples/kafka/jvm-pod-monitor.yaml b/examples/kafka/jvm-pod-monitor.yaml
new file mode 100644
index 000000000..dca1cc788
--- /dev/null
+++ b/examples/kafka/jvm-pod-monitor.yaml
@@ -0,0 +1,28 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: kafka-jmx-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: metrics
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: kafka-separated-cluster
+      apps.kubeblocks.io/component-name: kafka-controller
\ No newline at end of file
diff --git a/examples/kafka/restart.yaml b/examples/kafka/restart.yaml
index fec603be2..59f7d9dde 100644
--- a/examples/kafka/restart.yaml
+++ b/examples/kafka/restart.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-restart
-  namespace: default
+  name: kafka-combine-restart
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName: kafka-combined-cluster
   type: Restart
   # Lists Components to be restarted. ComponentOps specifies the Component to be operated on.
   restart:
     # Specifies the name of the Component.
-  - componentName: broker
+  - componentName: kafka-combine
diff --git a/examples/kafka/scale-in.yaml b/examples/kafka/scale-in.yaml
new file mode 100644
index 000000000..f7493deb8
--- /dev/null
+++ b/examples/kafka/scale-in.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: kafka-combined-scale-in
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: kafka-combined-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: kafka-combine
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/kafka/scale-out.yaml b/examples/kafka/scale-out.yaml
new file mode 100644
index 000000000..9ff86f4fc
--- /dev/null
+++ b/examples/kafka/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: kafka-combined-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: kafka-combined-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: kafka-combine
+    # Specifies the replica changes for scaling in components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/kafka/start.yaml b/examples/kafka/start.yaml
index cc87d2188..b63bc382e 100644
--- a/examples/kafka/start.yaml
+++ b/examples/kafka/start.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-start
-  namespace: default
+  name: kafka-combined-start
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName: kafka-combined-cluster
   type: Start
diff --git a/examples/kafka/stop.yaml b/examples/kafka/stop.yaml
index b7b6f9cce..193d94a7a 100644
--- a/examples/kafka/stop.yaml
+++ b/examples/kafka/stop.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-stop
-  namespace: default
+  name:  kafka-combine-stop
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName:  kafka-combined-cluster
   type: Stop
diff --git a/examples/kafka/verticalscale.yaml b/examples/kafka/verticalscale.yaml
index 015494eeb..0f28aad20 100644
--- a/examples/kafka/verticalscale.yaml
+++ b/examples/kafka/verticalscale.yaml
@@ -1,19 +1,19 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-verticalscaling
-  namespace: default
+  name: kafka-combined-vscale
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName: kafka-combined-cluster
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
-  - componentName: broker
+  - componentName: kafka-combine
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
     requests:
       cpu: '1'
       memory: 1Gi
     limits:
       cpu: '1'
-      memory: 1Gi
+      memory: 1Gi
\ No newline at end of file
diff --git a/examples/kafka/volumeexpand.yaml b/examples/kafka/volumeexpand.yaml
index 7f1e3ed6b..1e5fd609f 100644
--- a/examples/kafka/volumeexpand.yaml
+++ b/examples/kafka/volumeexpand.yaml
@@ -1,16 +1,16 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-volumeexpansion
-  namespace: default
+  name: kafka-combined-volumeexpansion
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName: kafka-combined-cluster
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
-  - componentName: broker
+  - componentName: kafka-combine
     # volumeClaimTemplates specifies the storage size and volumeClaimTemplate name.
     volumeClaimTemplates:
     - name: data
diff --git a/examples/milvus/README.md b/examples/milvus/README.md
new file mode 100644
index 000000000..2339c5de9
--- /dev/null
+++ b/examples/milvus/README.md
@@ -0,0 +1,256 @@
+# Milvus
+
+Milvus is an open source (Apache-2.0 licensed) vector database built to power embedding similarity search and AI applications. Milvus's architecture is designed to handle large-scale vector datasets and includes various deployment modes:  Milvus Standalone, and Milvus Distributed, to accommodate different data scale needs.
+
+- Standalone Mode, including three components:
+  - Milvus: Provides the core functionality of the system.
+  - Metadata Storage (ETCD): A metadata engine for accessing and storing metadata of Milvus internal components (including proxies, index nodes, etc.), typically using etcd.
+  - Object Storage (minio): A storage engine responsible for the persistence of Milvus data, typically using MinIO or S3-compatible storage services.
+
+- Cluster Mode, including multiple layers:
+  - Access Layer: composed of a group of stateless proxies
+  - Worker Nodes:
+    - Query Nodes
+    - Data Nodes
+    - Index Nodes
+  - Coordinator Service: Manages the metadata of the cluster, including Root, Query , Data, and Index Coordinators.
+  - Storage Layer, including
+    - Metadata Storage (ETCD): A metadata engine for accessing and storing metadata of Milvus internal components, typically using etcd.
+    - Object Storage (minio): A storage engine responsible for the persistence of Milvus data, typically using MinIO or S3-compatible storage services.
+    - Log Storage (Pulsar): A log storage engine responsible for the persistence of Milvus logs, typically using Apache Pulsar.
+
+## Features In KubeBlocks
+
+### Lifecycle Management
+
+| Topology | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|----------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| Standalone/Cluster | Yes          | Yes                   | N/A           | Yes       | Yes        | N/A       | Yes    | N/A   |
+
+### Backup and Restore
+
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| N/A | N/A | N/A |
+
+### Versions
+
+| Versions |
+|----------|
+| 2.3.2 |
+
+## Prerequisites
+
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- **ETCD** , **Milvus** , **Pulsar** Addons Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
+
+## Examples
+
+### Create
+
+#### [Standalone Mode](cluster-standalone.yaml)
+
+Create a Milvus cluster of `Standalone` mode:
+
+```bash
+kubectl apply -f examples/milvus/cluster-standalone.yaml
+```
+
+This will create a standalone Milvus cluster with the following components: Milvus, Metadata Storage (ETCD), Object Storage (minio), and Milvus will not be created until the ETCD and Minio are ready.
+
+To access the Milvus service, you can expose the service by creating a service:
+
+```bash
+kubectl port-forward pod/milvus-standalone-milvus-0 -n demo 19530:19530
+```
+
+And then you can access the Milvus service via `localhost:19530`. For instance you can run the python code below to test the service:
+
+
+#### Cluster Mode
+
+TO create a Milvus cluster of `Cluster` mode, it is recommended to create one etcd cluster and one minio cluster before hand for Storage.
+
+```bash
+kubectl apply -f examples/milvus/etcd-cluster.yaml  # for metadata storage
+kubectl apply -f examples/milvus/minio-cluster.yaml # for object storage
+kubectl apply -f examples/milvus/pulsar-cluster.yaml # for log storage
+```
+
+Create a Milvus cluster with `Cluster` mode:
+
+```bash
+kubectl apply -f examples/milvus/cluster.yaml
+```
+
+The cluster will be created with the following components:
+
+- Proxy
+- Data Node
+- Index Node
+- Query Node
+- Mixed Coordinator
+
+And each component will be created with `serviceRef` to the corresponding service: etcd, minio, and pulsar.
+
+```yaml
+      # Defines a list of ServiceRef for a Component
+      serviceRefs:
+        - name: milvus-meta-storage # Specifies the identifier of the service reference declaration, defined in `componentDefinition.spec.serviceRefDeclarations[*].name`
+          namespace: demo        # namepspace of referee cluster, update on demand
+          # References a service provided by another KubeBlocks Cluster
+          clusterServiceSelector:
+            cluster: etcdm-cluster  # ETCD Cluster Name, update the cluster name on demand
+            service:
+              component: etcd       # component name, should be etcd
+              service: headless     # Refer to default headless Service
+              port: client          # NOTE: Refer to port name 'client', for port number '3501'
+        - name: milvus-log-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: pulsarm-cluster # Pulsar Cluster Name
+            service:
+              component: broker
+              service: headless
+              port: pulsar          # NOTE: Refer to port name 'pulsar', for port number '6650'
+        - name: milvus-object-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: miniom-cluster # Minio Cluster Name
+            service:
+              component: minio
+              service: headless
+              port: http           # NOTE: Refer to port name 'http', for port number '9000'
+            credential:            # Specifies the SystemAccount to authenticate and establish a connection with the referenced Cluster.
+              component: minio     # for component 'minio'
+              name: admin          # NOTE: the name of the credential (SystemAccount) to reference, using account 'admin' in this case
+```
+
+> [!NOTE]
+> Clusters, such as Pulsar, Minio and ETCD, have multiple ports for different services.
+> When creating Cluster with `serviceRef`, you should know which `port` providing corresponding services.
+
+For instance, in MinIO, there are mainly four ports: 9000, 9001, 3501, and 3502, and they are used for different services or functions.
+
+- 9000: This is the default API port for MinIO. Clients communicate with the MinIO server through this port to perform operations such as uploading, downloading, and deleting objects.
+- 9001: This is the default console port for MinIO. MinIO provides a web - based management console that users can access and manage the MinIO server through this port.
+- 3501: This port is typically used for inter - node communication in MinIO's distributed mode. In a distributed MinIO cluster, nodes need to communicate through this port for data synchronization and coordination.
+- 3502: This port is also typically used for inter - node communication in MinIO's distributed mode. Similar to 3501, it is used for data synchronization and coordination between nodes, but it might be for different communication protocols or services.
+
+And you should pick the port, either using port name or port number, provides API service:
+
+```yaml
+- name: milvus-object-storage
+  namespace: demo
+  clusterServiceSelector:
+    cluster: miniom-cluster
+    service:
+      component: minio
+      service: headless
+      port: http  # set port to the one provides API service in your Minio.
+```
+
+### Horizontal scaling
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out `queryNode` in the cluster by adding ONE more replica:
+
+```bash
+kubectl apply -f examples/milvus/scale-out.yaml
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in `queryNode` in the cluster by deleting ONE replica:
+
+```bash
+kubectl apply -f examples/milvus/scale-in.yaml
+```
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: querynode
+      replicas: 2 # Update `replicas` to 1 for scaling in, and to 3 for scaling out
+```
+
+### [Restart](restart.yaml)
+
+Restart the specified components in the cluster
+
+```bash
+kubectl apply -f examples/milvus/restart.yaml
+```
+
+### [Stop](stop.yaml)
+
+Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+```bash
+kubectl apply -f examples/milvus/stop.yaml
+```
+
+### [Start](start.yaml)
+
+Start the stopped cluster
+
+```bash
+kubectl apply -f examples/milvus/start.yaml
+```
+
+### Observability
+
+There are various ways to monitor the cluster. Here we use Prometheus and Grafana to demonstrate how to monitor the cluster.
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+#### Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/milvus/pod-monitor.yaml
+```
+
+It sets up the `PodMonitor` to monitor the Milvus cluster and scrapes the metrics from the Milvus components.
+
+```yaml
+  podMetricsEndpoints:
+    - path: /metrics
+      port: metrics
+      scheme: http
+      relabelings:
+        - targetLabel: app_kubernetes_io_name
+          replacement: milvus # add a label to the target: app_kubernetes_io_name=milvus
+```
+
+For more information about the metrics, refer to the [Visualize Milvus Metrics](https://milvus.io/docs/visualize.md).
+
+### Delete
+
+If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
+```bash
+kubectl patch cluster -n demo milvus-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete cluster -n demo milvus-cluster
+```
diff --git a/examples/milvus/cluster-standalone.yaml b/examples/milvus/cluster-standalone.yaml
new file mode 100644
index 000000000..e154d2eac
--- /dev/null
+++ b/examples/milvus/cluster-standalone.yaml
@@ -0,0 +1,78 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: milvus-standalone
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `milvus` to create a Milvus Cluster
+  clusterDef: milvus
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # Valid options are: [standalone,cluster]
+  topology: standalone
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: etcd
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 10Gi
+    - name: minio
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 10Gi
+    - name: milvus
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 10Gi
diff --git a/examples/milvus/cluster.yaml b/examples/milvus/cluster.yaml
new file mode 100644
index 000000000..74f5f5dd0
--- /dev/null
+++ b/examples/milvus/cluster.yaml
@@ -0,0 +1,226 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  namespace: demo
+  name: milvus-cluster
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `milvus` to create a Milvus Cluster
+  clusterDef: milvus
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # Valid options are: [standalone,cluster]
+  topology: cluster
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: proxy
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      # Defines a list of ServiceRef for a Component
+      serviceRefs:
+        - name: milvus-meta-storage # Specifies the identifier of the service reference declaration, defined in `componentDefinition.spec.serviceRefDeclarations[*].name`
+          namespace: demo        # namepspace of referee cluster, update on demand
+          # References a service provided by another KubeBlocks Cluster
+          clusterServiceSelector:
+            cluster: etcdm-cluster  # ETCD Cluster Name, update the cluster name on demand
+            service:
+              component: etcd       # component name, should be etcd
+              service: headless     # Refer to default headless Service
+              port: client          # Refer to port name 'client'
+        - name: milvus-log-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: pulsarm-cluster # Pulsar Cluster Name
+            service:
+              component: broker
+              service: headless
+              port: pulsar
+        - name: milvus-object-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: miniom-cluster # Minio Cluster Name
+            service:
+              component: minio
+              service: headless
+              port: http
+            credential:            # Specifies the SystemAccount to authenticate and establish a connection with the referenced Cluster.
+              component: minio     # for component 'minio'
+              name: admin          # the name of the credential (SystemAccount) to reference, using account 'admin' in this case
+      disableExporter: true
+    - name: mixcoord
+      replicas: 1
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      serviceRefs:
+        - name: milvus-meta-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: etcdm-cluster
+            service:
+              component: etcd
+              service: headless
+              port: client
+
+        - name: milvus-log-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: pulsarm-cluster
+            service:
+              component: broker
+              service: headless
+              port: pulsar
+
+        - name: milvus-object-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: miniom-cluster
+            service:
+              component: minio
+              service: headless
+              port: http
+            credential:
+              component: minio
+              name: admin
+
+      disableExporter: true
+    - name: datanode
+      replicas: 1
+      disableExporter: true
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      serviceRefs:
+        - name: milvus-meta-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: etcdm-cluster
+            service:
+              component: etcd
+              service: headless
+              port: client
+
+        - name: milvus-log-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: pulsarm-cluster
+            service:
+              component: broker
+              service: headless
+              port: pulsar
+
+        - name: milvus-object-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: miniom-cluster
+            service:
+              component: minio
+              service: headless
+              port: http
+            credential:
+              component: minio
+              name: admin
+
+    - name: indexnode
+      replicas: 1
+      disableExporter: true
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      serviceRefs:
+        - name: milvus-meta-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: etcdm-cluster
+            service:
+              component: etcd
+              service: headless
+              port: client
+
+        - name: milvus-log-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: pulsarm-cluster
+            service:
+              component: broker
+              service: headless
+              port: pulsar
+
+        - name: milvus-object-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: miniom-cluster
+            service:
+              component: minio
+              service: headless
+              port: http
+            credential:
+              component: minio
+              name: admin
+    - name: querynode
+      replicas: 1
+      disableExporter: true
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      serviceRefs:
+        - name: milvus-meta-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: etcdm-cluster
+            service:
+              component: etcd
+              service: headless
+              port: client
+
+        - name: milvus-log-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: pulsarm-cluster
+            service:
+              component: broker
+              service: headless
+              port: pulsar
+
+        - name: milvus-object-storage
+          namespace: demo
+          clusterServiceSelector:
+            cluster: miniom-cluster
+            service:
+              component: minio
+              service: headless
+              port: http
+            credential:
+              component: minio
+              name: admin
diff --git a/examples/milvus/etcd-cluster.yaml b/examples/milvus/etcd-cluster.yaml
new file mode 100644
index 000000000..a79292d6d
--- /dev/null
+++ b/examples/milvus/etcd-cluster.yaml
@@ -0,0 +1,28 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: etcdm-cluster
+  namespace: demo
+spec:
+  terminationPolicy: WipeOut
+  componentSpecs:
+    - name: etcd
+      componentDef: etcd-3-1.0.0
+      serviceVersion: 3.5.6
+      replicas: 1
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/milvus/minio-cluster.yaml b/examples/milvus/minio-cluster.yaml
new file mode 100644
index 000000000..ed8af0211
--- /dev/null
+++ b/examples/milvus/minio-cluster.yaml
@@ -0,0 +1,26 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: miniom-cluster
+  namespace: demo
+spec:
+  terminationPolicy: WipeOut
+  componentSpecs:
+    - name: minio
+      componentDef: milvus-minio-1.0.0
+      replicas: 1
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
diff --git a/examples/milvus/pod-monitor.yaml b/examples/milvus/pod-monitor.yaml
new file mode 100644
index 000000000..838e7458c
--- /dev/null
+++ b/examples/milvus/pod-monitor.yaml
@@ -0,0 +1,21 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: milvus-cluster-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  podMetricsEndpoints:
+    - path: /metrics
+      port: metrics
+      scheme: http
+      relabelings:
+        - targetLabel: app_kubernetes_io_name
+          replacement: milvus
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: milvus-cluster # cluster name: milvus-cluster
\ No newline at end of file
diff --git a/examples/milvus/pulsar-cluster.yaml b/examples/milvus/pulsar-cluster.yaml
new file mode 100644
index 000000000..d8c90ca61
--- /dev/null
+++ b/examples/milvus/pulsar-cluster.yaml
@@ -0,0 +1,105 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: pulsarm-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `pulsar` to create a Pulsar Cluster
+  clusterDef: pulsar
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  topology: pulsar-basic-cluster
+  # Defines a list of additional Services that are exposed by a Cluster.
+  services:
+    - name: broker-bootstrap
+      serviceName: broker-bootstrap
+      componentSelector: broker
+      spec:
+        type: ClusterIP
+        ports:
+          - name: pulsar
+            port: 6650
+            targetPort: 6650
+          - name: http
+            port: 80
+            targetPort: 8080
+          - name: kafka-client
+            port: 9092
+            targetPort: 9092
+    - name: zookeeper
+      serviceName: zookeeper
+      componentSelector: zookeeper
+      spec:
+        type: ClusterIP
+        ports:
+          - name: client
+            port: 2181
+            targetPort: 2181
+  componentSpecs:
+    - name: broker
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [2.11.2,3.0.2]
+      serviceVersion: 3.0.2
+      replicas: 1
+      env:
+        - name: KB_PULSAR_BROKER_NODEPORT
+          value: "false"
+      resources:
+        limits:
+          cpu: "1"
+          memory: "512Mi"
+        requests:
+          cpu: "200m"
+          memory: "512Mi"
+    - name: bookies
+      serviceVersion: 3.0.2
+      replicas: 4
+      resources:
+        limits:
+          cpu: "1"
+          memory: "512Mi"
+        requests:
+          cpu: "200m"
+          memory: "512Mi"
+      volumeClaimTemplates:
+        - name: ledgers
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 8Gi
+        - name: journal
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 8Gi
+    - name: zookeeper
+      serviceVersion: 3.0.2
+      replicas: 1
+      resources:
+        limits:
+          cpu: "1"
+          memory: "512Mi"
+        requests:
+          cpu: "100m"
+          memory: "512Mi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 8Gi
\ No newline at end of file
diff --git a/examples/milvus/restart.yaml b/examples/milvus/restart.yaml
new file mode 100644
index 000000000..57508fa03
--- /dev/null
+++ b/examples/milvus/restart.yaml
@@ -0,0 +1,21 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: milvus-restart
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: milvus-cluster
+  type: Restart
+  # Lists Components to be restarted. ComponentOps specifies the Component to be operated on.
+  restart:
+    # Specifies the name of the Component.
+    # - standalone: milvus
+    # - standalone: etcd
+    # - standalone: minio
+    # - distributed: proxy
+    # - distributed: mixcoord
+    # - distributed: datanode
+    # - distributed: indexnode
+    # - distributed: querynode
+  - componentName: mixcoord
diff --git a/examples/milvus/scale-in.yaml b/examples/milvus/scale-in.yaml
new file mode 100644
index 000000000..55e2ba119
--- /dev/null
+++ b/examples/milvus/scale-in.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: milvus-scale-in
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: milvus-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: querynode
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/milvus/scale-out.yaml b/examples/milvus/scale-out.yaml
new file mode 100644
index 000000000..670885e4d
--- /dev/null
+++ b/examples/milvus/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: milvus-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: milvus-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: querynode
+    # Specifies the replica changes for scaling in components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/apecloud-mysql/start.yaml b/examples/milvus/start.yaml
similarity index 52%
rename from examples/apecloud-mysql/start.yaml
rename to examples/milvus/start.yaml
index e822f9f1b..1908dcd51 100644
--- a/examples/apecloud-mysql/start.yaml
+++ b/examples/milvus/start.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-start
-  namespace: default
+  name: milvus-start
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: milvus-cluster
   type: Start
diff --git a/examples/milvus/stop.yaml b/examples/milvus/stop.yaml
new file mode 100644
index 000000000..52fd935d3
--- /dev/null
+++ b/examples/milvus/stop.yaml
@@ -0,0 +1,22 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: milvus-stop
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: milvus-cluster
+  type: Stop
+  # Lists Components to be stopped. ComponentOps specifies the Component to be operated on.
+  # # The stop field is optional, all components in the cluster will be stopped if not specifed.
+  # stop:
+  #   # Specifies the name of the Component.
+  #   # - standalone: milvus
+  #   # - standalone: etcd
+  #   # - standalone: minio
+  #   # - distributed: proxy
+  #   # - distributed: mixcoord
+  #   # - distributed: datanode
+  #   # - distributed: indexnode
+  #   # - distributed: querynode
+  #   - componentName: mixcoord
diff --git a/examples/milvus/verticalscale.yaml b/examples/milvus/verticalscale.yaml
new file mode 100644
index 000000000..0e8fd7938
--- /dev/null
+++ b/examples/milvus/verticalscale.yaml
@@ -0,0 +1,27 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: milvus-verticalscaling
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: milvus-cluster
+  type: VerticalScaling
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
+  verticalScaling:
+    # - standalone: milvus
+    # - standalone: etcd
+    # - standalone: minio
+    # - distributed: proxy
+    # - distributed: mixcoord
+    # - distributed: datanode
+    # - distributed: indexnode
+    # - distributed: querynode
+  - componentName: proxy
+    # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
+    requests:
+      cpu: '1'
+      memory: 1Gi
+    limits:
+      cpu: '1'
+      memory: 1Gi
diff --git a/examples/mongodb/README.md b/examples/mongodb/README.md
index 390d04fa8..4c4bbd188 100644
--- a/examples/mongodb/README.md
+++ b/examples/mongodb/README.md
@@ -1,153 +1,470 @@
-# Mongodb
+# MongoDB
 
 MongoDB is a document database designed for ease of application development and scaling
+
+## Features In KubeBlocks
+
+### Lifecycle Management
+
+| Topology | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|----------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| replica set | Yes                    | Yes                   | Yes              | Yes       | Yes        | Yes       | Yes    | Yes      |
+
+### Backup and Restore
+
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| Full Backup | dump   | uses `mongodump`, a MongoDB utility used to create a binary export of the contents of a database  |
+| Full Backup | datafile | backup the data files of the database |
+
+### Versions
+
+| Major Versions | Description |
+|---------------|--------------|
+| 4.0 | 4.0.28,4.2.24,4.4.29 |
+| 5.0 | 5.0.28 |
+| 6.0 | 6.0.16 |
+| 7.0 | 7.0.12 |
+
 ## Prerequisites
 
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform.
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- MongoDB Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
+
+## Examples
+
+### [Create](cluster.yaml)
+
+Create a MongoDB replicaset cluster with 1 primary replica and 2 secondary replicas:
 
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
 ```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
+kubectl apply -f examples/mongodb/cluster.yaml
+```
 
-# Update helm repo
-helm repo update
+To check the roles of the pods, you can use following command:
 
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
+```bash
+# replace `mongo-cluster` with your cluster name
+kubectl get po -n demo -l  app.kubernetes.io/instance=mongo-cluster -L kubeblocks.io/role
+```
 
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
+If you want to create a cluster of specified version, set the `spec.componentSpecs.serviceVersion` field in the yaml file before applying it:
 
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mongodb
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [4.0.28,4.2.24,4.4.29,5.0.28,6.0.16,7.0.1]
+      serviceVersion: "7.0.1"
 ```
-If you want to access mongodb from external Kubernetes cluster, you need to enable hostnetwork, create mongodb cluster and then access by host ip and mongodb service port
+
+The list of supported versions can be found by following command:
+
 ```bash
-# Add Helm repo 
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-# Update helm repo
-helm repo update
-# Update mongodb to enable hostnetwork
-helm upgrade -i kb-addon-mongodb kubeblocks-addons/mongodb  -n kb-system --set useHostNetwork=true
+kubectl get cmpv mongodb
 ```
-Disable hostnetwork to access mongodb
+
+#### What is MongoDB Replica Set?
+
+A MongoDB replica set[^1] is a group of MongoDB servers that maintain the same dataset, providing high availability and data redundancy. Replica sets are the foundation of MongoDB's fault tolerance and data reliability. By replicating data across multiple nodes, MongoDB ensures that if one server fails, another can take over seamlessly without affecting the application's availability.
+
+In a replica set, there are typically three types of nodes:
+
+- Primary Node: Handles all write operations and serves read requests by default.
+- Secondary Nodes: Maintain copies of the primary's data and can optionally serve read requests.
+- Arbiter Node: Participates in elections but does not store data. It is used to maintain an odd number of voting members in the replica set.
+
+And it is recommended to create a cluster with at least three nodes to ensure high availability, one primary and two secondary nodes.
+
+### Horizontal scaling
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out cluster by adding ONE more replica:
+
 ```bash
-helm upgrade -i kb-addon-mongodb kubeblocks-addons/mongodb  -n kb-system --set useHostNetwork=false
+kubectl apply -f examples/mongodb/scale-out.yaml
 ```
 
-## Examples
+After applying the operation, you will see a new pod created and the cluster status goes from `Updating` to `Running`, and the newly created pod has a new role `secondary`.
+
+And you can check the progress of the scaling operation with following command:
 
-### [Create](cluster.yaml) 
-Create a mongodb cluster with specified cluster definition 
 ```bash
-kubectl apply -f examples/mongodb/cluster.yaml
+kubectl describe -n demo ops mongo-scale-out
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in cluster by deleting ONE replica:
+
+```bash
+kubectl apply -f examples/mongodb/scale-in.yaml
 ```
 
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
+On horizontal scaling in/out, member list of the replica set will be updated to make sure the cluster is healthy.
+
+You may verify the full list of members in the replica set by connecting to any pod, and  running the following command:
+
 ```bash
-kubectl apply -f examples/mongodb/horizontalscale.yaml
+mongo-cluster-mongodb > rs.status();
+```
+
+#### [Set Specified Replicas Offline](scale-in-specified-instance.yaml)
+
+There are cases where you want to set a specified replica offline, when it is problematic or you want to do some maintenance work on it. You can use the `onlineInstancesToOffline` field in the `spec.horizontalScaling.scaleIn` section to specify the instance names that need to be taken offline.
+
+```yaml
+# snippet of opsrequest
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+spec:
+  clusterName: mongo-cluster
+  horizontalScaling:
+  - componentName: mongodb
+    # Specifies the replica changes for scaling out components
+    scaleIn:
+      onlineInstancesToOffline:
+        - 'mongo-cluster-mongodb-1'  # Specifies the instance names that need to be taken offline
+```
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mongodb
+      replicas: 3 # set desired number of replicas
+      # Optional. Specifies the names of instances to be transitioned to offline status.
+      # If no specified, KubeBlocks will select the instances in descending ordinal number order.
+      offlineInstances:
+      - mongo-cluster-mongodb-1
 ```
 
 ### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
+Vertical scaling involves increasing or decreasing resources to an existing database cluster.
+Resources that can be scaled include:, CPU cores/processing power and Memory (RAM).
+
+To vertical scaling up or down specified component, you can apply the following yaml file:
+
 ```bash
 kubectl apply -f examples/mongodb/verticalscale.yaml
 ```
 
+You will observe that the `secondary` pods are recreated first, followed by the `primary` pod, to ensure the availability of the cluster.
+
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mongodb
+      replicas: 3
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
 ### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
+
+Volume expansion is the ability to increase the size of a Persistent Volume Claim (PVC) after it's created. It is introduced in Kubernetes v1.11 and goes GA in Kubernetes v1.24. It allows Kubernetes users to simply edit their PersistentVolumeClaim objects without requiring any downtime at all if possible.
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/mongodb/volumeexpand.yaml
 ```
 
+After the operation, you will see the volume size of the specified component is increased to `30Gi` in this case. Once you've done the change, check the `status.conditions` field of the PVC to see if the resize has completed.
+
+```bash
+kubectl get pvc -l app.kubernetes.io/instance=mongo-cluster -n demo
+```
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+apiVersion: apps.kubeblocks.io/v1
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mongodb
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 30Gi  # specify new size, and make sure it is larger than the current size
+```
+
 ### [Restart](restart.yaml)
+
 Restart the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/mongodb/restart.yaml
 ```
 
 ### [Stop](stop.yaml)
-Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+Stop the cluster will release all the pods of the cluster, but the storage will be retained. It is useful when you want to save the cost of the cluster.
+
 ```bash
 kubectl apply -f examples/mongodb/stop.yaml
 ```
 
+#### Stop using Cluster API
+
+Alternatively, you may stop the cluster by setting the `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mongodb
+      stop: true  # set stop `true` to stop the component
+      replicas: 3
+```
+
 ### [Start](start.yaml)
+
 Start the stopped cluster
+
 ```bash
 kubectl apply -f examples/mongodb/start.yaml
 ```
 
+#### Start using Cluster API
+
+Alternatively, you may start the cluster by setting the `spec.componentSpecs.stop` field to `false`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mongodb
+      stop: false  # set to `false` (or remove this field) to start the component
+      replicas: 3
+```
+
 ### [Switchover](switchover.yaml)
-Switchover a non-primary or non-leader instance as the new primary or leader of the cluster
+
+A switchover in database clusters is a planned operation that transfers the primary (leader) role from one database instance to another. The goal of a switchover is to ensure that the database cluster remains available and operational during the transition.
+
+To promote a non-primary or non-leader instance as the new primary or leader of the cluster:
+
 ```bash
 kubectl apply -f examples/mongodb/switchover.yaml
 ```
 
 ### [Switchover-specified-instance](switchover-specified-instance.yaml)
+
 Switchover a specified instance as the new primary or leader of the cluster
+
 ```bash
 kubectl apply -f examples/mongodb/switchover-specified-instance.yaml
 ```
 
-### [Configure](configure.yaml)
-Configure parameters with the specified components in the cluster
+### [Reconfigure](configure.yaml)
+
+A database reconfiguration is the process of modifying database parameters, settings, or configurations to improve performance, security, or availability. The reconfiguration can be either:
+
+- Dynamic: Applied without restart
+- Static: Requires database restart
+
+Reconfigure parameters with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/mongodb/configure.yaml
 ```
 
-### [BackupRepo](backuprepo.yaml)
-BackupRepo is the storage repository for backup data, using the full backup and restore function of KubeBlocks relies on BackupRepo
+This example sets `systemLog.verbosity` to `1` and `systemLog.quiet`to `true`.
+You may log into the instance to verify the change:
+
+1. Connect to MongoDB using mongosh.
+2. Execute an admin command to retrieve values.
+
 ```bash
-# Create a secret to save the access key
-kubectl create secret generic <storage-provider>-credential-for-backuprepo\
-  --from-literal=accessKeyId=<ACCESS KEY> \
-  --from-literal=secretAccessKey=<SECRET KEY> \
-  -n kb-system 
-  
-kubectl apply -f examples/mongodb/backuprepo.yaml
+const config = db.adminCommand({ getCmdLineOpts: 1 });
+print("systemLog.quiet:", config.parsed.systemLog.quiet);
+print("systemLog.verbosity:", config.parsed.systemLog.verbosity);
 ```
 
 ### [Backup](backup.yaml)
-Create a backup for the cluster
+
+> [!IMPORTANT]
+> Before you start, please create a `BackupRepo` to store the backup data. Refer to [BackupRepo](../docs/create-backuprepo.md) for more details.
+
+You may find the supported backup methods in the `BackupPolicy` of the cluster, and find how these methods will be scheduled in the `BackupSchedule` of the cluster.
+
+The list of supported backup methods can be found by following command:
+
+```bash
+# mongo-cluster-mongodb-backup-policy is the backup policy name
+kubectl get backuppolicy -n demo mongo-cluster-mongodb-backup-policy -oyaml | yq '.spec.backupMethods[].name'
+```
+
+TO create a backup for the the cluster using `datafile` method:
+
 ```bash
 kubectl apply -f examples/mongodb/backup.yaml
 ```
 
+Information, such as `path`, `timeRange` about the backup will be recorded into the `Backup` resource.
+
+Alternatively, you can update the `BackupSchedule` to enable the method `xtrabackup` to schedule base backup periodically.
+
 ### [Restore](restore.yaml)
-Restore a new cluster from backup
+
+Restore a new cluster from a backup
+
+1. Get the list of accounts and their passwords from the backup:
+
 ```bash
-# Get backup connection password
-kubectl get backup mongo-cluster-backup -ojsonpath='{.metadata.annotations.dataprotection\.kubeblocks\.io\/connection-password}' -n default
+kubectl get backup -n demo mongo-cluster-backup -ojsonpath='{.metadata.annotations.kubeblocks\.io/encrypted-system-accounts}'
+```
+
+1. Update `examples/mongodb/restore.yaml` and set placeholder `<ENCRYPTED-SYSTEM-ACCOUNTS>` with your own settings and apply it.
 
+```bash
 kubectl apply -f examples/mongodb/restore.yaml
 ```
 
 ### Expose
+
 Expose a cluster with a new endpoint
+
 #### [Enable](expose-enable.yaml)
+
 ```bash
 kubectl apply -f examples/mongodb/expose-enable.yaml
 ```
+
 #### [Disable](expose-disable.yaml)
+
 ```bash
 kubectl apply -f examples/mongodb/expose-disable.yaml
 ```
 
+#### Expose SVC using Cluster API
+
+Alternatively, you may expose service by updating `spec.services`
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  # append service to the list
+  services:
+    # add annotation for cloud loadbalancer if
+    # services.spec.type is LoadBalancer
+    # here we use annotation for alibaba cloud for example
+  - annotations:
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+    componentSelector: mongodb
+    name: mongodb-vpc
+    serviceName: mongodb-vpc
+    # optional. it specify defined role as selector for the service.
+    # onece specified, service will select and route traffic to Pods with the label
+    # "kubeblocks.io/role=<specified-role-name>".
+    # valid options are: [primary, secondary]
+    roleSelector: primary
+    spec:  # defines the behavior of a K8s service.
+      ipFamilyPolicy: PreferDualStack
+      ports:
+      - name: tcp-mongodb
+        # port to expose
+        port: 27017
+        protocol: TCP
+        targetPort: mongodb
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are [`ClusterIP`, `NodePort`, and `LoadBalancer`]
+      type: LoadBalancer
+  componentSpecs:
+    - name: mongodb
+      replicas: 2
+      ...
+```
+
+If the service is of type `LoadBalancer`, please add annotations for cloud loadbalancer depending on the cloud provider you are using. Here list annotations for some cloud providers:
+
+```yaml
+# alibaba cloud
+service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"  # or "intranet"
+
+# aws
+service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+
+# azure
+service.beta.kubernetes.io/azure-load-balancer-internal: "true" # or "false" for internet
+
+# gcp
+networking.gke.io/load-balancer-type: "Internal" # for internal access
+cloud.google.com/l4-rbs: "enabled" # for internet
+```
+
 ### Delete
+
 If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
 ```bash
-kubectl patch cluster mongo-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+kubectl patch cluster -n demo mongo-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
 
-kubectl delete cluster mongo-cluster
+kubectl delete cluster -n demo mongo-cluster
 ```
+
+## References
+
+[^1]: MongoDB Replica Set, <https://www.mongodb.com/docs/manual/replication/>
diff --git a/examples/mongodb/alert-rules.yaml b/examples/mongodb/alert-rules.yaml
new file mode 100644
index 000000000..9fd1cbf0f
--- /dev/null
+++ b/examples/mongodb/alert-rules.yaml
@@ -0,0 +1,90 @@
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  name: mongo-alert-rules
+  labels:
+    release: prometheus
+spec:
+  groups:
+    - name: MongodbExporter
+      rules:
+        - alert: MongodbDown
+          expr: "max_over_time(mongodb_up[1m]) == 0"
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "MongoDB is Down"
+            description: 'MongoDB instance is down\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbRestarted
+          expr: "mongodb_instance_uptime_seconds < 60"
+          for: 0m
+          labels:
+            severity: info
+          annotations:
+            summary: "Mongodb has just been restarted (< 60s)"
+            description: 'Mongodb has just been restarted {{ $value | printf "%.1f" }} seconds ago\n LABELS = {{ $labels }}'
+
+        - alert: MongodbReplicaMemberUnhealthy
+          expr: "max_over_time(mongodb_rs_members_health[1m]) == 0"
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "Mongodb replica member is unhealthy"
+            description: 'MongoDB replica member is not healthy\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbReplicationLag
+          expr: '(mongodb_rs_members_optimeDate{member_state="PRIMARY"} - on (pod) group_right mongodb_rs_members_optimeDate{member_state="SECONDARY"}) / 1000 > 10'
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "MongoDB replication lag (> 10s)"
+            description: 'Mongodb replication lag is more than 10s\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbReplicationHeadroom
+          expr: 'sum(avg(mongodb_mongod_replset_oplog_head_timestamp - mongodb_mongod_replset_oplog_tail_timestamp)) - sum(avg(mongodb_rs_members_optimeDate{member_state="PRIMARY"} - on (pod) group_right mongodb_rs_members_optimeDate{member_state="SECONDARY"})) <= 0'
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "MongoDB replication headroom (< 0)"
+            description: 'MongoDB replication headroom is <= 0\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbNumberCursorsOpen
+          expr: 'mongodb_ss_metrics_cursor_open{csr_type="total"} > 10 * 1000'
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MongoDB opened cursors num (> 10k)"
+            description: 'Too many cursors opened by MongoDB for clients (> 10k)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbCursorsTimeouts
+          expr: "increase(mongodb_ss_metrics_cursor_timedOut[1m]) > 100"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MongoDB cursors timeouts (>100/minute)"
+            description: 'Too many cursors are timing out (> 100/minute)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbTooManyConnections
+          expr: 'avg by(pod) (rate(mongodb_ss_connections{conn_type="current"}[1m])) / avg by(pod) (sum (mongodb_ss_connections) by(pod)) * 100 > 80'
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MongoDB too many connections (> 80%)"
+            description: 'Too many connections (> 80%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}'
+
+        - alert: MongodbVirtualMemoryUsage
+          expr: "(sum(mongodb_ss_mem_virtual) BY (pod) / sum(mongodb_ss_mem_resident) BY (pod)) > 100"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: MongoDB virtual memory usage high
+            description: "High memory usage: the quotient of (mem_virtual / mem_resident) is more than 100\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
diff --git a/examples/mongodb/backup.yaml b/examples/mongodb/backup.yaml
index eb5f27832..b12790029 100644
--- a/examples/mongodb/backup.yaml
+++ b/examples/mongodb/backup.yaml
@@ -2,7 +2,7 @@ apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
   name: mongo-cluster-backup
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - dump
diff --git a/examples/mongodb/backuprepo.yaml b/examples/mongodb/backuprepo.yaml
index 890891407..78e96f11b 100644
--- a/examples/mongodb/backuprepo.yaml
+++ b/examples/mongodb/backuprepo.yaml
@@ -1,8 +1,9 @@
 apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: BackupRepo
 metadata:
-  name: s3-repo
+  name: <test-backuprepo>
   annotations:
+    # optional, mark this backuprepo as default
     dataprotection.kubeblocks.io/is-default-repo: 'true'
 spec:
   # Specifies the name of the `StorageProvider` used by this backup repository.
@@ -13,24 +14,30 @@ spec:
   # - gcs (Google Cloud Storage)
   # - obs (Huawei Cloud Object Storage)
   # - minio, and other S3-compatible services.
-  storageProviderRef: s3
+  # Note: set the provider name to you own needs
+  storageProviderRef: oss
   # Specifies the access method of the backup repository.
   # - Tool
   # - Mount
+  # If the access mode is Mount, it will mount the PVC through the CSI driver (make sure it is installed and configured properly)
+  # In Tool mode, it will directly stream to the object storage without mounting the PVC.
   accessMethod: Tool
-  # Specifies reclaim policy of the PV created by this backup repository.
-  pvReclaimPolicy: Retain
-  # Specifies the capacity of the PVC created by this backup repository.
-  volumeCapacity: 100Gi
   # Stores the non-secret configuration parameters for the `StorageProvider`.
   config:
-    bucket: <storage-provider-bucket-name>
-    endpoint: ''
-    mountOptions: --memory-limit 1000 --dir-mode 0777 --file-mode 0666
-    region: <storage-provider-region-name>
+    # Note: set the bucket name to you own needs
+    bucket: <kubeblocks-test>
+    # Note: set the region name to you own needs
+    region: <cn-zhangjiakou>
   # References to the secret that holds the credentials for the `StorageProvider`.
+  # kubectl create secret generic demo-credential-for-backuprepo --from-literal=accessKeyId=* --from-literal=secretAccessKey=* --namespace=kb-system
   credential:
     # name is unique within a namespace to reference a secret resource.
-    name: s3-credential-for-backuprepo
+    # Note: set the secret name to you own needs
+    name: <credential-for-backuprepo>
     # namespace defines the space within which the secret name must be unique.
     namespace: kb-system
+  # Specifies reclaim policy of the PV created by this backup repository
+  # Valid Options are [Retain, Delete]
+  # Delete means the volume will be deleted from Kubernetes on release from its claim.
+  # Retain means the volume will be left in its current phase (Released) for manual reclamation by the administrator.
+  pvReclaimPolicy: Retain
diff --git a/examples/mongodb/cluster.yaml b/examples/mongodb/cluster.yaml
index fa0609230..7fff305de 100644
--- a/examples/mongodb/cluster.yaml
+++ b/examples/mongodb/cluster.yaml
@@ -2,37 +2,56 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: mongo-cluster
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
   # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
   # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
   # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `mongodb` to create a MongoDB Cluster
+  clusterDef: mongodb
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # Valid options are [replicaset]
+  topology: replicaset
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
   componentSpecs:
-  - name: mongodb
-    componentDef: mongodb
-    enabledLogs:
-    - running
-    disableExporter: true
-    serviceAccountName: kb-mongo-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
+    - name: mongodb
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [4.0.28,4.2.24,4.4.29,5.0.28,6.0.16,7.0.1]
+      serviceVersion: "6.0.16"
+      # Specifies the desired number of replicas in the Component
+      replicas: 3
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
+
diff --git a/examples/mongodb/configure.yaml b/examples/mongodb/configure.yaml
index 5503f0162..4f5d16b7d 100644
--- a/examples/mongodb/configure.yaml
+++ b/examples/mongodb/configure.yaml
@@ -1,36 +1,25 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-reconfiguring
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
   # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
   force: false
   # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
+  reconfigures:
     # Specifies the name of the Component.
-    componentName: mongodb
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: mongodb.conf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: systemLog.verbosity
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: "1"
-        - key: systemLog.quiet
-          value: "true"
-      # Specifies the name of the configuration template.
-      name: mongodb-config
+  - componentName: mongodb
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+    - key: systemLog.verbosity
+      # Represents the parameter values that are to be updated.
+      # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
+      value: "1"
+    - key: systemLog.quiet
+      value: "true"
   # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
   preConditionDeadlineSeconds: 0
   type: Reconfiguring
diff --git a/examples/mongodb/expose-disable.yaml b/examples/mongodb/expose-disable.yaml
index 3223ed4fa..1c484f32f 100644
--- a/examples/mongodb/expose-disable.yaml
+++ b/examples/mongodb/expose-disable.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-expose-disable
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
@@ -10,7 +10,7 @@ spec:
   expose:
     # Specifies the name of the Component.
   - componentName: mongodb
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
       roleSelector: primary
diff --git a/examples/mongodb/expose-enable.yaml b/examples/mongodb/expose-enable.yaml
index 32d5cf3ad..42d63da95 100644
--- a/examples/mongodb/expose-enable.yaml
+++ b/examples/mongodb/expose-enable.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-expose-enable
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
@@ -10,7 +10,7 @@ spec:
   expose:
     # Specifies the name of the Component.
   - componentName: mongodb
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
       roleSelector: primary
diff --git a/examples/mongodb/restart.yaml b/examples/mongodb/restart.yaml
index 2658d7c77..1e2cac055 100644
--- a/examples/mongodb/restart.yaml
+++ b/examples/mongodb/restart.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-restart
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
diff --git a/examples/mongodb/restore.yaml b/examples/mongodb/restore.yaml
index dad8911d7..5f6758085 100644
--- a/examples/mongodb/restore.yaml
+++ b/examples/mongodb/restore.yaml
@@ -2,39 +2,31 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: mongo-cluster-restore
-  namespace: default
+  namespace: demo
   annotations:
-    kubeblocks.io/restore-from-backup: '{"mongodb":{"connectionPassword":"<backup-connection-password>","name":"mongo-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
+    # e.g. set  "encryptedSystemAccounts": {\"root\":\"ENCRYPTEDPASSWORD\"}
+    kubeblocks.io/restore-from-backup: '{"mongodb":{"encryptedSystemAccounts":"<ENCRYPTED-SYSTEM-ACCOUNTS>","name":"mongo-cluster-backup","namespace":"demo","volumeRestorePolicy":"Parallel"}}'
 spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  clusterDef: mongodb
+  topology: replicaset
   componentSpecs:
-  - name: mongodb
-    componentDef: mongodb
-    enabledLogs:
-    - running
-    disableExporter: true
-    serviceAccountName: kb-mongo-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
+    - name: mongodb
+      serviceVersion: "6.0.16"
+      replicas: 3
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/mongodb/horizontalscale.yaml b/examples/mongodb/scale-in-specified-instance.yaml
similarity index 66%
rename from examples/mongodb/horizontalscale.yaml
rename to examples/mongodb/scale-in-specified-instance.yaml
index 5234d1dba..0c7c0dc48 100644
--- a/examples/mongodb/horizontalscale.yaml
+++ b/examples/mongodb/scale-in-specified-instance.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: mongo-horizontalscaling
-  namespace: default
+  name: mongo-scale-in-specified-instance
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
@@ -11,5 +11,7 @@ spec:
   horizontalScaling:
     # Specifies the name of the Component.
   - componentName: mongodb
-    # Specifies the number of total replicas.
-    replicas: 4
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      onlineInstancesToOffline:
+        - 'mongo-cluster-mongodb-1'
diff --git a/examples/kafka/horizontalscale.yaml b/examples/mongodb/scale-in.yaml
similarity index 55%
rename from examples/kafka/horizontalscale.yaml
rename to examples/mongodb/scale-in.yaml
index fe20093ef..80b1ab2d8 100644
--- a/examples/kafka/horizontalscale.yaml
+++ b/examples/mongodb/scale-in.yaml
@@ -1,15 +1,18 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: kafka-horizontalscaling
-  namespace: default
+  name: mongo-scale-in
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: kafka-cluster
+  clusterName: mongo-cluster
   type: HorizontalScaling
   # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
   horizontalScaling:
     # Specifies the name of the Component.
-  - componentName: broker
-    # Specifies the number of total replicas.
-    replicas: 2
+  - componentName: mongodb
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/mongodb/scale-out.yaml b/examples/mongodb/scale-out.yaml
new file mode 100644
index 000000000..4a41e3906
--- /dev/null
+++ b/examples/mongodb/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: mongo-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: mongo-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: mongodb
+    # Specifies the replica changes for scaling in components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/mongodb/start.yaml b/examples/mongodb/start.yaml
index e240a91b4..d3ec80216 100644
--- a/examples/mongodb/start.yaml
+++ b/examples/mongodb/start.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-start
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
diff --git a/examples/mongodb/stop.yaml b/examples/mongodb/stop.yaml
index 76fee1e5a..8e16f0002 100644
--- a/examples/mongodb/stop.yaml
+++ b/examples/mongodb/stop.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-stop
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
diff --git a/examples/mongodb/switchover-specified-instance.yaml b/examples/mongodb/switchover-specified-instance.yaml
index c4916ca00..942d38e9c 100644
--- a/examples/mongodb/switchover-specified-instance.yaml
+++ b/examples/mongodb/switchover-specified-instance.yaml
@@ -1,7 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-switchover-specify
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
@@ -10,7 +11,10 @@ spec:
   switchover:
     # Specifies the name of the Component.
   - componentName: mongodb
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: mongo-cluster-mongodb-2
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: mongo-cluster-mongodb-0
+    # If CandidateName is specified, the role will be transferred to this instance.
+    # The name must match one of the pods in the component.
+    # Refer to ComponentDefinition's Swtichover lifecycle action for more details.
+    candidateName: mongo-cluster-mongodb-1
diff --git a/examples/mongodb/switchover.yaml b/examples/mongodb/switchover.yaml
index e18a99f68..b756eb354 100644
--- a/examples/mongodb/switchover.yaml
+++ b/examples/mongodb/switchover.yaml
@@ -1,7 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-switchover
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
@@ -10,7 +11,6 @@ spec:
   switchover:
     # Specifies the name of the Component.
   - componentName: mongodb
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: '*'
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: mongo-cluster-mongodb-0
diff --git a/examples/mongodb/verticalscale.yaml b/examples/mongodb/verticalscale.yaml
index 86690d3ae..506e0a610 100644
--- a/examples/mongodb/verticalscale.yaml
+++ b/examples/mongodb/verticalscale.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-verticalscaling
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
   - componentName: mongodb
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
diff --git a/examples/mongodb/volumeexpand.yaml b/examples/mongodb/volumeexpand.yaml
index 89a429bdc..f6cecf304 100644
--- a/examples/mongodb/volumeexpand.yaml
+++ b/examples/mongodb/volumeexpand.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mongo-volumeexpansion
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mongo-cluster
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
   - componentName: mongodb
diff --git a/examples/mysql/README.md b/examples/mysql/README.md
index 2ebfa4ce1..42da7908f 100644
--- a/examples/mysql/README.md
+++ b/examples/mysql/README.md
@@ -2,156 +2,478 @@
 
 MySQL is a widely used, open-source relational database management system (RDBMS)
 
+## Features In KubeBlocks
+
+### Lifecycle Management
+
+|   Topology       | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|------------------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| replication     | Yes                    | Yes                   | Yes              | Yes       | Yes        | Yes       | Yes    | Yes      |
+
+### Backup and Restore
+
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| Full Backup | xtrabackup   | uses `xtrabackup`, an open-source tool developed by Percona to perform full backups  |
+
+### Versions
+
+| Major Versions | Description |
+|---------------|--------------|
+| 5.7 | 5.7.44  |
+| 8.0 | \[8.0.30 ~ 8.0.39\] |
+| 8.4 | 8.4.0 ~ 8.4.2|
+
 ## Prerequisites
 
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform. 
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- MySQL Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
 
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
-```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
+  ```bash
+  kubectl create ns demo
+  ```
 
-# Update helm repo
-helm repo update
+## Examples
 
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
+### Create
 
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
+#### [Cluster with built-in HA Manager](cluster.yaml)
 
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
-```
+Create a MySQL cluster with two replicas that uses the built-in HA manager
 
-Enable mysql
 ```bash
-# Add Helm repo 
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
+kubectl apply -f examples/mysql/cluster.yaml
+```
 
-# Update helm repo
-helm repo update
+If you want to create a cluster of specified version, set the `spec.componentSpecs.serviceVersion` field in the yaml file before applying it:
 
-# Enable mysql 
-helm upgrade -i kb-addon-mysql kubeblocks-addons/mysql --version $kb_version -n kb-system
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mysql
+      componentDef: "mysql-8.0"  # match all CMPD named with 'mysql-8.0-'
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # When componentDef is "mysql-8.0",
+      # Valid options are: [8.0.30 to 8.0.39]
+      serviceVersion: 8.0.35
 ```
 
-## Examples
+The list of supported versions can be found by following command:
 
-### [Create](cluster.yaml) 
-Create a MySQL cluster that uses the built-in HA manager
 ```bash
-kubectl apply -f examples/mysql/cluster.yaml
+kubectl get cmpv mysql
 ```
-Create a MySQL cluster that uses the Orchestrator HA manager
+
+### Horizontal scaling
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out MySQL cluster by adding ONE more replica:
+
 ```bash
-kubectl apply -f examples/mysql/cluster-orc.yaml
+kubectl apply -f examples/mysql/scale-out.yaml
 ```
 
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
+After applying the operation, you will see a new pod created and the MySQL cluster status goes from `Updating` to `Running`, and the newly created pod has a new role `secondary`.
+
+And you can check the progress of the scaling operation with following command:
+
+```bash
+kubectl describe -n demo ops mysql-scale-out
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in MySQL cluster by deleting ONE replica:
+
 ```bash
-kubectl apply -f examples/mysql/horizontalscale.yaml
+kubectl apply -f examples/mysql/scale-in.yaml
+```
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mysql
+      replicas: 2 # decrease `replicas` for scaling in, and increase for scaling out
 ```
 
 ### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
+Vertical scaling involves increasing or decreasing resources to an existing database cluster.
+Resources that can be scaled include:, CPU cores/processing power and Memory (RAM).
+
+To vertical scaling up or down specified component, you can apply the following yaml file:
+
 ```bash
 kubectl apply -f examples/mysql/verticalscale.yaml
 ```
 
+You will observe that the `secondary` pods are recreated first, followed by the `primary` pod, to ensure the availability of the cluster.
+
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mysql
+      replicas: 2
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
 ### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
+
+Volume expansion is the ability to increase the size of a Persistent Volume Claim (PVC) after it's created. It is introduced in Kubernetes v1.11 and goes GA in Kubernetes v1.24. It allows Kubernetes users to simply edit their PersistentVolumeClaim objects without requiring any downtime at all if possible[^4].
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/mysql/volumeexpand.yaml
 ```
 
+After the operation, you will see the volume size of the specified component is increased to `30Gi` in this case. Once you've done the change, check the `status.conditions` field of the PVC to see if the resize has completed.
+
+```bash
+kubectl get pvc -l app.kubernetes.io/instance=mysql-cluster -n demo
+```
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mysql
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 30Gi  # specify new size, and make sure it is larger than the current size
+```
+
 ### [Restart](restart.yaml)
+
 Restart the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/mysql/restart.yaml
 ```
 
 ### [Stop](stop.yaml)
-Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+Stop the cluster will release all the pods of the cluster, but the storage will be retained. It is useful when you want to save the cost of the cluster.
+
 ```bash
 kubectl apply -f examples/mysql/stop.yaml
 ```
 
+#### Stop using Cluster API
+
+Alternatively, you may stop the cluster by setting the `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mysql
+      stop: true  # set stop `true` to stop the component
+      replicas: 2
+```
+
 ### [Start](start.yaml)
+
 Start the stopped cluster
+
 ```bash
 kubectl apply -f examples/mysql/start.yaml
 ```
 
-### [Switchover](switchover.yaml)
-Switchover a non-primary or non-leader instance as the new primary or leader of the cluster
-```bash
-kubectl apply -f examples/mysql/switchover.yaml
+#### Start using Cluster API
+
+Alternatively, you may start the cluster by setting the `spec.componentSpecs.stop` field to `false`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: mysql
+      stop: false  # set to `false` (or remove this field) to start the component
+      replicas: 2
 ```
 
+### Switchover
+
+A switchover in database clusters is a planned operation that transfers the primary (leader) role from one database instance to another. The goal of a switchover is to ensure that the database cluster remains available and operational during the transition.
+
 ### [Switchover-specified-instance](switchover-specified-instance.yaml)
+
 Switchover a specified instance as the new primary or leader of the cluster
+
 ```bash
 kubectl apply -f examples/mysql/switchover-specified-instance.yaml
 ```
 
 ### [Configure](configure.yaml)
-Configure parameters with the specified components in the cluster
+
+A database reconfiguration is the process of modifying database parameters, settings, or configurations to improve performance, security, or availability. The reconfiguration can be either:
+
+- Dynamic: Applied without restart
+- Static: Requires database restart
+
+Reconfigure parameters with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/mysql/configure.yaml
 ```
 
-### [BackupRepo](backuprepo.yaml)
-BackupRepo is the storage repository for backup data, using the full backup and restore function of KubeBlocks relies on BackupRepo
-```bash
-# Create a secret to save the access key
-kubectl create secret generic <storage-provider>-credential-for-backuprepo\
-  --from-literal=accessKeyId=<ACCESS KEY> \
-  --from-literal=secretAccessKey=<SECRET KEY> \
-  -n kb-system 
-  
-kubectl apply -f examples/mysql/backuprepo.yaml
+This example will change the `binlog_expire_logs_seconds` to `691200`. To verify the changes, You may log into the MySQL instance to check the configuration changes:
+
+```sql
+SHOW VARIABLES LIKE 'binlog_expire_logs_seconds';
 ```
 
 ### [Backup](backup.yaml)
-Create a backup for the cluster
+
+> [!IMPORTANT]
+> Before you start, please create a `BackupRepo` to store the backup data. Refer to [BackupRepo](../docs/create-backuprepo.md) for more details.
+
+You may find the supported backup methods in the `BackupPolicy` of the cluster, e.g. `mysql-cluster-mysql-backup-policy` in this case, and find how these methods will be scheduled in the `BackupSchedule` of the cluster, e.g.. `mysql-cluster-mysql-backup-schedule` in this case.
+
+To create a full backup, using `xtrabackup`, for the cluster:
+
 ```bash
 kubectl apply -f examples/mysql/backup.yaml
 ```
 
 ### [Restore](restore.yaml)
-Restore a new cluster from backup
+
+To restore a new cluster from a Backup:
+
+1. Get the list of accounts and their passwords from the backup:
+
 ```bash
-# Get backup connection password
-kubectl get backup mysql-cluster-backup -ojsonpath='{.metadata.annotations.dataprotection\.kubeblocks\.io\/connection-password}' -n default
+kubectl get backup -n demo mysql-cluster-backup -ojsonpath='{.metadata.annotations.kubeblocks\.io/encrypted-system-accounts}'
+```
 
+1. Update `examples/mysql/restore.yaml` and set placeholder `<ENCRYPTED-SYSTEM-ACCOUNTS>` with your own settings and apply it.
+
+```bash
 kubectl apply -f examples/mysql/restore.yaml
 ```
 
 ### Expose
+
 Expose a cluster with a new endpoint
+
 #### [Enable](expose-enable.yaml)
+
 ```bash
 kubectl apply -f examples/mysql/expose-enable.yaml
 ```
+
 #### [Disable](expose-disable.yaml)
+
 ```bash
 kubectl apply -f examples/mysql/expose-disable.yaml
 ```
 
+#### Expose SVC using Cluster API
+
+Alternatively, you may expose service by updating `spec.services`
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  # append service to the list
+  services:
+    # add annotation for cloud loadbalancer if
+    # services.spec.type is LoadBalancer
+    # here we use annotation for alibaba cloud for example
+  - annotations:
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+    componentSelector: mysql
+    name: mysql-vpc
+    serviceName: mysql-vpc
+    # optional. it specify defined role as selector for the service.
+    # onece specified, service will select and route traffic to Pods with the label
+    # "kubeblocks.io/role=<specified-role-name>".
+    # valid options are: [primary, secondary] for MySQL
+    roleSelector: primary
+    spec:  # defines the behavior of a K8s service.
+      ipFamilyPolicy: PreferDualStack
+      ports:
+      - name: tcp-mysql
+        # port to expose
+        port: 3306
+        protocol: TCP
+        targetPort: mysql
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are [`ClusterIP`, `NodePort`, and `LoadBalancer`]
+      type: LoadBalancer
+  componentSpecs:
+    - name: mysql
+      replicas: 2
+      ...
+```
+
+If the service is of type `LoadBalancer`, please add annotations for cloud loadbalancer depending on the cloud provider you are using. Here list annotations for some cloud providers:
+
+```yaml
+# alibaba cloud
+service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"  # or "intranet"
+
+# aws
+service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+
+# azure
+service.beta.kubernetes.io/azure-load-balancer-internal: "true" # or "false" for internet
+
+# gcp
+networking.gke.io/load-balancer-type: "Internal" # for internal access
+cloud.google.com/l4-rbs: "enabled" # for internet
+```
+
+#### Rebuild Instance
+
+There are cases where you may need to rebuild an instance in the cluster, for examples, a pod is unhealthy and cannot be recovered, or replication lag is too high for primary-standby cluster.
+
+You can use the following yaml file to rebuild the instance. Please set `backupName` and `targetNodeName` before applying the example.
+
+```bash
+kubectl apply -f examples/mysql/rebuild-instance.yaml
+```
+
+### Observability
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+#### Create PodMonitor
+
+##### Step 1. Query ScrapePath and ScrapePort
+
+You can retrieve the `scrapePath` and `scrapePort` from pod's exporter container.
+
+```bash
+kubectl get po -n demo mysql-cluster-mysql-0 -oyaml | yq '.spec.containers[] | select(.name=="mysql-exporter") | .ports '
+```
+
+And the expected output is like:
+
+```text
+- containerPort: 9104
+  name: http-metrics
+  protocol: TCP
+```
+
+##### Step 2. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/mysql/pod-monitor.yaml
+```
+
+##### Step 3. Accessing the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard.
+
+> [!NOTE]
+> Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+
 ### Delete
+
 If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
+```bash
+kubectl patch cluster -n demo mysql-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete cluster -n demo mysql-cluster
+```
+
+### Manage MySQL Cluster using Orchestrator
+
+KubeBlocks provides you an alternative to  create a MySQL cluster that uses the Orchestrator[^1] HA manager
+
+- Step 1. Install Orchestrator Addon
+
+Before creating the cluster with Orchestrator, make sure you have installed the Orchestrator addon.
+
+- Step 2. Create Orchestrator Cluster
+
+Create an Orchestrator cluster with three replicas;
+
 ```bash
-kubectl patch cluster mysql-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+kubectl apply -f examples/mysql/orchestrator.yaml
+```
 
-kubectl delete cluster mysql-cluster
+- Step 3. Create a MySQL Cluster
+
+```bash
+kubectl apply -f examples/mysql/cluster-orc.yaml
 ```
+
+#### Switchover(switchover.yaml)
+
+You can switchover a specified instance as the new primary or leader of the cluster
+
+```bash
+kubectl apply -f examples/mysql/switchover.yaml
+```
+
+## References
+
+[^1] Orchestrator, <https://github.com/openark/orchestrator>
diff --git a/examples/mysql/alert-rules.yaml b/examples/mysql/alert-rules.yaml
new file mode 100644
index 000000000..73d07ab21
--- /dev/null
+++ b/examples/mysql/alert-rules.yaml
@@ -0,0 +1,81 @@
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  name: mysql-alert-rules
+  labels:
+    release: prometheus
+spec:
+  groups:
+    - name: MysqldExporter
+      rules:
+        - alert: MysqlDown
+          expr: "max_over_time(mysql_up[1m]) == 0"
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "MySQL is down"
+            description: "MySQL is down. (instance: {{ $labels.pod }})"
+
+        - alert: MysqlRestarted
+          expr: "mysql_global_status_uptime < 60"
+          for: 0m
+          labels:
+            severity: info
+          annotations:
+            summary: "MySQL has just been restarted (< 60s)"
+            description: 'MySQL has just been restarted {{ $value | printf "%.1f" }} seconds ago. (instance: {{ $labels.pod }})'
+
+        - alert: MysqlTooManyConnections
+          expr: "sum(max_over_time(mysql_global_status_threads_connected[1m]) / mysql_global_variables_max_connections) BY (namespace,app_kubernetes_io_instance,pod) * 100 > 80"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MySQL has too many connections (> 80%)"
+            description: '{{ $value | printf "%.2f" }} percent of MySQL connections are in use. (instance: {{ $labels.pod }})'
+
+        - alert: MysqlConnectionErrors
+          expr: "sum(increase(mysql_global_status_connection_errors_total[1m])) BY (namespace,app_kubernetes_io_instance,pod) > 0"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MySQL connection errors"
+            description: 'MySQL has connection errors and the value is {{ $value | printf "%.2f" }}. (instance: {{ $labels.pod }})'
+
+        - alert: MysqlHighThreadsRunning
+          expr: "sum(max_over_time(mysql_global_status_threads_running[1m]) / mysql_global_variables_max_connections) BY (namespace,app_kubernetes_io_instance,pod) * 100 > 60"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MySQL high threads running (> 60%)"
+            description: '{{ $value | printf "%.2f" }} percent of MySQL connections are in running state. (instance: {{ $labels.pod }})'
+
+        - alert: MysqlSlowQueries
+          expr: "sum(increase(mysql_global_status_slow_queries[1m])) BY (namespace,app_kubernetes_io_instance,pod) > 0"
+          for: 2m
+          labels:
+            severity: info
+          annotations:
+            summary: "MySQL slow queries"
+            description: 'MySQL server has {{ $value | printf "%.2f" }} slow query. (instance: {{ $labels.pod }})'
+
+        - alert: MysqlInnodbLogWaits
+          expr: "sum(rate(mysql_global_status_innodb_log_waits[5m])) BY (namespace,app_kubernetes_io_instance,pod) > 10"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MySQL InnoDB log waits (> 10)"
+            description: 'MySQL innodb log writes stalling and the value is {{ $value | printf "%.2f" }}. (instance: {{ $labels.pod }})'
+
+        - alert: MysqlInnodbBufferPoolHits
+          expr: "sum(rate(mysql_global_status_innodb_buffer_pool_reads[5m]) / rate(mysql_global_status_innodb_buffer_pool_read_requests[5m])) BY (namespace,app_kubernetes_io_instance,pod) * 100 > 5"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "MySQL InnoDB high read requests rate hitting disk (> 5%)"
+            description: 'High number of logical reads that InnoDB could not satisfy from the buffer pool, and had to read directly from disk. The value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
diff --git a/examples/mysql/backup.yaml b/examples/mysql/backup.yaml
index 0c8446a1f..f3af14e87 100644
--- a/examples/mysql/backup.yaml
+++ b/examples/mysql/backup.yaml
@@ -2,7 +2,7 @@ apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
   name: mysql-cluster-backup
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - xtrabackup
diff --git a/examples/mysql/cluster-mgr.yaml b/examples/mysql/cluster-mgr.yaml
new file mode 100644
index 000000000..66b414243
--- /dev/null
+++ b/examples/mysql/cluster-mgr.yaml
@@ -0,0 +1,60 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: mysql-mgr-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: mysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - the regular expression - recommended
+      # - the full name - recommended
+      # - the name prefix
+      componentDef: "mysql-mgr-8.0"  # match all CMPD named with 'mysql-mgr-8.0-'
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # When componentDef is "mysql-8.0",
+      # Valid options are: [8.0.30,8.0.31,8.0.32,8.0.33,8.0.34,8.0.35,8.0.36,8.0.37,8.0.38,8.0.39]
+      serviceVersion: 8.0.35
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: false
+      # Specifies the desired number of replicas in the Component
+      replicas: 3
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
diff --git a/examples/mysql/cluster-orc-proxysql.yaml b/examples/mysql/cluster-orc-proxysql.yaml
new file mode 100644
index 000000000..74a2f95d4
--- /dev/null
+++ b/examples/mysql/cluster-orc-proxysql.yaml
@@ -0,0 +1,88 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: mysql-orc-proxysql-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies the topology of the Cluster. Currently supports `semisync`, `semisync-proxysql`, `orc`, `orc-proxysql`
+  # - `semisync`: A topology that uses semi-sync replication for MySQL high availability.
+  # - `semisync-proxysql`: A topology that uses semi-sync replication and Proxysql for load balancing and query routing.
+  # - `orc`: A topology that uses MySQL Orchestrator for MySQL high availability and management.
+  # - `orc-proxysql`: A topology that uses MySQL Orchestrator and Proxysql for high availability, management, and load balancing.
+  topology: orc-proxysql
+  clusterDef: mysql
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: mysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - regular expression - recommended
+      # - full name - recommended
+      # - name prefix
+      serviceVersion: "8.0.35"
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: true
+      # Specifies the desired number of replicas in the Component
+      replicas: 2
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts`
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
+      serviceRefs:
+        - name: orchestrator
+          namespace: demo # Set to your orchestrator cluster namespace
+          clusterServiceSelector:
+            cluster:  myorc  # Set to your orchestrator cluster name
+            service:
+              component: orchestrator
+              service: orchestrator
+              port:  orc-http
+            credential:
+              component: orchestrator
+              name: orchestrator
+    - name: proxysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - regular expression - recommended
+      # - full name - recommended
+      # - name prefix
+      serviceVersion: 2.4.4
+      # Specifies the desired number of replicas in the Component
+      replicas: 1
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
\ No newline at end of file
diff --git a/examples/mysql/cluster-orc.yaml b/examples/mysql/cluster-orc.yaml
index 1da7904ab..5e64fb1d3 100644
--- a/examples/mysql/cluster-orc.yaml
+++ b/examples/mysql/cluster-orc.yaml
@@ -2,69 +2,22 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: mysql-cluster
-  namespace: default
+  namespace: demo
 spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
   componentSpecs:
-  - name: mysql
-    componentDef: mysql-8.0.33-orc
-    disableExporter: true
-    replicas: 1
-    serviceAccountName: kb-mysql-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    serviceRefs:
-        - name: orchestrator
-          namespace: default
-          clusterServiceSelector:
-            cluster: orchestratorm-cluster
-            service:
-              component: orchestrator
-              service: orchestrator
-              port: http
----
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: orchestratorm-cluster
-  namespace: default
-  annotations:
-    "kubeblocks.io/extra-env": '{"ORC_TOPOLOGY_PASSWORD":"orchestrator","ORC_META_PASSWORD":"orchestrator","ORC_META_DATABASE":"orchestrator"}'
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-    - name: orchestrator
-      componentDef: orchestrator-raft
+    - name: mysql
+      componentDef: mysql-orc-8.0 # use componentDef: mysql-orc-8.0
       disableExporter: true
-      replicas: 3
+      serviceVersion: "8.0.35"
+      replicas: 2
       resources:
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
         limits:
-          cpu: '0.5'
-          memory: 0.5Gi
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
       volumeClaimTemplates:
         - name: data
           spec:
@@ -73,3 +26,15 @@ spec:
             resources:
               requests:
                 storage: 20Gi
+      serviceRefs:
+        - name: orchestrator
+          namespace: demo # set to your orchestrator cluster namespace
+          clusterServiceSelector:
+            cluster:  myorc  # set to your orchestrator cluster name
+            service:
+              component: orchestrator
+              service: orchestrator
+              port:  orc-http
+            credential:
+              component: orchestrator
+              name: orchestrator
\ No newline at end of file
diff --git a/examples/mysql/cluster-proxysql.yaml b/examples/mysql/cluster-proxysql.yaml
new file mode 100644
index 000000000..f82af03e1
--- /dev/null
+++ b/examples/mysql/cluster-proxysql.yaml
@@ -0,0 +1,80 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: mysql-proxysql-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies the topology of the Cluster. so far, only `semisync`, `semisync-proxysql`, `orc`, `orc-proxysql` are supported
+  # - `semisync`: A topology that uses  syncer semi-sync replication for MySQL high availability.
+  # - `semisync-proxysql`: A topology that uses syncer semi-sync replication and Proxysql for load balancing and query routing.
+  # - `orc`: A topology that uses MySQL Orchestrator for MySQL high availability and management.
+  # - `orc-proxysql`: A topology that uses MySQL Orchestrator and Proxysql for high availability, management, and load balancing.
+  topology: semisync-proxysql
+  clusterDef: mysql
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: mysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - the regular expression - recommended
+      # - the full name - recommended
+      # - the name prefix
+      serviceVersion: 8.0.35
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: false
+      # Specifies the desired number of replicas in the Component
+      replicas: 2
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
+    - name: proxysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - the regular expression - recommended
+      # - the full name - recommended
+      # - the name prefix
+      serviceVersion: 2.4.4
+      # Specifies the desired number of replicas in the Component
+      replicas: 1
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
diff --git a/examples/mysql/cluster-tls.yaml b/examples/mysql/cluster-tls.yaml
new file mode 100644
index 000000000..ffe371d1a
--- /dev/null
+++ b/examples/mysql/cluster-tls.yaml
@@ -0,0 +1,63 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: mysql-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
+  componentSpecs:
+    - name: mysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - the regular expression - recommended
+      # - the full name - recommended
+      # - the name prefix
+      componentDef: "mysql-8.0"  # match all CMPD named with 'mysql-8.0-'
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # When componentDef is "mysql-8.0",
+      # Valid options are: [8.0.30,8.0.31,8.0.32,8.0.33,8.0.34,8.0.35,8.0.36,8.0.37,8.0.38,8.0.39]
+      serviceVersion: 8.0.35
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: false
+      # Specifies the desired number of replicas in the Component
+      replicas: 2
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
+      tls: true   # set TLS to true
+      issuer:     # if TLS is True, this filed is required.
+        name: KubeBlocks  # set Issuer to [KubeBlocks, UserProvided].
\ No newline at end of file
diff --git a/examples/mysql/cluster.yaml b/examples/mysql/cluster.yaml
index f5ba71aea..239c5d1b4 100644
--- a/examples/mysql/cluster.yaml
+++ b/examples/mysql/cluster.yaml
@@ -2,35 +2,59 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: mysql-cluster
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
   # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
   # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
   # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
   componentSpecs:
-  - name: mysql
-    componentDef: mysql-8.0.33
-    disableExporter: true
-    replicas: 1
-    serviceAccountName: kb-mysql-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
+    - name: mysql
+      # Specifies the ComponentDefinition custom resource (CR) that defines the
+      # Component's characteristics and behavior.
+      # Supports three different ways to specify the ComponentDefinition:
+      # - the regular expression - recommended
+      # - the full name - recommended
+      # - the name prefix
+      componentDef: "mysql-8.0"  # match all CMPD named with 'mysql-8.0-'
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # When componentDef is "mysql-8.0",
+      # Valid options are: [8.0.30,8.0.31,8.0.32,8.0.33,8.0.34,8.0.35,8.0.36,8.0.37,8.0.38,8.0.39]
+      serviceVersion: 8.0.35
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: false
+      # Specifies the desired number of replicas in the Component
+      replicas: 2
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/mysql/configure.yaml b/examples/mysql/configure.yaml
index 0c56e26ce..cd2399243 100644
--- a/examples/mysql/configure.yaml
+++ b/examples/mysql/configure.yaml
@@ -1,34 +1,23 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-reconfiguring
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
   # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
   force: false
   # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
+  reconfigures:
     # Specifies the name of the Component.
-    componentName: mysql
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: my.cnf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: binlog_expire_logs_seconds
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: '691200'
-      # Specifies the name of the configuration template.
-      name: mysql-replication-config
+  - componentName: mysql
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+    - key: binlog_expire_logs_seconds
+      # Represents the parameter values that are to be updated.
+      # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
+      value: '691200'
   # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
   preConditionDeadlineSeconds: 0
   type: Reconfiguring
diff --git a/examples/mysql/expose-disable.yaml b/examples/mysql/expose-disable.yaml
index 886d5507c..fff4a7a7d 100644
--- a/examples/mysql/expose-disable.yaml
+++ b/examples/mysql/expose-disable.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-expose-disable
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
@@ -10,7 +10,7 @@ spec:
   expose:
     # Specifies the name of the Component.
   - componentName: mysql
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
       roleSelector: primary
diff --git a/examples/mysql/expose-enable.yaml b/examples/mysql/expose-enable.yaml
index ee9fa161c..7bae5d2a9 100644
--- a/examples/mysql/expose-enable.yaml
+++ b/examples/mysql/expose-enable.yaml
@@ -1,22 +1,32 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-expose-enable
-  namespace: default
+  namespace: demo
 spec:
+  # Specifies the type of this operation.
+  type: Expose
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
   - componentName: mysql
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
-      roleSelector: primary
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`.
       serviceType: LoadBalancer
+      # Contains cloud provider related parameters if ServiceType is LoadBalancer.
+      # Following is an example for Aliyun ACK, please adjust the following annotations as needed.
+      annotations:
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: ""
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
+      # Specifies a role to target with the service.
+      # If specified, the service will only be exposed to pods with the matching
+      # role.
+      roleSelector: primary
     # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
-    switch: Enable
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Expose
+    switch: Enable
\ No newline at end of file
diff --git a/examples/mysql/orchestrator.yaml b/examples/mysql/orchestrator.yaml
new file mode 100644
index 000000000..7eade0c62
--- /dev/null
+++ b/examples/mysql/orchestrator.yaml
@@ -0,0 +1,35 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: myorc
+  namespace: demo
+spec:
+  clusterDef: orchestrator
+  topology: raft
+  terminationPolicy: Delete
+  services:
+    - name: orchestrator
+      componentSelector: orchestrator
+      spec:
+        ports:
+          - name: orc-http
+            port: 80
+  componentSpecs:
+    - name: orchestrator
+      disableExporter: true
+      replicas: 3
+      resources:
+        limits:
+          cpu: "1"
+          memory: "1Gi"
+        requests:
+          cpu: "1"
+          memory: "1Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
diff --git a/examples/mysql/pod-monitor.yaml b/examples/mysql/pod-monitor.yaml
new file mode 100644
index 000000000..0e12fa6e3
--- /dev/null
+++ b/examples/mysql/pod-monitor.yaml
@@ -0,0 +1,28 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: mysql-cluster-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: http-metrics
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: mysql-cluster
+      apps.kubeblocks.io/component-name: mysql
\ No newline at end of file
diff --git a/examples/mysql/rebuild-instance.yaml b/examples/mysql/rebuild-instance.yaml
new file mode 100644
index 000000000..ca295be15
--- /dev/null
+++ b/examples/mysql/rebuild-instance.yaml
@@ -0,0 +1,19 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  generateName: mysql-rebuildinstance
+  namespace: demo
+spec:
+  # Operation type is RebuildInstance
+  type: RebuildInstance
+  # Specify the name of the cluster to be rebuilt
+  clusterName: mysql-cluster
+  # If set to true, the operation will be forced even if the node is running
+  force: true
+  rebuildFrom:
+    - componentName: mysql # Name of the component to be rebuilt
+      backupName: <MYSQL_FULL_BACKUP_NAME> # the name of the Backup to restore the instance.
+      inPlace: true # Whether to rebuild in place on the existing Pod
+      instances:
+        - name: mysql-cluster-mysql-0 # Name of the Pod to be rebuilt
+          targetNodeName: <NODE_NAME> # rebuild on the specified nod
diff --git a/examples/mysql/restart.yaml b/examples/mysql/restart.yaml
index 28e87f43f..f74426ddf 100644
--- a/examples/mysql/restart.yaml
+++ b/examples/mysql/restart.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-restart
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
diff --git a/examples/mysql/restore.yaml b/examples/mysql/restore.yaml
index aca850fe4..838aa368f 100644
--- a/examples/mysql/restore.yaml
+++ b/examples/mysql/restore.yaml
@@ -2,40 +2,30 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: mysql-cluster-restore
-  namespace: default
+  namespace: demo
   annotations:
-    kubeblocks.io/restore-from-backup: '{"mysql":{"connectionPassword":"<backup-connection-password>","name":"mysql-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
+    kubeblocks.io/restore-from-backup: '{"mysql":{"encryptedSystemAccounts":"<ENCRYPTED-SYSTEM-ACCOUNTS>","name":"mysql-cluster-backup","namespace":"demo","volumeRestorePolicy":"Parallel"}}'
 spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
   componentSpecs:
-  - name: mysql
-    componentDef: mysql-8.0.33
-    enabledLogs:
-    - error
-    - slow
-    disableExporter: true
-    serviceAccountName: kb-mysql-cluster
-    replicas: 2
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
+    - name: mysql
+      componentDef: "mysql-8.0"  # match all CMPD named with 'mysql-8.0-'
+      serviceVersion: 8.0.35
+      disableExporter: false
+      replicas: 2
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
diff --git a/examples/mysql/horizontalscale.yaml b/examples/mysql/scale-in.yaml
similarity index 62%
rename from examples/mysql/horizontalscale.yaml
rename to examples/mysql/scale-in.yaml
index 2a03dc3a7..a766b8c8c 100644
--- a/examples/mysql/horizontalscale.yaml
+++ b/examples/mysql/scale-in.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: mysql-horizontalscaling
-  namespace: default
+  name: mysql-scale-in
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
@@ -11,5 +11,8 @@ spec:
   horizontalScaling:
     # Specifies the name of the Component.
   - componentName: mysql
-    # Specifies the number of total replicas.
-    replicas: 2
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/apecloud-mysql/horizontalscale.yaml b/examples/mysql/scale-out.yaml
similarity index 58%
rename from examples/apecloud-mysql/horizontalscale.yaml
rename to examples/mysql/scale-out.yaml
index 948dadbe2..a1d8b752f 100644
--- a/examples/apecloud-mysql/horizontalscale.yaml
+++ b/examples/mysql/scale-out.yaml
@@ -1,15 +1,18 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-horizontalscaling
-  namespace: default
+  name: mysql-scale-out
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: mysql-cluster
   type: HorizontalScaling
   # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
   horizontalScaling:
     # Specifies the name of the Component.
   - componentName: mysql
-    # Specifies the number of total replicas.
-    replicas: 3
+    # Specifies the replica changes for scaling in components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/mysql/start.yaml b/examples/mysql/start.yaml
index 7258f429c..a7ded2a8e 100644
--- a/examples/mysql/start.yaml
+++ b/examples/mysql/start.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-start
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
diff --git a/examples/mysql/stop.yaml b/examples/mysql/stop.yaml
index 35f294ee9..c0c103f7d 100644
--- a/examples/mysql/stop.yaml
+++ b/examples/mysql/stop.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-stop
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
diff --git a/examples/mysql/switchover-specified-instance.yaml b/examples/mysql/switchover-specified-instance.yaml
index 64bf6e4b5..49634c011 100644
--- a/examples/mysql/switchover-specified-instance.yaml
+++ b/examples/mysql/switchover-specified-instance.yaml
@@ -1,7 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-switchover-specify
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
@@ -10,7 +11,10 @@ spec:
   switchover:
     # Specifies the name of the Component.
   - componentName: mysql
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: mysql-cluster-mysql-1
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: mysql-cluster-mysql-0
+    # If CandidateName is specified, the role will be transferred to this instance.
+    # The name must match one of the pods in the component.
+    # Refer to ComponentDefinition's Swtichover lifecycle action for more details.
+    candidateName: mysql-cluster-mysql-1
diff --git a/examples/mysql/switchover.yaml b/examples/mysql/switchover.yaml
index 0710bb4d5..8d8be9384 100644
--- a/examples/mysql/switchover.yaml
+++ b/examples/mysql/switchover.yaml
@@ -1,17 +1,16 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-switchover
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
-  type: Custom
+  type: Switchover
   # Lists Switchover objects, each specifying a Component to perform the switchover operation.
-  custom:
-    components:
-      - componentName: mysql
-        parameters:
-          - name: candidate
-            value: mysql-cluster-mysql-mysql-1
-    opsDefinitionName: mysql-orc-switchover
-
+  switchover:
+    # Specifies the name of the Component.
+  - componentName: mysql
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: mysql-cluster-mysql-0
diff --git a/examples/mysql/verticalscale.yaml b/examples/mysql/verticalscale.yaml
index 1779fcbe0..2cd164956 100644
--- a/examples/mysql/verticalscale.yaml
+++ b/examples/mysql/verticalscale.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-verticalscaling
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
   - componentName: mysql
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
diff --git a/examples/mysql/volumeexpand.yaml b/examples/mysql/volumeexpand.yaml
index f7da2fa99..5fa7c8956 100644
--- a/examples/mysql/volumeexpand.yaml
+++ b/examples/mysql/volumeexpand.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: mysql-volumeexpansion
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: mysql-cluster
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
   - componentName: mysql
diff --git a/examples/postgresql/README.md b/examples/postgresql/README.md
index d7da9e653..691ec746b 100644
--- a/examples/postgresql/README.md
+++ b/examples/postgresql/README.md
@@ -1,160 +1,699 @@
-# Postgresql
+# PostgreSQL
 
 PostgreSQL (Postgres) is an open source object-relational database known for reliability and data integrity. ACID-compliant, it supports foreign keys, joins, views, triggers and stored procedures.
 
+## Features In KubeBlocks
+
+### Lifecycle Management
+
+|   Topology       | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|------------------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| replication     | Yes                    | Yes                   | Yes              | Yes       | Yes        | Yes       | Yes    | Yes      |
+
+### Backup and Restore
+
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| Full Backup | pg-basebackup   | uses `pg_basebackup`,  a PostgreSQL utility to create a base backup   |
+| Full Backup | postgres-wal-g   | uses `wal-g` to create a full backup (and don't forget to config wal-g by setting envs ahead) |
+| Continuous Backup | postgresql-pitr | uploading PostgreSQL Write-Ahead Logging (WAL) files periodically to the backup repository. |
+
+### Versions
+
+| Major Versions | Description |
+|---------------|-------------|
+| 12            | 12.14.0,12.14.1,12.15.0,12.22.0|
+| 14            | 14.7.2,14.8.0,14.18.0|
+| 15            | 15.7.0,15.13.0|
+| 16            | 16.4.0,16.9.0|
+| 17            | 17.5.0|
+
 ## Prerequisites
 
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform.
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- PostgreSQL Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
+
+## Examples
+
+### [Create](cluster.yaml)
+
+Create a PostgreSQL cluster with one primary and one secondary instance:
 
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
 ```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
+kubectl apply -f examples/postgresql/cluster.yaml
+```
 
-# Update helm repo
-helm repo update
+And you will see the PostgreSQL cluster status goes `Running` after a while:
 
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
+```bash
+kubectl get cluster -n demo pg-cluster
+```
 
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
+and two pods are `Running` with roles `primary` and `secondary` separately. To check the roles of the pods, you can use following command:
 
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
+```bash
+# replace `pg-cluster` with your cluster name
+kubectl get po -l  app.kubernetes.io/instance=pg-cluster -L kubeblocks.io/role -n demo
+# or login to the pod and use `patronictl` to check the roles:
+kubectl exec -it pg-cluster-postgresql-0 -n demo -- patronictl list
 ```
- 
 
-## Examples
+If you want to create a PostgreSQL cluster of specified version, set the `spec.componentSpecs.serviceVersion` field in the yaml file before applying it:
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  terminationPolicy: Delete
+  clusterDef: postgresql
+  topology: replication
+  componentSpecs:
+    - name: postgresql
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [12.14.0,12.14.1,12.15.0,12.22.0,14.7.2,14.8.0,14.18.0,15.7.0,15.13.0,16.4.0,16.9.0,17.5.0]
+      serviceVersion: "14.7.2"
+```
+
+The list of supported versions can be found by following command:
 
-### [Create](cluster.yaml) 
-Create a postgresql cluster with specified cluster definition 
 ```bash
-kubectl apply -f examples/postgresql/cluster.yaml
+kubectl get cmpv postgresql
+```
+
+And the expected output is like:
+
+```bash
+NAME         VERSIONS                                                                                    STATUS      AGE
+postgresql   17.5.0,16.9.0,16.4.0,15.13.0,15.7.0,14.18.0,14.8.0,14.7.2,12.22.0,12.15.0,12.14.1,12.14.0   Available   Xd
+```
+
+### Horizontal scaling
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out PostgreSQL cluster by adding ONE more replica:
+
+```bash
+kubectl apply -f examples/postgresql/scale-out.yaml
 ```
-Starting from kubeblocks 0.9.0, we introduced a more flexible cluster creation method based on components, allowing customization of cluster topology, functionalities and scale according to specific requirements.
+
+After applying the operation, you will see a new pod created and the PostgreSQL cluster status goes from `Updating` to `Running`, and the newly created pod has a new role `secondary`.
+
+And you can check the progress of the scaling operation with following command:
+
 ```bash
-kubectl apply -f examples/postgresql/cluster-cmpd.yaml
+kubectl describe -n demo ops pg-scale-out
 ```
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in PostgreSQL cluster by deleting ONE replica:
+
 ```bash
-kubectl apply -f examples/postgresql/horizontalscale.yaml
+kubectl apply -f examples/postgresql/scale-in.yaml
+```
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      serviceVersion: "14.7.2"
+      labels:
+        apps.kubeblocks.postgres.patroni/scope: pg-cluster-postgresql
+      replicas: 2 # Update `replicas` to 1 for scaling in, and to 3 for scaling out
 ```
 
 ### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
+Vertical scaling involves increasing or decreasing resources to an existing database cluster.
+Resources that can be scaled include:, CPU cores/processing power and Memory (RAM).
+
+To vertical scaling up or down specified component, you can apply the following yaml file:
+
 ```bash
 kubectl apply -f examples/postgresql/verticalscale.yaml
 ```
 
+You will observe that the `secondary` pod is recreated first, followed by the `primary` pod, to ensure the availability of the cluster.
+
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      replicas: 2
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
 ### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
+
+Volume expansion is the ability to increase the size of a Persistent Volume Claim (PVC) after it's created. It is introduced in Kubernetes v1.11 and goes GA in Kubernetes v1.24. It allows Kubernetes users to simply edit their PersistentVolumeClaim objects  without requiring any downtime at all if possible[^4].
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/postgresql/volumeexpand.yaml
 ```
 
+After the operation, you will see the volume size of the specified component is increased to `30Gi` in this case. Once you've done the change, check the `status.conditions` field of the PVC to see if the resize has completed.
+
+```bash
+kubectl get pvc -l app.kubernetes.io/instance=pg-cluster -n demo
+```
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 30Gi  # specify new size, and make sure it is larger than the current size
+```
+
 ### [Restart](restart.yaml)
-Restart the specified components in the cluster
+
+Restart the specified components in the cluster, and instances will be recreated on after another to ensure the availability of the cluster
+
 ```bash
 kubectl apply -f examples/postgresql/restart.yaml
 ```
 
 ### [Stop](stop.yaml)
-Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+Stop the cluster will release all the pods of the cluster, but the storage will be retained. It is useful when you want to save the cost of the cluster.
+
 ```bash
 kubectl apply -f examples/postgresql/stop.yaml
 ```
 
+#### Stop using Cluster API
+
+Alternatively, you may stop the cluster by setting the `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      stop: true  # set stop `true` to stop the component
+      replicas: 2
+```
+
 ### [Start](start.yaml)
+
 Start the stopped cluster
+
 ```bash
 kubectl apply -f examples/postgresql/start.yaml
 ```
 
-### [Switchover](switchover.yaml)
-Switchover a non-primary or non-leader instance as the new primary or leader of the cluster
+#### Start using Cluster API
+
+Alternatively, you may start the cluster by setting the `spec.componentSpecs.stop` field to `false`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      stop: false  # set to `false` (or remove this field) to start the component
+      replicas: 2
+```
+
+### Switchover
+
+A switchover in database clusters is a planned operation that transfers the primary (leader) role from one database instance to another. The goal of a switchover is to ensure that the database cluster remains available and operational during the transition.
+
+#### [Switchover without preferred candidates](switchover.yaml)
+
+To perform a switchover without any preferred candidates, you can apply the following yaml file:
+
 ```bash
 kubectl apply -f examples/postgresql/switchover.yaml
 ```
 
-### [Switchover-specified-instance](switchover-specified-instance.yaml)
+<details>
+<summary>Details</summary>
+
+By applying this yaml file, KubeBlocks will perform a switchover operation defined in PostgreSQL's component definition, and you can checkout the details in `componentdefinition.spec.lifecycleActions.switchover`.
+
+You may get the switchover operation details with following command:
+
+```bash
+kubectl get cluster -n demo pg-cluster -ojson | jq '.spec.componentSpecs[0].componentDef' | xargs kubectl get cmpd -ojson | jq '.spec.lifecycleActions.switchover'
+```
+
+</details>
+
+#### [Switchover with candidate specified](switchover-specified-instance.yaml)
+
 Switchover a specified instance as the new primary or leader of the cluster
+
 ```bash
 kubectl apply -f examples/postgresql/switchover-specified-instance.yaml
 ```
 
-### [Configure](configure.yaml)
-Configure parameters with the specified components in the cluster
+You may need to update the `opsrequest.spec.switchover.instanceName` field to your desired instance name.
+
+Once this `opsrequest` is completed, you can check the status of the switchover operation and the roles of the pods to verify the switchover operation.
+
+### [Reconfigure](configure.yaml)
+
+A database reconfiguration is the process of modifying database parameters, settings, or configurations to improve performance, security, or availability. The reconfiguration can be either:
+
+- Dynamic: Applied without restart
+- Static: Requires database restart
+
+Reconfigure parameters with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/postgresql/configure.yaml
 ```
 
-### [BackupRepo](backuprepo.yaml)
-BackupRepo is the storage repository for backup data, using the full backup and restore function of KubeBlocks relies on BackupRepo
+This example will change the `max_connections` to `200`.
+> `max_connections` indicates maximum number of client connections allowed. It is a dynamic parameter, so the change will take effect without restarting the database.
+
 ```bash
-# Create a secret to save the access key
-kubectl create secret generic <storage-provider>-credential-for-backuprepo\
-  --from-literal=accessKeyId=<ACCESS KEY> \
-  --from-literal=secretAccessKey=<SECRET KEY> \
-  -n kb-system 
-  
-kubectl apply -f examples/postgresql/backuprepo.yaml
+kbcli cluster explain-config pg-cluster # kbcli is a command line tool to interact with KubeBlocks
 ```
 
 ### [Backup](backup.yaml)
-Create pg-basebackup or volume-snapshot backup for the cluster
+
+> [!IMPORTANT]
+> Before you start, please create a `BackupRepo` to store the backup data. Refer to [BackupRepo](../docs/create-backuprepo.md) for more details.
+
+KubeBlocks supports multiple backup methods for PostgreSQL cluster, such as `pg-basebackup`, `volume-snapshot`, `wal-g`, etc.
+
+You may find the supported backup methods in the `BackupPolicy` of the cluster, e.g. `pg-cluster-postgresql-backup-policy` in this case, and find how these methods will be scheduled in the `BackupSchedule` of the cluster, e.g.. `pg-cluster-postgresql-backup-schedule` in this case.
+
+We will elaborate on the `pg-basebackup` and `wal-g` backup methods in the following sections to demonstrate how to create full backup and continuous backup for the cluster.
+
+#### pg_basebackup
+
+##### Full Backup(backup-pg-basebasekup.yaml)
+
+The method `pg-basebackup` uses `pg_basebackup`,  a PostgreSQL utility to create a base backup[^1]
+
+To create a base backup for the cluster, you can apply the following yaml file:
+
 ```bash
-kubectl apply -f examples/postgresql/backup.yaml
+kubectl apply -f examples/postgresql/backup-pg-basebasekup.yaml
 ```
-Create wal-g backup for the cluster
+
+After the operation, you will see a `Backup` is created
+
+```bash
+kubectl get backup -n demo -l app.kubernetes.io/instance=pg-cluster
+```
+
+and the status of the backup goes from `Running` to `Completed` after a while. And the backup data will be pushed to your specified `BackupRepo`.
+
+Information, such as `path`, `timeRange` about the backup will be recorded into the `Backup` resource.
+
+Alternatively, you can update the `BackupSchedule` to enable the method `pg-basebackup` to schedule base backup periodically, will be elaborated in the following section.
+
+#### Continuous Backup
+
+To enable continuous backup, you need to update `BackupSchedule` and enable the method `archive-wal`.
+
+```yaml
+apiVersion: dataprotection.kubeblocks.io/v1alpha1
+kind: BackupSchedule
+metadata:
+  name: pg-cluster-postgresql-backup-schedule
+  namespace: demo
+spec:
+  backupPolicyName: pg-cluster-postgresql-backup-policy
+  schedules:
+  - backupMethod: pg-basebackup
+    # ┌───────────── minute (0-59)
+    # │ ┌───────────── hour (0-23)
+    # │ │ ┌───────────── day of month (1-31)
+    # │ │ │ ┌───────────── month (1-12)
+    # │ │ │ │ ┌───────────── day of week (0-6) (Sunday=0)
+    # │ │ │ │ │
+    # 0 18 * * *
+    # schedule this job every day at 6:00 PM (18:00).
+    cronExpression: 0 18 * * * # update the cronExpression to your need
+    enabled: false # set to `true` to schedule base backup periodically
+    retentionPeriod: 7d # set the retention period to your need
+  - backupMethod: archive-wal
+    cronExpression: '*/5 * * * *'
+    enabled: true  # set to `true` to enable continuouse backup
+    retentionPeriod: 8d # set the retention period to your need
+```
+
+Once the `BackupSchedule` is updated, the continuous backup starts to work, and you can check the status of the backup with following command:
+
+```bash
+kubectl get backup -n demo -l app.kubernetes.io/instance=pg-cluster
+```
+
+And you will find one `Backup` named with suffix 'pg-cluster-postgresql-archive-wal' is created with the method `archive-wal`.
+
+It will run continuously until you disable the method `archive-wal` in the `BackupSchedule`. And the valid time range of the backup will be recorded in the `Backup` resource:
+
+```bash
+kubectl get backup -n demo -l app.kubernetes.io/instance=pg-cluster -l dataprotection.kubeblocks.io/backup-type=Continuous  -oyaml | yq '.items[].status.timeRange'
+```
+
+#### wal-g
+
+WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).[^2]
+
+##### [Full Backup](basebackup-wal-g.yaml)
+
+To create wal-g backup for the cluster, it is a multi-step process.
+
+1. configure WAL-G on all PostgreSQL pods
+
 ```bash
-# Step 1: you cannot do wal-g backup for a brand-new cluster, you need to insert some data before backup
-# step 2: config-wal-g backup to put the wal-g binary to postgresql pods and configure the archive_command
-# Note: if there is horizontal scaling out new pods after step 2, you need to do config-wal-g again
 kubectl apply -f examples/postgresql/config-wal-g.yaml
-# Step 3: do wal-g backup
+```
+
+1. set `archive_command` to `wal-g wal-push %p`
+
+```bash
 kubectl apply -f examples/postgresql/backup-wal-g.yaml
-# Step 4:log in to the cluster, and manually upload wal with following sql statement
-select pg_switch_wal();
 ```
 
+1. you cannot do wal-g backup for a brand-new cluster, you need to insert some data before backup
+
+1. create a backup
+
+```bash
+kubectl apply -f examples/postgresql/backup-wal-g.yaml
+```
+
+> [!NOTE]
+> if there is horizontal scaling out new pods after step 2, you need to do config-wal-g again
+
 ### [Restore](restore.yaml)
-Restore a new cluster from backup
+
+To restore a new cluster from a Backup:
+
+1. Get the list of accounts and their passwords from the backup:
+
 ```bash
-# Get backup connection password
-kubectl get backup pg-cluster-backup -ojsonpath='{.metadata.annotations.dataprotection\.kubeblocks\.io\/connection-password}' -n default
+kubectl get backup -n demo pg-cluster-pg-basebackup -ojsonpath='{.metadata.annotations.kubeblocks\.io/encrypted-system-accounts}'
+```
 
+1. Update `examples/postgresql/restore.yaml` and set placeholder `<ENCRYPTED-SYSTEM-ACCOUNTS>` with your own settings and apply it.
+
+```bash
 kubectl apply -f examples/postgresql/restore.yaml
 ```
 
 ### Expose
+
 Expose a cluster with a new endpoint
+
 #### [Enable](expose-enable.yaml)
+
 ```bash
 kubectl apply -f examples/postgresql/expose-enable.yaml
 ```
+
 #### [Disable](expose-disable.yaml)
+
 ```bash
 kubectl apply -f examples/postgresql/expose-disable.yaml
 ```
 
+#### Expose SVC using Cluster API
+
+Alternatively, you may expose service by updating `spec.services`
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  # append service to the list
+  services:
+    # add annotation for cloud loadbalancer if
+    # services.spec.type is LoadBalancer
+    # here we use annotation for alibaba cloud for example
+  - annotations:
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+    componentSelector: postgresql
+    name: postgresql-vpc
+    serviceName: postgresql-vpc
+    # optional. it specify defined role as selector for the service.
+    # onece specified, service will select and route traffic to Pods with the label
+    # "kubeblocks.io/role=<specified-role-name>".
+    # valid options are: [primary, secondary] for postgresql
+    roleSelector: primary
+    spec:  # defines the behavior of a K8s service.
+      ipFamilyPolicy: PreferDualStack
+      ports:
+      - name: tcp-postgresql
+        # port to expose
+        port: 5432
+        protocol: TCP
+        targetPort: tcp-postgresql
+      type: LoadBalancer
+```
+
+If the service is of type `LoadBalancer`, please add annotations for cloud loadbalancer depending on the cloud provider you are using[^3]. Here list annotations for some cloud providers:
+
+```yaml
+# alibaba cloud
+service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"  # or "intranet"
+
+# aws
+service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+
+# azure
+service.beta.kubernetes.io/azure-load-balancer-internal: "true" # or "false" for internet
+
+# gcp
+networking.gke.io/load-balancer-type: "Internal" # for internal access
+cloud.google.com/l4-rbs: "enabled" # for internet
+```
+
+Please consult your cloud provider for more accurate and update-to-date information.
+
 ### [Upgrade](upgrade.yaml)
-Upgrade pg cluster to a newer version
+
+Upgrade postgresql cluster to another version
+
 ```bash
 kubectl apply -f examples/postgresql/upgrade.yaml
 ```
 
+In this example, the cluster will be upgraded to version `14.8.0`.
+
+#### Upgrade using Cluster API
+
+Alternatively, you may modify the `spec.componentSpecs.serviceVersion` field to the desired version to upgrade the cluster.
+
+> [!WARNING]
+> Do remember to to check the compatibility of versions before upgrading the cluster.
+
+```bash
+kubectl get cmpv postgresql -ojson | jq '.spec.compatibilityRules'
+```
+
+Expected output:
+
+```json
+[
+  {
+    "compDefs": [
+      "postgresql-12-"
+    ],
+    "releases": [
+      "12.14.0",
+      "12.14.1",
+      "12.15.0"
+    ]
+  },
+  {
+    "compDefs": [
+      "postgresql-14-"
+    ],
+    "releases": [
+      "14.7.2",
+      "14.8.0"
+    ]
+  }
+]
+```
+
+Releases are grouped by component definitions, and each group has a list of compatible releases.
+In this example, it shows you can upgrade from version `12.14.0` to `12.14.1` or `12.15.0`, and upgrade from `14.7.2` to `14.8.0`.
+But cannot upgrade from `12.14.0` to `14.8.0`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      serviceVersion: "14.8.0" # set to the desired version
+      replicas: 2
+      resources:
+```
+
+### Observability
+
+There are various ways to monitor the cluster. Here we use Prometheus and Grafana to demonstrate how to monitor the cluster.
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+#### Create a Cluster
+
+Create a new cluster with following command:
+
+> [!NOTE]
+> Make sure `spec.componentSpecs.disableExporter` is set to `false` when creating cluster.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: postgresql
+      serviceVersion: "14.7.2"
+      disableExporter: false # set to `false` to enable exporter
+```
+
+```bash
+kubectl apply -f examples/postgresql/cluster.yaml
+```
+
+When the cluster is running, each POD should have a sidecar container, named `exporter` running the postgres-exporter.
+
+#### Create PodMonitor
+
+##### Step 1. Query ScrapePath and ScrapePort
+
+You can retrieve the `scrapePath` and `scrapePort` from pod's exporter container.
+
+```bash
+kubectl get po -n demo pg-cluster-postgresql-0 -oyaml | yq '.spec.containers[] | select(.name=="exporter") | .ports '
+```
+
+And the expected output is like:
+
+```text
+- containerPort: 9187
+  name: http-metrics
+  protocol: TCP
+```
+
+##### Step 2. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/postgresql/pod-monitor.yaml
+```
+
+##### Step 3. Accessing the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard.
+
+There is a pre-configured dashboard for PostgreSQL under the `APPS / PostgreSQL` folder in the Grafana dashboard. And more dashboards can be found in the Grafana dashboard store[^5].
+
+> [!NOTE]
+> Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+
 ### Delete
+
 If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
 ```bash
-kubectl patch cluster pg-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+kubectl patch cluster -n demo pg-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete cluster -n demo pg-cluster
+```
+
+## Appendix
+
+### How to Create PostgreSQL Cluster with ETCD or Zookeeper as DCS
 
-kubectl delete cluster pg-cluster
+```bash
+kubectl apply -f examples/postgresql/cluster-with-etcd.yaml
 ```
+
+This example will create a PostgreSQL cluster with ETCD as DCS. It will set two envs:
+
+- `DCS_ENABLE_KUBERNETES_API` to empty, unset this env if you use zookeeper or etcd, default to empty
+- `ETCD3_HOST` to the ETCD cluster's headless service address, or use `ETCD3_HOSTS` to set ETCD hosts and ports.
+
+Similar for Zookeeper, you can set `ZOOKEEPER_HOSTS` to the Zookeeper's address.
+
+More environment variables can be found in [Spilo's ENVIRONMENT](https://github.com/zalando/spilo/blob/master/ENVIRONMENT.rst).
+
+## Reference
+
+[^1]: pg_basebackup, <https://www.postgresql.org/docs/current/app-pgbasebackup.html>
+[^2]: wal-g <https://github.com/wal-g/wal-g>
+[^3]: Internal load balancer: <https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer>
+[^4]: Volume Expansion: <https://kubernetes.io/blog/2022/05/05/volume-expansion-ga/>
+[^5]: Grafana Dashboard Store: <https://grafana.com/grafana/dashboards/>
diff --git a/examples/postgresql/alert-rules.yaml b/examples/postgresql/alert-rules.yaml
new file mode 100644
index 000000000..a53a8a62f
--- /dev/null
+++ b/examples/postgresql/alert-rules.yaml
@@ -0,0 +1,178 @@
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  name: postgresql-alert-rules
+  labels:
+    release: prometheus
+spec:
+  groups:
+    - name: PostgreSQLExporter
+      rules:
+        - alert: PostgreSQLDown
+          expr: "max_over_time(pg_up[1m]) == 0"
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "PostgreSQL is down"
+            description: "PostgreSQL is down. (instance: {{ $labels.pod }})"
+
+        - alert: PostgreSQLRestarted
+          expr: "time() - pg_postmaster_start_time_seconds < 60"
+          for: 0m
+          labels:
+            severity: info
+          annotations:
+            summary: "PostgreSQL has just been restarted (< 60s)"
+            description: 'PostgreSQL has just been restarted {{ $value | printf "%.1f" }} seconds ago. (instance: {{ $labels.pod }})'
+
+        - alert: PostgreSQLExporterError
+          expr: "pg_exporter_last_scrape_error > 0"
+          for: 0m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL exporter scrape error"
+            description: 'PostgreSQL exporter has {{ $value | printf "%.2f" }} scrape errors. A query may be buggy in query.yaml. (instance: {{ $labels.pod }})'
+
+        - alert: PostgreSQLTooManySlowQueries
+          expr: |
+            max by(namespace,app_kubernetes_io_instance,pod,datname) (
+              max_over_time(pg_stat_activity_max_tx_duration{datname!~"template.*"}[2m])
+            ) > 60
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL database has high number of slow queries"
+            description: 'PostgreSQL database has slow queries and the value is {{ $value | printf "%.2f" }}. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})'
+
+        - alert: PostgreSQLTooManyConnections
+          expr: |
+            sum by (namespace,app_kubernetes_io_instance,pod) (pg_stat_activity_count{datname!~"template.*"})
+            > on(namespace,app_kubernetes_io_instance,pod)
+            (pg_settings_max_connections - pg_settings_superuser_reserved_connections) * 0.8
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL too many connections (> 80%)"
+            description: 'PostgreSQL has too many connections and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
+
+        - alert: PostgreSQLDeadLocks
+          expr: 'increase(pg_stat_database_deadlocks_total{datname!~"template.*", datname!=""}[2m]) > 5'
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL database has dead locks (> 5)"
+            description: 'PostgreSQL database has {{ $value | printf "%.2f"}} dead locks. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})'
+
+        - alert: PostgreSQLHighRollbackRate
+          expr: |
+            rate(pg_stat_database_xact_rollback_total{datname!~"template.*", datname!=""}[2m])
+            /
+            rate(pg_stat_database_xact_commit_total{datname!~"template.*", datname!=""}[2m])
+            > 0.1
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL database has high rollback rate (> 10%)"
+            description: 'Ratio of transactions being aborted compared to committed is {{ $value | printf "%.2f"}} percent. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})'
+
+        - alert: PostgreSQLTooManyLocksAcquired
+          expr: |
+            sum by (namespace,app_kubernetes_io_instance,pod) (pg_locks_count)
+            / on(namespace,app_kubernetes_io_instance,pod)
+            (pg_settings_max_locks_per_transaction * pg_settings_max_connections)
+            > 0.2
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL has too many locks acquired (> 20%)"
+            description: 'Too many locks acquired on the database and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
+
+        - alert: PostgreSQLCacheHitRatio
+          expr: |
+            avg by (namespace,app_kubernetes_io_instance,pod,datname) (
+              rate(pg_stat_database_blks_hit_total{datname!~"template.*", datname!=""}[2m])
+              /
+              (
+                rate(
+                  pg_stat_database_blks_hit_total{datname!~"template.*", datname!=""}[2m]
+                )
+                +
+                rate(
+                  pg_stat_database_blks_read_total{datname!~"template.*", datname!=""}[2m]
+                )
+              )
+            ) < 0.9
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL database has low cache hit rate (< 90%)"
+            description: 'Low cache hit rate and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})'
+
+        - alert: PostgreSQLMaxWriteBufferReached
+          expr: "rate(pg_stat_bgwriter_maxwritten_clean_total[2m]) > 0"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL write buffers reached max"
+            description: 'PostgreSQL background writer stops for max and the value is {{ $value | printf "%.2f" }}. (instance: {{ $labels.pod }})'
+
+        - alert: PostgreSQLHighWALFilesArchiveErrorRate
+          expr: |
+            rate(pg_stat_archiver_failed_count_total[2m])
+            / (
+              rate(pg_stat_archiver_archived_count_total[2m]) + rate(pg_stat_archiver_failed_count_total[2m])
+            ) > 0.1
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL has high error rate in WAL files archiver(> 10%)"
+            description: 'PostgreSQL high error rate in WAL files archiver and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
+
+        - alert: PostgreSQLTableNotAutoVacuumed
+          expr: |
+            (pg_stat_user_tables_last_autovacuum > 0)
+            and
+            (time() - pg_stat_user_tables_last_autovacuum)
+            > 24 * 60 * 60 * 10
+          for: 0m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL table in database has not been auto vacuumed for 10 days"
+            description: "Table {{ $labels.relname }} in database has not been auto vacuumed for 10 days. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})"
+
+        - alert: PostgreSQLTableNotAutoAnalyzed
+          expr: |
+            (pg_stat_user_tables_last_autoanalyze > 0)
+            and
+            (time() - pg_stat_user_tables_last_autoanalyze)
+            > 24 * 60 * 60 * 10
+          for: 0m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL table in database has not been auto analyzed for 10 days"
+            description: "Table {{ $labels.relname }} in database has not been auto analyzed for 10 days. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})"
+
+        - alert: PostgreSQLTableTooManyDeadTuples
+          expr: |
+            (pg_stat_user_tables_n_dead_tup > 10000)
+            /
+            (pg_stat_user_tables_n_live_tup + pg_stat_user_tables_n_dead_tup)
+            >= 0.1
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "PostgreSQL table in database has too many dead tuples (> 10%)"
+            description: 'Table {{ $labels.relname }} in database dead tuples is too large and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }}, database: {{ $labels.datname }})'
diff --git a/examples/postgresql/backup.yaml b/examples/postgresql/backup-pg-basebasekup.yaml
similarity index 94%
rename from examples/postgresql/backup.yaml
rename to examples/postgresql/backup-pg-basebasekup.yaml
index 770e511e0..370781a8f 100644
--- a/examples/postgresql/backup.yaml
+++ b/examples/postgresql/backup-pg-basebasekup.yaml
@@ -1,8 +1,8 @@
 apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
-  name: pg-cluster-backup
-  namespace: default
+  name: pg-cluster-pg-basebackup
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - pg-basebackup
diff --git a/examples/postgresql/backup-wal-g.yaml b/examples/postgresql/backup-wal-g.yaml
index b052086d5..66affa2ce 100644
--- a/examples/postgresql/backup-wal-g.yaml
+++ b/examples/postgresql/backup-wal-g.yaml
@@ -1,8 +1,8 @@
 apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
-  name: pg-cluster-backup
-  namespace: default
+  name: pg-cluster-wal-g
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - pg-basebackup
diff --git a/examples/postgresql/backuprepo.yaml b/examples/postgresql/backuprepo.yaml
index 890891407..78e96f11b 100644
--- a/examples/postgresql/backuprepo.yaml
+++ b/examples/postgresql/backuprepo.yaml
@@ -1,8 +1,9 @@
 apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: BackupRepo
 metadata:
-  name: s3-repo
+  name: <test-backuprepo>
   annotations:
+    # optional, mark this backuprepo as default
     dataprotection.kubeblocks.io/is-default-repo: 'true'
 spec:
   # Specifies the name of the `StorageProvider` used by this backup repository.
@@ -13,24 +14,30 @@ spec:
   # - gcs (Google Cloud Storage)
   # - obs (Huawei Cloud Object Storage)
   # - minio, and other S3-compatible services.
-  storageProviderRef: s3
+  # Note: set the provider name to you own needs
+  storageProviderRef: oss
   # Specifies the access method of the backup repository.
   # - Tool
   # - Mount
+  # If the access mode is Mount, it will mount the PVC through the CSI driver (make sure it is installed and configured properly)
+  # In Tool mode, it will directly stream to the object storage without mounting the PVC.
   accessMethod: Tool
-  # Specifies reclaim policy of the PV created by this backup repository.
-  pvReclaimPolicy: Retain
-  # Specifies the capacity of the PVC created by this backup repository.
-  volumeCapacity: 100Gi
   # Stores the non-secret configuration parameters for the `StorageProvider`.
   config:
-    bucket: <storage-provider-bucket-name>
-    endpoint: ''
-    mountOptions: --memory-limit 1000 --dir-mode 0777 --file-mode 0666
-    region: <storage-provider-region-name>
+    # Note: set the bucket name to you own needs
+    bucket: <kubeblocks-test>
+    # Note: set the region name to you own needs
+    region: <cn-zhangjiakou>
   # References to the secret that holds the credentials for the `StorageProvider`.
+  # kubectl create secret generic demo-credential-for-backuprepo --from-literal=accessKeyId=* --from-literal=secretAccessKey=* --namespace=kb-system
   credential:
     # name is unique within a namespace to reference a secret resource.
-    name: s3-credential-for-backuprepo
+    # Note: set the secret name to you own needs
+    name: <credential-for-backuprepo>
     # namespace defines the space within which the secret name must be unique.
     namespace: kb-system
+  # Specifies reclaim policy of the PV created by this backup repository
+  # Valid Options are [Retain, Delete]
+  # Delete means the volume will be deleted from Kubernetes on release from its claim.
+  # Retain means the volume will be left in its current phase (Released) for manual reclamation by the administrator.
+  pvReclaimPolicy: Retain
diff --git a/examples/postgresql/cluster-cmpd.yaml b/examples/postgresql/cluster-cmpd.yaml
deleted file mode 100644
index 4ce1e1f39..000000000
--- a/examples/postgresql/cluster-cmpd.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: pg-cluster
-  namespace: default
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule.
-  - name: postgresql
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: postgresql-12
-    # Specifies which types of logs should be collected for the Cluster.
-    enabledLogs:
-    - running
-    # Determines whether the metrics exporter needs to be published to the service endpoint.
-    disableExporter: true
-    # Specifies the name of the ServiceAccount required by the running Component.
-    serviceAccountName: kb-pg-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 2
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/postgresql/cluster-with-etcd.yaml b/examples/postgresql/cluster-with-etcd.yaml
new file mode 100644
index 000000000..2bb2a1f63
--- /dev/null
+++ b/examples/postgresql/cluster-with-etcd.yaml
@@ -0,0 +1,35 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: pg-cluster-etcd
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  clusterDef: postgresql
+  topology: replication
+  componentSpecs:
+    - name: postgresql
+      serviceVersion: "14.7.2"
+      env:
+      - name: DCS_ENABLE_KUBERNETES_API  # unset this env if you use zookeeper or etcd, default to empty
+      - name: ETCD3_HOST
+        value: 'myetcd-etcd-headless.default.svc.cluster.local:2379' # where is your etcd?
+      # - name: ZOOKEEPER_HOSTS
+      #   value: 'myzk-zookeeper-0.myzk-zookeeper-headless.default.svc.cluster.local:2181' # where is your zookeeper?
+      replicas: 2
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/postgresql/cluster.yaml b/examples/postgresql/cluster.yaml
index 4f317cd0a..c7e4d50b1 100644
--- a/examples/postgresql/cluster.yaml
+++ b/examples/postgresql/cluster.yaml
@@ -2,36 +2,74 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: pg-cluster
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
   # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
   # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
   # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `postgresql` to create a PostgreSQL Cluster
+  clusterDef: postgresql
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # Valid options are: [replication]
+  topology: replication
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
   componentSpecs:
-  - name: postgresql
-    componentDef: postgresql-14
-    enabledLogs:
-    - running
-    disableExporter: true
-    replicas: 2
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
+    - name: postgresql
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [12.14.0,12.14.1,12.15.0,12.22.0,14.7.2,14.8.0,14.18.0,15.7.0,15.13.0,16.4.0,16.9.0,17.5.0]
+      serviceVersion: "14.7.2"
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: false
+      # Specifies Labels to override or add for underlying Pods, PVCs, Account & TLS
+      # Secrets, Services Owned by Component.
+      labels:
+        # PostgreSQL's CMPD specifies `KUBERNETES_SCOPE_LABEL=apps.kubeblocks.postgres.patroni/scope` through ENVs
+        # The KUBERNETES_SCOPE_LABEL is used to define the label key that Patroni will use to tag Kubernetes resources.
+        # This helps Patroni identify which resources belong to the specified scope (or cluster) used to define the label key
+        # that Patroni will use to tag Kubernetes resources.
+        # This helps Patroni identify which resources belong to the specified scope (or cluster).
+        #
+        # Note: DO NOT REMOVE THIS LABEL
+        # update the value w.r.t your cluster name
+        # the value must follow the format <cluster.metadata.name>-postgresql
+        # which is pg-cluster-postgresql in this examples
+        # replace `pg-cluster` with your cluster name
+        apps.kubeblocks.postgres.patroni/scope: pg-cluster-postgresql
+      # Update `replicas` to your need.
+      replicas: 2
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/postgresql/config-wal-g.yaml b/examples/postgresql/config-wal-g.yaml
index 49c4d0d74..182b16189 100644
--- a/examples/postgresql/config-wal-g.yaml
+++ b/examples/postgresql/config-wal-g.yaml
@@ -2,7 +2,7 @@ apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
   name: pg-cluster-config-wal-g
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - pg-basebackup
@@ -15,4 +15,4 @@ spec:
   # Determines whether the backup contents stored in the backup repository should be deleted when the backup custom resource(CR) is deleted. Supported values are `Retain` and `Delete`. - `Retain` means that the backup content and its physical snapshot on backup repository are kept.
   # - `Retain` means that the backup content and its physical snapshot on backup repository are kept.
   # - `Delete` means that the backup content and its physical snapshot on backup repository are deleted.
-  deletionPolicy: Delete
+  deletionPolicy: Delete
\ No newline at end of file
diff --git a/examples/postgresql/configure.yaml b/examples/postgresql/configure.yaml
index 67bef1514..b42faac3b 100644
--- a/examples/postgresql/configure.yaml
+++ b/examples/postgresql/configure.yaml
@@ -1,36 +1,23 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-reconfiguring
-  namespace: default
+  namespace: demo
 spec:
+  # Specifies the type of this operation.
+  type: Reconfiguring
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
   # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
   force: false
   # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
+  reconfigures:
     # Specifies the name of the Component.
-    componentName: postgresql
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: postgresql.conf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: shared_buffers
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: 512MB
-        - key: max_connections
-          value: '200'
-      # Specifies the name of the configuration template.
-      name: postgresql-configuration
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
+  - componentName: postgresql
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+      # `max_connections` is a dyamic parameter in PostgreSQL that can be changed or updated at runtime without requiring a restart of the database
+    - key: max_connections
+      # Represents the parameter values that are to be updated.
+      # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
+      value: '200'
\ No newline at end of file
diff --git a/examples/postgresql/expose-disable.yaml b/examples/postgresql/expose-disable.yaml
index e04f17261..1dda03c3a 100644
--- a/examples/postgresql/expose-disable.yaml
+++ b/examples/postgresql/expose-disable.yaml
@@ -1,22 +1,23 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-expose-disable
-  namespace: default
+  namespace: demo
 spec:
+  # Specifies the type of this operation.
+  type: Expose
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
   - componentName: postgresql
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
-      roleSelector: primary
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`.
       serviceType: LoadBalancer
+      roleSelector: primary
     # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
     switch: Disable
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Expose
diff --git a/examples/postgresql/expose-enable.yaml b/examples/postgresql/expose-enable.yaml
index bd5be46aa..54516ea18 100644
--- a/examples/postgresql/expose-enable.yaml
+++ b/examples/postgresql/expose-enable.yaml
@@ -1,22 +1,32 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-expose-enable
-  namespace: default
+  namespace: demo
 spec:
+  # Specifies the type of this operation.
+  type: Expose
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
   - componentName: postgresql
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
-      roleSelector: primary
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`.
       serviceType: LoadBalancer
+      # Contains cloud provider related parameters if ServiceType is LoadBalancer.
+      # Following is an example for Aliyun ACK, please adjust the following annotations as needed.
+      annotations:
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: ""
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
+      # Specifies a role to target with the service.
+      # If specified, the service will only be exposed to pods with the matching
+      # role.
+      roleSelector: primary
     # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
-    switch: Enable
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Expose
+    switch: Enable
\ No newline at end of file
diff --git a/examples/postgresql/pod-monitor.yaml b/examples/postgresql/pod-monitor.yaml
new file mode 100644
index 000000000..40a9f23d0
--- /dev/null
+++ b/examples/postgresql/pod-monitor.yaml
@@ -0,0 +1,28 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: pg-cluster-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: http-metrics
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: pg-cluster
+      apps.kubeblocks.io/component-name: postgresql
\ No newline at end of file
diff --git a/examples/postgresql/rebuild.yaml b/examples/postgresql/rebuild.yaml
new file mode 100644
index 000000000..a69a1ff85
--- /dev/null
+++ b/examples/postgresql/rebuild.yaml
@@ -0,0 +1,16 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: pg-rebuildinstance
+  namespace: demo
+spec:
+  clusterName: pg-cluster
+  force: true
+  preConditionDeadlineSeconds: 0
+  rebuildFrom:
+  - backupName: pg-cluster-pg-basebackup
+    componentName: postgresql
+    inPlace: true
+    instances:
+    - name: pg-cluster-postgresql-1
+  type: RebuildInstance
\ No newline at end of file
diff --git a/examples/postgresql/reconfig-arhive-command.yaml b/examples/postgresql/reconfig-arhive-command.yaml
new file mode 100644
index 000000000..d1107a896
--- /dev/null
+++ b/examples/postgresql/reconfig-arhive-command.yaml
@@ -0,0 +1,17 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: pg-cluster-reconfigure-archive-command
+  namespace: demo
+spec:
+  # Specifies the type of this operation.
+  type: Reconfiguring
+  clusterName: pg-cluster
+  reconfigures:
+  - componentName: postgresql
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+      # The archive_command parameter in PostgreSQL is used to specify a shell command that the server runs to archive a completed WAL (Write-Ahead Logging) file.
+      # Here it sets up the necessary environment variables using envdir and then uses wal-g to archive the WAL file
+    - key: archive_command
+      value: "'envdir /home/postgres/pgdata/wal-g/env /home/postgres/pgdata/wal-g/wal-g wal-push %p'"
\ No newline at end of file
diff --git a/examples/postgresql/restart.yaml b/examples/postgresql/restart.yaml
index e78c1991b..ed9040a5f 100644
--- a/examples/postgresql/restart.yaml
+++ b/examples/postgresql/restart.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-restart
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
diff --git a/examples/postgresql/restore-cmpd.yaml b/examples/postgresql/restore-cmpd.yaml
deleted file mode 100644
index 529f97f94..000000000
--- a/examples/postgresql/restore-cmpd.yaml
+++ /dev/null
@@ -1,44 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: pg-cluster-restore
-  namespace: default
-  annotations:
-    kubeblocks.io/restore-from-backup: '{"postgresql":{"connectionPassword":"<backup-connection-password>","name":"pg-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule.
-  - name: postgresql
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: postgresql-12
-    # Specifies which types of logs should be collected for the Cluster.
-    enabledLogs:
-    - running
-    # Determines whether the metrics exporter needs to be published to the service endpoint.
-    disableExporter: true
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 2
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
diff --git a/examples/postgresql/restore.yaml b/examples/postgresql/restore.yaml
index 96a2440e1..ce1957c68 100644
--- a/examples/postgresql/restore.yaml
+++ b/examples/postgresql/restore.yaml
@@ -1,39 +1,36 @@
 apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
-  name: pg-cluster-restore
-  namespace: default
+  name: pg-restore
+  namespace: demo
   annotations:
-    kubeblocks.io/restore-from-backup: '{"postgresql":{"connectionPassword":"<backup-connection-password>","name":"pg-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
+    # NOTE: replace <ENCRYPTED-SYSTEM-ACCOUNTS> with the accounts info from you backup
+    kubeblocks.io/restore-from-backup: '{"postgresql":{"encryptedSystemAccounts":"<ENCRYPTED-SYSTEM-ACCOUNTS>","name":"pg-cluster-pg-basebackup","namespace":"demo","volumeRestorePolicy":"Parallel"}}'
 spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  clusterDef: postgresql
+  topology: replication
   componentSpecs:
-  - name: postgresql
-    componentDef: postgresql-12
-    enabledLogs:
-    - running
-    disableExporter: true
-    replicas: 2
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
+    - name: postgresql
+      serviceVersion: "14.7.2"
+      disableExporter: true
+      labels:
+        # NOTE: update the label accordingly
+        apps.kubeblocks.postgres.patroni/scope: pg-restore-postgresql
+      replicas: 2
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/postgresql/horizontalscale.yaml b/examples/postgresql/scale-in.yaml
similarity index 63%
rename from examples/postgresql/horizontalscale.yaml
rename to examples/postgresql/scale-in.yaml
index f7f177997..00feef643 100644
--- a/examples/postgresql/horizontalscale.yaml
+++ b/examples/postgresql/scale-in.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: pg-horizontalscaling
-  namespace: default
+  name: pg-scale-in
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
@@ -11,5 +11,8 @@ spec:
   horizontalScaling:
     # Specifies the name of the Component.
   - componentName: postgresql
-    # Specifies the number of total replicas.
-    replicas: 4
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/postgresql/scale-out.yaml b/examples/postgresql/scale-out.yaml
new file mode 100644
index 000000000..5bb1fa0dc
--- /dev/null
+++ b/examples/postgresql/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: pg-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: pg-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: postgresql
+    # Specifies the replica changes for scaling out components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/postgresql/start.yaml b/examples/postgresql/start.yaml
index ae08b6b84..5e906a61e 100644
--- a/examples/postgresql/start.yaml
+++ b/examples/postgresql/start.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-start
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
diff --git a/examples/postgresql/stop.yaml b/examples/postgresql/stop.yaml
index 2b291fc49..26cbd0f1b 100644
--- a/examples/postgresql/stop.yaml
+++ b/examples/postgresql/stop.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-stop
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
diff --git a/examples/postgresql/switchover-specified-instance.yaml b/examples/postgresql/switchover-specified-instance.yaml
index 67b2b4ca1..3944e5b91 100644
--- a/examples/postgresql/switchover-specified-instance.yaml
+++ b/examples/postgresql/switchover-specified-instance.yaml
@@ -1,7 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-switchover-specify
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
@@ -10,7 +11,10 @@ spec:
   switchover:
     # Specifies the name of the Component.
   - componentName: postgresql
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: pg-cluster-postgresql-1
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: pg-cluster-postgresql-0
+    # If CandidateName is specified, the role will be transferred to this instance.
+    # The name must match one of the pods in the component.
+    # Refer to ComponentDefinition's Swtichover lifecycle action for more details.
+    candidateName: pg-cluster-postgresql-1
diff --git a/examples/postgresql/switchover.yaml b/examples/postgresql/switchover.yaml
index b661f49ff..ed4f37c60 100644
--- a/examples/postgresql/switchover.yaml
+++ b/examples/postgresql/switchover.yaml
@@ -1,7 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-switchover
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
@@ -10,7 +11,6 @@ spec:
   switchover:
     # Specifies the name of the Component.
   - componentName: postgresql
-    # Specifies the instance to become the primary or leader during a switchover operation. The value of `instanceName` can be either: 
-    # - "*" (wildcard value): - Indicates no specific instance is designated as the primary or leader.
-    # - A valid instance name (pod name)
-    instanceName: '*'
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: pg-cluster-postgresql-0
diff --git a/examples/postgresql/upgrade.yaml b/examples/postgresql/upgrade.yaml
index 598e19f0f..f84511ad0 100644
--- a/examples/postgresql/upgrade.yaml
+++ b/examples/postgresql/upgrade.yaml
@@ -1,13 +1,14 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-upgrade
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
   type: Upgrade
-  # Specifies the cluster version by specifying clusterVersionRef.
   upgrade:
-    # A reference to the name of the ClusterVersion.
-    clusterVersionRef: postgresql-12.15.0
+    components:
+    - componentName: postgresql
+      # Specifies the desired service version of component
+      serviceVersion: "14.8.0"
\ No newline at end of file
diff --git a/examples/postgresql/verticalscale.yaml b/examples/postgresql/verticalscale.yaml
index 092181cff..a9a360d98 100644
--- a/examples/postgresql/verticalscale.yaml
+++ b/examples/postgresql/verticalscale.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-verticalscaling
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
   - componentName: postgresql
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
diff --git a/examples/postgresql/volumeexpand.yaml b/examples/postgresql/volumeexpand.yaml
index 54304da15..b8fc8d1f9 100644
--- a/examples/postgresql/volumeexpand.yaml
+++ b/examples/postgresql/volumeexpand.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: pg-volumeexpansion
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: pg-cluster
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
   - componentName: postgresql
diff --git a/examples/pulsar/README.md b/examples/pulsar/README.md
deleted file mode 100644
index 8b25a1138..000000000
--- a/examples/pulsar/README.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# Pulsar
-
-Apache® Pulsar™ is an open-source, distributed messaging and streaming platform built for the cloud.
-
-## Prerequisites
-
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform.
-
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
-```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
-
-# Update helm repo
-helm repo update
-
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
-
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
-
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
-```
- 
-
-## Examples
-
-### [Create](cluster.yaml) 
-Create a pulsar cluster with specified cluster definition.
-```bash
-kubectl apply -f examples/pulsar/cluster.yaml
-```
-Create a pulsar cluster with specified `serviceRefs.serviceDescriptor`, when referencing a service provided by external sources.
-```bash
-kubectl apply -f examples/pulsar/cluster-service-descriptor.yaml
-```
-
-Create a pulsar cluster with specified `serviceRefs.cluster`, when zookeeper service is provided by another cluster created by the same kubeblocks.
-```bash
-kubectl apply -f examples/pulsar/cluster-zookeeper-separate.yaml
-```
-
-Starting from kubeblocks 0.9.0, we introduced a more flexible cluster creation method based on components, allowing customization of cluster topology, functionalities and scale according to specific requirements.
-```bash
-kubectl apply -f examples/pulsar/cluster-cmpd.yaml
-```
-
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
-```bash
-kubectl apply -f examples/pulsar/horizontalscale.yaml
-```
-
-### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
-```bash
-kubectl apply -f examples/pulsar/verticalscale.yaml
-```
-
-### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
-```bash
-kubectl apply -f examples/pulsar/volumeexpand.yaml
-```
-
-### [Restart](restart.yaml)
-Restart the specified components in the cluster
-```bash
-kubectl apply -f examples/pulsar/restart.yaml
-```
-
-### [Stop](stop.yaml)
-Stop the cluster and release all the pods of the cluster, but the storage will be reserved
-```bash
-kubectl apply -f examples/pulsar/stop.yaml
-```
-
-### [Start](start.yaml)
-Start the stopped cluster
-```bash
-kubectl apply -f examples/pulsar/start.yaml
-```
-
-### [Configure](configure.yaml)
-Configure parameters with the specified components in the cluster
-```bash
-kubectl apply -f examples/pulsar/configure.yaml
-```
-
-### Delete
-If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
-```bash
-kubectl patch cluster pulsar-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete cluster pulsar-cluster
-```
-
-Delete `serviceRefs.serviceDescriptor`.
-
-```bash
-kubectl delete ServiceDescriptor pulsar-cluster-zookeeper-service
-```
-
-Delete `serviceRefs.cluster`.
-```bash
-kubectl delete cluster zookeeperp-cluster
-```
diff --git a/examples/pulsar/cluster-cmpd.yaml b/examples/pulsar/cluster-cmpd.yaml
deleted file mode 100644
index 1c1c9ec54..000000000
--- a/examples/pulsar/cluster-cmpd.yaml
+++ /dev/null
@@ -1,136 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: pulsar-cluster
-  namespace: default
-  annotations:
-    # KB_PULSAR_BROKER_NODEPORT: enable NodePort services
-    "kubeblocks.io/extra-env": '{"KB_PULSAR_BROKER_NODEPORT": "false"}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Defines the list of services that are exposed by a Cluster. This field allows selected components, either from `componentSpecs` or `shardingSpecs`, to be exposed as cluster-level services. Services defined here can be referenced by other clusters using the ServiceRefClusterSelector.
-  services:
-  - name: proxy
-    serviceName: proxy
-    componentSelector: pulsar-proxy
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-  - name: broker-bootstrap
-    serviceName: broker-bootstrap
-    componentSelector: pulsar-broker
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-      - name: kafka-client
-        port: 9092
-        targetPort: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule.
-  - name: pulsar-broker
-    componentDef: pulsar-broker
-    disableExporter: true
-    serviceAccountName: kb-pulsar-cluster
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: pulsar-proxy
-    componentDef: pulsar-proxy
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: bookies
-    componentDef: pulsar-bookkeeper
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: journal
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: ledgers
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: bookies-recovery
-    componentDef: pulsar-bkrecovery
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: zookeeper
-    componentDef: pulsar-zookeeper
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/pulsar/cluster-service-descriptor.yaml b/examples/pulsar/cluster-service-descriptor.yaml
deleted file mode 100644
index ce8d12198..000000000
--- a/examples/pulsar/cluster-service-descriptor.yaml
+++ /dev/null
@@ -1,174 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: pulsar-cluster
-  namespace: default
-  annotations:
-    # KB_PULSAR_BROKER_NODEPORT: enable NodePort services
-    "kubeblocks.io/extra-env": '{"KB_PULSAR_BROKER_NODEPORT": "false"}'
-spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: pulsar
-  # Refers to the ClusterVersion name. Deprecated since v0.9, use ComponentVersion instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases.
-  clusterVersionRef: pulsar-3.0.2
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  services:
-  - name: proxy
-    serviceName: proxy
-    componentSelector: pulsar-proxy
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-  - name: broker-bootstrap
-    serviceName: broker-bootstrap
-    componentSelector: pulsar-broker
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-      - name: kafka-client
-        port: 9092
-        targetPort: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: pulsar-broker
-    componentDefRef: pulsar-broker
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      serviceDescriptor: pulsar-cluster-zookeeper-service
-    disableExporter: true
-    serviceAccountName: kb-pulsar-cluster
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: pulsar-proxy
-    componentDefRef: pulsar-proxy
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      serviceDescriptor: pulsar-cluster-zookeeper-service
-    disableExporter: true
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: bookies
-    componentDefRef: bookies
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      serviceDescriptor: pulsar-cluster-zookeeper-service
-    disableExporter: true
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: journal
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: ledgers
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: bookies-recovery
-    componentDefRef: bookies-recovery
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      serviceDescriptor: pulsar-cluster-zookeeper-service
-    disableExporter: true
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: zookeeper
-    componentDefRef: zookeeper
-    disableExporter: true
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
----
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ServiceDescriptor
-metadata:
-  name: pulsar-cluster-zookeeper-service
-  namespace: default
-spec:
-  # Specifies the type or nature of the service.
-  # Should represent a well-known application cluster type, such as {mysql, redis, zookeeper}.
-  serviceKind: zookeeper
-  # Represents the version of the service reference.
-  serviceVersion: 3.8.5
-  # Represents the endpoint of the service connection credential.
-  endpoint:
-    value: "pulsar-cluster-zookeeper"
-  # Represents the port of the service connection credential.
-  port:
-    value: "2181"
diff --git a/examples/pulsar/cluster-zookeeper-separate.yaml b/examples/pulsar/cluster-zookeeper-separate.yaml
deleted file mode 100644
index 6931707c2..000000000
--- a/examples/pulsar/cluster-zookeeper-separate.yaml
+++ /dev/null
@@ -1,167 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: pulsar-cluster
-  namespace: default
-  annotations:
-    # KB_PULSAR_BROKER_NODEPORT: enable NodePort services
-    "kubeblocks.io/extra-env": '{"KB_PULSAR_BROKER_NODEPORT": "false"}'
-spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: pulsar
-  # Refers to the ClusterVersion name. Deprecated since v0.9, use ComponentVersion instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases.
-  clusterVersionRef: pulsar-3.0.2
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  services:
-  - name: proxy
-    serviceName: proxy
-    componentSelector: pulsar-proxy
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-  - name: broker-bootstrap
-    serviceName: broker-bootstrap
-    componentSelector: pulsar-broker
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-      - name: kafka-client
-        port: 9092
-        targetPort: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: pulsar-broker
-    componentDefRef: pulsar-broker
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      cluster: zookeeperp-cluster
-    disableExporter: true
-    serviceAccountName: kb-pulsar-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: pulsar-proxy
-    componentDefRef: pulsar-proxy
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      cluster: zookeeperp-cluster
-    disableExporter: false
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: bookies
-    componentDefRef: bookies
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      cluster: zookeeperp-cluster
-    disableExporter: false
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: journal
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: ledgers
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: bookies-recovery
-    componentDefRef: bookies-recovery
-    serviceRefs:
-    - name: pulsarZookeeper
-      namespace: default
-      cluster: zookeeperp-cluster
-    disableExporter: false
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
----
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: zookeeperp-cluster
-  namespace: default
-spec:
-  clusterDefinitionRef: pulsar-zookeeper
-  clusterVersionRef: pulsar-3.0.2
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - name: zookeeper
-      componentDefRef: zookeeper
-      serviceAccountName: kb-zookeeperp-cluster
-      replicas: 3
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        volumeClaimTemplates:
-          - name: data
-            spec:
-              accessModes:
-                - ReadWriteOnce
-              resources:
-                requests:
-                  storage: 20Gi
diff --git a/examples/pulsar/cluster.yaml b/examples/pulsar/cluster.yaml
deleted file mode 100644
index 20acce895..000000000
--- a/examples/pulsar/cluster.yaml
+++ /dev/null
@@ -1,142 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: pulsar-cluster
-  namespace: default
-  annotations:
-    # KB_PULSAR_BROKER_NODEPORT: enable NodePort services
-    "kubeblocks.io/extra-env": '{"KB_PULSAR_BROKER_NODEPORT": "false"}'
-spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: pulsar
-  # Refers to the ClusterVersion name. Deprecated since v0.9, use ComponentVersion instead. This field is maintained for backward compatibility and its use is discouraged. Existing usage should be updated to the current preferred approach to avoid compatibility issues in future releases.
-  clusterVersionRef: pulsar-3.0.2
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  services:
-  - name: proxy
-    serviceName: proxy
-    componentSelector: pulsar-proxy
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-  - name: broker-bootstrap
-    serviceName: broker-bootstrap
-    componentSelector: pulsar-broker
-    spec:
-      # - ClusterIP
-      # - NodePort
-      type: ClusterIP
-      ports:
-      - name: pulsar
-        port: 6650
-        targetPort: 6650
-      - name: http
-        port: 80
-        targetPort: 8080
-      - name: kafka-client
-        port: 9092
-        targetPort: 9092
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
-  componentSpecs:
-  - name: pulsar-broker
-    componentDefRef: pulsar-broker
-    disableExporter: true
-    serviceAccountName: kb-pulsar-cluster
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: pulsar-proxy
-    componentDefRef: pulsar-proxy
-    disableExporter: true
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: bookies
-    componentDefRef: bookies
-    disableExporter: true
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: journal
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-    - name: ledgers
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: bookies-recovery
-    componentDefRef: bookies-recovery
-    disableExporter: true
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-  - name: zookeeper
-    componentDefRef: zookeeper
-    disableExporter: true
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/pulsar/configure.yaml b/examples/pulsar/configure.yaml
deleted file mode 100644
index 1de867e22..000000000
--- a/examples/pulsar/configure.yaml
+++ /dev/null
@@ -1,39 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: pulsar-reconfiguring
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
-  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
-  force: false
-  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
-    # Specifies the name of the Component.
-    # - pulsar-broker
-    # - pulsar-proxy
-    # - bookies
-    # - bookies-recovery
-    # - zookeeper
-    componentName: bookies
-   # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: bookkeeper.conf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: lostBookieRecoveryDelay
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: "1000"
-      # Specifies the name of the configuration template.
-      name: bookies-config
-  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
-  preConditionDeadlineSeconds: 0
-  type: Reconfiguring
diff --git a/examples/pulsar/horizontalscale.yaml b/examples/pulsar/horizontalscale.yaml
deleted file mode 100644
index b3633c0c5..000000000
--- a/examples/pulsar/horizontalscale.yaml
+++ /dev/null
@@ -1,20 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: pulsar-horizontalscaling-out
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
-  type: HorizontalScaling
-  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
-  horizontalScaling:
-    # Specifies the name of the Component.
-    # - pulsar-broker
-    # - pulsar-proxy
-    # - bookies
-    # - bookies-recovery
-    # - zookeeper
-  - componentName: pulsar-proxy
-    # Specifies the number of total replicas.
-    replicas: 2
diff --git a/examples/pulsar/restart.yaml b/examples/pulsar/restart.yaml
deleted file mode 100644
index 9a721aa4a..000000000
--- a/examples/pulsar/restart.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: pulsar-restart
-  namespace: default
-spec:
-  # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
-  type: Restart
-  # Lists Components to be restarted. ComponentOps specifies the Component to be operated on.
-  restart:
-    # Specifies the name of the Component.
-    # - pulsar-broker
-    # - pulsar-proxy
-    # - bookies
-    # - bookies-recovery
-    # - zookeeper
-  - componentName: bookies
diff --git a/examples/qdrant/README.md b/examples/qdrant/README.md
index b6d0fafa6..87c7efbcf 100644
--- a/examples/qdrant/README.md
+++ b/examples/qdrant/README.md
@@ -2,124 +2,267 @@
 
 Qdrant is an open source (Apache-2.0 licensed), vector similarity search engine and vector database.
 
-## Prerequisites
+## Features In KubeBlocks
 
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform.
+### Lifecycle Management
 
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
-```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
+|   Topology       | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|------------------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| cluster     | Yes                    | Yes                   | Yes              | Yes       | Yes        | No       | Yes    | N/A     |
 
-# Update helm repo
-helm repo update
+### Backup and Restore
 
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| Full Backup | datafile | uses HTTP API `snapshot` to create snapshot for all collections. |
 
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
+### Versions
 
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
-```
-Enable qdrant
-```bash
-# Add Helm repo 
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-# Update helm repo
-helm repo update
+| Major Versions | Description |
+|---------------|-------------|
+| 1.5 | 1.5.0 |
+| 1.7 | 1.7.3 |
+| 1.8 | 1.8.1,1.8.4 |
+| 1.10| 1.10.0 |
+
+## Prerequisites
+
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- Qdrant Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
 
-# Enable qdrant 
-helm upgrade -i kb-addon-qdrant kubeblocks-addons/qdrant -n kb-system  --version $kb_version
-``` 
+  ```bash
+  kubectl create ns demo
+  ```
 
 ## Examples
 
-### [Create](cluster.yaml) 
-Create a qdrant cluster with specified cluster definition 
+### [Create](cluster.yaml)
+
+Create a Qdrant cluster with specified cluster definition
+
 ```bash
 kubectl apply -f examples/qdrant/cluster.yaml
 ```
-Starting from kubeblocks 0.9.0, we introduced a more flexible cluster creation method based on components, allowing customization of cluster topology, functionalities and scale according to specific requirements.
+
+### Horizontal scaling
+
+> [!Important]
+> Qdrant uses the **Raft consensus protocol** to maintain consistency regarding the cluster topology and the collections structure.
+> Make sure to have an odd number of replicas, such as 3, 5, 7, to avoid split-brain scenarios, after scaling out/in the cluster.
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out cluster by adding ONE more  replica:
+
 ```bash
-kubectl apply -f examples/qdrant/cluster-cmpd.yaml
+kubectl apply -f examples/qdrant/scale-out.yaml
 ```
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in cluster by deleting ONE replica:
+
 ```bash
-kubectl apply -f examples/qdrant/horizontalscale.yaml
+kubectl apply -f examples/qdrant/scale-in.yaml
+```
+
+> [!IMPORTANT]
+> On scale-in, data will be redistributed among the remaining replicas. Make sure to have enough capacity to accommodate the data.
+> The data redistribution process may take some time depending on the amount of data.
+> It is handled by Qdrant `MemberLeave` operation, and Pods won't be deleted until the data redistribution, i.e. the `MemberLeave` actions completed successfully.
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: qdrant
+      replicas: 3 # Update `replicas` to your desired number
 ```
 
 ### [Vertical scaling](verticalscale.yaml)
+
 Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
 ```bash
 kubectl apply -f examples/qdrant/verticalscale.yaml
 ```
 
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: qdrant
+      componentDef: qdrant
+      replicas: 3
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
 ### [Expand volume](volumeexpand.yaml)
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster
+
 Increase size of volume storage with the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/qdrant/volumeexpand.yaml
 ```
 
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: qdrant
+      componentDef: qdrant
+      replicas: 3
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # specify new size, and make sure it is larger than the current size
+                storage: 30Gi
+```
+
 ### [Restart](restart.yaml)
+
 Restart the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/qdrant/restart.yaml
 ```
 
 ### [Stop](stop.yaml)
+
 Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
 ```bash
 kubectl apply -f examples/qdrant/stop.yaml
 ```
 
 ### [Start](start.yaml)
+
 Start the stopped cluster
+
 ```bash
 kubectl apply -f examples/qdrant/start.yaml
 ```
 
-### [BackupRepo](backuprepo.yaml)
-BackupRepo is the storage repository for backup data, using the full backup and restore function of KubeBlocks relies on BackupRepo
+### [Backup](backup.yaml)
+
+> [!NOTE]
+> Before you start, please create a `BackupRepo` to store the backup data. Refer to [BackupRepo](../docs/create-backuprepo.md) for more details.
+
+The backup method uses the `snapshot` API to create a snapshot for all collections. It works as follows:
+
+- Retrieve all Qdrant collections
+- For each collection, create a snapshot, validate the snapshot, and push it to the backup repository
+
+To create a backup for the cluster:
+
 ```bash
-# Create a secret to save the access key
-kubectl create secret generic <storage-provider>-credential-for-backuprepo\
-  --from-literal=accessKeyId=<ACCESS KEY> \
-  --from-literal=secretAccessKey=<SECRET KEY> \
-  -n kb-system 
-  
-kubectl apply -f examples/qdrant/backuprepo.yaml
+kubectl apply -f examples/qdrant/backup.yaml
 ```
 
-### [Backup](backup.yaml)
-Create a backup for the cluster
+After the operation, you will see a `Backup` is created
+
 ```bash
-kubectl apply -f examples/qdrant/backup.yaml
+kubectl get backup -n demo -l app.kubernetes.io/instance=qdrant-cluster
 ```
 
+and the status of the backup goes from `Running` to `Completed` after a while. And the backup data will be pushed to your specified `BackupRepo`.
+
 ### [Restore](restore.yaml)
-Restore a new cluster from backup
-```bash
-# Get backup connection password
-kubectl get backup qdrant-cluster-backup -ojsonpath='{.metadata.annotations.dataprotection\.kubeblocks\.io\/connection-password}' -n default
 
+To restore a new cluster from backup:
+
+```bash
 kubectl apply -f examples/qdrant/restore.yaml
 ```
 
+The restore methods uses Qdrant HTTP API to restore snapshots to the new cluster, when the restore is completed, the new cluster will be ready to use.
+
+### Observability
+
+There are various ways to monitor the cluster. Here we use Prometheus and Grafana to demonstrate how to monitor the cluster.
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+#### Create PodMonitor
+
+##### Step 1. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/qdrant/pod-monitor.yaml
+```
+
+It sets path to `/metrics` and port to `tcp-qdrant` (for container port `6333`).
+
+```yaml
+    - path: /metrics
+      port: tcp-qdrant
+      scheme: http
+```
+
+##### Step 2. Accessing the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard, e.g. using dashboard from [Grafana](https://grafana.com/grafana/dashboards).
+
+> [!NOTE]
+> Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+
 ### Delete
+
 If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
 ```bash
-kubectl patch cluster qdrant-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+kubectl patch cluster -n demo qdrant-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
 
-kubectl delete cluster qdrant-cluster
+kubectl delete cluster -n demo qdrant-cluster
 ```
diff --git a/examples/qdrant/backup.yaml b/examples/qdrant/backup.yaml
index 70c7e4af7..d4ff6dfe9 100644
--- a/examples/qdrant/backup.yaml
+++ b/examples/qdrant/backup.yaml
@@ -2,7 +2,7 @@ apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
   name: qdrant-cluster-backup
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - datafile
diff --git a/examples/qdrant/cluster-cmpd.yaml b/examples/qdrant/cluster-cmpd.yaml
deleted file mode 100644
index 1723e076b..000000000
--- a/examples/qdrant/cluster-cmpd.yaml
+++ /dev/null
@@ -1,41 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: qdrant-cluster
-  namespace: default
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. 
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule. 
-  - name: qdrant
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: qdrant
-    # Determines whether the metrics exporter needs to be published to the service endpoint.  
-    disableExporter: true
-    # Specifies the name of the ServiceAccount required by the running Component.   
-    serviceAccountName: kb-qdrant-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 2
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component. 
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/qdrant/cluster.yaml b/examples/qdrant/cluster.yaml
index 7f6d29eeb..5dd6f9c9a 100644
--- a/examples/qdrant/cluster.yaml
+++ b/examples/qdrant/cluster.yaml
@@ -2,35 +2,54 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: qdrant-cluster
-  namespace: default
+  namespace: demo
+  annotations: {}
 spec:
   # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
   # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
   # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
   # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `qdrant` to create a Qdrant Cluster
+  clusterDef: qdrant
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  # Valid options are: [cluster]
+  topology: cluster
   componentSpecs:
-  - name: qdrant
-    componentDef: qdrant
-    disableExporter: true
-    serviceAccountName: kb-qdrant-cluster
-    replicas: 2
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
+    - name: qdrant
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [1.10.0,1.5.0,1.7.3,1.8.1,1.8.4]
+      serviceVersion: 1.10.0
+      # Update `replicas` to your need.
+      # Recommended values are: [3,5,7]
+      replicas: 3
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
diff --git a/examples/qdrant/pod-monitor.yaml b/examples/qdrant/pod-monitor.yaml
new file mode 100644
index 000000000..16de47386
--- /dev/null
+++ b/examples/qdrant/pod-monitor.yaml
@@ -0,0 +1,27 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: qdrant-cluster-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: tcp-qdrant
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: qdrant-cluster
\ No newline at end of file
diff --git a/examples/qdrant/restart.yaml b/examples/qdrant/restart.yaml
index 93fc3acea..d02ac370d 100644
--- a/examples/qdrant/restart.yaml
+++ b/examples/qdrant/restart.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: qdrant-restart
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: qdrant-cluster
diff --git a/examples/qdrant/restore-cmpd.yaml b/examples/qdrant/restore-cmpd.yaml
deleted file mode 100644
index 7d441ffda..000000000
--- a/examples/qdrant/restore-cmpd.yaml
+++ /dev/null
@@ -1,43 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: qdrant-cluster-restore
-  namespace: default
-  annotations:
-    kubeblocks.io/restore-from-backup: '{"qdrant":{"connectionPassword":"<backup-connection-password>","name":"qdrant-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule.
-  - name: qdrant
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: qdrant
-    # Determines whether the metrics exporter needs to be published to the service endpoint.
-    disableExporter: true
-    # Specifies the name of the ServiceAccount required by the running Component.
-    serviceAccountName: kb-qdrant-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 3
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
diff --git a/examples/qdrant/restore.yaml b/examples/qdrant/restore.yaml
index 664871fa9..0f23ec126 100644
--- a/examples/qdrant/restore.yaml
+++ b/examples/qdrant/restore.yaml
@@ -2,37 +2,31 @@ apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
   name: qdrant-cluster-restore
-  namespace: default
+  namespace: demo
   annotations:
-    kubeblocks.io/restore-from-backup: '{"qdrant":{"connectionPassword":"<backup-connection-password>","name":"qdrant-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
+    # qdrant-cluster-backup is the backup name
+    kubeblocks.io/restore-from-backup: '{"qdrant":{"name":"qdrant-cluster-backup","namespace":"demo","volumeRestorePolicy":"Parallel"}}'
 spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  clusterDef: qdrant
+  topology: cluster
   componentSpecs:
-  - name: qdrant
-    componentDef: qdrant
-    disableExporter: true
-    serviceAccountName: kb-qdrant-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
+    - name: qdrant
+      serviceVersion: 1.10.0
+      replicas: 3
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
diff --git a/examples/qdrant/horizontalscale.yaml b/examples/qdrant/scale-in.yaml
similarity index 62%
rename from examples/qdrant/horizontalscale.yaml
rename to examples/qdrant/scale-in.yaml
index 84441f768..00778d706 100644
--- a/examples/qdrant/horizontalscale.yaml
+++ b/examples/qdrant/scale-in.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: qdrant-horizontalscaling
-  namespace: default
+  name: qdrant-scale-in
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: qdrant-cluster
@@ -11,5 +11,8 @@ spec:
   horizontalScaling:
     # Specifies the name of the Component.
   - componentName: qdrant
-    # Specifies the number of total replicas.
-    replicas: 3
+    # Specifies the replica changes for scaling out components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/qdrant/scale-out.yaml b/examples/qdrant/scale-out.yaml
new file mode 100644
index 000000000..19287d840
--- /dev/null
+++ b/examples/qdrant/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: qdrant-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: qdrant-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: qdrant
+    # Specifies the replica changes for scaling out components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/qdrant/start.yaml b/examples/qdrant/start.yaml
index fdf463fa6..54074878d 100644
--- a/examples/qdrant/start.yaml
+++ b/examples/qdrant/start.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: qdrant-start
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: qdrant-cluster
diff --git a/examples/qdrant/stop.yaml b/examples/qdrant/stop.yaml
index 5d041d5b7..d6063c9e8 100644
--- a/examples/qdrant/stop.yaml
+++ b/examples/qdrant/stop.yaml
@@ -1,8 +1,8 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: qdrant-stop
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: qdrant-cluster
diff --git a/examples/qdrant/verticalscale.yaml b/examples/qdrant/verticalscale.yaml
index a11d97f01..6c8890b86 100644
--- a/examples/qdrant/verticalscale.yaml
+++ b/examples/qdrant/verticalscale.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: qdrant-verticalscaling
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: qdrant-cluster
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
   - componentName: qdrant
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
diff --git a/examples/qdrant/volumeexpand.yaml b/examples/qdrant/volumeexpand.yaml
index bbf7fbb39..d21075848 100644
--- a/examples/qdrant/volumeexpand.yaml
+++ b/examples/qdrant/volumeexpand.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: qdrant-volumeexpansion
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
   clusterName: qdrant-cluster
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
   - componentName: qdrant
diff --git a/examples/rabbitmq/README.md b/examples/rabbitmq/README.md
new file mode 100644
index 000000000..f3a009d94
--- /dev/null
+++ b/examples/rabbitmq/README.md
@@ -0,0 +1,337 @@
+# RabbitMQ
+
+RabbitMQ is an open-source and lightweight message broker which supports multiple messaging protocols.
+
+## Features In KubeBlocks
+
+### Lifecycle Management
+
+|   Topology       | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|------------------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| cluster     | Yes                    | Yes                   | Yes              | Yes       | Yes        | No       | Yes    | N/A     |
+
+### Versions
+
+| Major Versions | Description |
+|---------------|-------------|
+| 3.8 | 3.8.14|
+| 3.9 | 3.9.29|
+| 3.10 | 3.10.25|
+| 3.11 | 3.11.28|
+| 3.12 | 3.12.14|
+| 3.13 | 3.13.2, 3.13.7|
+
+## Prerequisites
+
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- RabbitMQ Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
+
+## Examples
+
+### [Create](cluster.yaml)
+
+Create a rabbitmq cluster with 3 replicas:
+
+```bash
+kubectl apply -f examples/rabbitmq/cluster.yaml
+```
+
+> [!Important]
+> Unlike others, on creating the cluster, this example creates a ServiceAccount, Role, and RoleBinding for the RabbitMQ cluster.
+> RabbitMQ needs `peer discovery` role to create events and get endpoints. This is essential for discovering other RabbitMQ nodes and forming a cluster.
+> When `PulicyRule` API is ready, rules defined in the `Role` can be defined in the `ComponentDefintion.Spec.PolicyRule`. Such that KubeBlocks will automatically create and manage the `Role` and `RoleBinding` for the component.
+
+### Horizontal scaling
+
+> [!Important]
+> RabbitMQ quorum queue are designed based on the **Raft consensus algorithm**.
+> Make sure to have an odd number of replicas, such as 3, 5, 7, to avoid split-brain scenarios, after scaling out/in the cluster.
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out cluster by adding ONE more  replica:
+
+```bash
+kubectl apply -f examples/rabbitmq/scale-out.yaml
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in cluster by deleting ONE replica:
+
+```bash
+kubectl apply -f examples/rabbitmq/scale-in.yaml
+```
+
+On scale-in, the replica with the highest number (if not specified in particular) will be stopped, removed and be `forget_cluster_node` from the cluster.
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+spec:
+  componentSpecs:
+    - name: rabbitmq
+      componentDef: rabbitmq
+      replicas: 3 # Update `replicas` to your desired number
+```
+
+### [Vertical scaling](verticalscale.yaml)
+
+Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
+```bash
+kubectl apply -f examples/rabbitmq/verticalscale.yaml
+```
+
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+spec:
+  componentSpecs:
+    - name: rabbitmq
+      componentDef: rabbitmq
+      replicas: 3
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
+### [Expand volume](volumeexpand.yaml)
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+To increase size of volume storage with the specified components in the cluster
+
+Increase size of volume storage with the specified components in the cluster
+
+```bash
+kubectl apply -f examples/rabbitmq/volumeexpand.yaml
+```
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+spec:
+  componentSpecs:
+    - name: rabbitmq
+      componentDef: rabbitmq
+      replicas: 3
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # specify new size, and make sure it is larger than the current size
+                storage: 30Gi
+```
+
+### [Restart](restart.yaml)
+
+Restart the specified components in the cluster:
+
+```bash
+kubectl apply -f examples/rabbitmq/restart.yaml
+```
+
+### [Stop](stop.yaml)
+
+Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+```bash
+kubectl apply -f examples/rabbitmq/stop.yaml
+```
+
+### [Start](start.yaml)
+
+Start the stopped cluster
+
+```bash
+kubectl apply -f examples/rabbitmq/start.yaml
+```
+
+### Expose
+
+#### [Enable](expose-enable.yaml)
+
+```bash
+kubectl apply -f examples/rabbitmq/expose-enable.yaml
+```
+
+#### [Disable](expose-disable.yaml)
+
+```bash
+kubectl apply -f examples/rabbitmq/expose-disable.yaml
+```
+
+#### Expose SVC using Cluster API
+
+Alternatively, you may expose service by updating `spec.services`
+
+```yaml
+spec:
+  services:
+    # add annotation for cloud loadbalancer if
+    # services.spec.type is LoadBalancer
+    # here we use annotation for alibaba cloud for example
+  - annotations:
+      # aws annotations
+      service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+      service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+    componentSelector: rabbitmq
+    name: rabbitmq-vpc
+    serviceName: rabbitmq-vpc
+    spec:  # defines the behavior of a K8s service.
+      ipFamilyPolicy: PreferDualStack
+      ports:
+      - name: tcp-rabbitmq
+        # port to expose
+        port: 15672 # port 15672 for rabbitmq management console
+        protocol: TCP
+        targetPort: management
+      type: LoadBalancer
+```
+
+If the service is of type `LoadBalancer`, please add annotations for cloud loadbalancer depending on the cloud provider you are using. Here list annotations for some cloud providers:
+
+```yaml
+# alibaba cloud
+service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"  # or "intranet"
+
+# aws
+service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+
+# azure
+service.beta.kubernetes.io/azure-load-balancer-internal: "true" # or "false" for internet
+
+# gcp
+networking.gke.io/load-balancer-type: "Internal" # for internal access
+cloud.google.com/l4-rbs: "enabled" # for internet
+```
+
+Please consult your cloud provider for more accurate and update-to-date information.
+
+### [Reconfigure](reconfigure.yaml)
+
+A database reconfiguration is the process of modifying database parameters, settings, or configurations to improve performance, security, or availability. The reconfiguration can be either:
+
+- Dynamic: Applied without restart
+- Static: Requires database restart
+
+Reconfigure parameters with the specified components in the cluster
+
+```bash
+kubectl apply -f examples/rabbitmq/reconfigure.yaml
+```
+
+This example will change the `channel_max` to `2000`.
+
+> In RabbitMQ, the `channel_max` parameter is used to set the maximum number of channels that a client can open on a single connection. It is a static parameter, so the change will take effect after restarting the database.
+
+To verify the change, you may login to any replica and run the following command:
+
+```bash
+rabbitmq-diagnostics environment
+```
+
+### Observability
+
+There are various ways to monitor the cluster. Here we use Prometheus and Grafana to demonstrate how to monitor the cluster.
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+##### Step 1. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/rabbitmq/pod-monitor.yaml
+```
+
+It sets path to `/metrics` and port to `prometheus` (for container port `15692`).
+
+```yaml
+    - path: /metrics
+      port: prometheus
+      scheme: http
+```
+
+##### Step 2. Access the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard.
+You can import the dashboard from [Grafana RabbitMQ-Overview](https://grafana.com/grafana/dashboards/10991-rabbitmq-overview/).
+
+> [!NOTE]
+> Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+
+### Delete
+
+If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
+```bash
+kubectl patch cluster -n demo rabbitmq-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete -f examples/rabbitmq/cluster.yaml
+```
+
+## Appendix
+
+### How to access RabbitMQ Management Console
+
+To access the RabbitMQ Management console (at port `15672`), you can:
+
+- Option 1. Expose the RabbitMQ cluster service:
+
+```bash
+kubectl apply -f examples/rabbitmq/expose-enable.yaml
+```
+
+- Option 2. Use port-forwarding:
+
+```bash
+kubectl port-forward svc/rabbitmq-cluster-rabbitmq 15672:15672
+```
+
+Then log in to the RabbitMQ Management console at `http://<localhost>:<port>/` with the user and password.
+
+The user and password can be found in the cluster secrets named after `<clusterName>-<cmpName>-account-<accountName>`. In this case, the secret name is `rabbitmq-cluster-rabbitmq-account-root`.
+
+```bash
+# get user name
+kubectl get secrets -n demo rabbitmq-cluster-rabbitmq-account-root -o jsonpath='{.data.username}' | base64 -d
+# get password
+kubectl get secrets -n demo rabbitmq-cluster-rabbitmq-account-root -o jsonpath='{.data.password}' | base64 -d
+```
diff --git a/examples/rabbitmq/cluster.yaml b/examples/rabbitmq/cluster.yaml
new file mode 100644
index 000000000..21df7cc2a
--- /dev/null
+++ b/examples/rabbitmq/cluster.yaml
@@ -0,0 +1,50 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: rabbitmq-cluster
+  namespace: demo
+spec:
+  # Specifies the behavior when a Cluster is deleted.
+  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
+  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
+  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
+  terminationPolicy: Delete
+  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
+  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
+  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  componentSpecs:
+    - name: rabbitmq
+      componentDef: rabbitmq
+      # The serviceVersion is used to determine the version of the Cluster. If the serviceVersion is not specified, the default value is the ServiceVersion defined in ComponentDefinition.
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [3.10.25,3.11.28,3.12.14,3.13.2,3.13.7,3.8.14,3.9.29]
+      serviceVersion: 3.13.7
+      # Recommended to set `replicas` to [3,5,7]
+      # All data/state is replicated across all replicas.
+      replicas: 3
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
diff --git a/examples/apecloud-mysql/expose-disable.yaml b/examples/rabbitmq/expose-disable.yaml
similarity index 82%
rename from examples/apecloud-mysql/expose-disable.yaml
rename to examples/rabbitmq/expose-disable.yaml
index b5d523623..161d2b7c1 100644
--- a/examples/apecloud-mysql/expose-disable.yaml
+++ b/examples/rabbitmq/expose-disable.yaml
@@ -1,19 +1,18 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-expose-disable
-  namespace: default
+  name: rabbitmq-expose-disable
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: rabbitmq-cluster
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
-  - componentName: mysql
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+  - componentName: rabbitmq
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
-      roleSelector: leader
       serviceType: LoadBalancer
     # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
     switch: Disable
diff --git a/examples/rabbitmq/expose-enable.yaml b/examples/rabbitmq/expose-enable.yaml
new file mode 100644
index 000000000..0672b1406
--- /dev/null
+++ b/examples/rabbitmq/expose-enable.yaml
@@ -0,0 +1,32 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: rabbitmq-expose-enable
+  namespace: demo
+spec:
+  # Specifies the type of this operation.
+  type: Expose
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: rabbitmq-cluster
+  # Lists Expose objects, each specifying a Component and its services to be exposed.
+  expose:
+    # Specifies the name of the Component.
+  - componentName: rabbitmq
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
+    services:
+    - name: internet
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`.
+      serviceType: LoadBalancer
+      ports:
+        - name: managment
+          port: 15672
+          targetPort: management
+      # Contains cloud provider related parameters if ServiceType is LoadBalancer.
+      # [NOTE] Following is an example for Aliyun ACK, please adjust the following annotations as needed.
+      annotations:
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: ""
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
+    # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
+    switch: Enable
\ No newline at end of file
diff --git a/examples/rabbitmq/pod-monitor.yaml b/examples/rabbitmq/pod-monitor.yaml
new file mode 100644
index 000000000..e91e9ced3
--- /dev/null
+++ b/examples/rabbitmq/pod-monitor.yaml
@@ -0,0 +1,28 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: rabbitmq-cluster-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: prometheus
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: rabbitmq-cluster
+      apps.kubeblocks.io/component-name: rabbitmq
\ No newline at end of file
diff --git a/examples/rabbitmq/reconfigure.yaml b/examples/rabbitmq/reconfigure.yaml
new file mode 100644
index 000000000..8f461c3d3
--- /dev/null
+++ b/examples/rabbitmq/reconfigure.yaml
@@ -0,0 +1,23 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: rabbitmq-reconfiguring
+  namespace: demo
+spec:
+  # Specifies the type of this operation.
+  type: Reconfiguring
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: mycluster
+  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
+  force: false
+  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
+  reconfigures:
+    # Specifies the name of the Component.
+  - componentName: rabbitmq
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+      # `channel_max` is a static parameter in rabbitmq
+    - key: ssl_handshake_timeout
+      # Represents the parameter values that are to be updated.
+      # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
+      value: "2000"
\ No newline at end of file
diff --git a/examples/apecloud-mysql/restart.yaml b/examples/rabbitmq/restart.yaml
similarity index 65%
rename from examples/apecloud-mysql/restart.yaml
rename to examples/rabbitmq/restart.yaml
index 8c6e0f9fa..fedce08e3 100644
--- a/examples/apecloud-mysql/restart.yaml
+++ b/examples/rabbitmq/restart.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-restart
-  namespace: default
+  name: rabbitmq-restart
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: rabbitmq-cluster
   type: Restart
   # Lists Components to be restarted. ComponentOps specifies the Component to be operated on.
   restart:
     # Specifies the name of the Component.
-  - componentName: mysql
+  - componentName: rabbitmq
diff --git a/examples/rabbitmq/scale-in.yaml b/examples/rabbitmq/scale-in.yaml
new file mode 100644
index 000000000..b95adcf8b
--- /dev/null
+++ b/examples/rabbitmq/scale-in.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: rabbitmq-scale-in
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: rabbitmq-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: rabbitmq
+    # Specifies the replica changes for scaling out components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/rabbitmq/scale-out.yaml b/examples/rabbitmq/scale-out.yaml
new file mode 100644
index 000000000..d9b4ba467
--- /dev/null
+++ b/examples/rabbitmq/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: rabbitmq-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: rabbitmq-cluster
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: rabbitmq
+    # Specifies the replica changes for scaling out components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/pulsar/start.yaml b/examples/rabbitmq/start.yaml
similarity index 51%
rename from examples/pulsar/start.yaml
rename to examples/rabbitmq/start.yaml
index d36d2180d..b36bcffb0 100644
--- a/examples/pulsar/start.yaml
+++ b/examples/rabbitmq/start.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: pulsar-start
-  namespace: default
+  name: rabbitmq-start
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
+  clusterName: rabbitmq-cluster
   type: Start
diff --git a/examples/pulsar/stop.yaml b/examples/rabbitmq/stop.yaml
similarity index 51%
rename from examples/pulsar/stop.yaml
rename to examples/rabbitmq/stop.yaml
index 938e7f99c..9b19a1039 100644
--- a/examples/pulsar/stop.yaml
+++ b/examples/rabbitmq/stop.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: pulsar-stop
-  namespace: default
+  name: rabbitmq-stop
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: pulsar-cluster
+  clusterName: rabbitmq-cluster
   type: Stop
diff --git a/examples/apecloud-mysql/verticalscale.yaml b/examples/rabbitmq/verticalscale.yaml
similarity index 69%
rename from examples/apecloud-mysql/verticalscale.yaml
rename to examples/rabbitmq/verticalscale.yaml
index 32faceb75..5ff59c529 100644
--- a/examples/apecloud-mysql/verticalscale.yaml
+++ b/examples/rabbitmq/verticalscale.yaml
@@ -1,15 +1,15 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-verticalscaling
-  namespace: default
+  name: rabbitmq-verticalscaling
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: rabbitmq-cluster
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
-  - componentName: mysql
+  - componentName: rabbitmq
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
     requests:
       cpu: '1'
diff --git a/examples/apecloud-mysql/volumeexpand.yaml b/examples/rabbitmq/volumeexpand.yaml
similarity index 73%
rename from examples/apecloud-mysql/volumeexpand.yaml
rename to examples/rabbitmq/volumeexpand.yaml
index 576a672b3..8cb5cc366 100644
--- a/examples/apecloud-mysql/volumeexpand.yaml
+++ b/examples/rabbitmq/volumeexpand.yaml
@@ -1,16 +1,16 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: acmysql-volumeexpansion
-  namespace: default
+  name: rabbitmq-volumeexpansion
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: acmysql-cluster
+  clusterName: rabbitmq-cluster
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
-  - componentName: mysql
+  - componentName: rabbitmq
     # volumeClaimTemplates specifies the storage size and volumeClaimTemplate name.
     volumeClaimTemplates:
     - name: data
diff --git a/examples/redis/README.md b/examples/redis/README.md
index 3cc087a86..06b861db9 100644
--- a/examples/redis/README.md
+++ b/examples/redis/README.md
@@ -2,144 +2,769 @@
 
 Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. This example shows how it can be managed in Kubernetes with KubeBlocks.
 
-## Prerequisites
+## Features In KubeBlocks
 
-This example assumes that you have a Kubernetes cluster installed and running, and that you have installed the kubectl command line tool and helm somewhere in your path. Please see the [getting started](https://kubernetes.io/docs/setup/)  and [Installing Helm](https://helm.sh/docs/intro/install/) for installation instructions for your platform.
+### Lifecycle Management
 
-Also, this example requires kubeblocks installed and running. Here is the steps to install kubeblocks, please replace "`$kb_version`" with the version you want to use.
-```bash
-# Add Helm repo 
-helm repo add kubeblocks https://apecloud.github.io/helm-charts
-# If github is not accessible or very slow for you, please use following repo instead
-helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
+|   Topology       | Horizontal<br/>scaling | Vertical <br/>scaling | Expand<br/>volume | Restart   | Stop/Start | Configure | Expose | Switchover |
+|------------------|------------------------|-----------------------|-------------------|-----------|------------|-----------|--------|------------|
+| replication     | Yes                    | Yes                   | Yes              | Yes       | Yes        | Yes       | Yes    | No      |
+| standalone      | Yes                    | Yes                   | Yes              | Yes       | Yes        | Yes       | Yes    | N/A      |
+| sharding      | Yes                    | Yes                   | Yes              | Yes       | Yes        | Yes       | Yes    | No      |
 
-# Update helm repo
-helm repo update
+### Backup and Restore
 
-# Get the versions of KubeBlocks and select the one you want to use
-helm search repo kubeblocks/kubeblocks --versions
-# If you want to obtain the development versions of KubeBlocks, Please add the '--devel' parameter as the following command
-helm search repo kubeblocks/kubeblocks --versions --devel
+| Feature     | Method | Description |
+|-------------|--------|------------|
+| Full Backup | datafile  | uses `redis-cli BGSAVE` command to backup data |
+| Continuous Backup | aof | continuously perform incremental backups by archiving Append-Only Files (AOF) |
 
-# Create dependent CRDs
-kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v$kb_version/kubeblocks_crds.yaml
-# If github is not accessible or very slow for you, please use following command instead
-kubectl create -f https://jihulab.com/api/v4/projects/98723/packages/generic/kubeblocks/v$kb_version/kubeblocks_crds.yaml
+### Versions
 
-# Install KubeBlocks
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version="$kb_version"
-```
- 
+| Major Versions | Description |
+|---------------|-------------|
+| 7.0           | 7.0.6 |
+| 7.2           | 7.2.4 |
+
+## Prerequisites
+
+- Kubernetes cluster >= v1.21
+- `kubectl` installed, refer to [K8s Install Tools](https://kubernetes.io/docs/tasks/tools/)
+- Helm, refer to [Installing Helm](https://helm.sh/docs/intro/install/)
+- KubeBlocks installed and running, refer to [Install Kubeblocks](../docs/prerequisites.md)
+- Redis Addon Enabled, refer to [Install Addons](../docs/install-addon.md)
+- Create K8s Namespace `demo`, to keep resources created in this tutorial isolated:
+
+  ```bash
+  kubectl create ns demo
+  ```
 
 ## Examples
 
-### [Create](cluster.yaml) 
-Create a redis replication cluster (with an official Redis Sentinel HA) with specified cluster definition 
+### [Create](cluster.yaml)
+
+Create a Redis replication cluster with two components, one for Redis, and one for Redis Sentinel[^1].
+
+For optimal reliability, you should run at least three Redis Sentinel replicas. Having three or more Sentinels ensures a quorum can be reached during failover decisions, maintaining the high availability of your Redis deployment.
+
 ```bash
 kubectl apply -f examples/redis/cluster.yaml
 ```
-Starting from kubeblocks 0.9.0, we introduced a more flexible cluster creation method based on components, allowing customization of cluster topology, functionalities and scale according to specific requirements.
 
-Create a redis replication cluster (with an official Redis Sentinel HA) with specified component definition 
+A cluster named `redis-replication` will be created with 1 primary pod, 1 secondary pod, and 3 sentinel pods.
+
 ```bash
-kubectl apply -f examples/redis/cluster-cmpd.yaml
+kubectl get -n demo cluster redis-replication # get cluster info
+kubectl get pod -n demo -l app.kubernetes.io/instance=redis-replication # get all pods of the cluster
 ```
 
-Or you can create a redis replication cluster (with an official Redis Sentinel HA) with specified cluster definition topology
+> [!NOTE]
+> If all Pods are running, but the cluster status is still `Creating`, you may need to wait for a while until all Redis Pods are ready with corresponding Roles.
+
+To check the role of each Redis pod, you can use the following command:
+
 ```bash
-kubectl apply -f examples/redis/cluster-cd-topology.yaml
+# replace `redis-replication` with your cluster name
+kubectl get po -n demo -l app.kubernetes.io/instance=redis-replication,apps.kubeblocks.io/component-name=redis -L kubeblocks.io/role
 ```
 
-Or you want to create a redis sharding cluster (An official distributed Redis) with specified component definition
+#### Why Redis Sentinel starts first?
+
+Redis Sentinel is a high availability solution for Redis. It provides monitoring, notifications, and automatic failover for Redis instances.
+
+Each Redis replica, from the Redis component, upon startup, will connect to the Redis Sentinel instances to get the current leader and follower information. It needs to determine:
+
+- Whether it should act as the primary (master) node.
+- If not, which node is the current primary to replicate from.
+
+In more detail, each Redis replica will:
+
+1. Check for Existing Primary Node
+    - Queries Redis Sentinel to find out if a primary node is already elected.
+    - Retrieve the primary's address and port.
+1. Initialize as Primary if Necessary
+    - If no primary is found (e.g., during initial cluster setup), it configures the current Redis instance to become the primary.
+    - Updates Redis configuration to disable replication.
+1. Configure as Replica if Primary Exists
+    - If a primary is found, it sets up the current Redis instance as a replica.
+    - Updates the Redis configuration with the `replicaof` directive pointing to the primary's address and port.
+    - Initiates replication to synchronize data from the primary.
+
+KubeBlocks ensures that Redis Sentinel starts first to provide the necessary information for the Redis replicas to initialize correctly. Such dependency is well-expressed in the KubeBlocks CRD `ClusterDefinition` ensuring the correct startup order.
+
+More details on how components for the `replication` topology are started, upgraded can be found in:
+
 ```bash
-kubectl apply -f examples/redis/cluster-sharding.yaml
+kubectl get cd redis -oyaml | yq '.spec.topologies[] | select(.name=="replication") | .orders'
 ```
 
-### [Horizontal scaling](horizontalscale.yaml)
-Horizontal scaling out or in specified components replicas in the cluster
+### Horizontal scaling
+
+#### [Scale-out](scale-out.yaml)
+
+Horizontal scaling out Redis component by adding ONE more replica:
+
 ```bash
-kubectl apply -f examples/redis/horizontalscale.yaml
+kubectl apply -f examples/redis/scale-out.yaml
+```
+
+After applying the operation, you will see a new pod created and the cluster status goes from `Updating` to `Running`, and the newly created pod has a new role `secondary`.
+
+And you can check the progress of the scaling operation with following command:
+
+```bash
+kubectl describe -n demo ops redis-scale-out
+```
+
+#### [Scale-in](scale-in.yaml)
+
+Horizontal scaling in Redis component by removing ONE replica:
+
+```bash
+kubectl apply -f examples/redis/scale-in.yaml
+```
+
+#### Scale-in/out using Cluster API
+
+Alternatively, you can update the `replicas` field in the `spec.componentSpecs.replicas` section to your desired non-zero number.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      replicas: 2 # decrease `replicas` for scaling in, and increase for scaling out
+      disableExporter: false
 ```
 
 ### [Vertical scaling](verticalscale.yaml)
-Vertical scaling up or down specified components requests and limits cpu or memory resource in the cluster
+
+Vertical scaling involves increasing or decreasing resources to an existing database cluster.
+Resources that can be scaled include:, CPU cores/processing power and Memory (RAM).
+
+Vertical scaling up or down requests and limits cpu or memory resource for Redis component:
+
 ```bash
 kubectl apply -f examples/redis/verticalscale.yaml
 ```
 
+You will observe that the `follower` pods are recreated first, followed by the `leader` pod, to ensure the availability of the cluster.
+
+#### Scale-up/down using Cluster API
+
+Alternatively, you may update `spec.componentSpecs.resources` field to the desired resources for vertical scale.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      replicas: 2 # decrease `replicas` for scaling in, and increase for scaling out
+      resources:
+        requests:
+          cpu: "1"       # Update the resources to your need.
+          memory: "2Gi"  # Update the resources to your need.
+        limits:
+          cpu: "2"       # Update the resources to your need.
+          memory: "4Gi"  # Update the resources to your need.
+```
+
 ### [Expand volume](volumeexpand.yaml)
-Increase size of volume storage with the specified components in the cluster
+
+Volume expansion is the ability to increase the size of a Persistent Volume Claim (PVC) after it's created. It is introduced in Kubernetes v1.11 and goes GA in Kubernetes v1.24. It allows Kubernetes users to simply edit their PersistentVolumeClaim objects without requiring any downtime at all if possible.
+
+> [!NOTE]
+> Make sure the storage class you use supports volume expansion.
+
+Check the storage class with following command:
+
+```bash
+kubectl get storageclass
+```
+
+If the `ALLOWVOLUMEEXPANSION` column is `true`, the storage class supports volume expansion.
+
+If you don't have a storage class that supports volume expansion, you can create a new one. Please refer to [CSI drivers](https://kubernetes-csi.github.io/docs/drivers.html) for more information.
+
+To increase size of volume storage with the Redis component in the cluster:
+
 ```bash
 kubectl apply -f examples/redis/volumeexpand.yaml
 ```
 
+Once you've done the change, check the `status.conditions` field of the PVC to see if the resize has completed.
+
+#### Volume expansion using Cluster API
+
+Alternatively, you may update the `spec.componentSpecs.volumeClaimTemplates.spec.resources.requests.storage` field to the desired size.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      replicas: 2
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: "<you-preferred-sc>"
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 30Gi  # specify new size, and make sure it is larger than the current size
+```
+
 ### [Restart](restart.yaml)
+
 Restart the specified components in the cluster
+
 ```bash
 kubectl apply -f examples/redis/restart.yaml
 ```
 
 ### [Stop](stop.yaml)
-Stop the cluster and release all the pods of the cluster, but the storage will be reserved
+
+Stop the cluster will release all the pods of the cluster, but the storage will be retained. It is useful when you want to save the cost of the cluster.
+
+To stop the all component (without specifying the component name) in the cluster:
+
 ```bash
 kubectl apply -f examples/redis/stop.yaml
 ```
 
+#### Stop using Cluster API
+
+Alternatively, you may stop the cluster by setting all `spec.componentSpecs.stop` field to `true`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      stop: true  # set stop `true` to stop the component
+      replicas: 2
+      ...
+    - name: redis-sentinel
+      stop: true  # set stop `true` to stop the component
+      replicas: 3
+      ....
+```
+
 ### [Start](start.yaml)
+
 Start the stopped cluster
+
 ```bash
 kubectl apply -f examples/redis/start.yaml
 ```
 
-### [Configure](configure.yaml)
-Configure parameters with the specified components in the cluster
+#### Start using Cluster API
+
+Alternatively, you may start the cluster by setting all `spec.componentSpecs.stop` field to `false`.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      stop: false  # set to `false` (or remove this field) to start the component
+      replicas: 2
+    - name: redis-sentinel
+      stop: false  # set stop `true` to stop the component
+      replicas: 3
+      ....
+```
+
+### [Reconfigure](configure.yaml)
+
+A database reconfiguration is the process of modifying database parameters, settings, or configurations to improve performance, security, or availability. The reconfiguration can be either:
+
+- Dynamic: Applied without restart
+- Static: Requires database restart
+
+Reconfigure parameters with the specified components in the cluster:
+
 ```bash
 kubectl apply -f examples/redis/configure.yaml
 ```
 
-### [BackupRepo](backuprepo.yaml)
-BackupRepo is the storage repository for backup data, using the full backup and restore function of KubeBlocks relies on BackupRepo
+This example will change the `maxclients` to `10001` for the Redis component.
+`maxclients` in Redis specifies the maximum number of simultaneous client connections the server will accept. Once this limit is reached, Redis will start rejecting new connections until existing clients disconnect.
+
+> [!CAUTION]
+> It is defined as a static parameter, which means the Redis component will be restarted after the reconfiguration.
+
+To verify the reconfiguration, you can connect to the Redis pod and check the configuration with the following command:
+
+```bash
+reids> config get maxclients
+```
+
+And the output should be:
+
 ```bash
-# Create a secret to save the access key
-kubectl create secret generic <storage-provider>-credential-for-backuprepo\
-  --from-literal=accessKeyId=<ACCESS KEY> \
-  --from-literal=secretAccessKey=<SECRET KEY> \
-  -n kb-system 
-  
-kubectl apply -f examples/redis/backuprepo.yaml
+1) "maxclients"
+2) "10001"     # where 10001 is the new value set in the reconfiguration
 ```
 
 ### [Backup](backup.yaml)
-Create a backup for the cluster
+
+> [!IMPORTANT]
+> Before you start, please create a `BackupRepo` to store the backup data. Refer to [BackupRepo](../docs/create-backuprepo.md) for more details.
+
+You may find the supported backup methods in the `BackupPolicy` of the cluster, e.g. `redis-replication-redis-backup-policy` in this case, and find how these methods will be scheduled in the `BackupSchedule` of the cluster, e.g.. `redis-replication-redis-backup-schedule` in this case.
+
+To the the list of backup policies and schedules, you can use the following command:
+
+```bash
+kubectl get backuppolicy -n demo redis-replication-redis-backup-policy -oyaml | yq '.spec.backupMethods[].name'
+```
+
+And the output should be like:
+
+```yaml
+datafile  # for base backup
+aof       # for pitr
+volume-snapshot # for snapshot backup, make sure the storage class supports volume snapshot
+```
+
+#### [Full Backup](backup.yaml)
+
+To create a backup for the reids component in the cluster:
+
 ```bash
 kubectl apply -f examples/redis/backup.yaml
 ```
 
+It will trigger a backup operation for the Redis component using `redis-cli BGSAVE` command against one secondary pod.
+After the operation, you will see a `Backup` is created
+
+```bash
+kubectl get backup -n demo -l app.kubernetes.io/instance=redis-replication
+```
+
+Information, such as `path`, `timeRange` about the backup will be recorded into the `Backup` resource.
+
+#### Continuous Backup
+
+Redis Append Only Files(AOFs) record every write operation received by the server, in the order they were processed, which allows Redis to reconstruct the dataset by replaying these commands.
+KubeBlocks supports continuous backup for the Redis component by archiving Append-Only Files (AOF). It will process incremental AOF files, update base AOF file, purge expired files and save backup status (records metadata about the backup process, such as total size and timestamps, to the `Backup` resource).
+
+To create a continuous backup for the reids component, you should follow the steps below:
+
+1. set variable `aof-timestamp-enabled` to `yes`
+
+```bash
+kubectl apply -f examples/redis/reconfigure-aof.yaml
+```
+
+> [!IMPORTANT]
+> Once `aof-timestamp-enabled` is on, Redis will include timestamp in the AOF file.
+> It may have following side effects: storage overhead, performance overhead (write latency).
+> It is not recommended to enable this feature when you have high write throughput, or you have limited storage space.
+
+1. enable continuous backup
+
+update the `BackupSchedule` to enable the `aof` method.
+
+```yaml
+apiVersion: dataprotection.kubeblocks.io/v1alpha1
+kind: BackupSchedule
+metadata:
+  name: redis-replication-redis-backup-policy
+  namespace: demo
+spec:
+  backupPolicyName: redis-replication-redis-backup-policy
+  schedules:
+  - backupMethod: datafile
+    # ┌───────────── minute (0-59)
+    # │ ┌───────────── hour (0-23)
+    # │ │ ┌───────────── day of month (1-31)
+    # │ │ │ ┌───────────── month (1-12)
+    # │ │ │ │ ┌───────────── day of week (0-6) (Sunday=0)
+    # │ │ │ │ │
+    # 0 18 * * *
+    # schedule this job every day at 6:00 PM (18:00).
+    cronExpression: 0 18 * * * # update the cronExpression to your need
+    enabled: false # set to `true` to schedule base backup periodically
+    retentionPeriod: 7d # set the retention period to your need
+  - backupMethod: aof
+    cronExpression: 0 18 * * 0
+    enabled: true     # set this to `true` to enable continous backup
+    retentionPeriod: 7d
+  - backupMethod: volume-snapshot
+    cronExpression: 0 18 * * 0
+    enabled: false   # set to `true` to schedule base backup using volume snapshot periodically
+    retentionPeriod: 7d
+```
+
+#### Backup using Cluster API
+
+Alternatively, you may update `spec.backup` field to the desired backup method.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  # Specifies the backup configuration of the Cluster.
+  backup:
+    cronExpression: 0 18 * * *
+    enabled: true     #  Specifies whether automated backup is enabled for the Cluster.
+    method: datafile  #  Specifies the backup method to use, as defined in backupPolicy
+    pitrEnabled: true #  Specifies whether to enable point-in-time recovery
+    retentionPeriod: 7d # set the retention period to your need
+    # Specifies the name of the BackupRepo to use for storing backups
+    # If not specified, the default BackupRepo will be used.
+    # `default` BackupRepo is the one annotated with `dataprotection.kubeblocks.io/is-default-repo=true`
+    repoName: kb-oss
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      ...
+```
+
 ### [Restore](restore.yaml)
-Restore a new cluster from backup
+
+To restore a new cluster from a Backup:
+
+1. Get the list of accounts and their passwords from the backup:
+
 ```bash
-# Get backup connection password
-kubectl get backup redis-cluster-backup -ojsonpath='{.metadata.annotations.dataprotection\.kubeblocks\.io\/connection-password}' -n default
+kubectl get backup -n demo acmysql-cluster-backup -ojsonpath='{.metadata.annotations.kubeblocks\.io/encrypted-system-accounts}'
+```
 
+1. Update `examples/redis/restore.yaml` and set placeholder `<ENCRYPTED-SYSTEM-ACCOUNTS>` with your own settings and apply it.
+
+```bash
 kubectl apply -f examples/redis/restore.yaml
 ```
 
 ### Expose
+
 Expose a cluster with a new endpoint
+
 #### [Enable](expose-enable.yaml)
+
 ```bash
 kubectl apply -f examples/redis/expose-enable.yaml
 ```
 
 #### [Disable](expose-disable.yaml)
+
 ```bash
 kubectl apply -f examples/redis/expose-disable.yaml
 ```
 
+#### Expose SVC using Cluster API
+
+Alternatively, you may expose service by updating `spec.services`
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  # append service to the list
+  services:
+    # add annotation for cloud loadbalancer if
+    # services.spec.type is LoadBalancer
+    # here we use annotation for alibaba cloud for example
+  - annotations:
+      service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+    componentSelector: redis
+    name: redis-vpc
+    serviceName: redis-vpc
+    # optional. it specify defined role as selector for the service.
+    # onece specified, service will select and route traffic to Pods with the label
+    # "kubeblocks.io/role=<specified-role-name>".
+    # valid options are: [primary, secondary] for MySQL
+    roleSelector: primary
+    spec:  # defines the behavior of a K8s service.
+      ipFamilyPolicy: PreferDualStack
+      ports:
+      - name: tcp-redis
+        # port to expose
+        port: 6379
+        protocol: TCP
+        targetPort: redis
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are [`ClusterIP`, `NodePort`, and `LoadBalancer`]
+      type: LoadBalancer
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      ...
+```
+
+If the service is of type `LoadBalancer`, please add annotations for cloud loadbalancer depending on the cloud provider you are using. Here list annotations for some cloud providers:
+
+```yaml
+# alibaba cloud
+service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"  # or "intranet"
+
+# aws
+service.beta.kubernetes.io/aws-load-balancer-type: nlb  # Use Network Load Balancer
+service.beta.kubernetes.io/aws-load-balancer-internal: "true"  # or "false" for internet
+
+# azure
+service.beta.kubernetes.io/azure-load-balancer-internal: "true" # or "false" for internet
+
+# gcp
+networking.gke.io/load-balancer-type: "Internal" # for internal access
+cloud.google.com/l4-rbs: "enabled" # for internet
+```
+
+### Observability
+
+There are various ways to monitor the cluster. Here we use Prometheus and Grafana to demonstrate how to monitor the cluster.
+
+#### Installing the Prometheus Operator
+
+You may skip this step if you have already installed the Prometheus Operator.
+Or you can follow the steps in [How to install the Prometheus Operator](../docs/install-prometheus.md) to install the Prometheus Operator.
+
+#### [Create a Cluster](cluster.yaml)
+
+Create a new cluster with following command:
+
+> [!NOTE]
+> Make sure `spec.componentSpecs.disableExporter` is set to `false` when creating cluster.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+    - name: redis
+      serviceVersion: "7.2.4"
+      disableExporter: false # set to `false` to enable exporter
+```
+
+```bash
+kubectl apply -f examples/redis/cluster.yaml
+```
+
+When the cluster is running, each POD should have a sidecar container, named `metrics` running the postgres-exporter.
+
+#### Create PodMonitor
+
+##### Step 1. Query ScrapePath and ScrapePort
+
+You can retrieve the `scrapePath` and `scrapePort` from pod's exporter container.
+
+```bash
+get po redis-replication-redis-0 -oyaml | yq '.spec.containers[] | select(.name=="metrics") | .ports'
+```
+
+And the expected output is like:
+
+```text
+- containerPort: 9121
+  name: http-metrics
+  protocol: TCP
+```
+
+Or you may check the `scrapePath` and `scrapePort` from the headless service of the Redis component.
+
+And the expected output is like:
+
+```text
+monitor.kubeblocks.io/path: /metrics
+monitor.kubeblocks.io/port: "9121"
+monitor.kubeblocks.io/scheme: http
+```
+
+Or you may check the `scrapePath` and `scrapePort` from the `ComponentDefinition` of the Redis component.
+
+1. check which container is used for the exporter
+
+```bash
+kubectl get cmpd <redis-cmpd-name> -oyaml | yq '.spec.exporter'
+```
+
+And the expected output is like:
+
+```text
+containerName: metrics  # which contaiiner for the exporter
+scrapePath: /metrics    # scrape path
+scrapePort: http-metrics # scrapte port
+```
+
+##### Step 2. Create PodMonitor
+
+Apply the `PodMonitor` file to monitor the cluster:
+
+```bash
+kubectl apply -f examples/redis/pod-monitor.yaml
+```
+
+##### Step 3. Accessing the Grafana Dashboard
+
+Login to the Grafana dashboard and import the dashboard.
+
+There is a pre-configured dashboard for PostgreSQL under the `Redis` folder in the Grafana dashboard. And more dashboards can be found in the Grafana dashboard store[^5].
+
+> [!NOTE]
+> Make sure the labels are set correctly in the `PodMonitor` file to match the dashboard.
+
+Sometimes the default dashboard may not work as expected, you may need to adjust the dashboard to match the labels the metrics are scraped with, in particular, the `job` label. In our case, the `job` variable should be set to `monitoring/redis-replication-pod-monitor` in the dashboard.
+
 ### Delete
-If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster
+
+If you want to delete the cluster and all its resource, you can modify the termination policy and then delete the cluster:
+
+```bash
+kubectl patch cluster -n demo redis-replication -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+
+kubectl delete cluster -n demo redis-replication
+```
+
+### More Examples to Create a Redis
+
+Redis has various deployment topology, such as standalone, replication, sharding, etc. Here are some examples to create different Redis clusters.
+
+#### Create Redis Replication with NodePort
+
+Redis and Sentinel's advertise port is mainly used for correct node discovery and communication in distributed deployment environments. The advertise port is the port that a Redis or Sentinel node announces to other nodes or clients as its externally accessible service port. This is especially important in containerized, NAT, or port-mapped environments where the actual listening port inside the container may differ from the port exposed to the outside world.
+
+- For Redis, the `cluster-announce-port` configuration allows the node to advertise a different port than the one it listens on. This ensures that other nodes or clients can connect to the correct external port.
+- For Sentinel, the `sentinel announce-port` configuration serves a similar purpose, allowing Sentinel nodes to announce the correct external port for inter-node communication and monitoring.
+
+This mechanism solves the problem where the internal and external ports are inconsistent, ensuring reliable communication and failover in Redis and Sentinel clusters.
+
+To access redis replication from the outside of K8s cluster, you should create a redis replication cluster (with an official Redis Sentinel HA) with `NodePort` service type to advertise addresses.
+
+```bash
+kubectl apply -f examples/redis/cluster-with-nodeport.yaml
+```
+
+This example shows how to create a redis replication cluster and override the service type of the `redis-advertised` service to `NodePort`.
+```yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  componentSpecs:
+  - name: redis
+    services:
+    - name: redis-advertised  # override service named `redis-advertised` defined in ComponentDefinition
+      serviceType: NodePort
+      podService: true
+# irrelevant lines commited
+  - name: redis-sentinel
+    services:
+    - name: sentinel-advertised  # override service named `sentinel-advertised` defined in ComponentDefinition
+      serviceType: NodePort
+      podService: true
+# irrelevant lines commited
+```
+Service `redis-advertised` and `redis-sentinel` are defined in `ComponentDefinition` name `redis-7` and `redis-sentinel-7`.  They are used to to parse the advertised endpoints of the Redis pods and Sentinel Pods.
+
+
+#### Create Redis with Proxy
+
+To create a redis with a proxy (Twemproxy) in front of it:
+
+```bash
+kubectl apply -f examples/redis/cluster-twemproxy.yaml
+```
+
+A cluster named `redis-twemproxy` will be created with three components, one for Redis (2 replicas), one for Sentinel (3 replicas), and one for twemproxy (3 replicas).
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  terminationPolicy: Delete
+  clusterDef: redis
+  topology: replication-twemproxy  # set topology to standalone
+  componentSpecs:
+  - name: redis
+  - name: redis-sentinel
+  - name: redis-twemproxy       # add one componet on provisioniing: twemproxy
+    replicas: 3                 # set the desired number of replicas for twemproxy
+    resources:
+```
+
+#### Create Redis with Multiple Shards
+
+To create a redis sharding cluster (An official distributed Redis)  with 3 shards and 2 replica for each shard:
+
 ```bash
-kubectl patch cluster redis-cluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
+kubectl apply -f examples/redis/cluster-sharding.yaml
+```
+
+You may change the number of shards and replicas in the yaml file.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  shardings:
+  - name: shard
+    shards: 3  # set the desired number of shards.
+    template:
+      name: redis
+      componentDef: redis-cluster-7
+      replicas: 2 # set the desired number of replicas for each shard.
+      serviceVersion: 7.2.4
+      # Component-level services override services defined in
+      # referenced ComponentDefinition and expose
+      # endpoints that can be accessed by clients
+      # This example explicitly override the svc `redis-advertised` to use the NodePort
+      services:
+      - name: redis-advertised # This is a per-pod svc, and will be used to parse advertised endpoints
+        podService: true
+        #  - NodePort
+        #  - LoadBalancer
+        serviceType: NodePort
+  ...
+```
+
+In this example we demonstrate how to create a Redis cluster with multiple shards, and how to override the service type of the `redis-advertised` service to `NodePort`.
+
+The service `redis-advertised` is defined in `ComponentDefinition` and will be used to parse the advertised endpoints of the Redis pods.
+
+By default, the service type is `NodePort`. If you want to expose the service to the outside of the cluster, you can override the service type to `NodePort` or `LoadBalancer` depending on your need.
 
-kubectl delete cluster redis-cluster
+Similarly to add or remove shards, you can update the `shardings` field in the `Cluster` resource.
+
+```yaml
+# snippet of cluster.yaml
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+spec:
+  shardings:
+  - name: shard
+    shards: 3 # increase or decrease the number of shards.
+    template:
+      name: redis
+      componentDef: redis-cluster-7
+      replicas: 2 # set the desired number of replicas for each shard.
+      serviceVersion: 7.2.4
+      stop: false # set to `true` to stop all components
 ```
+
+## Reference
+
+[^1]: Redis Sentinel: <https://redis.io/docs/latest/operate/oss_and_stack/management/sentinel/>
+[^5]: Grafana Dashboard Store: <https://grafana.com/grafana/dashboards/>
diff --git a/examples/redis/alert-rules.yaml b/examples/redis/alert-rules.yaml
new file mode 100644
index 000000000..17eb08c99
--- /dev/null
+++ b/examples/redis/alert-rules.yaml
@@ -0,0 +1,90 @@
+apiVersion: monitoring.coreos.com/v1
+kind: PrometheusRule
+metadata:
+  name: redis-alert-rules
+  labels:
+    release: prometheus
+spec:
+  groups:
+    - name: RedisExporter
+      rules:
+        - alert: RedisDown
+          expr: "redis_up == 0"
+          for: 5m
+          labels:
+            severity: critical
+          annotations:
+            summary: "Redis is down"
+            description: "Redis is down. (instance: {{ $labels.pod }})"
+
+        - alert: RedisCPUHigh
+          expr: "(rate(redis_cpu_sys_seconds_total[1m]) + rate(redis_cpu_user_seconds_total[1m])) * 100 > 80"
+          for: 2m
+          labels:
+            severity: warning
+          annotations:
+            summary: "Out of CPU (> 80%)"
+            description: 'Redis is running out of CPU and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
+
+        - alert: RedisMemoryHigh
+          expr: "(redis_memory_max_bytes == 0 or redis_memory_used_bytes * 100 / redis_memory_max_bytes) > 90"
+          for: 5m
+          labels:
+            severity: warning
+          annotations:
+            summary: "Out of memory (> 90%)"
+            description: 'Redis is running out of memory and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
+
+        - alert: RedisTooManyConnections
+          expr: "redis_connected_clients * 100 / redis_config_maxclients > 80"
+          for: 1m
+          labels:
+            severity: warning
+          annotations:
+            summary: "Redis has too many connections (> 80%)"
+            description: 'Redis has too many connections and the value is {{ $value | printf "%.2f" }} percent. (instance: {{ $labels.pod }})'
+
+        - alert: RedisRejectedConnections
+          expr: "increase(redis_rejected_connections_total[1m]) > 0"
+          for: 5m
+          labels:
+            severity: error
+          annotations:
+            summary: "Redis has rejected connections"
+            description: '{{ $value | printf "%.2f" }} connections to Redis has been rejected. (instance: {{ $labels.pod }})'
+
+        - alert: RedisKeyEviction
+          expr: "increase(redis_evicted_keys_total[5m]) > 0"
+          for: 1s
+          labels:
+            severity: error
+          annotations:
+            summary: "Redis has evicted keys"
+            description: 'Redis has evicted keys in the last 5 minutes and the value is {{ $value | printf "%.2f" }}. (instance: {{ $labels.pod }})'
+
+        - alert: RedisMissingMaster
+          expr: 'count by (app_kubernetes_io_instance) (redis_instance_info{role="master"}) < 1'
+          for: 30s
+          labels:
+            severity: critical
+          annotations:
+            summary: "Redis missing master"
+            description: "Redis cluster has no node marked as master."
+
+        - alert: RedisDisconnectedSlaves
+          expr: "count without (instance, job) (redis_connected_slaves) - sum without (instance, job) (redis_connected_slaves) - 1 > 1"
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "Redis disconnected slaves"
+            description: "Redis not replicating for all slaves. Consider reviewing the redis replication status. (instance: {{ $labels.pod }})"
+
+        - alert: RedisReplicationBroken
+          expr: "delta(redis_connected_slaves[1m]) < 0"
+          for: 0m
+          labels:
+            severity: critical
+          annotations:
+            summary: "Redis replication broken"
+            description: "Redis instance lost a slave. (instance: {{ $labels.pod }})"
diff --git a/examples/redis/backup.yaml b/examples/redis/backup.yaml
index 05a31f406..5513eba01 100644
--- a/examples/redis/backup.yaml
+++ b/examples/redis/backup.yaml
@@ -1,15 +1,16 @@
 apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: Backup
 metadata:
-  name: redis-cluster-backup
-  namespace: default
+  name: redis-backup-datafile
+  namespace: demo
 spec:
   # Specifies the backup method name that is defined in the backup policy.
   # - datafile
   # - volume-snapshot
+  # - aof
   backupMethod: datafile
   # Specifies the backup policy to be applied for this backup.
-  backupPolicyName: redis-cluster-redis-backup-policy
+  backupPolicyName: redis-replication-redis-backup-policy
   # Determines whether the backup contents stored in the backup repository should be deleted when the backup custom resource(CR) is deleted. Supported values are `Retain` and `Delete`.
   # - `Retain` means that the backup content and its physical snapshot on backup repository are kept.
   # - `Delete` means that the backup content and its physical snapshot on backup repository are deleted.
diff --git a/examples/redis/backuprepo.yaml b/examples/redis/backuprepo.yaml
index 890891407..78e96f11b 100644
--- a/examples/redis/backuprepo.yaml
+++ b/examples/redis/backuprepo.yaml
@@ -1,8 +1,9 @@
 apiVersion: dataprotection.kubeblocks.io/v1alpha1
 kind: BackupRepo
 metadata:
-  name: s3-repo
+  name: <test-backuprepo>
   annotations:
+    # optional, mark this backuprepo as default
     dataprotection.kubeblocks.io/is-default-repo: 'true'
 spec:
   # Specifies the name of the `StorageProvider` used by this backup repository.
@@ -13,24 +14,30 @@ spec:
   # - gcs (Google Cloud Storage)
   # - obs (Huawei Cloud Object Storage)
   # - minio, and other S3-compatible services.
-  storageProviderRef: s3
+  # Note: set the provider name to you own needs
+  storageProviderRef: oss
   # Specifies the access method of the backup repository.
   # - Tool
   # - Mount
+  # If the access mode is Mount, it will mount the PVC through the CSI driver (make sure it is installed and configured properly)
+  # In Tool mode, it will directly stream to the object storage without mounting the PVC.
   accessMethod: Tool
-  # Specifies reclaim policy of the PV created by this backup repository.
-  pvReclaimPolicy: Retain
-  # Specifies the capacity of the PVC created by this backup repository.
-  volumeCapacity: 100Gi
   # Stores the non-secret configuration parameters for the `StorageProvider`.
   config:
-    bucket: <storage-provider-bucket-name>
-    endpoint: ''
-    mountOptions: --memory-limit 1000 --dir-mode 0777 --file-mode 0666
-    region: <storage-provider-region-name>
+    # Note: set the bucket name to you own needs
+    bucket: <kubeblocks-test>
+    # Note: set the region name to you own needs
+    region: <cn-zhangjiakou>
   # References to the secret that holds the credentials for the `StorageProvider`.
+  # kubectl create secret generic demo-credential-for-backuprepo --from-literal=accessKeyId=* --from-literal=secretAccessKey=* --namespace=kb-system
   credential:
     # name is unique within a namespace to reference a secret resource.
-    name: s3-credential-for-backuprepo
+    # Note: set the secret name to you own needs
+    name: <credential-for-backuprepo>
     # namespace defines the space within which the secret name must be unique.
     namespace: kb-system
+  # Specifies reclaim policy of the PV created by this backup repository
+  # Valid Options are [Retain, Delete]
+  # Delete means the volume will be deleted from Kubernetes on release from its claim.
+  # Retain means the volume will be left in its current phase (Released) for manual reclamation by the administrator.
+  pvReclaimPolicy: Retain
diff --git a/examples/redis/cluster-cd-topology-twemproxy.yaml b/examples/redis/cluster-cd-topology-twemproxy.yaml
deleted file mode 100644
index d1514f30f..000000000
--- a/examples/redis/cluster-cd-topology-twemproxy.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: redis-cluster
-  namespace: default
-spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: redis
-  # Specifies the redis cluster topology defined in ClusterDefinition.Spec.topologies, support standalone, replication, and replication-twemproxy.
-  # - `standalone`: single redis instance
-  # - `replication`: primary-secondary replication with redis sentinel, refer: https://redis.io/docs/management/sentinel
-  # - `replication-twemproxy`: primary-secondary replication with sentinel and twemproxy, it is just a demo for how to use twemproxy with redis, not recommended for production
-  topology: replication-twemproxy
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. The name must be defined in the ClusterDefinition.Spec.topologies[x].components.
-    # This name is also part of the Service DNS name and must comply with the IANA service naming rule. When ClusterComponentSpec is referenced as a template, the name is optional. Otherwise, it is required.
-    - name: redis
-      # Determines whether the metrics exporter needs to be published to the service endpoint.
-      disableExporter: true
-      # Specifies which types of logs should be collected for the Cluster.
-      enabledLogs:
-        - running
-      # Specifies the name of the ServiceAccount required by the running Component.
-      serviceAccountName: kb-redis-cluster
-      # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-      replicas: 2
-      # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
-      # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    - name: redis-sentinel
-      disableExporter: false
-      serviceAccountName: kb-redis-cluster
-      replicas: 3
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    - name: redis-twemproxy
-      serviceAccountName: kb-redis-cluster
-      replicas: 2
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
diff --git a/examples/redis/cluster-cd-topology.yaml b/examples/redis/cluster-cd-topology.yaml
deleted file mode 100644
index 7b079cf23..000000000
--- a/examples/redis/cluster-cd-topology.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: redis-cluster
-  namespace: default
-spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: redis
-  # Specifies the redis cluster topology defined in ClusterDefinition.Spec.topologies, support standalone, replication, and replication-twemproxy.
-  # - `standalone`: single redis instance
-  # - `replication`: primary-secondary replication with redis sentinel, refer: https://redis.io/docs/management/sentinel
-  # - `replication-twemproxy`: primary-secondary replication with sentinel and twemproxy, it is just a demo for how to use twemproxy with redis, not recommended for production
-  topology: replication
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. The name must be defined in the ClusterDefinition.Spec.topologies[x].components.
-    # This name is also part of the Service DNS name and must comply with the IANA service naming rule. When ClusterComponentSpec is referenced as a template, the name is optional. Otherwise, it is required.
-    - name: redis
-      # Determines whether the metrics exporter needs to be published to the service endpoint.
-      disableExporter: true
-      # Specifies which types of logs should be collected for the Cluster.
-      enabledLogs:
-        - running
-      # Specifies the name of the ServiceAccount required by the running Component.
-      serviceAccountName: kb-redis-cluster
-      # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-      replicas: 2
-      # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
-      # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    - name: redis-sentinel
-      disableExporter: false
-      serviceAccountName: kb-redis-cluster
-      replicas: 3
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: '0.5'
-          memory: 0.5Gi
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
diff --git a/examples/redis/cluster-cmpd.yaml b/examples/redis/cluster-cmpd.yaml
deleted file mode 100644
index be1a2a092..000000000
--- a/examples/redis/cluster-cmpd.yaml
+++ /dev/null
@@ -1,82 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: redis-cluster
-  namespace: default
-  annotations:
-    kubeblocks.io/crd-api-version: apps.kubeblocks.io/v1alpha1
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule. When ClusterComponentSpec is referenced as a template, the name is optional. Otherwise, it is required.
-  - name: redis
-    instances:
-    - annotations:
-        xxx: yyy
-      labels: {}
-      name: tpl-0
-      replicas: 2
-      resources:
-        limits:
-          cpu: '0.5'
-          memory: 0.5Gi
-        requests:
-          cpu: 100m
-          memory: 500M
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: redis-7
-    # Determines whether the metrics exporter needs to be published to the service endpoint.
-    disableExporter: true
-    serviceVersion: "7.2.4"
-    labels: {}
-    # podUpdatePolicy: StrictInPlace
-    # Specifies which types of logs should be collected for the Cluster.
-    enabledLogs:
-    - running
-    # Specifies the name of the ServiceAccount required by the running Component.
-    serviceAccountName: kb-redis-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 2
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: redis-sentinel
-    componentDef: redis-sentinel-7
-    disableExporter: false
-    serviceAccountName: kb-redis-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/redis/cluster-sharding.yaml b/examples/redis/cluster-sharding.yaml
index ff045c7dc..16d210c46 100644
--- a/examples/redis/cluster-sharding.yaml
+++ b/examples/redis/cluster-sharding.yaml
@@ -1,17 +1,12 @@
 apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
-  name: redis-cluster
-  namespace: default
+  name: redis-sharding
+  namespace: demo
 spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
   # Specifies a list of ShardingSpec objects that configure the sharding topology for components of a Cluster. Each ShardingSpec corresponds to a group of components organized into shards, with each shard containing multiple replicas. Components within a shard are based on a common ClusterComponentSpec template, ensuring that all components in a shard have identical configurations as per the template. This field supports dynamic scaling by facilitating the addition or removal of shards based on the specified number in each ShardingSpec. Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster. ShardingSpec defines how KubeBlocks manage dynamic provisioned shards. A typical design pattern for distributed databases is to distribute data across multiple shards, with each shard consisting of multiple replicas. Therefore, KubeBlocks supports representing a shard with a Component and dynamically instantiating Components using a template when shards are added. When shards are removed, the corresponding Components are also deleted.
-  shardingSpecs:
+  shardings:
     # Represents the common parent part of all shard names. This identifier is included as part of the Service DNS name and must comply with IANA service naming rules. It is used to generate the names of underlying Components following the pattern `$(shardingSpec.name)-$(ShardID)`. ShardID is a random string that is appended to the Name to generate unique identifiers for each shard. For example, if the sharding specification name is "my-shard" and the ShardID is "abc", the resulting component name would be "my-shard-abc". Note that the name defined in component template(`shardingSpec.template.name`) will be disregarded when generating the component names of the shards. The `shardingSpec.name` field takes precedence.
   - name: shard
     # Specifies the desired number of shards. Users can declare the desired number of shards through this field. KubeBlocks dynamically creates and deletes Components based on the difference between the desired and actual number of shards. KubeBlocks provides lifecycle management for sharding, including: - Executing the postProvision Action defined in the ComponentDefinition when the number of shards increases. This allows for custom actions to be performed after a new shard is provisioned. - Executing the preTerminate Action defined in the ComponentDefinition when the number of shards decreases. This enables custom cleanup or data migration tasks to be executed before a shard is terminated. Resources and data associated with the corresponding Component will also be deleted.
@@ -22,9 +17,6 @@ spec:
       name: redis
       componentDef: redis-cluster-7
       disableExporter: true
-      enabledLogs:
-      - running
-      serviceAccountName: kb-redis-cluster
       replicas: 2
       resources:
         limits:
@@ -36,7 +28,10 @@ spec:
       # Specifies the version of the Component service. This field is used to determine the version of the service that is created for the Component. \
       # The serviceVersion is used to determine the version of the Redis Sharding Cluster kernel. If the serviceVersion is not specified, the default value is the ServiceVersion defined in ComponentDefinition.
       serviceVersion: 7.2.4
-      # Specifies to use the NodePort, need to delete the services specs if you want to use container network
+      # Component-level services override services defined in referenced ComponentDefinition and expose
+      # endpoints that can be accessed by clients
+      # This example explicitly override the svc `redis-advertised` to use the NodePort
+      # This is a per-pod svc.
       services:
       - name: redis-advertised
         podService: true
diff --git a/examples/redis/cluster-standalone.yaml b/examples/redis/cluster-standalone.yaml
new file mode 100644
index 000000000..f46a2593b
--- /dev/null
+++ b/examples/redis/cluster-standalone.yaml
@@ -0,0 +1,27 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: redis-standalone
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  clusterDef: redis
+  topology: standalone # set topology to standalone
+  componentSpecs:
+  - name: redis
+    replicas: 1       # set replica to 1
+    resources:
+      limits:
+        cpu: "0.5"
+        memory: "0.5Gi"
+      requests:
+        cpu: "0.5"
+        memory: "0.5Gi"
+    volumeClaimTemplates:
+      - name: data
+        spec:
+          accessModes:
+            - ReadWriteOnce
+          resources:
+            requests:
+              storage: 20Gi
\ No newline at end of file
diff --git a/examples/redis/cluster-twemproxy.yaml b/examples/redis/cluster-twemproxy.yaml
new file mode 100644
index 000000000..b0f474c76
--- /dev/null
+++ b/examples/redis/cluster-twemproxy.yaml
@@ -0,0 +1,54 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: redis-replication-with-proxy
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  clusterDef: redis
+  topology: replication-twemproxy  # set topology to standalone
+  componentSpecs:
+  - name: redis
+    replicas: 2
+    disableExporter: true
+    resources:
+      limits:
+        cpu: "0.5"
+        memory: "0.5Gi"
+      requests:
+        cpu: "0.5"
+        memory: "0.5Gi"
+    volumeClaimTemplates:
+      - name: data
+        spec:
+          accessModes:
+            - ReadWriteOnce
+          resources:
+            requests:
+              storage: 20Gi
+  - name: redis-sentinel
+    replicas: 3
+    resources:
+      limits:
+        cpu: "0.2"
+        memory:  "0.2Gi"
+      requests:
+        cpu: "0.2"
+        memory:  "0.2Gi"
+    volumeClaimTemplates:
+      - name: data
+        spec:
+          accessModes:
+            - ReadWriteOnce
+          resources:
+            requests:
+              storage: 20Gi
+  - name: redis-twemproxy       # add one componet on provisioniing: twemproxy
+    replicas: 3
+    resources:
+      limits:
+        cpu: "0.2"
+        memory: "0.2Gi"
+      requests:
+        cpu: "0.2"
+        memory: "0.2Gi"
\ No newline at end of file
diff --git a/examples/redis/cluster-with-nodeport.yaml b/examples/redis/cluster-with-nodeport.yaml
new file mode 100644
index 000000000..248773558
--- /dev/null
+++ b/examples/redis/cluster-with-nodeport.yaml
@@ -0,0 +1,64 @@
+apiVersion: apps.kubeblocks.io/v1
+kind: Cluster
+metadata:
+  name: replication-with-node-port
+  namespace: demo
+spec:
+  terminationPolicy: Delete
+  clusterDef: redis
+  topology: replication
+  componentSpecs:
+    - name: redis
+      replicas: 2
+      disableExporter: true
+      # Component-level services override services defined in referenced ComponentDefinition and expose
+      # endpoints that can be accessed by clients
+      # This example explicitly override the svc `redis-advertised` to use the NodePort
+      # This is a per-pod svc.
+      services:
+        - name: redis-advertised
+          serviceType: NodePort
+          podService: true
+      serviceVersion: 7.2.7
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+    - name: redis-sentinel
+      replicas: 3
+      # Component-level services override services defined in referenced ComponentDefinition and expose
+      # endpoints that can be accessed by clients
+      # This example explicitly override the svc `sentinel-advertised` to use the NodePort
+      # This is a per-pod svc.
+      services:
+        - name: sentinel-advertised
+          serviceType: NodePort
+          podService: true
+      serviceVersion: 7.2.7
+      resources:
+        limits:
+          cpu: "0.5"
+          memory: "0.5Gi"
+        requests:
+          cpu: "0.5"
+          memory: "0.5Gi"
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            accessModes:
+              - ReadWriteOnce
+            storageClassName:
+            resources:
+              requests:
+                storage: 20Gi
diff --git a/examples/redis/cluster.yaml b/examples/redis/cluster.yaml
index a9fb7cc2e..d5fe164c8 100644
--- a/examples/redis/cluster.yaml
+++ b/examples/redis/cluster.yaml
@@ -1,61 +1,85 @@
 apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
-  name: redis-cluster
-  namespace: default
+  name: redis-replication
+  namespace: demo
 spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: redis
-  # Specifies the redis cluster topology defined in ClusterDefinition.Spec.topologies, support standalone, replication, and replication-twemproxy.
-  # - `standalone`: single redis instance
-  # - `replication`: primary-secondary replication with redis sentinel, refer: https://redis.io/docs/management/sentinel
-  # - `replication-twemproxy`: primary-secondary replication with sentinel and twemproxy, it is just a demo for how to use twemproxy with redis, not recommended for production
-  topology: replication
   # Specifies the behavior when a Cluster is deleted.
+  # Valid options are: [DoNotTerminate, Delete, WipeOut] (`Halt` is deprecated since KB 0.9)
   # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
   # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
   # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
+  # Note: DO NOT UPDATE THIS FIELD
+  # The value must be `postgresql` to create a PostgreSQL Cluster
+  clusterDef: redis
+  # Specifies the name of the ClusterTopology to be used when creating the
+  # Cluster.
+  topology: replication
+  # Specifies a list of ClusterComponentSpec objects used to define the
+  # individual Components that make up a Cluster.
+  # This field allows for detailed configuration of each Component within the Cluster
   componentSpecs:
-  - name: redis
-    replicas: 2
-    disableExporter: true
-    enabledLogs:
-    - running
-    serviceAccountName: kb-redis-cluster
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
+    - name: redis
+      # ServiceVersion specifies the version of the Service expected to be
+      # provisioned by this Component.
+      # Valid options are: [7.0.6,7.2.4]
+      serviceVersion: "7.2.4"
+      # Determines whether metrics exporter information is annotated on the
+      # Component's headless Service.
+      # Valid options are [true, false]
+      disableExporter: false
+      # Specifies the desired number of replicas in the Component
+      replicas: 2
+      # Specifies the resources required by the Component.
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
+    - name: redis-sentinel
+      replicas: 3
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      # Specifies a list of PersistentVolumeClaim templates that define the storage
+      # requirements for the Component.
+      volumeClaimTemplates:
+        # Refers to the name of a volumeMount defined in
+        # `componentDefinition.spec.runtime.containers[*].volumeMounts
+        - name: data
+          spec:
+            # The name of the StorageClass required by the claim.
+            # If not specified, the StorageClass annotated with
+            # `storageclass.kubernetes.io/is-default-class=true` will be used by default
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                # Set the storage size as needed
+                storage: 20Gi
diff --git a/examples/redis/configure.yaml b/examples/redis/configure.yaml
index 9a7053dec..8d1b683f1 100644
--- a/examples/redis/configure.yaml
+++ b/examples/redis/configure.yaml
@@ -1,34 +1,24 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-reconfiguring
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
   force: false
   # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
-  reconfigure:
+  reconfigures:
     # Specifies the name of the Component.
-    componentName: redis
+  - componentName: redis
    # Contains a list of ConfigurationItem objects, specifying the Component's configuration template name, upgrade policy, and parameter key-value pairs to be updated.
-    configurations:
-      # Sets the parameters to be updated. It should contain at least one item.
-      # The keys are merged and retained during patch operations.
-    - keys:
-        # Represents the unique identifier for the ConfigMap.
-      - key: redis.conf
-        # Defines a list of key-value pairs for a single configuration file.
-        # These parameters are used to update the specified configuration settings.
-        parameters:
-          # Represents the name of the parameter that is to be updated.
-        - key: maxclients
-          # Represents the parameter values that are to be updated.
-          # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
-          value: '10001'
-      # Specifies the name of the configuration template.
-      name: redis-replication-config
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+    - key: maxclients
+      # Represents the parameter values that are to be updated.
+      # If set to nil, the parameter defined by the Key field will be removed from the configuration file.
+      value: '10001'
   # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
   preConditionDeadlineSeconds: 0
-  type: Reconfiguring
+  type: Reconfiguring
\ No newline at end of file
diff --git a/examples/redis/expose-disable.yaml b/examples/redis/expose-disable.yaml
index d97ea7b26..34dbd4cb3 100644
--- a/examples/redis/expose-disable.yaml
+++ b/examples/redis/expose-disable.yaml
@@ -1,16 +1,16 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-expose-disable
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
   - componentName: redis
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
       roleSelector: primary
diff --git a/examples/redis/expose-enable.yaml b/examples/redis/expose-enable.yaml
index c88411d22..2263501a8 100644
--- a/examples/redis/expose-enable.yaml
+++ b/examples/redis/expose-enable.yaml
@@ -1,20 +1,31 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-expose-enable
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   # Lists Expose objects, each specifying a Component and its services to be exposed.
   expose:
     # Specifies the name of the Component.
   - componentName: redis
-    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`. 
+    # Specifies a list of OpsService. When an OpsService is exposed, a corresponding ClusterService will be added to `cluster.spec.services`.
     services:
     - name: internet
-      roleSelector: primary
+      # Determines how the Service is exposed. Defaults to 'ClusterIP'.
+      # Valid options are `ClusterIP`, `NodePort`, and `LoadBalancer`.
       serviceType: LoadBalancer
+      # Contains cloud provider related parameters if ServiceType is LoadBalancer.
+      # Following is an example for Aliyun ACK, please adjust the following annotations as needed.
+      annotations:
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-charge-type: ""
+        service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small
+      # Specifies a role to target with the service.
+      # If specified, the service will only be exposed to pods with the matching
+      # role.
+      roleSelector: primary
     # Indicates whether the services will be exposed. 'Enable' exposes the services. while 'Disable' removes the exposed Service.
     switch: Enable
   # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
diff --git a/examples/redis/pod-monitor.yaml b/examples/redis/pod-monitor.yaml
new file mode 100644
index 000000000..d48ee6c8b
--- /dev/null
+++ b/examples/redis/pod-monitor.yaml
@@ -0,0 +1,28 @@
+
+apiVersion: monitoring.coreos.com/v1
+kind: PodMonitor
+metadata:
+  name: redis-replication-pod-monitor
+  labels:               # this is labels set in `prometheus.spec.podMonitorSelector`
+    release: prometheus
+spec:
+  jobLabel: app.kubernetes.io/managed-by
+  # defines the labels which are transferred from the
+  # associated Kubernetes `Pod` object onto the ingested metrics
+  # set the lables w.r.t you own needs
+  podTargetLabels:
+  - app.kubernetes.io/instance
+  - app.kubernetes.io/managed-by
+  - apps.kubeblocks.io/component-name
+  - apps.kubeblocks.io/pod-name
+  podMetricsEndpoints:
+    - path: /metrics
+      port: http-metrics
+      scheme: http
+  namespaceSelector:
+    matchNames:
+      - demo
+  selector:
+    matchLabels:
+      app.kubernetes.io/instance: redis-replication
+      apps.kubeblocks.io/component-name: redis
\ No newline at end of file
diff --git a/examples/redis/reconfigure-aof.yaml b/examples/redis/reconfigure-aof.yaml
new file mode 100644
index 000000000..e1df11719
--- /dev/null
+++ b/examples/redis/reconfigure-aof.yaml
@@ -0,0 +1,21 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: redis-reconfigure-aof
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: redis-replication
+  # Instructs the system to bypass pre-checks (including cluster state checks and customized pre-conditions hooks) and immediately execute the opsRequest, except for the opsRequest of 'Start' type, which will still undergo pre-checks even if `force` is true.  Note: Once set, the `force` field is immutable and cannot be updated.
+  force: false
+  # Specifies a component and its configuration updates. This field is deprecated and replaced by `reconfigures`.
+  reconfigures:
+    # Specifies the name of the Component.
+  - componentName: redis
+    parameters:
+      # Represents the name of the parameter that is to be updated.
+    - key: aof-timestamp-enabled
+      value: 'yes'
+  # Specifies the maximum number of seconds the OpsRequest will wait for its start conditions to be met before aborting. If set to 0 (default), the start conditions must be met immediately for the OpsRequest to proceed.
+  preConditionDeadlineSeconds: 0
+  type: Reconfiguring
\ No newline at end of file
diff --git a/examples/redis/restart.yaml b/examples/redis/restart.yaml
index c9b66a40b..5e86011c9 100644
--- a/examples/redis/restart.yaml
+++ b/examples/redis/restart.yaml
@@ -1,11 +1,11 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-restart
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   type: Restart
   # Lists Components to be restarted. ComponentOps specifies the Component to be operated on.
   restart:
diff --git a/examples/redis/restore-cmpd.yaml b/examples/redis/restore-cmpd.yaml
deleted file mode 100644
index e2c9f69e8..000000000
--- a/examples/redis/restore-cmpd.yaml
+++ /dev/null
@@ -1,64 +0,0 @@
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: redis-cluster-restore
-  namespace: default
-  annotations:
-    kubeblocks.io/restore-from-backup: '{"redis":{"connectionPassword":"<backup-connection-password>","name":"redis-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
-spec:
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
-  terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster.
-  componentSpecs:
-    # Specifies the name of the Component. This name is also part of the Service DNS name and must comply with the IANA service naming rule.
-  - name: redis
-    # References the name of a ComponentDefinition. The ComponentDefinition specifies the behavior and characteristics of the Component. If both `componentDefRef` and `componentDef` are provided, the `componentDef` will take precedence over `componentDefRef`.
-    componentDef: redis-7
-    # Determines whether the metrics exporter needs to be published to the service endpoint.
-    disableExporter: true
-    # Specifies which types of logs should be collected for the Cluster.
-    enabledLogs:
-    - running
-    # Specifies the name of the ServiceAccount required by the running Component.
-    serviceAccountName: kb-redis-cluster
-    # Each component supports running multiple replicas to provide high availability and persistence. This field can be used to specify the desired number of replicas.
-    replicas: 3
-    # Specifies the resources required by the Component. It allows defining the CPU, memory requirements and limits for the Component's containers.
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    # Specifies a list of PersistentVolumeClaim templates that define the storage requirements for the Component.
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
-  - componentDef: redis-sentinel-7
-    name: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
diff --git a/examples/redis/restore.yaml b/examples/redis/restore.yaml
index e2c014e23..0546f432e 100644
--- a/examples/redis/restore.yaml
+++ b/examples/redis/restore.yaml
@@ -1,64 +1,50 @@
 apiVersion: apps.kubeblocks.io/v1
 kind: Cluster
 metadata:
-  name: redis-cluster-restore
-  namespace: default
+  name: redis-replication-restore
+  namespace: demo
   annotations:
-    kubeblocks.io/restore-from-backup: '{"redis":{"connectionPassword":"<backup-connection-password>","name":"redis-cluster-backup","namespace":"default","volumeRestorePolicy":"Parallel"}}'
+    kubeblocks.io/restore-from-backup: '{"redis":{"encryptedSystemAccounts":"<ENCRYPTED-SYSTEM-ACCOUNTS>","name":"redis-replication-backup","namespace":"demo","volumeRestorePolicy":"Parallel"}}'
 spec:
-  # Specifies the name of the ClusterDefinition to use when creating a Cluster.
-  clusterDefinitionRef: redis
-  # Specifies the redis cluster topology defined in ClusterDefinition.Spec.topologies, support standalone, replication, and replication-twemproxy.
-  # - `standalone`: single redis instance
-  # - `replication`: primary-secondary replication with redis sentinel, refer: https://redis.io/docs/management/sentinel
-  # - `replication-twemproxy`: primary-secondary replication with sentinel and twemproxy, it is just a demo for how to use twemproxy with redis, not recommended for production
-  topology: replication
-  # Specifies the behavior when a Cluster is deleted.
-  # Specifies the behavior when a Cluster is deleted.
-  # - `DoNotTerminate`: Prevents deletion of the Cluster. This policy ensures that all resources remain intact.
-  # - `Halt`: Deletes Cluster resources like Pods and Services but retains Persistent Volume Claims (PVCs), allowing for data preservation while stopping other operations.
-  # - `Delete`: Extends the `Halt` policy by also removing PVCs, leading to a thorough cleanup while removing all persistent data.
-  # - `WipeOut`: An aggressive policy that deletes all Cluster resources, including volume snapshots and backups in external storage. This results in complete data removal and should be used cautiously, primarily in non-production environments to avoid irreversible data loss.
   terminationPolicy: Delete
-  # Specifies a list of ClusterComponentSpec objects used to define the individual components that make up a Cluster. This field allows for detailed configuration of each component within the Cluster.
-  # Note: `shardingSpecs` and `componentSpecs` cannot both be empty; at least one must be defined to configure a cluster.
-  # ClusterComponentSpec defines the specifications for a Component in a Cluster.
+  clusterDef: redis
+  topology: replication
   componentSpecs:
-  - name: redis
-    disableExporter: true
-    enabledLogs:
-    - running
-    serviceAccountName: kb-redis-cluster
-    replicas: 3
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 30Gi
-  - name: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
+    - name: redis
+      serviceVersion: "7.2.4"
+      disableExporter: false
+      replicas: 2
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
+    - name: redis-sentinel
+      replicas: 3
+      resources:
+        limits:
+          cpu: '0.5'
+          memory: 0.5Gi
+        requests:
+          cpu: '0.5'
+          memory: 0.5Gi
+      volumeClaimTemplates:
+        - name: data
+          spec:
+            storageClassName: ""
+            accessModes:
+              - ReadWriteOnce
+            resources:
+              requests:
+                storage: 20Gi
\ No newline at end of file
diff --git a/examples/redis/horizontalscale.yaml b/examples/redis/scale-in.yaml
similarity index 58%
rename from examples/redis/horizontalscale.yaml
rename to examples/redis/scale-in.yaml
index f9b01977e..815f63f2b 100644
--- a/examples/redis/horizontalscale.yaml
+++ b/examples/redis/scale-in.yaml
@@ -1,15 +1,18 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
-  name: redis-horizontalscaling
-  namespace: default
+  name: redis-scale-in
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   type: HorizontalScaling
   # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
   horizontalScaling:
     # Specifies the name of the Component.
   - componentName: redis
-    # Specifies the number of total replicas.
-    replicas: 3
+    # Specifies the replica changes for scaling in components
+    scaleIn:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
\ No newline at end of file
diff --git a/examples/redis/scale-out.yaml b/examples/redis/scale-out.yaml
new file mode 100644
index 000000000..4896eaf60
--- /dev/null
+++ b/examples/redis/scale-out.yaml
@@ -0,0 +1,18 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: redis-scale-out
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: redis-replication
+  type: HorizontalScaling
+  # Lists HorizontalScaling objects, each specifying scaling requirements for a Component, including desired total replica counts, configurations for new instances, modifications for existing instances, and instance downscaling options
+  horizontalScaling:
+    # Specifies the name of the Component.
+  - componentName: redis
+    # Specifies the replica changes for scaling in components
+    scaleOut:
+      # Specifies the replica changes for the component.
+      # add one more replica to current component
+      replicaChanges: 1
diff --git a/examples/redis/start.yaml b/examples/redis/start.yaml
index 04b6411c5..650e5bc9a 100644
--- a/examples/redis/start.yaml
+++ b/examples/redis/start.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-start
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   type: Start
diff --git a/examples/redis/stop.yaml b/examples/redis/stop.yaml
index ff6f54e56..4d89b3487 100644
--- a/examples/redis/stop.yaml
+++ b/examples/redis/stop.yaml
@@ -1,9 +1,9 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-stop
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   type: Stop
diff --git a/examples/redis/switchover-specified-instance.yaml b/examples/redis/switchover-specified-instance.yaml
new file mode 100644
index 000000000..4a512d3de
--- /dev/null
+++ b/examples/redis/switchover-specified-instance.yaml
@@ -0,0 +1,20 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: redis-switchover-specify
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: redis-replication
+  type: Switchover
+  # Lists Switchover objects, each specifying a Component to perform the switchover operation.
+  switchover:
+    # Specifies the name of the Component.
+  - componentName: redis
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: redis-replication-redis-0
+    # If CandidateName is specified, the role will be transferred to this instance.
+    # The name must match one of the pods in the component.
+    # Refer to ComponentDefinition's Swtichover lifecycle action for more details.
+    candidateName: redis-replication-redis-1
\ No newline at end of file
diff --git a/examples/redis/switchover.yaml b/examples/redis/switchover.yaml
new file mode 100644
index 000000000..c89a5efce
--- /dev/null
+++ b/examples/redis/switchover.yaml
@@ -0,0 +1,16 @@
+apiVersion: operations.kubeblocks.io/v1alpha1
+kind: OpsRequest
+metadata:
+  name: redis-switchover
+  namespace: demo
+spec:
+  # Specifies the name of the Cluster resource that this operation is targeting.
+  clusterName: redis-replication
+  type: Switchover
+  # Lists Switchover objects, each specifying a Component to perform the switchover operation.
+  switchover:
+    # Specifies the name of the Component.
+  - componentName: redis
+    # Specifies the instance whose role will be transferred.
+    # A typical usage is to transfer the leader role in a consensus system.
+    instanceName: redis-replication-redis-0
diff --git a/examples/redis/verticalscale.yaml b/examples/redis/verticalscale.yaml
index d72eeb80e..910b5ebc6 100644
--- a/examples/redis/verticalscale.yaml
+++ b/examples/redis/verticalscale.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-verticalscaling
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   type: VerticalScaling
-  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling. 
+  # Lists VerticalScaling objects, each specifying a component and its desired compute resources for vertical scaling.
   verticalScaling:
   - componentName: redis
     # VerticalScaling refers to the process of adjusting the compute resources (e.g., CPU, memory) allocated to a Component. It defines the parameters required for the operation.
diff --git a/examples/redis/volumeexpand.yaml b/examples/redis/volumeexpand.yaml
index 072ed07be..16464eb38 100644
--- a/examples/redis/volumeexpand.yaml
+++ b/examples/redis/volumeexpand.yaml
@@ -1,13 +1,13 @@
-apiVersion: apps.kubeblocks.io/v1alpha1
+apiVersion: operations.kubeblocks.io/v1alpha1
 kind: OpsRequest
 metadata:
   name: redis-volumeexpansion
-  namespace: default
+  namespace: demo
 spec:
   # Specifies the name of the Cluster resource that this operation is targeting.
-  clusterName: redis-cluster
+  clusterName: redis-replication
   type: VolumeExpansion
-  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion. 
+  # Lists VolumeExpansion objects, each specifying a component and its corresponding volumeClaimTemplates that requires storage expansion.
   volumeExpansion:
     # Specifies the name of the Component.
   - componentName: redis
diff --git a/hack/sync-examples.sh b/hack/sync-examples.sh
new file mode 100755
index 000000000..6ac45a799
--- /dev/null
+++ b/hack/sync-examples.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+REPO_URL="https://github.com/apecloud/kubeblocks-addons.git"
+EXAMPLES_DIR="examples"
+CLONE_DIR="kubeblocks-addons-tmp"
+KEEP_DIRS=(mysql postgresql redis mongodb kafka milvus qdrant rabbitmq elasticsearch)
+
+# Clean up any previous temp directory
+rm -rf "$CLONE_DIR"
+rm -rf "$EXAMPLES_DIR"
+
+# Clone with sparse-checkout
+git clone --filter=blob:none --no-checkout "$REPO_URL" "$CLONE_DIR"
+cd "$CLONE_DIR"
+git sparse-checkout init --cone
+git sparse-checkout set "$EXAMPLES_DIR"
+git checkout
+
+
+mv "$EXAMPLES_DIR" ../
+# Go back and remove the cloned repo
+cd ..
+rm -rf "$CLONE_DIR"
+
+# #!/bin/bash
+# ## remove folder not in $KEEP_DIRS
+
+for dir in "$EXAMPLES_DIR"/*; do
+  # Check if $dir is a directory AND if it's NOT in the KEEP_DIRS array
+  # -d "$dir" tests if it's a directory
+  # The pattern match checks if the directory name (with spaces around it) is NOT found in KEEP_DIRS array
+  if [ -d "$dir" ] && [[ ! " ${KEEP_DIRS[*]} " =~ " $(basename "$dir") " ]]; then
+    rm -rf "$dir"
+  fi
+done
+
+echo "Done! Only selected example directories have been copied to $(pwd)"
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/api-reference/_category_.yml b/i18n/zh-cn/developer-docs/api-reference/_category_.yml
deleted file mode 100644
index 37986cf40..000000000
--- a/i18n/zh-cn/developer-docs/api-reference/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: API 参考
-collapsible: true
-collapsed: true
diff --git a/i18n/zh-cn/developer-docs/api-reference/add-on.md b/i18n/zh-cn/developer-docs/api-reference/add-on.md
deleted file mode 100644
index 1a9dc3355..000000000
--- a/i18n/zh-cn/developer-docs/api-reference/add-on.md
+++ /dev/null
@@ -1,520 +0,0 @@
----
-title: 集成 API 参考
-description: 集成 API 参考
-keywords: [集成, API]
-sidebar_position: 3
-sidebar_label: 集成 API 参考
----
-<br />
-<p>Packages:</p>
-<ul>
-<li>
-<a href="#extensions.kubeblocks.io%2fv1alpha1">extensions.kubeblocks.io/v1alpha1</a>
-</li>
-</ul>
-<h2 id="extensions.kubeblocks.io/v1alpha1">extensions.kubeblocks.io/v1alpha1</h2>
-<div>
-</div>
-Resource Types:
-<ul><li>
-<a href="#extensions.kubeblocks.io/v1alpha1.Addon">Addon</a>
-</li></ul>
-<h3 id="extensions.kubeblocks.io/v1alpha1.Addon">Addon</h3>
-<div>
-<p>Addon is the Schema for the add-ons API.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>apiVersion</code><br/>string</td><td><code>extensions.kubeblocks.io/v1alpha1</code></td></tr>
-<tr><td><code>kind</code><br/>string</td><td><code>Addon</code></td></tr>
-<tr><td><code>metadata</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">Kubernetes meta/v1.ObjectMeta</a></em></td><td>Refer to the Kubernetes API documentation for the fields of the<code>metadata</code> field.</td></tr>
-<tr><td><code>spec</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a></em></td><td><br/><br/><table><tr><td><code>description</code><br/><em>string</em></td><td><em>(Optional)</em><p>Addon description.</p><br /></td></tr>
-<tr><td><code>type</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonType">AddonType</a></em></td><td><p>Add-on type. The valid value is helm.</p><br /></td></tr>
-<tr><td><code>helm</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmTypeInstallSpec">HelmTypeInstallSpec</a></em></td><td><em>(Optional)</em><p>Helm installation spec. It&rsquo;s processed only when type=helm.</p><br /></td></tr>
-<tr><td><code>defaultInstallValues</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonDefaultInstallSpecItem">[]AddonDefaultInstallSpecItem</a></em></td><td><p>Default installation parameters.</p><br /></td></tr>
-<tr><td><code>install</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpec">AddonInstallSpec</a></em></td><td><em>(Optional)</em><p>Installation parameters.</p><br /></td></tr>
-<tr><td><code>installable</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.InstallableSpec">InstallableSpec</a></em></td><td><em>(Optional)</em><p>Addon installable spec. It provides selector and auto-install settings.</p><br /></td></tr>
-<tr><td><code>cliPlugins</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.CliPlugin">[]CliPlugin</a></em></td><td><em>(Optional)</em><p>Plugin installation spec.</p><br /></td></tr></table></td></tr>
-<tr><td><code>status</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonStatus">AddonStatus</a></em></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonDefaultInstallSpecItem">AddonDefaultInstallSpecItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>AddonInstallSpec</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpec">AddonInstallSpec</a></em></td><td><p>(Members of <code>AddonInstallSpec</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>selectors</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.SelectorRequirement">[]SelectorRequirement</a></em></td><td><em>(Optional)</em><p>Addon installs parameters selectors by default. If multiple selectors are provided,<br />all selectors must evaluate to true.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonInstallExtraItem">AddonInstallExtraItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpec">AddonInstallSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>AddonInstallSpecItem</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpecItem">AddonInstallSpecItem</a></em></td><td><p>(Members of <code>AddonInstallSpecItem</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>name</code><br/><em>string</em></td><td><p>Name of the item.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonInstallSpec">AddonInstallSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonDefaultInstallSpecItem">AddonDefaultInstallSpecItem</a>, <a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>AddonInstallSpecItem</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpecItem">AddonInstallSpecItem</a></em></td><td><p>(Members of <code>AddonInstallSpecItem</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>enabled</code><br/><em>bool</em></td><td><em>(Optional)</em><p>enabled can be set if there are no specific installation attributes to be set.</p><br /></td></tr>
-<tr><td><code>extras</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallExtraItem">[]AddonInstallExtraItem</a></em></td><td><em>(Optional)</em><p>Installs spec. for extra items.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonInstallSpecItem">AddonInstallSpecItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallExtraItem">AddonInstallExtraItem</a>, <a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpec">AddonInstallSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>replicas</code><br/><em>int32</em></td><td><em>(Optional)</em><p>Replicas value.</p><br /></td></tr>
-<tr><td><code>persistentVolumeEnabled</code><br/><em>bool</em></td><td><em>(Optional)</em><p>Persistent Volume Enabled value.</p><br /></td></tr>
-<tr><td><code>storageClass</code><br/><em>string</em></td><td><em>(Optional)</em><p>Storage class name.</p><br /></td></tr>
-<tr><td><code>tolerations</code><br/><em>string</em></td><td><em>(Optional)</em><p>Tolerations JSON array string value.</p><br /></td></tr>
-<tr><td><code>resources</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.ResourceRequirements">ResourceRequirements</a></em></td><td><em>(Optional)</em><p>Resource requirements.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonPhase">AddonPhase(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonStatus">AddonStatus</a>)
-</p>
-<div>
-<p>AddonPhase defines addon phases.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Disabled&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Disabling&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Enabled&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Enabling&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Failed&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonSelectorKey">AddonSelectorKey(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.SelectorRequirement">SelectorRequirement</a>)
-</p>
-<div>
-<p>AddonSelectorKey are selector requirement key types.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;KubeGitVersion&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;KubeVersion&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.Addon">Addon</a>)
-</p>
-<div>
-<p>AddonSpec defines the desired state of an add-on.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>description</code><br/><em>string</em></td><td><em>(Optional)</em><p>Addon description.</p><br /></td></tr>
-<tr><td><code>type</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonType">AddonType</a></em></td><td><p>Add-on type. The valid value is helm.</p><br /></td></tr>
-<tr><td><code>helm</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmTypeInstallSpec">HelmTypeInstallSpec</a></em></td><td><em>(Optional)</em><p>Helm installation spec. It&rsquo;s processed only when type=helm.</p><br /></td></tr>
-<tr><td><code>defaultInstallValues</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonDefaultInstallSpecItem">[]AddonDefaultInstallSpecItem</a></em></td><td><p>Default installation parameters.</p><br /></td></tr>
-<tr><td><code>install</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpec">AddonInstallSpec</a></em></td><td><em>(Optional)</em><p>Installation parameters.</p><br /></td></tr>
-<tr><td><code>installable</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.InstallableSpec">InstallableSpec</a></em></td><td><em>(Optional)</em><p>Addon installable spec. It provides selector and auto-install settings.</p><br /></td></tr>
-<tr><td><code>cliPlugins</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.CliPlugin">[]CliPlugin</a></em></td><td><em>(Optional)</em><p>Plugin installation spec.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonStatus">AddonStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.Addon">Addon</a>)
-</p>
-<div>
-<p>AddonStatus defines the observed state of an add-on.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>phase</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonPhase">AddonPhase</a></em></td><td><p>Add-on installation phases. Valid values are Disabled, Enabled, Failed, Enabling, Disabling.</p><br /></td></tr>
-<tr><td><code>conditions</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#condition-v1-meta">[]Kubernetes meta/v1.Condition</a></em></td><td><em>(Optional)</em><p>Describes the current state of add-on API installation conditions.</p><br /></td></tr>
-<tr><td><code>observedGeneration</code><br/><em>int64</em></td><td><em>(Optional)</em><p>observedGeneration is the most recent generation observed for this<br />add-on. It corresponds to the add-on&rsquo;s generation, which is<br />updated on mutation by the API Server.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.AddonType">AddonType(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a>)
-</p>
-<div>
-<p>AddonType defines the addon types.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Helm&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.CliPlugin">CliPlugin</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>name</code><br/><em>string</em></td><td><p>Name of the plugin.</p><br /></td></tr>
-<tr><td><code>indexRepository</code><br/><em>string</em></td><td><p>The index repository of the plugin.</p><br /></td></tr>
-<tr><td><code>description</code><br/><em>string</em></td><td><em>(Optional)</em><p>The description of the plugin.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.DataObjectKeySelector">DataObjectKeySelector</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmInstallValues">HelmInstallValues</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>name</code><br/><em>string</em></td><td><p>Object name of the referent.</p><br /></td></tr>
-<tr><td><code>key</code><br/><em>string</em></td><td><p>The key to select.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmInstallOptions">HelmInstallOptions(<code>map[string]string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmTypeInstallSpec">HelmTypeInstallSpec</a>)
-</p>
-<div>
-</div>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmInstallValues">HelmInstallValues</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmTypeInstallSpec">HelmTypeInstallSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>urls</code><br/><em>[]string</em></td><td><em>(Optional)</em></td></tr>
-<tr><td><code>configMapRefs</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.DataObjectKeySelector">[]DataObjectKeySelector</a></em></td><td><em>(Optional)</em><p>Selects a key of a ConfigMap item list. The value of ConfigMap can be<br />a JSON or YAML string content. Use a key name with &ldquo;.json&rdquo; or &ldquo;.yaml&rdquo; or &ldquo;.yml&rdquo;<br />extension name to specify a content type.</p><br /></td></tr>
-<tr><td><code>secretRefs</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.DataObjectKeySelector">[]DataObjectKeySelector</a></em></td><td><em>(Optional)</em><p>Selects a key of a Secrets item list. The value of Secrets can be<br />a JSON or YAML string content. Use a key name with &ldquo;.json&rdquo; or &ldquo;.yaml&rdquo; or &ldquo;.yml&rdquo;<br />extension name to specify a content type.</p><br /></td></tr>
-<tr><td><code>setValues</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>Helm install set values. It can specify multiple or separate values with commas(key1=val1,key2=val2).</p><br /></td></tr>
-<tr><td><code>setJSONValues</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>Helm install set JSON values. It can specify multiple or separate values with commas(key1=jsonval1,key2=jsonval2).</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmJSONValueMapType">HelmJSONValueMapType</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingItem">HelmValuesMappingItem</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>tolerations</code><br/><em>string</em></td><td><em>(Optional)</em><p>tolerations sets the toleration mapping key.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmTypeInstallSpec">HelmTypeInstallSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a>)
-</p>
-<div>
-<p>HelmTypeInstallSpec defines the Helm installation spec.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>chartLocationURL</code><br/><em>string</em></td><td><p>A Helm Chart location URL.</p><br /></td></tr>
-<tr><td><code>installOptions</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmInstallOptions">HelmInstallOptions</a></em></td><td><em>(Optional)</em><p>installOptions defines Helm release installation options.</p><br /></td></tr>
-<tr><td><code>installValues</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmInstallValues">HelmInstallValues</a></em></td><td><em>(Optional)</em><p>HelmInstallValues defines Helm release installation set values.</p><br /></td></tr>
-<tr><td><code>valuesMapping</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMapping">HelmValuesMapping</a></em></td><td><em>(Optional)</em><p>valuesMapping defines add-on normalized resources parameters mapped to Helm values&rsquo; keys.</p><br /></td></tr>
-<tr><td><code>chartsImage</code><br/><em>string</em></td><td><em>(Optional)</em><p>chartsImage defines the image of Helm charts.</p><br /></td></tr>
-<tr><td><code>chartsPathInImage</code><br/><em>string</em></td><td><em>(Optional)</em><p>chartsPathInImage defines the path of Helm charts in the image. It&rsquo;s used to copy<br />Helm charts from the image to the shared volume.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmValueMapType">HelmValueMapType</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingItem">HelmValuesMappingItem</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>replicaCount</code><br/><em>string</em></td><td><em>(Optional)</em><p>replicaCount sets the replicaCount value mapping key.</p><br /></td></tr>
-<tr><td><code>persistentVolumeEnabled</code><br/><em>string</em></td><td><em>(Optional)</em><p>persistentVolumeEnabled sets the persistent volume enabled mapping key.</p><br /></td></tr>
-<tr><td><code>storageClass</code><br/><em>string</em></td><td><em>(Optional)</em><p>storageClass sets the storageClass mapping key.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmValuesMapping">HelmValuesMapping</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmTypeInstallSpec">HelmTypeInstallSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>HelmValuesMappingItem</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingItem">HelmValuesMappingItem</a></em></td><td><p>(Members of <code>HelmValuesMappingItem</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>extras</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingExtraItem">[]HelmValuesMappingExtraItem</a></em></td><td><em>(Optional)</em><p>Helm value mapping items for extra items.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmValuesMappingExtraItem">HelmValuesMappingExtraItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMapping">HelmValuesMapping</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>HelmValuesMappingItem</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingItem">HelmValuesMappingItem</a></em></td><td><p>(Members of <code>HelmValuesMappingItem</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>name</code><br/><em>string</em></td><td><p>Name of the item.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.HelmValuesMappingItem">HelmValuesMappingItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMapping">HelmValuesMapping</a>, <a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingExtraItem">HelmValuesMappingExtraItem</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>valueMap</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValueMapType">HelmValueMapType</a></em></td><td><em>(Optional)</em><p>valueMap define the &ldquo;key&rdquo; mapping values. Valid keys are replicaCount,<br />persistentVolumeEnabled, and storageClass. Enum values explained:<br /><code>&quot;replicaCount&quot;</code> sets the replicaCount value mapping key.<br /><code>&quot;persistentVolumeEnabled&quot;</code> sets the persistent volume enabled mapping key.<br /><code>&quot;storageClass&quot;</code> sets the storageClass mapping key.</p><br /></td></tr>
-<tr><td><code>jsonMap</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.HelmJSONValueMapType">HelmJSONValueMapType</a></em></td><td><em>(Optional)</em><p>jsonMap defines the &ldquo;key&rdquo; mapping values. The valid key is tolerations.<br />Enum values explained:<br /><code>&quot;tolerations&quot;</code> sets the toleration mapping key.</p><br /></td></tr>
-<tr><td><code>resources</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.ResourceMappingItem">ResourceMappingItem</a></em></td><td><em>(Optional)</em><p>resources sets resources related mapping keys.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.InstallableSpec">InstallableSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSpec">AddonSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>selectors</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.SelectorRequirement">[]SelectorRequirement</a></em></td><td><em>(Optional)</em><p>Add-on installable selectors. If multiple selectors are provided,<br />all selectors must evaluate to true.</p><br /></td></tr>
-<tr><td><code>autoInstall</code><br/><em>bool</em></td><td><p>autoInstall defines an add-on should be installed automatically.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.LineSelectorOperator">LineSelectorOperator(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.SelectorRequirement">SelectorRequirement</a>)
-</p>
-<div>
-<p>LineSelectorOperator defines line selector operators.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Contains&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;DoesNotContain&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;DoesNotMatchRegex&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;MatchRegex&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.ResourceMappingItem">ResourceMappingItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.HelmValuesMappingItem">HelmValuesMappingItem</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>storage</code><br/><em>string</em></td><td><em>(Optional)</em><p>storage sets the storage size value mapping key.</p><br /></td></tr>
-<tr><td><code>cpu</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.ResourceReqLimItem">ResourceReqLimItem</a></em></td><td><em>(Optional)</em><p>cpu sets CPU requests and limits mapping keys.</p><br /></td></tr>
-<tr><td><code>memory</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.ResourceReqLimItem">ResourceReqLimItem</a></em></td><td><em>(Optional)</em><p>memory sets Memory requests and limits mapping keys.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.ResourceReqLimItem">ResourceReqLimItem</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.ResourceMappingItem">ResourceMappingItem</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>requests</code><br/><em>string</em></td><td><em>(Optional)</em><p>Requests value mapping key.</p><br /></td></tr>
-<tr><td><code>limits</code><br/><em>string</em></td><td><em>(Optional)</em><p>Limits value mapping key.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.ResourceRequirements">ResourceRequirements</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonInstallSpecItem">AddonInstallSpecItem</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>limits</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcelist-v1-core">Kubernetes core/v1.ResourceList</a></em></td><td><em>(Optional)</em><p>Limits describes the maximum amount of compute resources allowed.<br />More info: <a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/">https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/</a>.</p><br /></td></tr>
-<tr><td><code>requests</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcelist-v1-core">Kubernetes core/v1.ResourceList</a></em></td><td><em>(Optional)</em><p>Requests describes the minimum amount of compute resources required.<br />If Requests is omitted for a container, it defaults to Limits if that is explicitly specified;<br />otherwise, it defaults to an implementation-defined value.<br />More info: <a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/">https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/</a>.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="extensions.kubeblocks.io/v1alpha1.SelectorRequirement">SelectorRequirement</h3>
-<p>
-(<em>Appears on:</em><a href="#extensions.kubeblocks.io/v1alpha1.AddonDefaultInstallSpecItem">AddonDefaultInstallSpecItem</a>, <a href="#extensions.kubeblocks.io/v1alpha1.InstallableSpec">InstallableSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>key</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.AddonSelectorKey">AddonSelectorKey</a></em></td><td><p>The selector key. Valid values are KubeVersion, KubeGitVersion.<br />&ldquo;KubeVersion&rdquo; the semver expression of Kubernetes versions, i.e., v1.24.<br />&ldquo;KubeGitVersion&rdquo; may contain distro. info., i.e., v1.24.4+eks.</p><br /></td></tr>
-<tr><td><code>operator</code><br/><em><a href="#extensions.kubeblocks.io/v1alpha1.LineSelectorOperator">LineSelectorOperator</a></em></td><td><p>Represents a key&rsquo;s relationship to a set of values.<br />Valid operators are Contains, NotIn, DoesNotContain, MatchRegex, and DoesNoteMatchRegex.</p><br /><br /><p>Possible enum values:<br /><code>&quot;Contains&quot;</code> line contains a string.<br /><code>&quot;DoesNotContain&quot;</code> line does not contain a string.<br /><code>&quot;MatchRegex&quot;</code> line contains a match to the regular expression.<br /><code>&quot;DoesNotMatchRegex&quot;</code> line does not contain a match to the regular expression.</p><br /></td></tr>
-<tr><td><code>values</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>An array of string values. It serves as an &ldquo;OR&rdquo; expression to the operator.</p><br /></td></tr>
-</tbody>
-</table>
-<hr/>
-<p><em>
-Generated with <code>gen-crd-api-reference-docs</code>
-</em></p>
diff --git a/i18n/zh-cn/developer-docs/api-reference/backup.md b/i18n/zh-cn/developer-docs/api-reference/backup.md
deleted file mode 100644
index ca2f699fe..000000000
--- a/i18n/zh-cn/developer-docs/api-reference/backup.md
+++ /dev/null
@@ -1,928 +0,0 @@
----
-title: 备份 API 参考
-description:  备份 API 参考
-keywords: [备份, API]
-sidebar_position: 2
-sidebar_label: 备份 API 参考
----
-<br />
-<p>Packages:</p>
-<ul>
-<li>
-<a href="#dataprotection.kubeblocks.io%2fv1alpha1">dataprotection.kubeblocks.io/v1alpha1</a>
-</li>
-</ul>
-<h2 id="dataprotection.kubeblocks.io/v1alpha1">dataprotection.kubeblocks.io/v1alpha1</h2>
-<div>
-</div>
-Resource Types:
-<ul><li>
-<a href="#dataprotection.kubeblocks.io/v1alpha1.Backup">Backup</a>
-</li><li>
-<a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>
-</li><li>
-<a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepo">BackupRepo</a>
-</li><li>
-<a href="#dataprotection.kubeblocks.io/v1alpha1.BackupTool">BackupTool</a>
-</li><li>
-<a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJob">RestoreJob</a>
-</li></ul>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.Backup">Backup</h3>
-<div>
-<p>Backup is the Schema for the backups API (defined by User).</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>apiVersion</code><br/>string</td><td><code>dataprotection.kubeblocks.io/v1alpha1</code></td></tr>
-<tr><td><code>kind</code><br/>string</td><td><code>Backup</code></td></tr>
-<tr><td><code>metadata</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">Kubernetes meta/v1.ObjectMeta</a></em></td><td>Refer to the Kubernetes API documentation for the fields of the<code>metadata</code> field.</td></tr>
-<tr><td><code>spec</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupSpec">BackupSpec</a></em></td><td><br/><br/><table><tr><td><code>backupPolicyName</code><br/><em>string</em></td><td><p>Which backupPolicy is applied to perform this backup</p><br /></td></tr>
-<tr><td><code>backupType</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupType">BackupType</a></em></td><td><p>Backup Type. datafile or logfile or snapshot. If not set, datafile is the default type.</p><br /></td></tr>
-<tr><td><code>parentBackupName</code><br/><em>string</em></td><td><em>(Optional)</em><p>if backupType is incremental, parentBackupName is required.</p><br /></td></tr></table></td></tr>
-<tr><td><code>status</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupStatus">BackupStatus</a></em></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</h3>
-<div>
-<p>BackupPolicy is the Schema for the backuppolicies API (defined by User)</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>apiVersion</code><br/>string</td><td><code>dataprotection.kubeblocks.io/v1alpha1</code></td></tr>
-<tr><td><code>kind</code><br/>string</td><td><code>BackupPolicy</code></td></tr>
-<tr><td><code>metadata</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">Kubernetes meta/v1.ObjectMeta</a></em></td><td>Refer to the Kubernetes API documentation for the fields of the<code>metadata</code> field.</td></tr>
-<tr><td><code>spec</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicySpec">BackupPolicySpec</a></em></td><td><br/><br/><table><tr><td><code>retention</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.RetentionSpec">RetentionSpec</a></em></td><td><em>(Optional)</em><p>retention describe how long the Backup should be retained. if not set, will be retained forever.</p><br /></td></tr>
-<tr><td><code>schedule</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.Schedule">Schedule</a></em></td><td><em>(Optional)</em><p>schedule policy for backup.</p><br /></td></tr>
-<tr><td><code>snapshot</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</a></em></td><td><em>(Optional)</em><p>the policy for snapshot backup.</p><br /></td></tr>
-<tr><td><code>datafile</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</a></em></td><td><em>(Optional)</em><p>the policy for datafile backup.</p><br /></td></tr>
-<tr><td><code>logfile</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</a></em></td><td><em>(Optional)</em><p>the policy for logfile backup.</p><br /></td></tr></table></td></tr>
-<tr><td><code>status</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicyStatus">BackupPolicyStatus</a></em></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupRepo">BackupRepo</h3>
-<div>
-<p>BackupRepo is the Schema for the backuprepos API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>apiVersion</code><br/>string</td><td><code>dataprotection.kubeblocks.io/v1alpha1</code></td></tr>
-<tr><td><code>kind</code><br/>string</td><td><code>BackupRepo</code></td></tr>
-<tr><td><code>metadata</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">Kubernetes meta/v1.ObjectMeta</a></em></td><td>Refer to the Kubernetes API documentation for the fields of the<code>metadata</code> field.</td></tr>
-<tr><td><code>spec</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepoSpec">BackupRepoSpec</a></em></td><td><br/><br/><table><tr><td><code>storageProviderRef</code><br/><em>string</em></td><td><p>The storage provider used by this backup repo.</p><br /></td></tr>
-<tr><td><code>volumeCapacity</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">Kubernetes resource.Quantity</a></em></td><td><em>(Optional)</em><p>The requested capacity for the PVC created by this backup repo.</p><br /></td></tr>
-<tr><td><code>pvReclaimPolicy</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#persistentvolumereclaimpolicy-v1-core">Kubernetes core/v1.PersistentVolumeReclaimPolicy</a></em></td><td><p>The reclaim policy for the PV created by this backup repo.</p><br /></td></tr>
-<tr><td><code>config</code><br/><em>map[string]string</em></td><td><em>(Optional)</em><p>Non-secret configurations for the storage provider.</p><br /></td></tr>
-<tr><td><code>credential</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#secretreference-v1-core">Kubernetes core/v1.SecretReference</a></em></td><td><em>(Optional)</em><p>A secret that contains the credentials needed by the storage provider.</p><br /></td></tr></table></td></tr>
-<tr><td><code>status</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepoStatus">BackupRepoStatus</a></em></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupTool">BackupTool</h3>
-<div>
-<p>BackupTool is the Schema for the backuptools API (defined by provider)</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>apiVersion</code><br/>string</td><td><code>dataprotection.kubeblocks.io/v1alpha1</code></td></tr>
-<tr><td><code>kind</code><br/>string</td><td><code>BackupTool</code></td></tr>
-<tr><td><code>metadata</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">Kubernetes meta/v1.ObjectMeta</a></em></td><td>Refer to the Kubernetes API documentation for the fields of the<code>metadata</code> field.</td></tr>
-<tr><td><code>spec</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolSpec">BackupToolSpec</a></em></td><td><br/><br/><table><tr><td><code>image</code><br/><em>string</em></td><td><p>Backup tool Container image name.</p><br /></td></tr>
-<tr><td><code>deployKind</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.DeployKind">DeployKind</a></em></td><td><p>which kind for run a backup tool, supported values: job, statefulSet.</p><br /></td></tr>
-<tr><td><code>type</code><br/><em>string</em></td><td><p>the type of backup tool, file or pitr</p><br /></td></tr>
-<tr><td><code>resources</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">Kubernetes core/v1.ResourceRequirements</a></em></td><td><em>(Optional)</em><p>Compute Resources required by this container.<br />Cannot be updated.</p><br /></td></tr>
-<tr><td><code>env</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#envvar-v1-core">[]Kubernetes core/v1.EnvVar</a></em></td><td><em>(Optional)</em><p>List of environment variables to set in the container.</p><br /></td></tr>
-<tr><td><code>envFrom</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#envfromsource-v1-core">[]Kubernetes core/v1.EnvFromSource</a></em></td><td><em>(Optional)</em><p>List of sources to populate environment variables in the container.<br />The keys defined within a source must be a C_IDENTIFIER. All invalid keys<br />will be reported as an event when the container is starting. When a key exists in multiple<br />sources, the value associated with the last source will take precedence.<br />Values defined by an Env with a duplicate key will take precedence.<br />Cannot be updated.</p><br /></td></tr>
-<tr><td><code>backupCommands</code><br/><em>[]string</em></td><td><p>Array of command that apps can do database backup.<br />from invoke args<br />the order of commands follows the order of array.</p><br /></td></tr>
-<tr><td><code>incrementalBackupCommands</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>Array of command that apps can do database incremental backup.<br />like xtrabackup, that can performs an incremental backup file.</p><br /></td></tr>
-<tr><td><code>physical</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.PhysicalConfig">PhysicalConfig</a></em></td><td><em>(Optional)</em><p>backup tool can support physical restore, in this case, restore must be RESTART database.</p><br /></td></tr>
-<tr><td><code>logical</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.LogicalConfig">LogicalConfig</a></em></td><td><em>(Optional)</em><p>backup tool can support logical restore, in this case, restore NOT RESTART database.</p><br /></td></tr></table></td></tr>
-<tr><td><code>status</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolStatus">
-BackupToolStatus</a></em></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.RestoreJob">RestoreJob</h3>
-<div>
-<p>RestoreJob is the Schema for the restorejobs API (defined by User)</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>apiVersion</code><br/>string</td><td><code>dataprotection.kubeblocks.io/v1alpha1</code></td></tr>
-<tr><td><code>kind</code><br/>string</td><td><code>RestoreJob</code></td></tr>
-<tr><td><code>metadata</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">Kubernetes meta/v1.ObjectMeta</a></em></td><td>Refer to the Kubernetes API documentation for the fields of the<code>metadata</code> field.</td></tr>
-<tr><td><code>spec</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJobSpec">RestoreJobSpec</a></em></td><td><br/><br/><table><tr><td><code>backupJobName</code><br/><em>string</em></td><td><p>Specified one backupJob to restore.</p><br /></td></tr>
-<tr><td><code>target</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.TargetCluster">TargetCluster</a></em></td><td><p>the target database workload to restore</p><br /></td></tr>
-<tr><td><code>targetVolumes</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#volume-v1-core">[]Kubernetes core/v1.Volume</a></em></td><td><p>array of restore volumes .</p><br /></td></tr>
-<tr><td><code>targetVolumeMounts</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#volumemount-v1-core">[]Kubernetes core/v1.VolumeMount</a></em></td><td><p>array of restore volume mounts .</p><br /></td></tr>
-<tr><td><code>onFailAttempted</code><br/><em>int32</em></td><td><em>(Optional)</em><p>count of backup stop retries on fail.</p><br /></td></tr></table></td></tr>
-<tr><td><code>status</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJobStatus">RestoreJobStatus</a></em></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupLogStatus">BackupLogStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.ManifestsStatus">ManifestsStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>startTime</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>startTime records the start time of data logging.</p><br /></td></tr>
-<tr><td><code>stopTime</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>stopTime records the stop time of data logging.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupMethod">BackupMethod(<code>string</code> alias)</h3>
-<div>
-<p>BackupMethod the backup method</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;backupTool&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;snapshot&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPhase">BackupPhase(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupStatus">BackupStatus</a>)
-</p>
-<div>
-<p>BackupPhase The current phase. Valid values are New, InProgress, Completed, Failed.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Completed&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Deleting&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Failed&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;InProgress&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;New&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Running&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPolicyHook">BackupPolicyHook</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</a>)
-</p>
-<div>
-<p>BackupPolicyHook defines for the database execute commands before and after backup.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>preCommands</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>pre backup to perform commands</p><br /></td></tr>
-<tr><td><code>postCommands</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>post backup to perform commands</p><br /></td></tr>
-<tr><td><code>image</code><br/><em>string</em></td><td><em>(Optional)</em><p>exec command with image</p><br /></td></tr>
-<tr><td><code>containerName</code><br/><em>string</em></td><td><em>(Optional)</em><p>which container can exec command</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPolicyPhase">BackupPolicyPhase(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicyStatus">BackupPolicyStatus</a>)
-</p>
-<div>
-<p>BackupPolicyPhase defines phases for BackupPolicy CR.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Available&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Failed&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPolicySecret">BackupPolicySecret</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.TargetCluster">TargetCluster</a>)
-</p>
-<div>
-<p>BackupPolicySecret defines for the target database secret that backup tool can connect.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>name</code><br/><em>string</em></td><td><p>the secret name</p><br /></td></tr>
-<tr><td><code>usernameKey</code><br/><em>string</em></td><td><p>usernameKey the map key of the user in the connection credential secret</p><br /></td></tr>
-<tr><td><code>passwordKey</code><br/><em>string</em></td><td><p>passwordKey the map key of the password in the connection credential secret</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPolicySpec">BackupPolicySpec</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>)
-</p>
-<div>
-<p>BackupPolicySpec defines the desired state of BackupPolicy</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>retention</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.RetentionSpec">RetentionSpec</a></em></td><td><em>(Optional)</em><p>retention describe how long the Backup should be retained. if not set, will be retained forever.</p><br /></td></tr>
-<tr><td><code>schedule</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.Schedule">Schedule</a></em></td><td><em>(Optional)</em><p>schedule policy for backup.</p><br /></td></tr>
-<tr><td><code>snapshot</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</a></em></td><td><em>(Optional)</em><p>the policy for snapshot backup.</p><br /></td></tr>
-<tr><td><code>datafile</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">
-CommonBackupPolicy</a></em></td><td><em>(Optional)</em><p>the policy for datafile backup.</p><br /></td></tr>
-<tr><td><code>logfile</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</a></em></td><td><em>(Optional)</em><p>the policy for logfile backup.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupPolicyStatus">BackupPolicyStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>)
-</p>
-<div>
-<p>BackupPolicyStatus defines the observed state of BackupPolicy</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>observedGeneration</code><br/><em>int64</em></td><td><em>(Optional)</em><p>observedGeneration is the most recent generation observed for this<br />BackupPolicy. It corresponds to the Cluster&rsquo;s generation, which is<br />updated on mutation by the API Server.</p><br /></td></tr>
-<tr><td><code>phase</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicyPhase">BackupPolicyPhase</a></em></td><td><em>(Optional)</em><p>backup policy phase valid value: Available, Failed.</p><br /></td></tr>
-<tr><td><code>failureReason</code><br/><em>string</em></td><td><em>(Optional)</em><p>the reason if backup policy check failed.</p><br /></td></tr>
-<tr><td><code>lastScheduleTime</code><br/><em><a href="https://kubernetes.io/docs/reference/generatedkubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>information when was the last time the job was successfully scheduled.</p><br /></td></tr>
-<tr><td><code>lastSuccessfulTime</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>information when was the last time the job successfully completed.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupRepoPhase">BackupRepoPhase(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepoStatus">BackupRepoStatus</a>)
-</p>
-<div>
-<p>BackupRepoPhase defines phases for BackupRepo CR.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Deleting&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Failed&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;PreChecking&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Ready&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupRepoSpec">BackupRepoSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepo">BackupRepo</a>)
-</p>
-<div>
-<p>BackupRepoSpec defines the desired state of BackupRepo</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>storageProviderRef</code><br/><em>string</em></td><td><p>The storage provider used by this backup repo.</p><br /></td></tr>
-<tr><td><code>volumeCapacity</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">Kubernetes resource.Quantity</a></em></td><td><em>(Optional)</em><p>The requested capacity for the PVC created by this backup repo.</p><br /></td></tr>
-<tr><td><code>pvReclaimPolicy</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#persistentvolumereclaimpolicy-v1-core">Kubernetes core/v1.PersistentVolumeReclaimPolicy</a></em></td><td><p>The reclaim policy for the PV created by this backup repo.</p><br /></td></tr>
-<tr><td><code>config</code><br/><em>map[string]string</em></td><td><em>(Optional)</em><p>Non-secret configurations for the storage provider.</p><br /></td></tr>
-<tr><td><code>credential</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#secretreference-v1-core">Kubernetes core/v1.SecretReference</a></em></td><td><em>(Optional)</em><p>A secret that contains the credentials needed by the storage provider.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupRepoStatus">BackupRepoStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepo">BackupRepo</a>)
-</p>
-<div>
-<p>BackupRepoStatus defines the observed state of BackupRepo</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>phase</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupRepoPhase">BackupRepoPhase</a></em></td><td><em>(Optional)</em><p>Backup repo reconciliation phases. Valid values are PreChecking, Failed, Ready, Deleting.</p><br /></td></tr>
-<tr><td><code>conditions</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#condition-v1-meta">[]Kubernetes meta/v1.Condition</a></em></td><td><em>(Optional)</em><p>conditions describes the current state of the repo.</p><br /></td></tr>
-<tr><td><code>observedGeneration</code><br/><em>int64</em></td><td><em>(Optional)</em><p>observedGeneration is the latest generation observed by the controller.</p><br /></td></tr>
-<tr><td><code>generatedCSIDriverSecret</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#secretreference-v1-core">Kubernetes core/v1.SecretReference</a></em></td><td><em>(Optional)</em><p>generatedCSIDriverSecret references the generated secret used by the CSI driver.</p><br /></td></tr>
-<tr><td><code>generatedStorageClassName</code><br/><em>string</em></td><td><em>(Optional)</em><p>generatedStorageClassName indicates the generated storage class name.</p><br /></td></tr>
-<tr><td><code>backupPVCName</code><br/><em>string</em></td><td><em>(Optional)</em><p>backupPVCName is the name of the PVC used to store backup data.</p><br /></td></tr>
-<tr><td><code>isDefault</code><br/><em>bool</em></td><td><em>(Optional)</em><p>isDefault indicates whether this backup repo is the default one.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupSnapshotStatus">BackupSnapshotStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.ManifestsStatus">ManifestsStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>volumeSnapshotName</code><br/><em>string</em></td><td><em>(Optional)</em><p>volumeSnapshotName records the volumeSnapshot name.</p><br /></td></tr>
-<tr><td><code>volumeSnapshotContentName</code><br/><em>string</em></td><td><em>(Optional)</em><p>volumeSnapshotContentName specifies the name of a pre-existing VolumeSnapshotContent<br />object representing an existing volume snapshot.<br />This field should be set if the snapshot already exists and only needs a representation in Kubernetes.<br />This field is immutable.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupSpec">BackupSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.Backup">Backup</a>)
-</p>
-<div>
-<p>BackupSpec defines the desired state of Backup.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>backupPolicyName</code><br/><em>string</em></td><td><p>Which backupPolicy is applied to perform this backup</p><br /></td></tr>
-<tr><td><code>backupType</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupType">BackupType</a></em></td><td><p>Backup Type. datafile or logfile or snapshot. If not set, datafile is the default type.</p><br /></td></tr>
-<tr><td><code>parentBackupName</code><br/><em>string</em></td><td><em>(Optional)</em><p>if backupType is incremental, parentBackupName is required.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupStatus">BackupStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.Backup">Backup</a>)
-</p>
-<div>
-<p>BackupStatus defines the observed state of Backup.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>phase</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPhase">BackupPhase</a></em></td><td><em>(Optional)</em></td></tr>
-<tr><td><code>parentBackupName</code><br/><em>string</em></td><td><em>(Optional)</em><p>Records parentBackupName if backupType is incremental.</p><br /></td></tr>
-<tr><td><code>expiration</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>The date and time when the Backup is eligible for garbage collection.<br />&lsquo;null&rsquo; means the Backup is NOT be cleaned except delete manual.</p><br /></td></tr>
-<tr><td><code>startTimestamp</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>Date/time when the backup started being processed.</p><br /></td></tr>
-<tr><td><code>completionTimestamp</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>Date/time when the backup finished being processed.</p><br /></td></tr>
-<tr><td><code>duration</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#duration-v1-meta">Kubernetes meta/v1.Duration</a></em></td><td><em>(Optional)</em><p>The duration time of backup execution.<br />When converted to a string, the form is &ldquo;1h2m0.5s&rdquo;.</p><br /></td></tr>
-<tr><td><code>totalSize</code><br/><em>string</em></td><td><em>(Optional)</em><p>Backup total size.<br />A string with capacity units in the form of &ldquo;1Gi&rdquo;, &ldquo;1Mi&rdquo;, &ldquo;1Ki&rdquo;.</p><br /></td></tr>
-<tr><td><code>failureReason</code><br/><em>string</em></td><td><em>(Optional)</em><p>The reason for a backup failure.</p><br /></td></tr>
-<tr><td><code>persistentVolumeClaimName</code><br/><em>string</em></td><td><em>(Optional)</em><p>remoteVolume saves the backup data.</p><br /></td></tr>
-<tr><td><code>logFilePersistentVolumeClaimName</code><br/><em>string</em></td><td><em>(Optional)</em><p>logFilePersistentVolumeClaimName saves the logfile backup data.</p><br /></td></tr>
-<tr><td><code>backupToolName</code><br/><em>string</em></td><td><em>(Optional)</em><p>backupToolName references the backup tool name.</p><br /></td></tr>
-<tr><td><code>sourceCluster</code><br/><em>string</em></td><td><p>sourceCluster records the source cluster information for this backup.</p><br /></td></tr>
-<tr><td><code>availableReplicas</code><br/><em>int32</em></td><td><em>(Optional)</em><p>availableReplicas available replicas for statefulSet which created by backup.</p><br /></td></tr>
-<tr><td><code>manifests</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.ManifestsStatus">ManifestsStatus</a></em></td><td><em>(Optional)</em><p>manifests determines the backup metadata info.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupStatusUpdate">BackupStatusUpdate</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>path</code><br/><em>string</em></td><td><em>(Optional)</em><p>specify the json path of backup object for patch.<br />example: manifests.backupLog &ndash; means patch the backup json path of status.manifests.backupLog.</p><br /></td></tr>
-<tr><td><code>containerName</code><br/><em>string</em></td><td><em>(Optional)</em><p>which container name that kubectl can execute.</p><br /></td></tr>
-<tr><td><code>script</code><br/><em>string</em></td><td><em>(Optional)</em><p>the shell Script commands to collect backup status metadata.<br />The script must exist in the container of ContainerName and the output format must be set to JSON.<br />Note that outputting to stderr may cause the result format to not be in JSON.</p><br /></td></tr>
-<tr><td><code>useTargetPodServiceAccount</code><br/><em>bool</em></td><td><em>(Optional)</em><p>useTargetPodServiceAccount defines whether this job requires the service account of the backup target pod.<br />if true, will use the service account of the backup target pod. otherwise, will use the system service account.</p><br /></td></tr>
-<tr><td><code>updateStage</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupStatusUpdateStage">BackupStatusUpdateStage</a></em></td><td><p>when to update the backup status, pre: before backup, post: after backup</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupStatusUpdateStage">BackupStatusUpdateStage(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupStatusUpdate">BackupStatusUpdate</a>)
-</p>
-<div>
-<p>BackupStatusUpdateStage defines the stage of backup status update.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;post&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;pre&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupToolManifestsStatus">BackupToolManifestsStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.ManifestsStatus">ManifestsStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>filePath</code><br/><em>string</em></td><td><em>(Optional)</em><p>filePath records the file path of backup.</p><br /></td></tr>
-<tr><td><code>logFilePath</code><br/><em>string</em></td><td><em>(Optional)</em><p>logFilePath records the log file path of backup.</p><br /></td></tr>
-<tr><td><code>volumeName</code><br/><em>string</em></td><td><em>(Optional)</em><p>volumeName records volume name of backup data pvc.</p><br /></td></tr>
-<tr><td><code>uploadTotalSize</code><br/><em>string</em></td><td><em>(Optional)</em><p>Backup upload total size.<br />A string with capacity units in the form of &ldquo;1Gi&rdquo;, &ldquo;1Mi&rdquo;, &ldquo;1Ki&rdquo;.</p><br /></td></tr>
-<tr><td><code>checksum</code><br/><em>string</em></td><td><em>(Optional)</em><p>checksum of backup file, generated by md5 or sha1 or sha256.</p><br /></td></tr>
-<tr><td><code>checkpoint</code><br/><em>string</em></td><td><em>(Optional)</em><p>backup checkpoint, for incremental backup.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupToolRestoreCommand">BackupToolRestoreCommand</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.LogicalConfig">LogicalConfig</a>, <a href="#dataprotection.kubeblocks.io/v1alpha1.PhysicalConfig">PhysicalConfig</a>)
-</p>
-<div>
-<p>BackupToolRestoreCommand defines the restore commands of BackupTool</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>restoreCommands</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>Array of command that apps can perform database restore.<br />like xtrabackup, that can performs restore mysql from files.</p><br /></td></tr>
-<tr><td><code>incrementalRestoreCommands</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>Array of incremental restore commands.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupToolSpec">BackupToolSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupTool">BackupTool</a>)
-</p>
-<div>
-<p>BackupToolSpec defines the desired state of BackupTool</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>image</code><br/><em>string</em></td><td><p>Backup tool Container image name.</p><br /></td></tr>
-<tr><td><code>deployKind</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.DeployKind">DeployKind</a></em></td><td><p>which kind for run a backup tool, supported values: job, statefulSet.</p><br /></td></tr>
-<tr><td><code>type</code><br/><em>string</em></td><td><p>the type of backup tool, file or pitr</p><br /></td></tr>
-<tr><td><code>resources</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">Kubernetes core/v1.ResourceRequirements</a></em></td><td><em>(Optional)</em><p>Compute Resources required by this container.<br />Cannot be updated.</p><br /></td></tr>
-<tr><td><code>env</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#envvar-v1-core">[]Kubernetes core/v1.EnvVar</a></em></td><td><em>(Optional)</em><p>List of environment variables to set in the container.</p><br /></td></tr>
-<tr><td><code>envFrom</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#envfromsource-v1-core">[]Kubernetes core/v1.EnvFromSource</a></em></td><td><em>(Optional)</em><p>List of sources to populate environment variables in the container.<br />The keys defined within a source must be a C_IDENTIFIER. All invalid keys<br />will be reported as an event when the container is starting. When a key exists in multiple<br />sources, the value associated with the last source will take precedence.<br />Values defined by an Env with a duplicate key will take precedence.<br />Cannot be updated.</p><br /></td></tr>
-<tr><td><code>backupCommands</code><br/><em>[]string</em></td><td><p>Array of command that apps can do database backup.<br />from invoke args<br />the order of commands follows the order of array.</p><br /></td></tr>
-<tr><td><code>incrementalBackupCommands</code><br/><em>[]string</em></td><td><em>(Optional)</em><p>Array of command that apps can do database incremental backup.<br />like xtrabackup, that can performs an incremental backup file.</p><br /></td></tr>
-<tr><td><code>physical</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.PhysicalConfig">PhysicalConfig</a></em></td><td><em>(Optional)</em><p>backup tool can support physical restore, in this case, restore must be RESTART database.</p><br /></td></tr>
-<tr><td><code>logical</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.LogicalConfig">LogicalConfig</a></em></td><td><em>(Optional)</em><p>backup tool can support logical restore, in this case, restore NOT RESTART database.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupToolStatus">BackupToolStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupTool">BackupTool</a>)
-</p>
-<div>
-<p>BackupToolStatus defines the observed state of BackupTool</p><br />
-</div>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BackupType">BackupType(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupSpec">BackupSpec</a>)
-</p>
-<div>
-<p>BackupType the backup type, marked backup set is datafile or logfile or snapshot.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;datafile&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;logfile&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;snapshot&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BaseBackupType">BaseBackupType(<code>string</code> alias)</h3>
-<div>
-<p>BaseBackupType the base backup type.</p><br />
-</div>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</a>, <a href="#dataprotection.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>target</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.TargetCluster">TargetCluster</a></em></td><td><p>target database cluster for backup.</p><br /></td></tr>
-<tr><td><code>backupsHistoryLimit</code><br/><em>int32</em></td><td><em>(Optional)</em><p>the number of automatic backups to retain. Value must be non-negative integer.<br />0 means NO limit on the number of backups.</p><br /></td></tr>
-<tr><td><code>onFailAttempted</code><br/><em>int32</em></td><td><em>(Optional)</em><p>count of backup stop retries on fail.</p><br /></td></tr>
-<tr><td><code>backupStatusUpdates</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupStatusUpdate">[]BackupStatusUpdate</a></em></td><td><em>(Optional)</em><p>define how to update metadata for backup status.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicySpec">BackupPolicySpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>BasePolicy</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</a></em></td><td><p>(Members of <code>BasePolicy</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>persistentVolumeClaim</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.PersistentVolumeClaim">PersistentVolumeClaim</a></em></td><td><em>(Optional)</em><p>refer to PersistentVolumeClaim and the backup data will be stored in the corresponding persistent volume.</p><br /></td></tr>
-<tr><td><code>backupRepoName</code><br/><em>string</em></td><td><em>(Optional)</em><p>refer to BackupRepo and the backup data will be stored in the corresponding repo.</p><br /></td></tr>
-<tr><td><code>backupToolName</code><br/><em>string</em></td><td><p>which backup tool to perform database backup, only support one tool.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.CreatePVCPolicy">CreatePVCPolicy(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.PersistentVolumeClaim">PersistentVolumeClaim</a>)
-</p>
-<div>
-<p>CreatePVCPolicy the policy how to create the PersistentVolumeClaim for backup.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;IfNotPresent&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Never&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.DeployKind">DeployKind(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolSpec">BackupToolSpec</a>)
-</p>
-<div>
-<p>DeployKind which kind for run a backup tool.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;job&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;statefulSet&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.LogicalConfig">LogicalConfig</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolSpec">BackupToolSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>BackupToolRestoreCommand</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolRestoreCommand">BackupToolRestoreCommand</a></em></td><td><p>(Members of <code>BackupToolRestoreCommand</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>podScope</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.PodRestoreScope">PodRestoreScope</a></em></td><td><em>(Optional)</em><p>podScope defines the pod scope for restore from backup, supported values:<br />- &lsquo;All&rsquo; will exec the restore command on all pods.<br />- &lsquo;ReadWrite&rsquo; will pick a ReadWrite pod to exec the restore command.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.ManifestsStatus">ManifestsStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupStatus">BackupStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>backupLog</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupLogStatus">BackupLogStatus</a></em></td><td><em>(Optional)</em><p>backupLog records startTime and stopTime of data logging.</p><br /></td></tr>
-<tr><td><code>target</code><br/><em>string</em></td><td><em>(Optional)</em><p>target records the target cluster metadata string, which is in JSON format.</p><br /></td></tr>
-<tr><td><code>backupSnapshot</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupSnapshotStatus">BackupSnapshotStatus</a></em></td><td><em>(Optional)</em><p>snapshot records the volume snapshot metadata.</p><br /></td></tr>
-<tr><td><code>backupTool</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolManifestsStatus">BackupToolManifestsStatus</a></em></td><td><em>(Optional)</em><p>backupTool records information about backup files generated by the backup tool.</p><br /></td></tr>
-<tr><td><code>userContext</code><br/><em>map[string]string</em></td><td><em>(Optional)</em><p>userContext stores some loosely structured and extensible information.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.PersistentVolumeClaim">PersistentVolumeClaim</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>name</code><br/><em>string</em></td><td><em>(Optional)</em><p>the name of PersistentVolumeClaim to store backup data.</p><br /></td></tr>
-<tr><td><code>storageClassName</code><br/><em>string</em></td><td><em>(Optional)</em><p>storageClassName is the name of the StorageClass required by the claim.</p><br /></td></tr>
-<tr><td><code>initCapacity</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">Kubernetes resource.Quantity</a></em></td><td><em>(Optional)</em><p>initCapacity represents the init storage size of the PersistentVolumeClaim which should be created if not exist.<br />and the default value is 100Gi if it is empty.</p><br /></td></tr>
-<tr><td><code>createPolicy</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.CreatePVCPolicy">CreatePVCPolicy</a></em></td><td><em>(Optional)</em><p>createPolicy defines the policy for creating the PersistentVolumeClaim, enum values:<br />- Never: do nothing if the PersistentVolumeClaim not exists.<br />- IfNotPresent: create the PersistentVolumeClaim if not present and the accessModes only contains &lsquo;ReadWriteMany&rsquo;.</p><br /></td></tr>
-<tr><td><code>persistentVolumeConfigMap</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.PersistentVolumeConfigMap">PersistentVolumeConfigMap</a></em></td><td><em>(Optional)</em><p>persistentVolumeConfigMap references the configmap which contains a persistentVolume template.<br />key must be &ldquo;persistentVolume&rdquo; and value is the &ldquo;PersistentVolume&rdquo; struct.<br />support the following built-in Objects:<br />- $(GENERATE_NAME): generate a specific format &ldquo;<code>PVC NAME</code>-<code>PVC NAMESPACE</code>&rdquo;.<br />if the PersistentVolumeClaim not exists and CreatePolicy is &ldquo;IfNotPresent&rdquo;, the controller<br />will create it by this template. this is a mutually exclusive setting with &ldquo;storageClassName&rdquo;.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.PersistentVolumeConfigMap">PersistentVolumeConfigMap</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.PersistentVolumeClaim">PersistentVolumeClaim</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>name</code><br/><em>string</em></td><td><p>the name of the persistentVolume ConfigMap.</p><br /></td></tr>
-<tr><td><code>namespace</code><br/><em>string</em></td><td><p>the namespace of the persistentVolume ConfigMap.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.PhysicalConfig">PhysicalConfig</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolSpec">BackupToolSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>BackupToolRestoreCommand</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupToolRestoreCommand">BackupToolRestoreCommand</a></em></td><td><p>(Members of <code>BackupToolRestoreCommand</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>relyOnLogfile</code><br/><em>bool</em></td><td><em>(Optional)</em><p>relyOnLogfile defines whether the current recovery relies on log files</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.PodRestoreScope">PodRestoreScope(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.LogicalConfig">LogicalConfig</a>)
-</p>
-<div>
-<p>PodRestoreScope defines the scope pod for restore from backup.</p><br />
-</div>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.RestoreJobPhase">RestoreJobPhase(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJobStatus">RestoreJobStatus</a>)
-</p>
-<div>
-<p>RestoreJobPhase The current phase. Valid values are New, InProgressPhy, InProgressLogic, Completed, Failed.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><p>&#34;Completed&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;Failed&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;InProgressLogic&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;InProgressPhy&#34;</p></td><td></td></tr>
-<tr><td><p>&#34;New&#34;</p></td><td></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.RestoreJobSpec">RestoreJobSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJob">RestoreJob</a>)
-</p>
-<div>
-<p>RestoreJobSpec defines the desired state of RestoreJob</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>backupJobName</code><br/><em>string</em></td><td><p>Specified one backupJob to restore.</p><br /></td></tr>
-<tr><td><code>target</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.TargetCluster">TargetCluster</a></em></td><td><p>the target database workload to restore</p><br /></td></tr>
-<tr><td><code>targetVolumes</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#volume-v1-core">[]Kubernetes core/v1.Volume</a></em></td><td><p>array of restore volumes .</p><br /></td></tr>
-<tr><td><code>targetVolumeMounts</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#volumemount-v1-core">[]Kubernetes core/v1.VolumeMount</a></em></td><td><p>array of restore volume mounts .</p><br /></td></tr>
-<tr><td><code>onFailAttempted</code><br/><em>int32</em></td><td><em>(Optional)</em><p>count of backup stop retries on fail.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.RestoreJobStatus">RestoreJobStatus</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJob">RestoreJob</a>)
-</p>
-<div>
-<p>RestoreJobStatus defines the observed state of RestoreJob</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>phase</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJobPhase">RestoreJobPhase</a></em></td><td><em>(Optional)</em></td></tr>
-<tr><td><code>expiration</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>The date and time when the Backup is eligible for garbage collection.<br />&lsquo;null&rsquo; means the Backup is NOT be cleaned except delete manual.</p><br /></td></tr>
-<tr><td><code>startTimestamp</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>Date/time when the backup started being processed.</p><br /></td></tr>
-<tr><td><code>completionTimestamp</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">Kubernetes meta/v1.Time</a></em></td><td><em>(Optional)</em><p>Date/time when the backup finished being processed.</p><br /></td></tr>
-<tr><td><code>failureReason</code><br/><em>string</em></td><td><em>(Optional)</em><p>Job failed reason.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.RetentionSpec">RetentionSpec</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicySpec">BackupPolicySpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>ttl</code><br/><em>string</em></td><td><em>(Optional)</em><p>ttl is a time string ending with the &rsquo;d&rsquo;|&rsquo;D&rsquo;|&lsquo;h&rsquo;|&lsquo;H&rsquo; character to describe how long<br />the Backup should be retained. if not set, will be retained forever.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.Schedule">Schedule</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicySpec">BackupPolicySpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>startingDeadlineMinutes</code><br/><em>int64</em></td><td><em>(Optional)</em><p>startingDeadlineMinutes defines the deadline in minutes for starting the backup job<br />if it misses scheduled time for any reason.</p><br /></td></tr>
-<tr><td><code>snapshot</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.SchedulePolicy">SchedulePolicy</a></em></td><td><em>(Optional)</em><p>schedule policy for snapshot backup.</p><br /></td></tr>
-<tr><td><code>datafile</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.SchedulePolicy">SchedulePolicy</a></em></td><td><em>(Optional)</em><p>schedule policy for datafile backup.</p><br /></td></tr>
-<tr><td><code>logfile</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.SchedulePolicy">SchedulePolicy</a></em></td><td><em>(Optional)</em><p>schedule policy for logfile backup.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.SchedulePolicy">SchedulePolicy</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.Schedule">Schedule</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>cronExpression</code><br/><em>string</em></td><td><p>the cron expression for schedule, the timezone is in UTC. see <a href="https://en.wikipedia.org/wiki/Cron">https://en.wikipedia.org/wiki/Cron</a>.</p><br /></td></tr>
-<tr><td><code>enable</code><br/><em>bool</em></td><td><p>enable or disable the schedule.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicySpec">BackupPolicySpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>BasePolicy</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</a></em></td><td><p>(Members of <code>BasePolicy</code> are embedded into this type.)</p></td></tr>
-<tr><td><code>hooks</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicyHook">BackupPolicyHook</a></em></td><td><em>(Optional)</em><p>execute hook commands for backup.</p><br /></td></tr>
-</tbody>
-</table>
-<h3 id="dataprotection.kubeblocks.io/v1alpha1.TargetCluster">TargetCluster</h3>
-<p>
-(<em>Appears on:</em><a href="#dataprotection.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</a>, <a href="#dataprotection.kubeblocks.io/v1alpha1.RestoreJobSpec">RestoreJobSpec</a>)
-</p>
-<div>
-<p>TargetCluster TODO (dsj): target cluster need redefined from Cluster API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr><td><code>labelsSelector</code><br/><em><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#labelselector-v1-meta">Kubernetes meta/v1.LabelSelector</a></em></td><td><p>labelsSelector is used to find matching pods.<br />Pods that match this label selector are counted to determine the number of pods<br />in their corresponding topology domain.</p><br /></td></tr>
-<tr><td><code>secret</code><br/><em><a href="#dataprotection.kubeblocks.io/v1alpha1.BackupPolicySecret">BackupPolicySecret</a></em></td><td><em>(Optional)</em><p>secret is used to connect to the target database cluster.<br />If not set, secret will be inherited from backup policy template.<br />if still not set, the controller will check if any system account for dataprotection has been created.</p><br /></td></tr>
-</tbody>
-</table>
-<hr/>
-<p><em>
-Generated with <code>gen-crd-api-reference-docs</code>
-</em></p>
diff --git a/i18n/zh-cn/developer-docs/api-reference/cluster.md b/i18n/zh-cn/developer-docs/api-reference/cluster.md
deleted file mode 100644
index f33bc8d1f..000000000
--- a/i18n/zh-cn/developer-docs/api-reference/cluster.md
+++ /dev/null
@@ -1,10180 +0,0 @@
----
-title: 集群 API 参考
-description: 集群 API 参考
-keywords: [集群, API]
-sidebar_position: 1
-sidebar_label: 集群 API 参考
----
-<br />
-<p>Packages:</p>
-<ul>
-<li>
-<a href="#apps.kubeblocks.io%2fv1alpha1">apps.kubeblocks.io/v1alpha1</a>
-</li>
-</ul>
-<h2 id="apps.kubeblocks.io/v1alpha1">apps.kubeblocks.io/v1alpha1</h2>
-<div>
-</div>
-Resource Types:
-<ul><li>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyTemplate">BackupPolicyTemplate</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.Cluster">Cluster</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinition">ClusterDefinition</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterVersion">ClusterVersion</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinition">ComponentClassDefinition</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentResourceConstraint">ComponentResourceConstraint</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraint">ConfigConstraint</a>
-</li><li>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsRequest">OpsRequest</a>
-</li></ul>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupPolicyTemplate">BackupPolicyTemplate
-</h3>
-<div>
-<p>BackupPolicyTemplate is the Schema for the BackupPolicyTemplates API (defined by provider)</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>BackupPolicyTemplate</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyTemplateSpec">
-BackupPolicyTemplateSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>clusterDefinitionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>clusterDefinitionRef references ClusterDefinition name, this is an immutable attribute.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backupPolicies</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupPolicy">
-[]BackupPolicy
-</a>
-</em>
-</td>
-<td>
-<p>backupPolicies is a list of backup policy template for the specified componentDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>identifier</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Identifier is a unique identifier for this BackupPolicyTemplate.<br />this identifier will be the suffix of the automatically generated backupPolicy name.<br />and must be added when multiple BackupPolicyTemplates exist,<br />otherwise the generated backupPolicy override will occur.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyTemplateStatus">
-BackupPolicyTemplateStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Cluster">Cluster
-</h3>
-<div>
-<p>Cluster is the Schema for the clusters API.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>Cluster</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">
-ClusterSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>clusterDefinitionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Cluster referencing ClusterDefinition name. This is an immutable attribute.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>clusterVersionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Cluster referencing ClusterVersion name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>terminationPolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TerminationPolicyType">
-TerminationPolicyType
-</a>
-</em>
-</td>
-<td>
-<p>Cluster termination policy. Valid values are DoNotTerminate, Halt, Delete, WipeOut.<br />DoNotTerminate will block delete operation.<br />Halt will delete workload resources such as statefulset, deployment workloads but keep PVCs.<br />Delete is based on Halt and deletes PVCs.<br />WipeOut is based on Delete and wipe out all volume snapshots and snapshot data from backup storage location.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentSpecs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">
-[]ClusterComponentSpec
-</a>
-</em>
-</td>
-<td>
-<p>List of componentSpecs you want to replace in ClusterDefinition and ClusterVersion. It will replace the field in ClusterDefinition&rsquo;s and ClusterVersion&rsquo;s component if type is matching.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tenancy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TenancyType">
-TenancyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>tenancy describes how pods are distributed across node.<br />SharedNode means multiple pods may share the same node.<br />DedicatedNode means each pod runs on their own dedicated node.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>availabilityPolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.AvailabilityPolicyType">
-AvailabilityPolicyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>availabilityPolicy describes the availability policy, including zone, node, and none.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>affinity</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Affinity">
-Affinity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>affinity is a group of affinity scheduling rules.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tolerations</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#toleration-v1-core">
-[]Kubernetes core/v1.Toleration
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>tolerations are attached to tolerate any taint that matches the triple <code>key,value,effect</code> using the matching operator <code>operator</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>replicas</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>replicas specifies the replicas of the first componentSpec, if the replicas of the first componentSpec is specified, this value will be ignored.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterResources">
-ClusterResources
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>resources specifies the resources of the first componentSpec, if the resources of the first componentSpec is specified, this value will be ignored.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>storage</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterStorage">
-ClusterStorage
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>storage specifies the storage of the first componentSpec, if the storage of the first componentSpec is specified, this value will be ignored.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>monitor</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterMonitor">
-ClusterMonitor
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>monitor specifies the configuration of monitor</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>network</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterNetwork">
-ClusterNetwork
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>network specifies the configuration of network</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backup</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterBackup">
-ClusterBackup
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cluster backup configuration.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterStatus">
-ClusterStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterDefinition">ClusterDefinition
-</h3>
-<div>
-<p>ClusterDefinition is the Schema for the clusterdefinitions API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>ClusterDefinition</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionSpec">
-ClusterDefinitionSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Cluster definition type defines well known application cluster type, e.g. mysql/redis/mongodb</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentDefs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">
-[]ClusterComponentDefinition
-</a>
-</em>
-</td>
-<td>
-<p>componentDefs provides cluster components definitions.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>connectionCredential</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Connection credential template used for creating a connection credential<br />secret for cluster.apps.kubeblocks.io object.</p><br /><br /><p>Built-in objects are:<br />- <code>$(RANDOM_PASSWD)</code> - random 8 characters.<br />- <code>$(UUID)</code> - generate a random UUID v4 string.<br />- <code>$(UUID_B64)</code> - generate a random UUID v4 BASE64 encoded string.<br />- <code>$(UUID_STR_B64)</code> - generate a random UUID v4 string then BASE64 encoded.<br />- <code>$(UUID_HEX)</code> - generate a random UUID v4 HEX representation.<br />- <code>$(HEADLESS_SVC_FQDN)</code> - headless service FQDN placeholder, value pattern - $(CLUSTER_NAME)-$(1ST_COMP_NAME)-headless.$(NAMESPACE).svc,<br />   where 1ST_COMP_NAME is the 1st component that provide <code>ClusterDefinition.spec.componentDefs[].service</code> attribute;<br />- <code>$(SVC_FQDN)</code> - service FQDN  placeholder, value pattern - $(CLUSTER_NAME)-$(1ST_COMP_NAME).$(NAMESPACE).svc,<br />   where 1ST_COMP_NAME is the 1st component that provide <code>ClusterDefinition.spec.componentDefs[].service</code> attribute;<br />- <code>$(SVC_PORT_&#123;PORT-NAME&#125;)</code> - a ServicePort&rsquo;s port value with specified port name, i.e, a servicePort JSON struct:<br />   <code>&#123;&quot;name&quot;: &quot;mysql&quot;, &quot;targetPort&quot;: &quot;mysqlContainerPort&quot;, &quot;port&quot;: 3306&#125;</code>, and &ldquo;$(SVC_PORT_mysql)&rdquo; in the<br />   connection credential value is 3306.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionStatus">
-ClusterDefinitionStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterVersion">ClusterVersion
-</h3>
-<div>
-<p>ClusterVersion is the Schema for the ClusterVersions API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>ClusterVersion</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterVersionSpec">
-ClusterVersionSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>clusterDefinitionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>ref ClusterDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentVersions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">
-[]ClusterComponentVersion
-</a>
-</em>
-</td>
-<td>
-<p>List of components&rsquo; containers versioning context, i.e., container image ID, container commands, args., and environments.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterVersionStatus">
-ClusterVersionStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentClassDefinition">ComponentClassDefinition
-</h3>
-<div>
-<p>ComponentClassDefinition is the Schema for the componentclassdefinitions API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>ComponentClassDefinition</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinitionSpec">
-ComponentClassDefinitionSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>groups</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClassGroup">
-[]ComponentClassGroup
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>group defines a list of class series that conform to the same constraint.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinitionStatus">
-ComponentClassDefinitionStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentResourceConstraint">ComponentResourceConstraint
-</h3>
-<div>
-<p>ComponentResourceConstraint is the Schema for the componentresourceconstraints API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>ComponentResourceConstraint</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentResourceConstraintSpec">
-ComponentResourceConstraintSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>rules</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ResourceConstraintRule">
-[]ResourceConstraintRule
-</a>
-</em>
-</td>
-<td>
-<p>Component resource constraint rules.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>selector</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterResourceConstraintSelector">
-[]ClusterResourceConstraintSelector
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>selector is used to bind the resource constraint to cluster definitions.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConfigConstraint">ConfigConstraint
-</h3>
-<div>
-<p>ConfigConstraint is the Schema for the configconstraint API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>ConfigConstraint</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">
-ConfigConstraintSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>reloadOptions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReloadOptions">
-ReloadOptions
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>reloadOptions indicates whether the process supports reload.<br />if set, the controller will determine the behavior of the engine instance based on the configuration templates,<br />restart or reload depending on whether any parameters in the StaticParameters have been modified.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>toolsImageSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ToolsImageSpec">
-ToolsImageSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>toolConfig used to config init container.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>downwardAPIOptions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.DownwardAPIOption">
-[]DownwardAPIOption
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>downwardAPIOptions is used to watch pod fields.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptConfigs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptConfig">
-[]ScriptConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scriptConfigs, list of ScriptConfig, witch these scripts can be used by volume trigger,downward trigger, or tool image</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cfgSchemaTopLevelName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cfgSchemaTopLevelName is cue type name, which generates openapi schema.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>configurationSchema</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CustomParametersValidation">
-CustomParametersValidation
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>configurationSchema imposes restrictions on database parameter&rsquo;s rule.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>staticParameters</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>staticParameters, list of StaticParameter, modifications of them trigger a process restart.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>dynamicParameters</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>dynamicParameters, list of DynamicParameter, modifications of them trigger a config dynamic reload without process restart.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>immutableParameters</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>immutableParameters describes parameters that prohibit user from modification.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>selector</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#labelselector-v1-meta">
-Kubernetes meta/v1.LabelSelector
-</a>
-</em>
-</td>
-<td>
-<p>selector is used to match the label on the pod,<br />for example, a pod of the primary is match on the patroni cluster.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>formatterConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.FormatterConfig">
-FormatterConfig
-</a>
-</em>
-</td>
-<td>
-<p>formatterConfig describes the format of the configuration file, the controller<br />1. parses configuration file<br />2. analyzes the modified parameters<br />3. applies corresponding policies.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintStatus">
-ConfigConstraintStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRequest">OpsRequest
-</h3>
-<div>
-<p>OpsRequest is the Schema for the opsrequests API</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>apiVersion</code><br/>
-string</td>
-<td>
-<code>apps.kubeblocks.io/v1alpha1</code>
-</td>
-</tr>
-<tr>
-<td>
-<code>kind</code><br/>
-string
-</td>
-<td><code>OpsRequest</code></td>
-</tr>
-<tr>
-<td>
-<code>metadata</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#objectmeta-v1-meta">
-Kubernetes meta/v1.ObjectMeta
-</a>
-</em>
-</td>
-<td>
-Refer to the Kubernetes API documentation for the fields of the
-<code>metadata</code> field.
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">
-OpsRequestSpec
-</a>
-</em>
-</td>
-<td>
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>clusterRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>clusterRef references clusterDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cancel</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cancel defines the action to cancel the Pending/Creating/Running opsRequest, supported types: [VerticalScaling, HorizontalScaling].<br />once cancel is set to true, this opsRequest will be canceled and modifying this property again will not take effect.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsType">
-OpsType
-</a>
-</em>
-</td>
-<td>
-<p>type defines the operation type.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ttlSecondsAfterSucceed</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>ttlSecondsAfterSucceed OpsRequest will be deleted after TTLSecondsAfterSucceed second when OpsRequest.status.phase is Succeed.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>upgrade</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Upgrade">
-Upgrade
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>upgrade specifies the cluster version by specifying clusterVersionRef.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>horizontalScaling</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.HorizontalScaling">
-[]HorizontalScaling
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>horizontalScaling defines what component need to horizontal scale the specified replicas.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeExpansion</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VolumeExpansion">
-[]VolumeExpansion
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>volumeExpansion defines what component and volumeClaimTemplate need to expand the specified storage.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>restart</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-[]ComponentOps
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>restart the specified components.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>switchover</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Switchover">
-[]Switchover
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>switchover the specified components.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>verticalScaling</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VerticalScaling">
-[]VerticalScaling
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>verticalScaling defines what component need to vertical scale the specified compute resources.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>reconfigure</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Reconfigure">
-Reconfigure
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>reconfigure defines the variables that need to input when updating configuration.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>expose</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Expose">
-[]Expose
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>expose defines services the component needs to expose.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>restoreFrom</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.RestoreFromSpec">
-RestoreFromSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cluster RestoreFrom backup or point in time</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ttlSecondsBeforeAbort</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>ttlSecondsBeforeAbort OpsRequest will wait at most TTLSecondsBeforeAbort seconds for start-conditions to be met.<br />If not specified, the default value is 0, which means that the start-conditions must be met immediately.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptSpec">
-ScriptSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scriptSpec defines the script to be executed.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsRequestStatus">
-OpsRequestStatus
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.AccessMode">AccessMode
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConsensusMember">ConsensusMember</a>, <a href="#apps.kubeblocks.io/v1alpha1.ConsensusMemberStatus">ConsensusMemberStatus</a>)
-</p>
-<div>
-<p>AccessMode defines SVC access mode enums.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;None&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;ReadWrite&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Readonly&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.AccountName">AccountName
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SystemAccountConfig">SystemAccountConfig</a>)
-</p>
-<div>
-<p>AccountName defines system account names.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;kbadmin&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;kbdataprotection&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;kbmonitoring&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;kbprobe&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;kbreplicator&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Affinity">Affinity
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>podAntiAffinity</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.PodAntiAffinity">
-PodAntiAffinity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>podAntiAffinity describes the anti-affinity level of pods within a component.<br />Preferred means try spread pods by <code>TopologyKeys</code>.<br />Required means must spread pods by <code>TopologyKeys</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>topologyKeys</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>topologyKey is the key of node labels.<br />Nodes that have a label with this key and identical values are considered to be in the same topology.<br />It&rsquo;s used as the topology domain for pod anti-affinity and pod spread constraint.<br />Some well-known label keys, such as &ldquo;kubernetes.io/hostname&rdquo; and &ldquo;topology.kubernetes.io/zone&rdquo;<br />are often used as TopologyKey, as well as any other custom label key.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>nodeLabels</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>nodeLabels describes that pods must be scheduled to the nodes with the specified node labels.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tenancy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TenancyType">
-TenancyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>tenancy describes how pods are distributed across node.<br />SharedNode means multiple pods may share the same node.<br />DedicatedNode means each pod runs on their own dedicated node.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.AvailabilityPolicyType">AvailabilityPolicyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-<p>AvailabilityPolicyType for cluster affinity policy.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;node&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;none&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;zone&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyTemplateSpec">BackupPolicyTemplateSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>componentDefRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>componentDefRef references componentDef defined in ClusterDefinition spec. Need to<br />comply with IANA Service Naming rule.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>retention</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.RetentionSpec">
-RetentionSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>retention describe how long the Backup should be retained. if not set, will be retained forever.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>schedule</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Schedule">
-Schedule
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>schedule policy for backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>snapshot</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SnapshotPolicy">
-SnapshotPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the policy for snapshot backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>datafile</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CommonBackupPolicy">
-CommonBackupPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the policy for datafile backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>logfile</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CommonBackupPolicy">
-CommonBackupPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the policy for logfile backup.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupPolicyHook">BackupPolicyHook
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</a>)
-</p>
-<div>
-<p>BackupPolicyHook defines for the database execute commands before and after backup.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>preCommands</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>pre backup to perform commands</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>postCommands</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>post backup to perform commands</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>image</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>exec command with image</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>containerName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>which container can exec command</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupPolicyTemplateSpec">BackupPolicyTemplateSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyTemplate">BackupPolicyTemplate</a>)
-</p>
-<div>
-<p>BackupPolicyTemplateSpec defines the desired state of BackupPolicyTemplate</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterDefinitionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>clusterDefinitionRef references ClusterDefinition name, this is an immutable attribute.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backupPolicies</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupPolicy">
-[]BackupPolicy
-</a>
-</em>
-</td>
-<td>
-<p>backupPolicies is a list of backup policy template for the specified componentDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>identifier</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Identifier is a unique identifier for this BackupPolicyTemplate.<br />this identifier will be the suffix of the automatically generated backupPolicy name.<br />and must be added when multiple BackupPolicyTemplates exist,<br />otherwise the generated backupPolicy override will occur.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupPolicyTemplateStatus">BackupPolicyTemplateStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyTemplate">BackupPolicyTemplate</a>)
-</p>
-<div>
-<p>BackupPolicyTemplateStatus defines the observed state of BackupPolicyTemplate</p><br />
-</div>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupRefSpec">BackupRefSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.RestoreFromSpec">RestoreFromSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ref</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.RefNamespaceName">
-RefNamespaceName
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specify a reference backup to restore</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupStatusUpdate">BackupStatusUpdate
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>path</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specify the json path of backup object for patch.<br />example: manifests.backupLog &ndash; means patch the backup json path of status.manifests.backupLog.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>containerName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>which container name that kubectl can execute.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>script</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the shell Script commands to collect backup status metadata.<br />The script must exist in the container of ContainerName and the output format must be set to JSON.<br />Note that outputting to stderr may cause the result format to not be in JSON.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>useTargetPodServiceAccount</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>useTargetPodServiceAccount defines whether this job requires the service account of the backup target pod.<br />if true, will use the service account of the backup target pod. otherwise, will use the system service account.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>updateStage</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupStatusUpdateStage">
-BackupStatusUpdateStage
-</a>
-</em>
-</td>
-<td>
-<p>when to update the backup status, pre: before backup, post: after backup</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.BackupStatusUpdateStage">BackupStatusUpdateStage
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupStatusUpdate">BackupStatusUpdate</a>)
-</p>
-<div>
-<p>BackupStatusUpdateStage defines the stage of backup status update.</p><br />
-</div>
-<h3 id="apps.kubeblocks.io/v1alpha1.BaseBackupType">BaseBackupType
-(<code>string</code> alias)</h3>
-<div>
-<p>BaseBackupType the base backup type, keep synchronized with the BaseBackupType of the data protection API.</p><br />
-</div>
-<h3 id="apps.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy</a>, <a href="#apps.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>target</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TargetInstance">
-TargetInstance
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>target instance for backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backupsHistoryLimit</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the number of automatic backups to retain. Value must be non-negative integer.<br />0 means NO limit on the number of backups.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>onFailAttempted</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>count of backup stop retries on fail.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backupStatusUpdates</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupStatusUpdate">
-[]BackupStatusUpdate
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>define how to update metadata for backup status.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CPUConstraint">CPUConstraint
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ResourceConstraintRule">ResourceConstraintRule</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>max</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The maximum count of vcpu cores, [Min, Max] defines a range for valid vcpu cores, and the value in this range<br />must be multiple times of Step. It&rsquo;s useful to define a large number of valid values without defining them one by<br />one. Please see the documentation for Step for some examples.<br />If Slots is specified, Max, Min, and Step are ignored</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>min</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The minimum count of vcpu cores, [Min, Max] defines a range for valid vcpu cores, and the value in this range<br />must be multiple times of Step. It&rsquo;s useful to define a large number of valid values without defining them one by<br />one. Please see the documentation for Step for some examples.<br />If Slots is specified, Max, Min, and Step are ignored</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>step</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The minimum granularity of vcpu cores, [Min, Max] defines a range for valid vcpu cores and the value in this range must be<br />multiple times of Step.<br />For example:<br />1. Min is 2, Max is 8, Step is 2, and the valid vcpu core is &#123;2, 4, 6, 8&#125;.<br />2. Min is 0.5, Max is 2, Step is 0.5, and the valid vcpu core is &#123;0.5, 1, 1.5, 2&#125;.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>slots</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-[]Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The valid vcpu cores, it&rsquo;s useful if you want to define valid vcpu cores explicitly.<br />If Slots is specified, Max, Min, and Step are ignored</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CfgFileFormat">CfgFileFormat
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.FormatterConfig">FormatterConfig</a>)
-</p>
-<div>
-<p>CfgFileFormat defines formatter of configuration files.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;dotenv&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;hcl&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;ini&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;json&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;properties&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;props-plus&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;redis&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;toml&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;xml&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;yaml&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CfgReloadType">CfgReloadType
-(<code>string</code> alias)</h3>
-<div>
-<p>CfgReloadType defines reload method.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;http&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;sql&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;exec&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;tpl&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;signal&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClassDefRef">ClassDefRef
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.LastComponentConfiguration">LastComponentConfiguration</a>, <a href="#apps.kubeblocks.io/v1alpha1.VerticalScaling">VerticalScaling</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Name refers to the name of the ComponentClassDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>class</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Class refers to the name of the class that is defined in the ComponentClassDefinition.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterBackup">ClusterBackup
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>enabled</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>enabled defines whether to enable automated backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>retentionPeriod</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>retentionPeriod is a time string ending with the &rsquo;d&rsquo;|&rsquo;D&rsquo;|&lsquo;h&rsquo;|&lsquo;H&rsquo; character to describe how long<br />the Backup should be retained. if not set, will be retained forever.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>method</code><br/>
-<em>
-github.com/apecloud/kubeblocks/apis/dataprotection/v1alpha1.BackupMethod
-</em>
-</td>
-<td>
-<p>backup method, support: snapshot, backupTool.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cronExpression</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the cron expression for schedule, the timezone is in UTC. see <a href="https://en.wikipedia.org/wiki/Cron">https://en.wikipedia.org/wiki/Cron</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>startingDeadlineMinutes</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>startingDeadlineMinutes defines the deadline in minutes for starting the backup job<br />if it misses scheduled time for any reason.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>repoName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>repoName is the name of the backupRepo, if not set, will use the default backupRepo.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>pitrEnabled</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>pitrEnabled defines whether to enable point-in-time recovery.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionSpec">ClusterDefinitionSpec</a>)
-</p>
-<div>
-<p>ClusterComponentDefinition provides a workload component specification template,<br />with attributes that strongly work with stateful workloads and day-2 operations<br />behaviors.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>A component definition name, this name could be used as default name of <code>Cluster.spec.componentSpecs.name</code>,<br />and so this name is need to conform with same validation rules as <code>Cluster.spec.componentSpecs.name</code>, that<br />is currently comply with IANA Service Naming rule. This name will apply to &ldquo;apps.kubeblocks.io/component-name&rdquo;<br />object label value.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>description</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The description of component definition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>workloadType</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.WorkloadType">
-WorkloadType
-</a>
-</em>
-</td>
-<td>
-<p>workloadType defines type of the workload.<br />Stateless is a stateless workload type used to describe stateless applications.<br />Stateful is a stateful workload type used to describe common stateful applications.<br />Consensus is a stateful workload type used to describe applications based on consensus protocols, common consensus protocols such as raft and paxos.<br />Replication is a stateful workload type used to describe applications based on the primary-secondary data replication protocol.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>characterType</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>characterType defines well-known database component name, such as mongos(mongodb), proxy(redis), mariadb(mysql)<br />KubeBlocks will generate proper monitor configs for well-known characterType when builtIn is true.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>configSpecs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentConfigSpec">
-[]ComponentConfigSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The configSpec field provided by provider, and<br />finally this configTemplateRefs will be rendered into the user&rsquo;s own configuration file according to the user&rsquo;s cluster.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptSpecs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentTemplateSpec">
-[]ComponentTemplateSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The scriptSpec field provided by provider, and<br />finally this configTemplateRefs will be rendered into the user&rsquo;s own configuration file according to the user&rsquo;s cluster.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>probes</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbes">
-ClusterDefinitionProbes
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>probes setting for healthy checks.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>monitor</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.MonitorConfig">
-MonitorConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>monitor is monitoring config which provided by provider.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>logConfigs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.LogConfig">
-[]LogConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>logConfigs is detail log file config which provided by provider.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>podSpec</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#podspec-v1-core">
-Kubernetes core/v1.PodSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>podSpec define pod spec template of the cluster component.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>service</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ServiceSpec">
-ServiceSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>service defines the behavior of a service spec.<br />provide read-write service when WorkloadType is Consensus.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>statelessSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.StatelessSetSpec">
-StatelessSetSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>statelessSpec defines stateless related spec if workloadType is Stateless.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>statefulSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.StatefulSetSpec">
-StatefulSetSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>statefulSpec defines stateful related spec if workloadType is Stateful.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>consensusSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusSetSpec">
-ConsensusSetSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>consensusSpec defines consensus related spec if workloadType is Consensus, required if workloadType is Consensus.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>replicationSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReplicationSetSpec">
-ReplicationSetSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>replicationSpec defines replication related spec if workloadType is Replication.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>horizontalScalePolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.HorizontalScalePolicy">
-HorizontalScalePolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>horizontalScalePolicy controls the behavior of horizontal scale.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>systemAccounts</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SystemAccountSpec">
-SystemAccountSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Statement to create system account.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeTypes</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VolumeTypeSpec">
-[]VolumeTypeSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>volumeTypes is used to describe the purpose of the volumes<br />mapping the name of the VolumeMounts in the PodSpec.Container field,<br />such as data volume, log volume, etc.<br />When backing up the volume, the volume can be correctly backed up<br />according to the volumeType.</p><br /><br /><p>For example:<br /> <code>name: data, type: data</code> means that the volume named <code>data</code> is used to store <code>data</code>.<br /> <code>name: binlog, type: log</code> means that the volume named <code>binlog</code> is used to store <code>log</code>.</p><br /><br /><p>NOTE:<br />  When volumeTypes is not defined, the backup function will not be supported,<br />even if a persistent volume has been specified.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>customLabelSpecs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CustomLabelSpec">
-[]CustomLabelSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>customLabelSpecs is used for custom label tags which you want to add to the component resources.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>switchoverSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SwitchoverSpec">
-SwitchoverSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>switchoverSpec defines command to do switchover.<br />in particular, when workloadType=Replication, the command defined in switchoverSpec will only be executed under the condition of cluster.componentSpecs[x].SwitchPolicy.type=Noop.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeProtectionSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VolumeProtectionSpec">
-VolumeProtectionSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-</td>
-</tr>
-<tr>
-<td>
-<code>componentDefRef</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentDefRef">
-[]ComponentDefRef
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>componentDefRef is used to inject values from other components into the current component.<br />values will be saved and updated in a configmap and mounted to the current component.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentPhase">ClusterComponentPhase
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentStatus">ClusterComponentStatus</a>, <a href="#apps.kubeblocks.io/v1alpha1.OpsRequestComponentStatus">OpsRequestComponentStatus</a>)
-</p>
-<div>
-<p>ClusterComponentPhase defines the Cluster CR .status.components.phase</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Abnormal&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Creating&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Failed&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Running&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Updating&#34;</p></td>
-<td><p>Abnormal is a sub-state of failed, where one or more workload pods is not in &ldquo;Running&rdquo; phase.</p><br /></td>
-</tr><tr><td><p>&#34;Stopped&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentService">ClusterComponentService
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.Expose">Expose</a>, <a href="#apps.kubeblocks.io/v1alpha1.LastComponentConfiguration">LastComponentConfiguration</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Service name</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>serviceType</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#servicetype-v1-core">
-Kubernetes core/v1.ServiceType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>serviceType determines how the Service is exposed. Valid<br />options are ClusterIP, NodePort, and LoadBalancer.<br />&ldquo;ClusterIP&rdquo; allocates a cluster-internal IP address for load-balancing<br />to endpoints. Endpoints are determined by the selector or if that is not<br />specified, they are determined by manual construction of an Endpoints object or<br />EndpointSlice objects. If clusterIP is &ldquo;None&rdquo;, no virtual IP is<br />allocated and the endpoints are published as a set of endpoints rather<br />than a virtual IP.<br />&ldquo;NodePort&rdquo; builds on ClusterIP and allocates a port on every node which<br />routes to the same endpoints as the clusterIP.<br />&ldquo;LoadBalancer&rdquo; builds on NodePort and creates an external load-balancer<br />(if supported in the current cloud) which routes to the same endpoints<br />as the clusterIP.<br />More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types">https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>annotations</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>If ServiceType is LoadBalancer, cloud provider related parameters can be put here<br />More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer">https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer</a>.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-<p>ClusterComponentSpec defines the cluster component spec.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name defines cluster&rsquo;s component name, this name is also part of Service DNS name, so this name will<br />comply with IANA Service Naming rule.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentDefRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>componentDefRef references componentDef defined in ClusterDefinition spec. Need to<br />comply with IANA Service Naming rule.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>classDefRef</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClassDefRef">
-ClassDefRef
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>classDefRef references the class defined in ComponentClassDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>monitor</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>monitor is a switch to enable monitoring and is set as false by default.<br />KubeBlocks provides an extension mechanism to support component level monitoring,<br />which will scrape metrics auto or manually from servers in component and export<br />metrics to Time Series Database.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>enabledLogs</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>enabledLogs indicates which log file takes effect in the database cluster.<br />element is the log type which is defined in cluster definition logConfig.name,<br />and will set relative variables about this log type in database kernel.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>replicas</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<p>Component replicas. The default value is used in ClusterDefinition spec if not specified.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>affinity</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Affinity">
-Affinity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>affinity describes affinities specified by users.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tolerations</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#toleration-v1-core">
-[]Kubernetes core/v1.Toleration
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Component tolerations will override ClusterSpec.Tolerations if specified.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Resources requests and limits of workload.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeClaimTemplates</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVolumeClaimTemplate">
-[]ClusterComponentVolumeClaimTemplate
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>volumeClaimTemplates information for statefulset.spec.volumeClaimTemplates.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>services</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentService">
-[]ClusterComponentService
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Services expose endpoints that can be accessed by clients.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>switchPolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterSwitchPolicy">
-ClusterSwitchPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>switchPolicy defines the strategy for switchover and failover when workloadType is Replication.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tls</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Enables or disables TLS certs.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>issuer</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Issuer">
-Issuer
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>issuer defines provider context for TLS certs.<br />required when TLS enabled</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>serviceAccountName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>serviceAccountName is the name of the ServiceAccount that running component depends on.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>noCreatePDB</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>noCreatePDB defines the PodDisruptionBudget creation behavior and is set to true if creation of PodDisruptionBudget<br />for this component is not needed. It defaults to false.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentStatus">ClusterComponentStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterStatus">ClusterStatus</a>)
-</p>
-<div>
-<p>ClusterComponentStatus records components status.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentPhase">
-ClusterComponentPhase
-</a>
-</em>
-</td>
-<td>
-<p>phase describes the phase of the component and the detail information of the phases are as following:<br />Running: the component is running. [terminal state]<br />Stopped: the component is stopped, as no running pod. [terminal state]<br />Failed: the component is unavailable, i.e. all pods are not ready for Stateless/Stateful component and<br />Leader/Primary pod is not ready for Consensus/Replication component. [terminal state]<br />Abnormal: the component is running but part of its pods are not ready.<br />Leader/Primary pod is ready for Consensus/Replication component. [terminal state]<br />Creating: the component has entered creating process.<br />Updating: the component has entered updating process, triggered by Spec. updated.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentMessageMap">
-ComponentMessageMap
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>message records the component details message in current phase.<br />Keys are podName or deployName or statefulSetName. The format is <code>ObjectKind/Name</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>podsReady</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>podsReady checks if all pods of the component are ready.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>podsReadyTime</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>podsReadyTime what time point of all component pods are ready,<br />this time is the ready time of the last component pod.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>consensusSetStatus</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusSetStatus">
-ConsensusSetStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>consensusSetStatus specifies the mapping of role and pod name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>replicationSetStatus</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReplicationSetStatus">
-ReplicationSetStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>replicationSetStatus specifies the mapping of role and pod name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">ClusterComponentVersion
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterVersionSpec">ClusterVersionSpec</a>)
-</p>
-<div>
-<p>ClusterComponentVersion is an application version component spec.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>componentDefRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>componentDefRef reference one of the cluster component definition names in ClusterDefinition API (spec.componentDefs.name).</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>configSpecs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentConfigSpec">
-[]ComponentConfigSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>configSpecs defines a configuration extension mechanism to handle configuration differences between versions,<br />the configTemplateRefs field, together with configTemplateRefs in the ClusterDefinition,<br />determines the final configuration file.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>systemAccountSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SystemAccountShortSpec">
-SystemAccountShortSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>systemAccountSpec define image for the component to connect database or engines.<br />It overrides <code>image</code> and <code>env</code> attributes defined in ClusterDefinition.spec.componentDefs.systemAccountSpec.cmdExecutorConfig.<br />To clean default envs settings, set <code>SystemAccountSpec.CmdExecutorConfig.Env</code> to empty list.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>versionsContext</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VersionsContext">
-VersionsContext
-</a>
-</em>
-</td>
-<td>
-<p>versionContext defines containers images&rsquo; context for component versions,<br />this value replaces ClusterDefinition.spec.componentDefs.podSpec.[initContainers | containers]</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>switchoverSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SwitchoverShortSpec">
-SwitchoverShortSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>switchoverSpec defines images for the component to do switchover.<br />It overrides <code>image</code> and <code>env</code> attributes defined in ClusterDefinition.spec.componentDefs.SwitchoverSpec.CommandExecutorEnvItem.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterComponentVolumeClaimTemplate">ClusterComponentVolumeClaimTemplate
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Reference <code>ClusterDefinition.spec.componentDefs.containers.volumeMounts.name</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>spec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.PersistentVolumeClaimSpec">
-PersistentVolumeClaimSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>spec defines the desired characteristics of a volume requested by a pod author.</p><br />
-<br/>
-<br/>
-<table>
-<tr>
-<td>
-<code>accessModes</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#persistentvolumeaccessmode-v1-core">
-[]Kubernetes core/v1.PersistentVolumeAccessMode
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>accessModes contains the desired access modes the volume should have.<br />More info: <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1">https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>resources represents the minimum resources the volume should have.<br />If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements<br />that are lower than previous value but must still be higher than capacity recorded in the<br />status field of the claim.<br />More info: <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources">https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>storageClassName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>storageClassName is the name of the StorageClass required by the claim.<br />More info: <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1">https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1</a>.</p><br />
-</td>
-</tr>
-</table>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbe">ClusterDefinitionProbe
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbes">ClusterDefinitionProbes</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>periodSeconds</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<p>How often (in seconds) to perform the probe.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>timeoutSeconds</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<p>Number of seconds after which the probe times out. Defaults to 1 second.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>failureThreshold</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<p>Minimum consecutive failures for the probe to be considered failed after having succeeded.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>commands</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbeCMDs">
-ClusterDefinitionProbeCMDs
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>commands used to execute for probe.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbeCMDs">ClusterDefinitionProbeCMDs
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbe">ClusterDefinitionProbe</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>writes</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Write check executed on probe sidecar, used to check workload&rsquo;s allow write access.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>queries</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Read check executed on probe sidecar, used to check workload&rsquo;s readonly access.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbes">ClusterDefinitionProbes
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>runningProbe</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbe">
-ClusterDefinitionProbe
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Probe for DB running check.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>statusProbe</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbe">
-ClusterDefinitionProbe
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Probe for DB status check.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>roleProbe</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionProbe">
-ClusterDefinitionProbe
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Probe for DB role changed check.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>roleProbeTimeoutAfterPodsReady</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>roleProbeTimeoutAfterPodsReady(in seconds), when all pods of the component are ready,<br />it will detect whether the application is available in the pod.<br />if pods exceed the InitializationTimeoutSeconds time without a role label,<br />this component will enter the Failed/Abnormal phase.<br />Note that this configuration will only take effect if the component supports RoleProbe<br />and will not affect the life cycle of the pod. default values are 60 seconds.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterDefinitionSpec">ClusterDefinitionSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinition">ClusterDefinition</a>)
-</p>
-<div>
-<p>ClusterDefinitionSpec defines the desired state of ClusterDefinition</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Cluster definition type defines well known application cluster type, e.g. mysql/redis/mongodb</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentDefs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">
-[]ClusterComponentDefinition
-</a>
-</em>
-</td>
-<td>
-<p>componentDefs provides cluster components definitions.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>connectionCredential</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Connection credential template used for creating a connection credential<br />secret for cluster.apps.kubeblocks.io object.</p><br /><br /><p>Built-in objects are:<br />- <code>$(RANDOM_PASSWD)</code> - random 8 characters.<br />- <code>$(UUID)</code> - generate a random UUID v4 string.<br />- <code>$(UUID_B64)</code> - generate a random UUID v4 BASE64 encoded string.<br />- <code>$(UUID_STR_B64)</code> - generate a random UUID v4 string then BASE64 encoded.<br />- <code>$(UUID_HEX)</code> - generate a random UUID v4 HEX representation.<br />- <code>$(HEADLESS_SVC_FQDN)</code> - headless service FQDN placeholder, value pattern - $(CLUSTER_NAME)-$(1ST_COMP_NAME)-headless.$(NAMESPACE).svc,<br />   where 1ST_COMP_NAME is the 1st component that provide <code>ClusterDefinition.spec.componentDefs[].service</code> attribute;<br />- <code>$(SVC_FQDN)</code> - service FQDN  placeholder, value pattern - $(CLUSTER_NAME)-$(1ST_COMP_NAME).$(NAMESPACE).svc,<br />   where 1ST_COMP_NAME is the 1st component that provide <code>ClusterDefinition.spec.componentDefs[].service</code> attribute;<br />- <code>$(SVC_PORT_&#123;PORT-NAME&#125;)</code> - a ServicePort&rsquo;s port value with specified port name, i.e, a servicePort JSON struct:<br />   <code>&#123;&quot;name&quot;: &quot;mysql&quot;, &quot;targetPort&quot;: &quot;mysqlContainerPort&quot;, &quot;port&quot;: 3306&#125;</code>, and &ldquo;$(SVC_PORT_mysql)&rdquo; in the<br />   connection credential value is 3306.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterDefinitionStatus">ClusterDefinitionStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinition">ClusterDefinition</a>)
-</p>
-<div>
-<p>ClusterDefinitionStatus defines the observed state of ClusterDefinition</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Phase">
-Phase
-</a>
-</em>
-</td>
-<td>
-<p>ClusterDefinition phase, valid values are <code>empty</code>, <code>Available</code>, &lsquo;Unavailable`.<br />Available is ClusterDefinition become available, and can be referenced for co-related objects.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Extra message in current phase</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>observedGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>observedGeneration is the most recent generation observed for this<br />ClusterDefinition. It corresponds to the ClusterDefinition&rsquo;s generation, which is<br />updated on mutation by the API Server.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterMonitor">ClusterMonitor
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>monitoringInterval</code><br/>
-<em>
-<a href="https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString">
-Kubernetes api utils intstr.IntOrString
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>monitoringInterval specifies interval of monitoring, no monitor if set to 0</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterNetwork">ClusterNetwork
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>hostNetworkAccessible</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>hostNetworkAccessible specifies whether host network is accessible. It defaults to false</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>publiclyAccessible</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>publiclyAccessible specifies whether it is publicly accessible. It defaults to false</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterPhase">ClusterPhase
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterStatus">ClusterStatus</a>, <a href="#apps.kubeblocks.io/v1alpha1.OpsRequestBehaviour">OpsRequestBehaviour</a>)
-</p>
-<div>
-<p>ClusterPhase defines the Cluster CR .status.phase</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Abnormal&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Creating&#34;</p></td>
-<td><p>Abnormal is a sub-state of failed, where one of the cluster components has &ldquo;Failed&rdquo; or &ldquo;Abnormal&rdquo; status phase.</p><br /></td>
-</tr><tr><td><p>&#34;Failed&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Running&#34;</p></td>
-<td><p>REVIEW/TODO: AbnormalClusterPhase provides hybrid, consider remove it if possible</p><br /></td>
-</tr><tr><td><p>&#34;Updating&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Stopped&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterResourceConstraintSelector">ClusterResourceConstraintSelector
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentResourceConstraintSpec">ComponentResourceConstraintSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterDefRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>clusterDefRef is the name of the cluster definition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>components</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentResourceConstraintSelector">
-[]ComponentResourceConstraintSelector
-</a>
-</em>
-</td>
-<td>
-<p>selector is used to bind the resource constraint to components.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterResources">ClusterResources
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>cpu</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cpu resource needed, more info: <a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/">https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/</a></p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>memory</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>memory resource needed, more info: <a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/">https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/</a></p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Cluster">Cluster</a>)
-</p>
-<div>
-<p>ClusterSpec defines the desired state of Cluster.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterDefinitionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Cluster referencing ClusterDefinition name. This is an immutable attribute.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>clusterVersionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Cluster referencing ClusterVersion name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>terminationPolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TerminationPolicyType">
-TerminationPolicyType
-</a>
-</em>
-</td>
-<td>
-<p>Cluster termination policy. Valid values are DoNotTerminate, Halt, Delete, WipeOut.<br />DoNotTerminate will block delete operation.<br />Halt will delete workload resources such as statefulset, deployment workloads but keep PVCs.<br />Delete is based on Halt and deletes PVCs.<br />WipeOut is based on Delete and wipe out all volume snapshots and snapshot data from backup storage location.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentSpecs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">
-[]ClusterComponentSpec
-</a>
-</em>
-</td>
-<td>
-<p>List of componentSpecs you want to replace in ClusterDefinition and ClusterVersion. It will replace the field in ClusterDefinition&rsquo;s and ClusterVersion&rsquo;s component if type is matching.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tenancy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TenancyType">
-TenancyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>tenancy describes how pods are distributed across node.<br />SharedNode means multiple pods may share the same node.<br />DedicatedNode means each pod runs on their own dedicated node.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>availabilityPolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.AvailabilityPolicyType">
-AvailabilityPolicyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>availabilityPolicy describes the availability policy, including zone, node, and none.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>affinity</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Affinity">
-Affinity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>affinity is a group of affinity scheduling rules.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tolerations</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#toleration-v1-core">
-[]Kubernetes core/v1.Toleration
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>tolerations are attached to tolerate any taint that matches the triple <code>key,value,effect</code> using the matching operator <code>operator</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>replicas</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>replicas specifies the replicas of the first componentSpec, if the replicas of the first componentSpec is specified, this value will be ignored.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterResources">
-ClusterResources
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>resources specifies the resources of the first componentSpec, if the resources of the first componentSpec is specified, this value will be ignored.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>storage</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterStorage">
-ClusterStorage
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>storage specifies the storage of the first componentSpec, if the storage of the first componentSpec is specified, this value will be ignored.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>monitor</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterMonitor">
-ClusterMonitor
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>monitor specifies the configuration of monitor</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>network</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterNetwork">
-ClusterNetwork
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>network specifies the configuration of network</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backup</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterBackup">
-ClusterBackup
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cluster backup configuration.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterStatus">ClusterStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Cluster">Cluster</a>)
-</p>
-<div>
-<p>ClusterStatus defines the observed state of Cluster.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>observedGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>observedGeneration is the most recent generation observed for this<br />Cluster. It corresponds to the Cluster&rsquo;s generation, which is<br />updated on mutation by the API Server.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterPhase">
-ClusterPhase
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>phase describes the phase of the Cluster, the detail information of the phases are as following:<br />Running: cluster is running, all its components are available. [terminal state]<br />Stopped: cluster has stopped, all its components are stopped. [terminal state]<br />Failed: cluster is unavailable. [terminal state]<br />Abnormal: Cluster is still running, but part of its components are Abnormal/Failed. [terminal state]<br />Creating: Cluster has entered creating process.<br />Updating: Cluster has entered updating process, triggered by Spec. updated.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>message describes cluster details message in current phase.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>components</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentStatus">
-map[string]github.com/apecloud/kubeblocks/apis/apps/v1alpha1.ClusterComponentStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>components record the current status information of all components of the cluster.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>clusterDefGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>clusterDefGeneration represents the generation number of ClusterDefinition referenced.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>conditions</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#condition-v1-meta">
-[]Kubernetes meta/v1.Condition
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Describe current state of cluster API Resource, like warning.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterStorage">ClusterStorage
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>size</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>storage size needed, more info: <a href="https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/">https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/</a></p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterSwitchPolicy">ClusterSwitchPolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SwitchPolicyType">
-SwitchPolicyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>clusterSwitchPolicy defines type of the switchPolicy when workloadType is Replication.<br />MaximumAvailability: [WIP] when the primary is active, do switch if the synchronization delay = 0 in the user-defined lagProbe data delay detection logic, otherwise do not switch. The primary is down, switch immediately. It will be available in future versions.<br />MaximumDataProtection: [WIP] when the primary is active, do switch if synchronization delay = 0 in the user-defined lagProbe data lag detection logic, otherwise do not switch. If the primary is down, if it can be judged that the primary and secondary data are consistent, then do the switch, otherwise do not switch. It will be available in future versions.<br />Noop: KubeBlocks will not perform high-availability switching on components. Users need to implement HA by themselves or integrate open source HA solution.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterVersionSpec">ClusterVersionSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterVersion">ClusterVersion</a>)
-</p>
-<div>
-<p>ClusterVersionSpec defines the desired state of ClusterVersion</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterDefinitionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>ref ClusterDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentVersions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">
-[]ClusterComponentVersion
-</a>
-</em>
-</td>
-<td>
-<p>List of components&rsquo; containers versioning context, i.e., container image ID, container commands, args., and environments.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ClusterVersionStatus">ClusterVersionStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterVersion">ClusterVersion</a>)
-</p>
-<div>
-<p>ClusterVersionStatus defines the observed state of ClusterVersion</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Phase">
-Phase
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>phase - in list of [Available,Unavailable]</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>A human readable message indicating details about why the ClusterVersion is in this phase.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>observedGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>generation number</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>clusterDefGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>clusterDefGeneration represents the generation number of ClusterDefinition referenced.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CmdExecutorConfig">CmdExecutorConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SwitchoverAction">SwitchoverAction</a>, <a href="#apps.kubeblocks.io/v1alpha1.SystemAccountSpec">SystemAccountSpec</a>)
-</p>
-<div>
-<p>CmdExecutorConfig specifies how to perform creation and deletion statements.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>CommandExecutorEnvItem</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CommandExecutorEnvItem">
-CommandExecutorEnvItem
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>CommandExecutorEnvItem</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>CommandExecutorItem</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CommandExecutorItem">
-CommandExecutorItem
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>CommandExecutorItem</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CommandExecutorEnvItem">CommandExecutorEnvItem
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.CmdExecutorConfig">CmdExecutorConfig</a>, <a href="#apps.kubeblocks.io/v1alpha1.SwitchoverShortSpec">SwitchoverShortSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.SystemAccountShortSpec">SystemAccountShortSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>image</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>image for Connector when executing the command.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>env</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#envvar-v1-core">
-[]Kubernetes core/v1.EnvVar
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>envs is a list of environment variables.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CommandExecutorItem">CommandExecutorItem
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.CmdExecutorConfig">CmdExecutorConfig</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>command</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<p>command to perform statements.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>args</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>args is used to perform statements.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CommonBackupPolicy">CommonBackupPolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>BasePolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BasePolicy">
-BasePolicy
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>BasePolicy</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>backupToolName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>which backup tool to perform database backup, only support one tool.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentClass">ComponentClass
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinitionStatus">ComponentClassDefinitionStatus</a>, <a href="#apps.kubeblocks.io/v1alpha1.ComponentClassSeries">ComponentClassSeries</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>name is the class name</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>args</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>args are variable&rsquo;s value</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cpu</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the CPU of the class</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>memory</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the memory of the class</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentClassDefinitionSpec">ComponentClassDefinitionSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinition">ComponentClassDefinition</a>)
-</p>
-<div>
-<p>ComponentClassDefinitionSpec defines the desired state of ComponentClassDefinition</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>groups</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClassGroup">
-[]ComponentClassGroup
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>group defines a list of class series that conform to the same constraint.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentClassDefinitionStatus">ComponentClassDefinitionStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinition">ComponentClassDefinition</a>)
-</p>
-<div>
-<p>ComponentClassDefinitionStatus defines the observed state of ComponentClassDefinition</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>observedGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>observedGeneration is the most recent generation observed for this<br />ComponentClassDefinition. It corresponds to the ComponentClassDefinition&rsquo;s generation, which is<br />updated on mutation by the API Server.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>classes</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClass">
-[]ComponentClass
-</a>
-</em>
-</td>
-<td>
-<p>classes is the list of classes that have been observed for this ComponentClassDefinition</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentClassGroup">ComponentClassGroup
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentClassDefinitionSpec">ComponentClassDefinitionSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>template</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>template is a class definition template that uses the Go template syntax and allows for variable declaration.<br />When defining a class in Series, specifying the variable&rsquo;s value is sufficient, as the complete class<br />definition will be generated through rendering the template.</p><br /><br /><p>For example:<br />	template: |<br />	  cpu: &ldquo;&#123;&#123; or .cpu 1 &#125;&#125;&rdquo;<br />	  memory: &ldquo;&#123;&#123; or .memory 4 &#125;&#125;Gi&rdquo;</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>vars</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>vars defines the variables declared in the template and will be used to generating the complete class definition by<br />render the template.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>series</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClassSeries">
-[]ComponentClassSeries
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>series is a series of class definitions.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentClassSeries">ComponentClassSeries
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentClassGroup">ComponentClassGroup</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>namingTemplate</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>namingTemplate is a template that uses the Go template syntax and allows for referencing variables defined<br />in ComponentClassGroup.Template. This enables dynamic generation of class names.<br />For example:<br />name: &ldquo;general-&#123;&#123; .cpu &#125;&#125;c&#123;&#123; .memory &#125;&#125;g&rdquo;</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>classes</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentClass">
-[]ComponentClass
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>classes are definitions of classes that come in two forms. In the first form, only ComponentClass.Args<br />need to be defined, and the complete class definition is generated by rendering the ComponentClassGroup.Template<br />and Name. In the second form, the Name, CPU and Memory must be defined.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentConfigSpec">ComponentConfigSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>, <a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">ClusterComponentVersion</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentTemplateSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentTemplateSpec">
-ComponentTemplateSpec
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentTemplateSpec</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>keys</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify a list of keys.<br />If empty, ConfigConstraint takes effect for all keys in configmap.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>lazyRenderedConfigSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.LazyRenderedTemplateSpec">
-LazyRenderedTemplateSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>lazyRenderedConfigSpec is optional: specify the secondary rendered config spec.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>constraintRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify the name of the referenced the configuration constraints object.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>asEnvFrom</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>asEnvFrom is optional: the list of containers will be injected into EnvFrom.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentDefRef">ComponentDefRef
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-<p>ComponentDefRef is used to select the component and its fields to be referenced.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>componentDefName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>componentDefName is the name of the componentDef to select.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>failurePolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.FailurePolicyType">
-FailurePolicyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>failurePolicy is the failure policy of the component.<br />If failed to find the component, the failure policy will be used.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>componentRefEnv</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentRefEnv">
-[]ComponentRefEnv
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>componentRefEnv specifies a list of values to be injected as env variables to each component.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentMessageMap">ComponentMessageMap
-(<code>map[string]string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentStatus">ClusterComponentStatus</a>)
-</p>
-<div>
-</div>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentNameSet">ComponentNameSet
-(<code>map[string]struct{}</code> alias)</h3>
-<div>
-</div>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentOps">ComponentOps
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Expose">Expose</a>, <a href="#apps.kubeblocks.io/v1alpha1.HorizontalScaling">HorizontalScaling</a>, <a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.Reconfigure">Reconfigure</a>, <a href="#apps.kubeblocks.io/v1alpha1.ScriptSpec">ScriptSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.Switchover">Switchover</a>, <a href="#apps.kubeblocks.io/v1alpha1.VerticalScaling">VerticalScaling</a>, <a href="#apps.kubeblocks.io/v1alpha1.VolumeExpansion">VolumeExpansion</a>)
-</p>
-<div>
-<p>ComponentOps defines the common variables of component scope operations.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>componentName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>componentName cluster component name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentRefEnv">ComponentRefEnv
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentDefRef">ComponentDefRef</a>)
-</p>
-<div>
-<p>ComponentRefEnv specifies name and value of an env.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name is the name of the env to be injected, and it must be a C identifier.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>value</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>value is the value of the env to be injected.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>valueFrom</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentValueFrom">
-ComponentValueFrom
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>valueFrom specifies the source of the env to be injected.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentResourceConstraintSelector">ComponentResourceConstraintSelector
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterResourceConstraintSelector">ClusterResourceConstraintSelector</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>componentDefRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>componentDefRef is the name of the component definition in the cluster definition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>rules</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<p>rules are the constraint rules that will be applied to the component.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentResourceConstraintSpec">ComponentResourceConstraintSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentResourceConstraint">ComponentResourceConstraint</a>)
-</p>
-<div>
-<p>ComponentResourceConstraintSpec defines the desired state of ComponentResourceConstraint</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>rules</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ResourceConstraintRule">
-[]ResourceConstraintRule
-</a>
-</em>
-</td>
-<td>
-<p>Component resource constraint rules.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>selector</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterResourceConstraintSelector">
-[]ClusterResourceConstraintSelector
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>selector is used to bind the resource constraint to cluster definitions.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentResourceKey">ComponentResourceKey
-(<code>string</code> alias)</h3>
-<div>
-<p>ComponentResourceKey defines the resource key of component, such as pod/pvc.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;pods&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentTemplateSpec">ComponentTemplateSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>, <a href="#apps.kubeblocks.io/v1alpha1.ComponentConfigSpec">ComponentConfigSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Specify the name of configuration template.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>templateRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Specify the name of the referenced the configuration template ConfigMap object.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>namespace</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify the namespace of the referenced the configuration template ConfigMap object.<br />An empty namespace is equivalent to the &ldquo;default&rdquo; namespace.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>volumeName is the volume name of PodTemplate, which the configuration file produced through the configuration<br />template will be mounted to the corresponding volume. Must be a DNS_LABEL name.<br />The volume name must be defined in podSpec.containers[*].volumeMounts.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>defaultMode</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>defaultMode is optional: mode bits used to set permissions on created files by default.<br />Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511.<br />YAML accepts both octal and decimal values, JSON requires decimal values for mode bits.<br />Defaults to 0644.<br />Directories within the path are not affected by this setting.<br />This might be in conflict with other options that affect the file<br />mode, like fsGroup, and the result can be other mode bits set.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentValueFrom">ComponentValueFrom
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentRefEnv">ComponentRefEnv</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentValueFromType">
-ComponentValueFromType
-</a>
-</em>
-</td>
-<td>
-<p>type is the type of the source to select. There are three types: <code>FieldRef</code>, <code>ServiceRef</code>, <code>HeadlessServiceRef</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>fieldPath</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>fieldRef is the jsonpath of the source to select when type is <code>FieldRef</code>.<br />there are two objects registered in the jsonpath: <code>componentDef</code> and <code>components</code>.<br />componentDef is the component definition object specified in <code>componentRef.componentDefName</code>.<br />components is the component list objects referring to the component definition object.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>format</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>format is the format of each headless service address.<br />there are three builtin variables can be used as placerholder: $POD_ORDINAL, $POD_FQDN, $POD_NAME<br />$POD_ORDINAL is the ordinal of the pod.<br />$POD_FQDN is the fully qualified domain name of the pod.<br />$POD_NAME is the name of the pod</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>joinWith</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>joinWith is the string to join the values of headless service addresses.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ComponentValueFromType">ComponentValueFromType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentValueFrom">ComponentValueFrom</a>)
-</p>
-<div>
-<p>ComponentValueFromType specifies the type of component value from.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;FieldRef&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;HeadlessServiceRef&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;ServiceRef&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConfigConstraintPhase">ConfigConstraintPhase
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintStatus">ConfigConstraintStatus</a>)
-</p>
-<div>
-<p>ConfigConstraintPhase defines the ConfigConstraint  CR .status.phase</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Available&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Deleting&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Unavailable&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraint">ConfigConstraint</a>)
-</p>
-<div>
-<p>ConfigConstraintSpec defines the desired state of ConfigConstraint</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>reloadOptions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReloadOptions">
-ReloadOptions
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>reloadOptions indicates whether the process supports reload.<br />if set, the controller will determine the behavior of the engine instance based on the configuration templates,<br />restart or reload depending on whether any parameters in the StaticParameters have been modified.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>toolsImageSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ToolsImageSpec">
-ToolsImageSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>toolConfig used to config init container.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>downwardAPIOptions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.DownwardAPIOption">
-[]DownwardAPIOption
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>downwardAPIOptions is used to watch pod fields.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptConfigs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptConfig">
-[]ScriptConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scriptConfigs, list of ScriptConfig, witch these scripts can be used by volume trigger,downward trigger, or tool image</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cfgSchemaTopLevelName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cfgSchemaTopLevelName is cue type name, which generates openapi schema.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>configurationSchema</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CustomParametersValidation">
-CustomParametersValidation
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>configurationSchema imposes restrictions on database parameter&rsquo;s rule.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>staticParameters</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>staticParameters, list of StaticParameter, modifications of them trigger a process restart.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>dynamicParameters</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>dynamicParameters, list of DynamicParameter, modifications of them trigger a config dynamic reload without process restart.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>immutableParameters</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>immutableParameters describes parameters that prohibit user from modification.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>selector</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#labelselector-v1-meta">
-Kubernetes meta/v1.LabelSelector
-</a>
-</em>
-</td>
-<td>
-<p>selector is used to match the label on the pod,<br />for example, a pod of the primary is match on the patroni cluster.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>formatterConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.FormatterConfig">
-FormatterConfig
-</a>
-</em>
-</td>
-<td>
-<p>formatterConfig describes the format of the configuration file, the controller<br />1. parses configuration file<br />2. analyzes the modified parameters<br />3. applies corresponding policies.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConfigConstraintStatus">ConfigConstraintStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraint">ConfigConstraint</a>)
-</p>
-<div>
-<p>ConfigConstraintStatus defines the observed state of ConfigConstraint.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintPhase">
-ConfigConstraintPhase
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>phase is status of configuration template, when set to CCAvailablePhase, it can be referenced by ClusterDefinition or ClusterVersion.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>message field describes the reasons of abnormal status.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>observedGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>observedGeneration is the latest generation observed for this<br />ClusterDefinition. It refers to the ConfigConstraint&rsquo;s generation, which is<br />updated by the API Server.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Configuration">Configuration
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Reconfigure">Reconfigure</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name is a config template name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>policy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.UpgradePolicy">
-UpgradePolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>policy defines the upgrade policy.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>keys</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ParameterConfig">
-[]ParameterConfig
-</a>
-</em>
-</td>
-<td>
-<p>keys is used to set the parameters to be updated.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConfigurationStatus">ConfigurationStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ReconfiguringStatus">ReconfiguringStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name is a config template name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>updatePolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.UpgradePolicy">
-UpgradePolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>updatePolicy describes the policy of reconfiguring.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>status describes the current state of the reconfiguring state machine.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>succeedCount</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>succeedCount describes the number of successful reconfiguring.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>expectedCount</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>expectedCount describes the number of expected reconfiguring.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>lastStatus</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>lastStatus describes the last status for the reconfiguring controller.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>lastAppliedConfiguration</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>LastAppliedConfiguration describes the last configuration.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>updatedParameters</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.UpdatedParameters">
-UpdatedParameters
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>updatedParameters describes the updated parameters.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConnectionCredentialKey">ConnectionCredentialKey
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.TargetInstance">TargetInstance</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>passwordKey</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the key of password in the ConnectionCredential secret.<br />if not set, the default key is &ldquo;password&rdquo;.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>usernameKey</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>the key of username in the ConnectionCredential secret.<br />if not set, the default key is &ldquo;username&rdquo;.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConsensusMember">ConsensusMember
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConsensusSetSpec">ConsensusSetSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name, role name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>accessMode</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.AccessMode">
-AccessMode
-</a>
-</em>
-</td>
-<td>
-<p>accessMode, what service this member capable.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>replicas</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>replicas, number of Pods of this role.<br />default 1 for Leader<br />default 0 for Learner<br />default Cluster.spec.componentSpec[*].Replicas - Leader.Replicas - Learner.Replicas for Followers</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConsensusMemberStatus">ConsensusMemberStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConsensusSetStatus">ConsensusSetStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Defines the role name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>accessMode</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.AccessMode">
-AccessMode
-</a>
-</em>
-</td>
-<td>
-<p>accessMode defines what service this pod provides.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>pod</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Pod name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConsensusSetSpec">ConsensusSetSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>StatefulSetSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.StatefulSetSpec">
-StatefulSetSpec
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>StatefulSetSpec</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>leader</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusMember">
-ConsensusMember
-</a>
-</em>
-</td>
-<td>
-<p>leader, one single leader.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>followers</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusMember">
-[]ConsensusMember
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>followers, has voting right but not Leader.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>learner</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusMember">
-ConsensusMember
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>learner, no voting right.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ConsensusSetStatus">ConsensusSetStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentStatus">ClusterComponentStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>leader</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusMemberStatus">
-ConsensusMemberStatus
-</a>
-</em>
-</td>
-<td>
-<p>Leader status.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>followers</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusMemberStatus">
-[]ConsensusMemberStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Followers status.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>learner</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConsensusMemberStatus">
-ConsensusMemberStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Learner status.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CustomLabelSpec">CustomLabelSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>key</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>key name of label</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>value</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>value of label</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.GVKResource">
-[]GVKResource
-</a>
-</em>
-</td>
-<td>
-<p>resources defines the resources to be labeled.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.CustomParametersValidation">CustomParametersValidation
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>schema</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#jsonschemaprops-v1-apiextensions-k8s-io">
-Kubernetes api extensions v1.JSONSchemaProps
-</a>
-</em>
-</td>
-<td>
-<p>schema provides a way for providers to validate the changed parameters through json.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cue</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cue that to let provider verify user configuration through cue language.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.DownwardAPIOption">DownwardAPIOption
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Specify the name of the field.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>mountPoint</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>mountPoint is the mount point of the scripts file.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>items</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#downwardapivolumefile-v1-core">
-[]Kubernetes core/v1.DownwardAPIVolumeFile
-</a>
-</em>
-</td>
-<td>
-<p>Items is a list of downward API volume file</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>command</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>command used to execute for downwrad api.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ExporterConfig">ExporterConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.MonitorConfig">MonitorConfig</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>scrapePort</code><br/>
-<em>
-<a href="https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString">
-Kubernetes api utils intstr.IntOrString
-</a>
-</em>
-</td>
-<td>
-<p>scrapePort is exporter port for Time Series Database to scrape metrics.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scrapePath</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scrapePath is exporter url path for Time Series Database to scrape metrics.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Expose">Expose
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>services</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentService">
-[]ClusterComponentService
-</a>
-</em>
-</td>
-<td>
-<p>Setting the list of services to be exposed.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.FailurePolicyType">FailurePolicyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentDefRef">ComponentDefRef</a>)
-</p>
-<div>
-<p>FailurePolicyType specifies the type of failure policy</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Fail&#34;</p></td>
-<td><p>ReportError means that an error will be reported.</p><br /></td>
-</tr><tr><td><p>&#34;Ignore&#34;</p></td>
-<td><p>Ignore means that an error will be ignored but logged.</p><br /></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.FormatterConfig">FormatterConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>FormatterOptions</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.FormatterOptions">
-FormatterOptions
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>FormatterOptions</code> are embedded into this type.)
-</p>
-<em>(Optional)</em>
-<p>The FormatterOptions represents the special options of configuration file.<br />This is optional for now. If not specified.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>format</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CfgFileFormat">
-CfgFileFormat
-</a>
-</em>
-</td>
-<td>
-<p>The configuration file format. Valid values are ini, xml, yaml, json,<br />hcl, dotenv, properties and toml.</p><br /><br /><p>ini: a configuration file that consists of a text-based content with a structure and syntax comprising key–value pairs for properties, reference wiki: <a href="https://en.wikipedia.org/wiki/INI_file">https://en.wikipedia.org/wiki/INI_file</a><br />xml: reference wiki: <a href="https://en.wikipedia.org/wiki/XML">https://en.wikipedia.org/wiki/XML</a><br />yaml: a configuration file support for complex data types and structures.<br />json: reference wiki: <a href="https://en.wikipedia.org/wiki/JSON">https://en.wikipedia.org/wiki/JSON</a><br />hcl: : The HashiCorp Configuration Language (HCL) is a configuration language authored by HashiCorp, reference url: <a href="https://www.linode.com/docs/guides/introduction-to-hcl/">https://www.linode.com/docs/guides/introduction-to-hcl/</a><br />dotenv: this was a plain text file with simple key–value pairs, reference wiki: <a href="https://en.wikipedia.org/wiki/Configuration_file#MS-DOS">https://en.wikipedia.org/wiki/Configuration_file#MS-DOS</a><br />properties: a file extension mainly used in Java, reference wiki: <a href="https://en.wikipedia.org/wiki/.properties">https://en.wikipedia.org/wiki/.properties</a><br />toml: reference wiki: <a href="https://en.wikipedia.org/wiki/TOML">https://en.wikipedia.org/wiki/TOML</a><br />props-plus: a file extension mainly used in Java, support CamelCase(e.g: brokerMaxConnectionsPerIp)</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.FormatterOptions">FormatterOptions
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.FormatterConfig">FormatterConfig</a>)
-</p>
-<div>
-<p>FormatterOptions represents the special options of configuration file.<br />Only one of its members may be specified.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>iniConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.IniConfig">
-IniConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>iniConfig represents the ini options.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.GVKResource">GVKResource
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.CustomLabelSpec">CustomLabelSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>gvk</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>gvk is Group/Version/Kind, for example &ldquo;v1/Pod&rdquo;, &ldquo;apps/v1/StatefulSet&rdquo;, etc.<br />when the gvk resource filtered by the selector already exists, if there is no corresponding custom label, it will be added, and if label already exists, it will be updated.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>selector</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>selector is a label query over a set of resources.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.HScaleDataClonePolicyType">HScaleDataClonePolicyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.HorizontalScalePolicy">HorizontalScalePolicy</a>)
-</p>
-<div>
-<p>HScaleDataClonePolicyType defines data clone policy when horizontal scaling.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;CloneVolume&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Snapshot&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;None&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.HorizontalScalePolicy">HorizontalScalePolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.HScaleDataClonePolicyType">
-HScaleDataClonePolicyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>type controls what kind of data synchronization do when component scale out.<br />Policy is in enum of &#123;None, CloneVolume&#125;. The default policy is <code>None</code>.<br />None: Default policy, create empty volume and no data clone.<br />CloneVolume: Do data clone to newly scaled pods. Prefer to use volume snapshot first,<br />        and will try backup tool if volume snapshot is not enabled, finally<br />	       report error if both above cannot work.<br />Snapshot: Deprecated, alias for CloneVolume.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>backupPolicyTemplateName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>BackupPolicyTemplateName reference the backup policy template.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeMountsName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>volumeMountsName defines which volumeMount of the container to do backup,<br />only work if Type is not None<br />if not specified, the 1st volumeMount will be chosen</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.HorizontalScaling">HorizontalScaling
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>HorizontalScaling defines the variables of horizontal scaling operation</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>replicas</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<p>replicas for the workloads.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.IniConfig">IniConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.FormatterOptions">FormatterOptions</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>sectionName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>sectionName describes ini section.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Issuer">Issuer
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentSpec">ClusterComponentSpec</a>)
-</p>
-<div>
-<p>Issuer defines Tls certs issuer</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.IssuerName">
-IssuerName
-</a>
-</em>
-</td>
-<td>
-<p>Name of issuer.<br />Options supported:<br />- KubeBlocks - Certificates signed by KubeBlocks Operator.<br />- UserProvided - User provided own CA-signed certificates.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>secretRef</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TLSSecretRef">
-TLSSecretRef
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>secretRef. TLS certs Secret reference<br />required when from is UserProvided</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.IssuerName">IssuerName
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Issuer">Issuer</a>)
-</p>
-<div>
-<p>IssuerName defines Tls certs issuer name</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;KubeBlocks&#34;</p></td>
-<td><p>IssuerKubeBlocks Certificates signed by KubeBlocks Operator.</p><br /></td>
-</tr><tr><td><p>&#34;UserProvided&#34;</p></td>
-<td><p>IssuerUserProvided User provided own CA-signed certificates.</p><br /></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.KBAccountType">KBAccountType
-(<code>byte</code> alias)</h3>
-<div>
-<p>KBAccountType is used for bitwise operation.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>0</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.LastComponentConfiguration">LastComponentConfiguration
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.LastConfiguration">LastConfiguration</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>replicas</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>replicas are the last replicas of the component.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ResourceRequirements</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ResourceRequirements</code> are embedded into this type.)
-</p>
-<em>(Optional)</em>
-<p>the last resources of the component.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>classDefRef</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClassDefRef">
-ClassDefRef
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>classDefRef reference class defined in ComponentClassDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeClaimTemplates</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsRequestVolumeClaimTemplate">
-[]OpsRequestVolumeClaimTemplate
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>volumeClaimTemplates records the last volumeClaimTemplates of the component.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>services</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentService">
-[]ClusterComponentService
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>services records the last services of the component.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>targetResources</code><br/>
-<em>
-map[github.com/apecloud/kubeblocks/apis/apps/v1alpha1.ComponentResourceKey][]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>targetResources records the affecting target resources information for the component.<br />resource key is in list of [pods].</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.LastConfiguration">LastConfiguration
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestStatus">OpsRequestStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterVersionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>clusterVersionRef references ClusterVersion name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>components</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.LastComponentConfiguration">
-map[string]github.com/apecloud/kubeblocks/apis/apps/v1alpha1.LastComponentConfiguration
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>components records last configuration of the component.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.LazyRenderedTemplateSpec">LazyRenderedTemplateSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentConfigSpec">ComponentConfigSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>templateRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Specify the name of the referenced the configuration template ConfigMap object.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>namespace</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify the namespace of the referenced the configuration template ConfigMap object.<br />An empty namespace is equivalent to the &ldquo;default&rdquo; namespace.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>policy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.MergedPolicy">
-MergedPolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>policy defines how to merge external imported templates into component templates.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.LetterCase">LetterCase
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.PasswordConfig">PasswordConfig</a>)
-</p>
-<div>
-<p>LetterCase defines cases to use in password generation.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;LowerCases&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;MixedCases&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;UpperCases&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.LogConfig">LogConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name log type name, such as slow for MySQL slow log file.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>filePathPattern</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>filePathPattern log file path pattern which indicate how to find this file<br />corresponding to variable (log path) in database kernel. please don&rsquo;t set this casually.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.MemoryConstraint">MemoryConstraint
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ResourceConstraintRule">ResourceConstraintRule</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>sizePerCPU</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The size of memory per vcpu core.<br />For example: 1Gi, 200Mi.<br />If SizePerCPU is specified, MinPerCPU and MaxPerCPU are ignore.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>maxPerCPU</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The maximum size of memory per vcpu core, [MinPerCPU, MaxPerCPU] defines a range for valid memory size per vcpu core.<br />It is useful on GCP as the ratio between the CPU and memory may be a range.<br />If SizePerCPU is specified, MinPerCPU and MaxPerCPU are ignored.<br />Reference: <a href="https://cloud.google.com/compute/docs/general-purpose-machines#custom_machine_types">https://cloud.google.com/compute/docs/general-purpose-machines#custom_machine_types</a></p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>minPerCPU</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The minimum size of memory per vcpu core, [MinPerCPU, MaxPerCPU] defines a range for valid memory size per vcpu core.<br />It is useful on GCP as the ratio between the CPU and memory may be a range.<br />If SizePerCPU is specified, MinPerCPU and MaxPerCPU are ignored.<br />Reference: <a href="https://cloud.google.com/compute/docs/general-purpose-machines#custom_machine_types">https://cloud.google.com/compute/docs/general-purpose-machines#custom_machine_types</a></p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.MergedPolicy">MergedPolicy
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.LazyRenderedTemplateSpec">LazyRenderedTemplateSpec</a>)
-</p>
-<div>
-<p>MergedPolicy defines how to merge external imported templates into component templates.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;none&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;add&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;patch&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;replace&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.MonitorConfig">MonitorConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>builtIn</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>builtIn is a switch to enable KubeBlocks builtIn monitoring.<br />If BuiltIn is set to true, monitor metrics will be scraped automatically.<br />If BuiltIn is set to false, the provider should set ExporterConfig and Sidecar container own.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>exporterConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ExporterConfig">
-ExporterConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>exporterConfig provided by provider, which specify necessary information to Time Series Database.<br />exporterConfig is valid when builtIn is false.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsPhase">OpsPhase
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestStatus">OpsRequestStatus</a>)
-</p>
-<div>
-<p>OpsPhase defines opsRequest phase.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Cancelled&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Cancelling&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Creating&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Failed&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Pending&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Running&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Succeed&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRecorder">OpsRecorder
-</h3>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name OpsRequest name</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsType">
-OpsType
-</a>
-</em>
-</td>
-<td>
-<p>clusterPhase the cluster phase when the OpsRequest is running</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRequestBehaviour">OpsRequestBehaviour
-</h3>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>FromClusterPhases</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterPhase">
-[]ClusterPhase
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-<tr>
-<td>
-<code>ToClusterPhase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterPhase">
-ClusterPhase
-</a>
-</em>
-</td>
-<td>
-</td>
-</tr>
-<tr>
-<td>
-<code>ProcessingReasonInClusterCondition</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRequestComponentStatus">OpsRequestComponentStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestStatus">OpsRequestStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentPhase">
-ClusterComponentPhase
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>phase describes the component phase, reference Cluster.status.component.phase.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>lastFailedTime</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>lastFailedTime is the last time the component phase transitioned to Failed or Abnormal.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>progressDetails</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProgressStatusDetail">
-[]ProgressStatusDetail
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>progressDetails describes the progress details of the component for this operation.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>workloadType</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.WorkloadType">
-WorkloadType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>workloadType references workload type of component in ClusterDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>reason</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>reason describes the reason for the component phase.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>message is a human-readable message indicating details about this operation.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequest">OpsRequest</a>)
-</p>
-<div>
-<p>OpsRequestSpec defines the desired state of OpsRequest</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>clusterRef references clusterDefinition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cancel</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cancel defines the action to cancel the Pending/Creating/Running opsRequest, supported types: [VerticalScaling, HorizontalScaling].<br />once cancel is set to true, this opsRequest will be canceled and modifying this property again will not take effect.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsType">
-OpsType
-</a>
-</em>
-</td>
-<td>
-<p>type defines the operation type.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ttlSecondsAfterSucceed</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>ttlSecondsAfterSucceed OpsRequest will be deleted after TTLSecondsAfterSucceed second when OpsRequest.status.phase is Succeed.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>upgrade</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Upgrade">
-Upgrade
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>upgrade specifies the cluster version by specifying clusterVersionRef.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>horizontalScaling</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.HorizontalScaling">
-[]HorizontalScaling
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>horizontalScaling defines what component need to horizontal scale the specified replicas.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeExpansion</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VolumeExpansion">
-[]VolumeExpansion
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>volumeExpansion defines what component and volumeClaimTemplate need to expand the specified storage.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>restart</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-[]ComponentOps
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>restart the specified components.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>switchover</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Switchover">
-[]Switchover
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>switchover the specified components.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>verticalScaling</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VerticalScaling">
-[]VerticalScaling
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>verticalScaling defines what component need to vertical scale the specified compute resources.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>reconfigure</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Reconfigure">
-Reconfigure
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>reconfigure defines the variables that need to input when updating configuration.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>expose</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Expose">
-[]Expose
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>expose defines services the component needs to expose.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>restoreFrom</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.RestoreFromSpec">
-RestoreFromSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>cluster RestoreFrom backup or point in time</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ttlSecondsBeforeAbort</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>ttlSecondsBeforeAbort OpsRequest will wait at most TTLSecondsBeforeAbort seconds for start-conditions to be met.<br />If not specified, the default value is 0, which means that the start-conditions must be met immediately.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptSpec">
-ScriptSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scriptSpec defines the script to be executed.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRequestStatus">OpsRequestStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequest">OpsRequest</a>)
-</p>
-<div>
-<p>OpsRequestStatus defines the observed state of OpsRequest</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterGeneration</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>ClusterGeneration records the cluster generation after handling the opsRequest action.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>phase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsPhase">
-OpsPhase
-</a>
-</em>
-</td>
-<td>
-<p>phase describes OpsRequest phase.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>progress</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-</td>
-</tr>
-<tr>
-<td>
-<code>lastConfiguration</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.LastConfiguration">
-LastConfiguration
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>lastConfiguration records the last configuration before this operation take effected.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>components</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsRequestComponentStatus">
-map[string]github.com/apecloud/kubeblocks/apis/apps/v1alpha1.OpsRequestComponentStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>components defines the recorded the status information of changed components for operation request.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>startTimestamp</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>startTimestamp The time when the OpsRequest started processing.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>completionTimestamp</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>completionTimestamp defines the OpsRequest completion time.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cancelTimestamp</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>CancelTimestamp defines cancel time.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>reconfiguringStatus</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReconfiguringStatus">
-ReconfiguringStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>reconfiguringStatus defines the status information of reconfiguring.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>conditions</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#condition-v1-meta">
-[]Kubernetes meta/v1.Condition
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>conditions describes opsRequest detail status.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsRequestVolumeClaimTemplate">OpsRequestVolumeClaimTemplate
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.LastComponentConfiguration">LastComponentConfiguration</a>, <a href="#apps.kubeblocks.io/v1alpha1.VolumeExpansion">VolumeExpansion</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>storage</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<p>Request storage size.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name references volumeClaimTemplate name from cluster components.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.OpsType">OpsType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRecorder">OpsRecorder</a>, <a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>OpsType defines operation types.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;DataScript&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Expose&#34;</p></td>
-<td><p>StartType the start operation will start the pods which is deleted in stop operation.</p><br /></td>
-</tr><tr><td><p>&#34;HorizontalScaling&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Reconfiguring&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Restart&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Start&#34;</p></td>
-<td><p>StopType the stop operation will delete all pods in a cluster concurrently.</p><br /></td>
-</tr><tr><td><p>&#34;Stop&#34;</p></td>
-<td><p>RestartType the restart operation is a special case of the rolling update operation.</p><br /></td>
-</tr><tr><td><p>&#34;Switchover&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Upgrade&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;VerticalScaling&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;VolumeExpansion&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ParameterConfig">ParameterConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Configuration">Configuration</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>key</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>key indicates the key name of ConfigMap.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>parameters</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ParameterPair">
-[]ParameterPair
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Setting the list of parameters for a single configuration file.<br />update specified the parameters.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>fileContent</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>fileContent indicates the configuration file content.<br />update whole file.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ParameterPair">ParameterPair
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ParameterConfig">ParameterConfig</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>key</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>key is name of the parameter to be updated.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>value</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>parameter values to be updated.<br />if set nil, the parameter defined by the key field will be deleted from the configuration file.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.PasswordConfig">PasswordConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SystemAccountSpec">SystemAccountSpec</a>)
-</p>
-<div>
-<p>PasswordConfig helps provide to customize complexity of password generation pattern.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>length</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>length defines the length of password.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>numDigits</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>numDigits defines number of digits.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>numSymbols</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>numSymbols defines number of symbols.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>letterCase</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.LetterCase">
-LetterCase
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>letterCase defines to use lower-cases, upper-cases or mixed-cases of letters.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.PersistentVolumeClaimSpec">PersistentVolumeClaimSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVolumeClaimTemplate">ClusterComponentVolumeClaimTemplate</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>accessModes</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#persistentvolumeaccessmode-v1-core">
-[]Kubernetes core/v1.PersistentVolumeAccessMode
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>accessModes contains the desired access modes the volume should have.<br />More info: <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1">https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>resources</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>resources represents the minimum resources the volume should have.<br />If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements<br />that are lower than previous value but must still be higher than capacity recorded in the<br />status field of the claim.<br />More info: <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources">https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>storageClassName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>storageClassName is the name of the StorageClass required by the claim.<br />More info: <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1">https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1</a>.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Phase">Phase
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterDefinitionStatus">ClusterDefinitionStatus</a>, <a href="#apps.kubeblocks.io/v1alpha1.ClusterVersionStatus">ClusterVersionStatus</a>)
-</p>
-<div>
-<p>Phase defines the ClusterDefinition and ClusterVersion  CR .status.phase</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Available&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Unavailable&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.PodAntiAffinity">PodAntiAffinity
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Affinity">Affinity</a>)
-</p>
-<div>
-<p>PodAntiAffinity defines pod anti-affinity strategy.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Preferred&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Required&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.PointInTimeRefSpec">PointInTimeRefSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.RestoreFromSpec">RestoreFromSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>time</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specify the time point to restore, with UTC as the time zone.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ref</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.RefNamespaceName">
-RefNamespaceName
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specify a reference source cluster to restore</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProgressStatus">ProgressStatus
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ProgressStatusDetail">ProgressStatusDetail</a>)
-</p>
-<div>
-<p>ProgressStatus defines the status of the opsRequest progress.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Failed&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Pending&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Processing&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Succeed&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProgressStatusDetail">ProgressStatusDetail
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestComponentStatus">OpsRequestComponentStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>group</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>group describes which group the current object belongs to.<br />if the objects of a component belong to the same group, we can ignore it.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>objectKey</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>objectKey is the unique key of the object.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>status</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProgressStatus">
-ProgressStatus
-</a>
-</em>
-</td>
-<td>
-<p>status describes the state of processing the object.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>message</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>message is a human readable message indicating details about the object condition.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>startTime</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>startTime is the start time of object processing.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>endTime</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#time-v1-meta">
-Kubernetes meta/v1.Time
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>endTime is the completion time of object processing.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProtectedVolume">ProtectedVolume
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.VolumeProtectionSpec">VolumeProtectionSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Name of volume to protect.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>highWatermark</code><br/>
-<em>
-int
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Volume specified high watermark threshold, it will override the component level threshold.<br />If the value is invalid, it will be ignored and the component level threshold will be used.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProvisionPolicy">ProvisionPolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SystemAccountConfig">SystemAccountConfig</a>)
-</p>
-<div>
-<p>ProvisionPolicy defines the policy details for creating accounts.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProvisionPolicyType">
-ProvisionPolicyType
-</a>
-</em>
-</td>
-<td>
-<p>type defines the way to provision an account, either <code>CreateByStmt</code> or <code>ReferToExisting</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scope</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProvisionScope">
-ProvisionScope
-</a>
-</em>
-</td>
-<td>
-<p>scope is the scope to provision account, and the scope could be <code>AnyPods</code> or <code>AllPods</code>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>statements</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProvisionStatements">
-ProvisionStatements
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>statements will be used when Type is CreateByStmt.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>secretRef</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProvisionSecretRef">
-ProvisionSecretRef
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>secretRef will be used when Type is ReferToExisting.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProvisionPolicyType">ProvisionPolicyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ProvisionPolicy">ProvisionPolicy</a>)
-</p>
-<div>
-<p>ProvisionPolicyType defines the policy for creating accounts.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;CreateByStmt&#34;</p></td>
-<td><p>CreateByStmt will create account w.r.t. deletion and creation statement given by provider.</p><br /></td>
-</tr><tr><td><p>&#34;ReferToExisting&#34;</p></td>
-<td><p>ReferToExisting will not create account, but create a secret by copying data from referred secret file.</p><br /></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProvisionScope">ProvisionScope
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ProvisionPolicy">ProvisionPolicy</a>)
-</p>
-<div>
-<p>ProvisionScope defines the scope (within component) of provision.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;AllPods&#34;</p></td>
-<td><p>AllPods will create accounts for all pods belong to the component.</p><br /></td>
-</tr><tr><td><p>&#34;AnyPods&#34;</p></td>
-<td><p>AndyPods will only create accounts on one pod.</p><br /></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProvisionSecretRef">ProvisionSecretRef
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ProvisionPolicy">ProvisionPolicy</a>)
-</p>
-<div>
-<p>ProvisionSecretRef defines the information of secret referred to.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name refers to the name of the secret.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>namespace</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>namespace refers to the namespace of the secret.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ProvisionStatements">ProvisionStatements
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ProvisionPolicy">ProvisionPolicy</a>)
-</p>
-<div>
-<p>ProvisionStatements defines the statements used to create accounts.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>creation</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>creation specifies statement how to create this account with required privileges.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>update</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>update specifies statement how to update account&rsquo;s password.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>deletion</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>deletion specifies statement how to delete this account.<br />Used in combination with <code>CreateionStatement</code> to delete the account before create it.<br />For instance, one usually uses <code>drop user if exists</code> statement followed by <code>create user</code> statement to create an account.<br />Deprecated: this field is deprecated, use <code>update</code> instead.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Reconfigure">Reconfigure
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>Reconfigure defines the variables that need to input when updating configuration.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>configurations</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.Configuration">
-[]Configuration
-</a>
-</em>
-</td>
-<td>
-<p>configurations defines which components perform the operation.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ReconfiguringStatus">ReconfiguringStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestStatus">OpsRequestStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>configurationStatus</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConfigurationStatus">
-[]ConfigurationStatus
-</a>
-</em>
-</td>
-<td>
-<p>configurationStatus describes the status of the component reconfiguring.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.RefNamespaceName">RefNamespaceName
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupRefSpec">BackupRefSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.PointInTimeRefSpec">PointInTimeRefSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specified the name</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>namespace</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specified the namespace</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ReloadOptions">ReloadOptions
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec</a>)
-</p>
-<div>
-<p>ReloadOptions defines reload options<br />Only one of its members may be specified.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>unixSignalTrigger</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.UnixSignalTrigger">
-UnixSignalTrigger
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>unixSignalTrigger used to reload by sending a signal.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>shellTrigger</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ShellTrigger">
-ShellTrigger
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>shellTrigger performs the reload command.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>tplScriptTrigger</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.TPLScriptTrigger">
-TPLScriptTrigger
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>goTplTrigger performs the reload command.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ReplicationMemberStatus">ReplicationMemberStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ReplicationSetStatus">ReplicationSetStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>pod</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Pod name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ReplicationSetSpec">ReplicationSetSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>StatefulSetSpec</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.StatefulSetSpec">
-StatefulSetSpec
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>StatefulSetSpec</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ReplicationSetStatus">ReplicationSetStatus
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentStatus">ClusterComponentStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>primary</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReplicationMemberStatus">
-ReplicationMemberStatus
-</a>
-</em>
-</td>
-<td>
-<p>Primary status.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>secondaries</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ReplicationMemberStatus">
-[]ReplicationMemberStatus
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Secondaries status.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ResourceConstraintRule">ResourceConstraintRule
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ComponentResourceConstraintSpec">ComponentResourceConstraintSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>The name of the constraint.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cpu</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CPUConstraint">
-CPUConstraint
-</a>
-</em>
-</td>
-<td>
-<p>The constraint for vcpu cores.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>memory</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.MemoryConstraint">
-MemoryConstraint
-</a>
-</em>
-</td>
-<td>
-<p>The constraint for memory size.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>storage</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.StorageConstraint">
-StorageConstraint
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The constraint for storage size.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.RestoreFromSpec">RestoreFromSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>backup</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupRefSpec">
-[]BackupRefSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>use the backup name and component name for restore, support for multiple components&rsquo; recovery.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>pointInTime</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.PointInTimeRefSpec">
-PointInTimeRefSpec
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>specified the point in time to recovery</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.RetentionSpec">RetentionSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ttl</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>ttl is a time string ending with the &rsquo;d&rsquo;|&rsquo;D&rsquo;|&lsquo;h&rsquo;|&lsquo;H&rsquo; character to describe how long<br />the Backup should be retained. if not set, will be retained forever.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Schedule">Schedule
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>startingDeadlineMinutes</code><br/>
-<em>
-int64
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>startingDeadlineMinutes defines the deadline in minutes for starting the backup job<br />if it misses scheduled time for any reason.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>snapshot</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SchedulePolicy">
-SchedulePolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>schedule policy for snapshot backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>datafile</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SchedulePolicy">
-SchedulePolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>schedule policy for datafile backup.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>logfile</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SchedulePolicy">
-SchedulePolicy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>schedule policy for logfile backup.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SchedulePolicy">SchedulePolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Schedule">Schedule</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>cronExpression</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>the cron expression for schedule, the timezone is in UTC. see <a href="https://en.wikipedia.org/wiki/Cron">https://en.wikipedia.org/wiki/Cron</a>.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>enable</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<p>enable or disable the schedule.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ScriptConfig">ScriptConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.TPLScriptTrigger">TPLScriptTrigger</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>scriptConfigMapRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>scriptConfigMapRef used to execute for reload.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>namespace</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify the namespace of the referenced the tpl script ConfigMap object.<br />An empty namespace is equivalent to the &ldquo;default&rdquo; namespace.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ScriptFrom">ScriptFrom
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ScriptSpec">ScriptSpec</a>)
-</p>
-<div>
-<p>ScriptFrom defines the script to be executed from configMap or secret.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>configMapRef</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#configmapkeyselector-v1-core">
-[]Kubernetes core/v1.ConfigMapKeySelector
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>configMapRef defines the configMap to be executed.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>secretRef</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#secretkeyselector-v1-core">
-[]Kubernetes core/v1.SecretKeySelector
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>secretRef defines the secret to be executed.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ScriptSecret">ScriptSecret
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ScriptSpec">ScriptSpec</a>)
-</p>
-<div>
-<p>ScriptSecret defines the secret to be used to execute the script.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name is the name of the secret.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>usernameKey</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>usernameKey field is used to specify the username of the secret.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>passwordKey</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>passwordKey field is used to specify the password of the secret.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ScriptSpec">ScriptSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>ScriptSpec defines the script to be executed. It is not a general purpose script executor.<br />It is designed to execute the script to perform some specific operations, such as create database, create user, etc.<br />It is applicable for engines, such as MySQL, PostgreSQL, Redis, MongoDB, etc.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>image</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>exec command with image, by default use the image of kubeblocks-datascript.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>secret</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptSecret">
-ScriptSecret
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>secret defines the secret to be used to execute the script.<br />If not specified, the default cluster root credential secret will be used.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>script</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>script defines the script to be executed.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptFrom</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptFrom">
-ScriptFrom
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scriptFrom defines the script to be executed from configMap or secret.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ScriptSpecSelector">ScriptSpecSelector
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SwitchoverAction">SwitchoverAction</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>ScriptSpec name of the referent, refer to componentDefs[x].scriptSpecs[y].Name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ServicePort">ServicePort
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ServiceSpec">ServiceSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>The name of this port within the service. This must be a DNS_LABEL.<br />All ports within a ServiceSpec must have unique names. When considering<br />the endpoints for a Service, this must match the &lsquo;name&rsquo; field in the<br />EndpointPort.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>protocol</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#protocol-v1-core">
-Kubernetes core/v1.Protocol
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The IP protocol for this port. Supports &ldquo;TCP&rdquo;, &ldquo;UDP&rdquo;, and &ldquo;SCTP&rdquo;.<br />Default is TCP.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>appProtocol</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The application protocol for this port.<br />This field follows standard Kubernetes label syntax.<br />Un-prefixed names are reserved for IANA standard service names (as per<br />RFC-6335 and <a href="https://www.iana.org/assignments/service-names)">https://www.iana.org/assignments/service-names)</a>.<br />Non-standard protocols should use prefixed names such as<br />mycompany.com/my-custom-protocol.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>port</code><br/>
-<em>
-int32
-</em>
-</td>
-<td>
-<p>The port that will be exposed by this service.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>targetPort</code><br/>
-<em>
-<a href="https://pkg.go.dev/k8s.io/apimachinery/pkg/util/intstr#IntOrString">
-Kubernetes api utils intstr.IntOrString
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Number or name of the port to access on the pods targeted by the service.<br />Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.<br />If this is a string, it will be looked up as a named port in the<br />target Pod&rsquo;s container ports. If this is not specified, the value<br />of the &lsquo;port&rsquo; field is used (an identity map).<br />This field is ignored for services with clusterIP=None, and should be<br />omitted or set equal to the &lsquo;port&rsquo; field.<br />More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service">https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service</a></p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ServiceSpec">ServiceSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ports</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ServicePort">
-[]ServicePort
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The list of ports that are exposed by this service.<br />More info: <a href="https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies">https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies</a></p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ShellTrigger">ShellTrigger
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ReloadOptions">ReloadOptions</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>command</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<p>command used to execute for reload.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>sync</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify synchronize updates parameters to the config manager.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SignalType">SignalType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.UnixSignalTrigger">UnixSignalTrigger</a>)
-</p>
-<div>
-<p>SignalType defines which signals are valid.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;SIGABRT&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGALRM&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGBUS&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGCHLD&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGCONT&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGFPE&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGHUP&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGILL&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGINT&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGIO&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGKILL&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGPIPE&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGPROF&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGPWR&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGQUIT&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGSEGV&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGSTKFLT&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGSTOP&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGSYS&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGTERM&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGTRAP&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGTSTP&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGTTIN&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGTTOU&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGURG&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGUSR1&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGUSR2&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGVTALRM&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGWINCH&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGXCPU&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SIGXFSZ&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SnapshotPolicy">SnapshotPolicy
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BackupPolicy">BackupPolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>BasePolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BasePolicy">
-BasePolicy
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>BasePolicy</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>hooks</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.BackupPolicyHook">
-BackupPolicyHook
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>execute hook commands for backup.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.StatefulSetSpec">StatefulSetSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>, <a href="#apps.kubeblocks.io/v1alpha1.ConsensusSetSpec">ConsensusSetSpec</a>, <a href="#apps.kubeblocks.io/v1alpha1.ReplicationSetSpec">ReplicationSetSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>updateStrategy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.UpdateStrategy">
-UpdateStrategy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>updateStrategy, Pods update strategy.<br />In case of workloadType=Consensus the update strategy will be following:</p><br /><br /><p>serial: update Pods one by one that guarantee minimum component unavailable time.<br />		Learner -&gt; Follower(with AccessMode=none) -&gt; Follower(with AccessMode=readonly) -&gt; Follower(with AccessMode=readWrite) -&gt; Leader<br />bestEffortParallel: update Pods in parallel that guarantee minimum component un-writable time.<br />		Learner, Follower(minority) in parallel -&gt; Follower(majority) -&gt; Leader, keep majority online all the time.<br />parallel: force parallel</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>llPodManagementPolicy</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#podmanagementpolicytype-v1-apps">
-Kubernetes apps/v1.PodManagementPolicyType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>llPodManagementPolicy is the low-level controls how pods are created during initial scale up,<br />when replacing pods on nodes, or when scaling down.<br /><code>OrderedReady</code> policy specify where pods are created in increasing order (pod-0, then<br />pod-1, etc) and the controller will wait until each pod is ready before<br />continuing. When scaling down, the pods are removed in the opposite order.<br /><code>Parallel</code> policy specify create pods in parallel<br />to match the desired scale without waiting, and on scale down will delete<br />all pods at once.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>llUpdateStrategy</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#statefulsetupdatestrategy-v1-apps">
-Kubernetes apps/v1.StatefulSetUpdateStrategy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>llUpdateStrategy indicates the low-level StatefulSetUpdateStrategy that will be<br />employed to update Pods in the StatefulSet when a revision is made to<br />Template. Will ignore <code>updateStrategy</code> attribute if provided.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.StatefulSetWorkload">StatefulSetWorkload
-</h3>
-<div>
-<p>StatefulSetWorkload interface</p><br />
-</div>
-<h3 id="apps.kubeblocks.io/v1alpha1.StatelessSetSpec">StatelessSetSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>updateStrategy</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#deploymentstrategy-v1-apps">
-Kubernetes apps/v1.DeploymentStrategy
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>updateStrategy defines the underlying deployment strategy to use to replace existing pods with new ones.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.StorageConstraint">StorageConstraint
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ResourceConstraintRule">ResourceConstraintRule</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>min</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The minimum size of storage.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>max</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#quantity-resource-core">
-Kubernetes resource.Quantity
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The maximum size of storage.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SwitchPolicyType">SwitchPolicyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSwitchPolicy">ClusterSwitchPolicy</a>)
-</p>
-<div>
-<p>SwitchPolicyType defines switchPolicy type.<br />Currently, only Noop is supported. MaximumAvailability and MaximumDataProtection will be supported in the future.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;MaximumAvailability&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;MaximumDataProtection&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Noop&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SwitchStepRole">SwitchStepRole
-(<code>string</code> alias)</h3>
-<div>
-<p>SwitchStepRole defines the role to execute the switch command.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;NewPrimary&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;OldPrimary&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Secondaries&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Switchover">Switchover
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>instanceName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>instanceName is used to specify the candidate primary or leader instanceName for switchover.<br />If instanceName is set to &ldquo;<em>&rdquo;, it means that no specific primary or leader is specified for the switchover,<br />and the switchoverAction defined in clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate will be executed,<br />It is required that clusterDefinition.componentDefs[x].switchoverSpec.withoutCandidate is not empty.<br />If instanceName is set to a valid instanceName other than &ldquo;</em>&rdquo;, it means that a specific candidate primary or leader is specified for the switchover.<br />the value of instanceName can be obtained using <code>kbcli cluster list-instances</code>, any other value is invalid.<br />In this case, the <code>switchoverAction</code> defined in clusterDefinition.componentDefs[x].switchoverSpec.withCandidate will be executed,<br />and it is required that clusterDefinition.componentDefs[x].switchoverSpec.withCandidate is not empty.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SwitchoverAction">SwitchoverAction
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SwitchoverSpec">SwitchoverSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>cmdExecutorConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CmdExecutorConfig">
-CmdExecutorConfig
-</a>
-</em>
-</td>
-<td>
-<p>cmdExecutorConfig is the executor configuration of the switchover command.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>scriptSpecSelectors</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptSpecSelector">
-[]ScriptSpecSelector
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>scriptSpecSelectors defines the selector of the scriptSpecs that need to be referenced.<br />Once ScriptSpecSelectors is defined, the scripts defined in scriptSpecs can be referenced in the SwitchoverAction.CmdExecutorConfig.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SwitchoverShortSpec">SwitchoverShortSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">ClusterComponentVersion</a>)
-</p>
-<div>
-<p>SwitchoverShortSpec is a short version of SwitchoverSpec, with only CommandExecutorEnvItem field.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>cmdExecutorConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CommandExecutorEnvItem">
-CommandExecutorEnvItem
-</a>
-</em>
-</td>
-<td>
-<p>CmdExecutorConfig is the command executor config.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SwitchoverSpec">SwitchoverSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>withCandidate</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SwitchoverAction">
-SwitchoverAction
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>withCandidate corresponds to the switchover of the specified candidate primary or leader instance.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>withoutCandidate</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SwitchoverAction">
-SwitchoverAction
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>withoutCandidate corresponds to a switchover that does not specify a candidate primary or leader instance.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SystemAccountConfig">SystemAccountConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.SystemAccountSpec">SystemAccountSpec</a>)
-</p>
-<div>
-<p>SystemAccountConfig specifies how to create and delete system accounts.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.AccountName">
-AccountName
-</a>
-</em>
-</td>
-<td>
-<p>name is the name of a system account.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>provisionPolicy</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProvisionPolicy">
-ProvisionPolicy
-</a>
-</em>
-</td>
-<td>
-<p>provisionPolicy defines how to create account.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SystemAccountShortSpec">SystemAccountShortSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">ClusterComponentVersion</a>)
-</p>
-<div>
-<p>SystemAccountShortSpec is a short version of SystemAccountSpec, with only CmdExecutorConfig field.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>cmdExecutorConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CommandExecutorEnvItem">
-CommandExecutorEnvItem
-</a>
-</em>
-</td>
-<td>
-<p>cmdExecutorConfig configs how to get client SDK and perform statements.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.SystemAccountSpec">SystemAccountSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-<p>SystemAccountSpec specifies information to create system accounts.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>cmdExecutorConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.CmdExecutorConfig">
-CmdExecutorConfig
-</a>
-</em>
-</td>
-<td>
-<p>cmdExecutorConfig configs how to get client SDK and perform statements.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>passwordConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.PasswordConfig">
-PasswordConfig
-</a>
-</em>
-</td>
-<td>
-<p>passwordConfig defines the pattern to generate password.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>accounts</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SystemAccountConfig">
-[]SystemAccountConfig
-</a>
-</em>
-</td>
-<td>
-<p>accounts defines system account config settings.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.TLSSecretRef">TLSSecretRef
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Issuer">Issuer</a>)
-</p>
-<div>
-<p>TLSSecretRef defines Secret contains Tls certs</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Name of the Secret</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>ca</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>CA cert key in Secret</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>cert</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Cert key in Secret</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>key</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Key of TLS private key in Secret</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.TPLScriptTrigger">TPLScriptTrigger
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ReloadOptions">ReloadOptions</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ScriptConfig</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ScriptConfig">
-ScriptConfig
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ScriptConfig</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>sync</code><br/>
-<em>
-bool
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Specify synchronize updates parameters to the config manager.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.TargetInstance">TargetInstance
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.BasePolicy">BasePolicy</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>role</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>select instance of corresponding role for backup, role are:<br />- the name of Leader/Follower/Leaner for Consensus component.<br />- primary or secondary for Replication component.<br />finally, invalid role of the component will be ignored.<br />such as if workload type is Replication and component&rsquo;s replicas is 1,<br />the secondary role is invalid. and it also will be ignored when component is Stateful/Stateless.<br />the role will be transformed to a role LabelSelector for BackupPolicy&rsquo;s target attribute.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>account</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>refer to spec.componentDef.systemAccounts.accounts[*].name in ClusterDefinition.<br />the secret created by this account will be used to connect the database.<br />if not set, the secret created by spec.ConnectionCredential of the ClusterDefinition will be used.<br />it will be transformed to a secret for BackupPolicy&rsquo;s target secret.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>connectionCredentialKey</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ConnectionCredentialKey">
-ConnectionCredentialKey
-</a>
-</em>
-</td>
-<td>
-<p>connectionCredentialKey defines connection credential key in secret<br />which created by spec.ConnectionCredential of the ClusterDefinition.<br />it will be ignored when &ldquo;account&rdquo; is set.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.TenancyType">TenancyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Affinity">Affinity</a>, <a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-<p>TenancyType for cluster tenant resources.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;DedicatedNode&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;SharedNode&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.TerminationPolicyType">TerminationPolicyType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterSpec">ClusterSpec</a>)
-</p>
-<div>
-<p>TerminationPolicyType defines termination policy types.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Delete&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;DoNotTerminate&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Halt&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;WipeOut&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ToolConfig">ToolConfig
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ToolsImageSpec">ToolsImageSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>Specify the name of initContainer. Must be a DNS_LABEL name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>image</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>tools Container image name.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>command</code><br/>
-<em>
-[]string
-</em>
-</td>
-<td>
-<p>exec used to execute for init containers.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.ToolsImageSpec">ToolsImageSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigConstraintSpec">ConfigConstraintSpec</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>mountPoint</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>mountPoint is the mount point of the scripts file.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>toolConfigs</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ToolConfig">
-[]ToolConfig
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>toolConfig used to config init container.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.UnixSignalTrigger">UnixSignalTrigger
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ReloadOptions">ReloadOptions</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>signal</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.SignalType">
-SignalType
-</a>
-</em>
-</td>
-<td>
-<p>signal is valid for unix signal.<br />e.g: SIGHUP<br />url: ../../pkg/configuration/configmap/handler.go:allUnixSignals</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>processName</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>processName is process name, sends unix signal to proc.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.UpdateStrategy">UpdateStrategy
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.StatefulSetSpec">StatefulSetSpec</a>)
-</p>
-<div>
-<p>UpdateStrategy defines Cluster Component update strategy.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;BestEffortParallel&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Parallel&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Serial&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.UpdatedParameters">UpdatedParameters
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ConfigurationStatus">ConfigurationStatus</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>addedKeys</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>addedKeys describes the key added.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>deletedKeys</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>deletedKeys describes the key deleted.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>updatedKeys</code><br/>
-<em>
-map[string]string
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>updatedKeys describes the key updated.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.Upgrade">Upgrade
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>Upgrade defines the variables of upgrade operation.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>clusterVersionRef</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>clusterVersionRef references ClusterVersion name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.UpgradePolicy">UpgradePolicy
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.Configuration">Configuration</a>, <a href="#apps.kubeblocks.io/v1alpha1.ConfigurationStatus">ConfigurationStatus</a>)
-</p>
-<div>
-<p>UpgradePolicy defines the policy of reconfiguring.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;autoReload&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;none&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;simple&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;operatorSyncUpdate&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;parallel&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;rolling&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.VersionsContext">VersionsContext
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentVersion">ClusterComponentVersion</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>initContainers</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#container-v1-core">
-[]Kubernetes core/v1.Container
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Provide ClusterDefinition.spec.componentDefs.podSpec.initContainers override<br />values, typical scenarios are application container image updates.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>containers</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#container-v1-core">
-[]Kubernetes core/v1.Container
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Provide ClusterDefinition.spec.componentDefs.podSpec.containers override<br />values, typical scenarios are application container image updates.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.VerticalScaling">VerticalScaling
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>VerticalScaling defines the variables that need to input when scaling compute resources.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>ResourceRequirements</code><br/>
-<em>
-<a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#resourcerequirements-v1-core">
-Kubernetes core/v1.ResourceRequirements
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ResourceRequirements</code> are embedded into this type.)
-</p>
-<p>resources specifies the computing resource size of verticalScaling.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>classDefRef</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ClassDefRef">
-ClassDefRef
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>classDefRef reference class defined in ComponentClassDefinition.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.VolumeExpansion">VolumeExpansion
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.OpsRequestSpec">OpsRequestSpec</a>)
-</p>
-<div>
-<p>VolumeExpansion defines the variables of volume expansion operation.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>ComponentOps</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ComponentOps">
-ComponentOps
-</a>
-</em>
-</td>
-<td>
-<p>
-(Members of <code>ComponentOps</code> are embedded into this type.)
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<code>volumeClaimTemplates</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.OpsRequestVolumeClaimTemplate">
-[]OpsRequestVolumeClaimTemplate
-</a>
-</em>
-</td>
-<td>
-<p>volumeClaimTemplates specifies the storage size and volumeClaimTemplate name.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.VolumeProtectionSpec">VolumeProtectionSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>highWatermark</code><br/>
-<em>
-int
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>The high watermark threshold for volume space usage.<br />If there is any specified volumes who&rsquo;s space usage is over the threshold, the pre-defined &ldquo;LOCK&rdquo; action<br />will be triggered to degrade the service to protect volume from space exhaustion, such as to set the instance<br />as read-only. And after that, if all volumes&rsquo; space usage drops under the threshold later, the pre-defined<br />&ldquo;UNLOCK&rdquo; action will be performed to recover the service normally.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>volumes</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.ProtectedVolume">
-[]ProtectedVolume
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>Volumes to protect.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.VolumeType">VolumeType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.VolumeTypeSpec">VolumeTypeSpec</a>)
-</p>
-<div>
-<p>VolumeType defines volume type for backup data or log.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;data&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;log&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.VolumeTypeSpec">VolumeTypeSpec
-</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>)
-</p>
-<div>
-</div>
-<table>
-<thead>
-<tr>
-<th>Field</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>
-<code>name</code><br/>
-<em>
-string
-</em>
-</td>
-<td>
-<p>name definition is the same as the name of the VolumeMounts field in PodSpec.Container,<br />similar to the relations of Volumes[<em>].name and VolumesMounts[</em>].name in Pod.Spec.</p><br />
-</td>
-</tr>
-<tr>
-<td>
-<code>type</code><br/>
-<em>
-<a href="#apps.kubeblocks.io/v1alpha1.VolumeType">
-VolumeType
-</a>
-</em>
-</td>
-<td>
-<em>(Optional)</em>
-<p>type is in enum of &#123;data, log&#125;.<br />VolumeTypeData: the volume is for the persistent data storage.<br />VolumeTypeLog: the volume is for the persistent log storage.</p><br />
-</td>
-</tr>
-</tbody>
-</table>
-<h3 id="apps.kubeblocks.io/v1alpha1.WorkloadType">WorkloadType
-(<code>string</code> alias)</h3>
-<p>
-(<em>Appears on:</em><a href="#apps.kubeblocks.io/v1alpha1.ClusterComponentDefinition">ClusterComponentDefinition</a>, <a href="#apps.kubeblocks.io/v1alpha1.OpsRequestComponentStatus">OpsRequestComponentStatus</a>)
-</p>
-<div>
-<p>WorkloadType defines ClusterDefinition&rsquo;s component workload type.</p><br />
-</div>
-<table>
-<thead>
-<tr>
-<th>Value</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody><tr><td><p>&#34;Consensus&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Replication&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Stateful&#34;</p></td>
-<td></td>
-</tr><tr><td><p>&#34;Stateless&#34;</p></td>
-<td></td>
-</tr></tbody>
-</table>
-<hr/>
-<p><em>
-Generated with <code>gen-crd-api-reference-docs</code>
-</em></p>
diff --git a/i18n/zh-cn/developer-docs/external-component/_category_.yml b/i18n/zh-cn/developer-docs/external-component/_category_.yml
deleted file mode 100644
index 5195b7259..000000000
--- a/i18n/zh-cn/developer-docs/external-component/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: 外部组件
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/external-component/reference-external-component.md b/i18n/zh-cn/developer-docs/external-component/reference-external-component.md
deleted file mode 100644
index f0a7bb9d8..000000000
--- a/i18n/zh-cn/developer-docs/external-component/reference-external-component.md
+++ /dev/null
@@ -1,277 +0,0 @@
----
-title: 引用外部组件
-description: KubeBlocks 支持引用外部组件，灵活管理集群。
-keywords: [外部组件]
-sidebar_position: 1
-sidebar_label: 引用外部组件
----
-
-# 引用外部组件
-
-:::note
-
-引用外部组件为 alpha 版本功能，后续可能会有较大的演进和变更。
-
-:::
-
-## 什么是引用外部组件？
-
-许多数据库集群往往依赖于元数据存储进行分布式协调和动态配置。然而，随着数据库集群的不断增加，元数据存储本身可能会消耗大量资源，比如包括 Pulsar 中的 ZooKeeper。为了减少开销，开发者可以在多个数据库集群中引用相同的外部组件。
-
-KubeBlocks 中的引用外部组件指的是，在一个 KubeBlocks 集群中，通过声明式定义的方式，引用一个外部组件或者基于 KubeBlocks 的组件。
-
-根据其定义，引用可以分为两种类型：
-
-* 引用外部组件
-
-  此外部组件可以是基于 Kubernetes 或非 Kubernetes 的。在引用此组件时，首先创建一个 ServiceDescriptor CR，该 CR 定义了引用的服务和资源。
-
-* 引用基于 KubeBlocks 的组件
-
-  这种类型的组件基于 KubeBlocks 集群。在引用此组件时，只需填写被引用的集群对象即可，无需创建ServiceDescriptor 对象。
-
-## 引用外部组件示例
-
-下面以 KubeBlocks Pulsar 集群通过引用外部组件的方式引用 ZooKeeper 为例，展示两部分内容：
-
-1. 在安装 KubeBlocks 或启用引擎时，[创建外部组件引用声明](#创建外部组件引用声明)。
-2. 创建集群时，[定义外部组件关联映射](#定义外部组件关联映射)。
-
-一个 KubeBlocks Pulsar 集群由 proxy、broker、bookies 以及 ZooKeeper 等组件构成。其中 broker 与 bookies 组件依赖 ZooKeeper 组件提供元数据存储与交互。
-
-:::note
-
-更多关于 Pulsar 集群的信息，请参考 [KubeBlocks 中的 Pulsar](./../../user-docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kb.md) 文档。
-
-:::
-
-### 创建外部组件引用声明
-
-1. 在 ClusterDefinition 的 `componentDefs` 中，声明需要引用的组件。
-
-    在本例中，Pulsar 的 broker 与 bookies 组件依赖 ZooKeeper 组件，所以需要在 broker 与 bookies 的 `componentDefs` 定义中加上对 ZooKeeper 的声明。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: ClusterDefinition
-    metadata:
-      name: pulsar
-      labels:
-        {{- include "pulsar.labels" . | nindent 4 }}
-    spec:
-      type: pulsar
-      # 其余定义省略
-      componentDefs:
-        - name: pulsar-broker
-          workloadType: Stateful
-          characterType: pulsar-broker
-          serviceRefDeclarations:
-          - name: pulsarZookeeper
-            serviceRefDeclarationSpecs:
-              - serviceKind: zookeeper
-                serviceVersion: ^3.8.\d{1,2}$
-          # 其余定义省略
-        - name: bookies
-          workloadType: Stateful
-          characterType: bookkeeper
-          statefulSpec:
-            updateStrategy: BestEffortParallel
-          serviceRefDeclarations:
-          - name: pulsarZookeeper
-            serviceRefDeclarationSpecs:
-            - serviceKind: zookeeper
-              serviceVersion: ^3.8.\d{1,2}$
-        # 其余组件定义省略
-    ```
-
-    上述 `serviceRefDeclarations` 模块展示了需要增加的外部组件引用声明，可以看到，`pulsar-broker` 和 `bookies` 组件都声明了一个名为 `pulsarZookeeper` 的服务引用，这表示 `pulsar-broker` 和 `bookies` 都需要一个名称为 `pulsarZookeeper`、服务类型（`serviceKind`）为 zookeeper、服务版本（`serviceVersion`）符合 `^3.8.\d{1,2}$` 正则表达式的服务。
-
-    这个名为 `pulsarZookeeper` 的引用声明，将在用户创建正式的 Pulsar 集群时，映射成为用户指定的具体的 ZooKeeper 集群。
-
-2. 在组件 provider 中定义对 ZooKeeper 组件的使用方式。
-
-    在 ClusterDefinition 进行外部组件引用声明后，用户就可以在 ClusterDefinition 中使用预定义的 `pulsarZookeeper`。
-
-    例如，在启动 pulsar-broker 和 bookies 服务时，需要将 ZooKeeper 服务的地址传入到 pulsar-broker 和 bookies 的配置中，然后就可以在 pulsar-broker 和 bookies 的配置模板渲染中进行引用。下例展示在 `broker-env.tpl` 模板中生成需要用到的 zookeeperServers：
-
-    :::note
-
-    ClusterDefinition 只知道这是一个 ZooKeeper 的服务，但不知道具体是谁提供的哪一个 ZooKeeper。因此，在创建集群时，需要进行 ZooKeeper 组件的映射，请参考下一节的说明。
-
-    :::
-
-    ```yaml
-    {{- $clusterName := $.cluster.metadata.name }}
-    {{- $namespace := $.cluster.metadata.namespace }}
-    {{- $pulsar_zk_from_service_ref := fromJson "{}" }}
-    {{- $pulsar_zk_from_component := fromJson "{}" }}
-
-    {{- if index $.component "serviceReferences" }}
-      {{- range $i, $e := $.component.serviceReferences }}
-        {{- if eq $i "pulsarZookeeper" }}
-          {{- $pulsar_zk_from_service_ref = $e }}
-          {{- break }}
-        {{- end }}
-      {{- end }}
-    {{- end }}
-    {{- range $i, $e := $.cluster.spec.componentSpecs }}
-      {{- if eq $e.componentDefRef "zookeeper" }}
-        {{- $pulsar_zk_from_component = $e }}
-      {{- end }}
-    {{- end }}
-
-    # 首先尝试从服务引用中获取 ZooKeeper。如果 ZooKeeper 服务引用为空，则在 ClusterDefinition 中获取默认的 zookeepercomponentDef
-    {{- $zk_server := "" }}
-    {{- if $pulsar_zk_from_service_ref }}
-      {{- if and (index $pulsar_zk_from_service_ref.spec "endpoint") (index $pulsar_zk_from_service_ref.spec "port") }}
-        {{- $zk_server = printf "%s:%s" $pulsar_zk_from_service_ref.spec.endpoint.value $pulsar_zk_from_service_ref.spec.port.value }}
-      {{- else }}
-        {{- $zk_server = printf "%s-%s.%s.svc:2181" $clusterName $pulsar_zk_from_component.name $namespace }}
-      {{- end }}
-    {{- else }}
-      {{- $zk_server = printf "%s-%s.%s.svc:2181" $clusterName $pulsar_zk_from_component.name $namespace }}
-    {{- end }}
-    zookeeperServers: {{ $zk_server }}
-    configurationStoreServers: {{ $zk_server }}
-    ```
-
-    :::note
-
-    目前仅支持在配置模板渲染中对声明的服务进行 endpoint 和 port 的引用，其他更多引用方式与引用规范将在后续的版本中支持（例如直接在 `env` 中引用声明服务的账号密码等信息）。
-
-    :::
-
-### 定义外部组件关联映射
-
-基于上例，在创建 Pulsar 集群时，ZooKeeper 的映射关联可分成两种：
-
-* 关联映射外部 ZooKeeper 服务；
-* 关联映射 KubeBlocks 提供的独立集群部署的 ZooKeeper 服务。
-
-#### 关联映射外部 ZooKeeper 服务
-
-1. 在 K8s 集群中创建一个 ServiceDescriptor CR 对象。
-
-   在 KubeBlocks 中，ServiceDescriptor 用于描述和存储引用信息的 API 对象。ServiceDescriptor 允许将一个基于 K8s 或者 非 K8s 的提供的服务抽离出来，将其提供给 KubeBlocks 中其他的 Cluster 对象进行引用。
-
-   ServiceDescriptor 可以用于解决 KubeBlocks 中服务依赖、组件依赖和组件共享等问题。下面展示的是一个 CR 对象的示例。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: ServiceDescriptor
-   metadata:
-     name: zookeeper-service-descriptor
-     namespace: default
-   spec:
-     serviceKind: zookeeper
-     serviceVersion: 3.8.0
-     endpoint: pulsar-zookeeper.default.svc // Replace the example value with the actual endpoint of the external zookeeper
-     port: 2181
-   ```
-
-2. 在创建 Pulsar 集群时引用外部 ZooKeeper 服务。
-
-   如下所示，创建一个引用外部 ZooKeeper 服务的 Pulsar 集群。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: pulsar
-     namespace: default
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-2.11.2
-     componentSpecs:
-     - componentDefRef: pulsar-broker
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         serviceDescriptor: zookeeper-service-descriptor
-       # 省略其他的选项
-     - componentDefRef: bookies
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         serviceDescriptor: zookeeper-service-descriptor
-       # 省略其他的选项
-   ```
-
-   在创建 Pulsar Cluster 对象时，`serviceRefs` 将引用声明中的 `pulsarZookeeper` 映射到具体的 `serviceDescriptor`。其中 `name` 就是在 ClusterDefinition 的 `serviceRefs` 中定义的引用声明的名称，而 `serviceDescriptor` 的值就是步骤 1 中的外部的 ZooKeeper。
-
-#### 关联映射 KubeBlock 提供的独立集群部署的 ZooKeeper 服务
-
-即关联映射到一个独立的 KubeBlocks ZooKeeper Cluster。
-
-1. 在 KubeBlocks 创建一个名为 `kb-zookeeper-for-pulsar` 的 ZooKeeper 集群。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: kb-zookeeper-for-pulsar
-     namespace: default
-   spec:
-     clusterDefinitionRef: pulsar-zookeeper
-     clusterVersionRef: pulsar-2.11.2
-     componentSpecs:
-     - componentDefRef: zookeeper
-       monitor: false
-       name: zookeeper
-       noCreatePDB: false
-       replicas: 3
-       resources:
-         limits:
-           memory: 512Mi
-         requests:
-           cpu: 100m
-           memory: 512Mi
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-           - ReadWriteOnce
-           resources:
-             requests:
-               storage: 20Gi
-   terminationPolicy: WipeOut
-   ```
-
-2. 在创建 Pulsar 集群时，引用上面的 ZooKeeper 集群。
-
-   把 `serviceRefs` 中的 `cluster` 的值填写为步骤 1 中的 KubeBlocks ZooKeeper 集群的名称。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: pulsar
-     namespace: default
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-2.11.2
-     componentSpecs:
-     - componentDefRef: pulsar-broker
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         cluster: kb-zookeeper-for-pulsar
-       # 省略其他的选项
-     - componentDefRef: bookies
-       serviceRefs:
-       - name: pulsarZookeeper
-         namespace: default
-         cluster: kb-zookeeper-for-pulsar
-       # 省略其他的选项
-   ```
-
-## 注意事项与限制
-
-KubeBlocks v0.7.0 版本中的外部组件引用功能为 alpha 版本，具有以下几个方面的使用限制：
-
-* ClusterDefinition 引用声明中的 `name` 具有 Cluster 维度的语义一致性。也就是说，同一个 name 会被认为是同一个服务引用，并且不允许在创建 Cluster 时关联不同的映射。
-* 如果在创建 Cluster 时同时指定了两种方式的关联映射（基于 serviceDescriptor 和 cluster），那么基于 cluster 的关联映射具有更高的优先级，serviceDescriptor 会被忽略。
-* 如果在创建 Cluster 时使用基于 cluster 的关联映射，则不会对 ClusterDefinition 中定义的 `ServiceKind` 与 `ServiceVersion` 进行校验。
-
-  而如果使用基于 `serviceDescriptor` 的关联映射，则会将 `serviceDescriptor` 中的 `ServiceKind` 与 `ServiceVersion` 与 ClusterDefinition 中定义的 `ServiceKind` 与 `ServiceVersion` 进行校验。只有两者匹配时，才会正确映射。
-* v0.7.0 版本仅支持通过配置模板渲染使用 ClusterDefinition 中的引用声明。后续版本会支持更多方式。
diff --git a/i18n/zh-cn/developer-docs/fault_injection/_category_.yaml b/i18n/zh-cn/developer-docs/fault_injection/_category_.yaml
deleted file mode 100644
index cd6fee5ff..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: 故障注入
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/fault_injection/aws-fault.md b/i18n/zh-cn/developer-docs/fault_injection/aws-fault.md
deleted file mode 100644
index 8bbab4dd0..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/aws-fault.md
+++ /dev/null
@@ -1,188 +0,0 @@
----
-title: 模拟 AWS 故障
-description: 模拟 AWS 故障
-sidebar_position: 10
-sidebar_label: 模拟 AWS 故障
----
-
-# 模拟 AWS 故障
-
-AWSChaos 实验能够模拟指定的 AWS 实例发生故障的场景。目前，AWSChaos 实验支持以下几种故障类型：
-
-* EC2 Stop：停止指定的 EC2 实例。
-* EC2 Restart：重启指定的 EC2 实例。
-* Detach Volume：从指定的 EC2 实例中卸载存储卷。
-
-## 开始之前
-
-* 默认已导入本地代码的 AWS 身份验证信息。如果尚未导入，请按照[前提条件](./prerequisite.md#check-your-permission)文档中的步骤进行操作。
-
-* 为了方便连接到 AWS 集群，可以提前创建一个 Kubernetes Secret 文件存储身份验证信息。`Secret` 文件的示例如下：
-
-    ```yaml
-    apiVersion: v1
-    kind: Secret
-    metadata:
-      name: cloud-key-secret-aws
-      namespace: default
-    type: Opaque
-    stringData:
-      aws_access_key_id: your-aws-access-key-id
-      aws_secret_access_key: your-aws-secret-access-key
-    ```
-
-  * `name` 表示 Kubernetes Secret 对象的名字。
-  * `namespace` 表示 Kubernetes Secret 对象的命名空间。
-  * `aws_access_key_id` 表示存储 AWS 集群的访问密钥 ID。
-  * `aws_secret_access_key` 表示存储 AWS 集群的秘密访问密钥。
-
-## 使用 kbcli 模拟故障注入
-
-### Stop
-
-执行以下命令，向指定的 EC2 实例中注入 `instance-stop` 故障，使该实例在 3 分钟内不可用。
-
-```bash
-kbcli fault node stop [node1] -c=aws --region=cn-northwest-1 --duration=3m
-```
-
-### Restart
-
-执行以下命令，向指定的 EC2 实例中注入 `instance-restart` 故障，使得该实例重启。
-
-```bash
-kbcli fault node restart [node1] -c=aws --region=cn-northwest-1 --duration=3m
-```
-
-### Detach volume
-
-执行以下命令，向两个指定的 EC2 实例中注入 `detach-volume` 故障，使这两个实例在 1 分钟内与它们的指定存储卷分离。
-
-```bash
-kbcli fault node detach-volume [node1] -c=aws --region=cn-northwest-1 --duration=1m --volume-id=vol-xxx --device-name=/dev/xvdaa
-```
-
-你也可以添加多个节点及其卷，例如：
-
-```bash
-kbcli fault node detach-volume [node1] [node2] -c=aws --region=cn-northwest-1 --duration=1m --volume-id=vol-xxx,vol-xxx --device-name=/dev/sda,/dev/sdb
-```
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-aws-chaos/#使用-yaml-方式创建实验)获取更详细的信息。
-
-### AWS stop 示例
-
-1. 将实验配置写入到 `aws-stop.yaml` 文件中。
-
-   在下例中，Chaos Mesh 将向指定的 EC2 实例中注入 `ec2-stop` 故障，使该实例在 3 分钟内不可用。
-
-   ```yaml
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: AWSChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: ec2-stop
-     awsRegion: cn-northwest-1
-     duration: 3m
-     ec2Instance: i-037b1f38debb59bd7
-     secretName: cloud-key-secret-aws
-   ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./aws-stop.yaml
-   ```
-
-### AWS restart 示例
-
-1. 将实验配置写入到 `aws-restart.yaml` 文件中。
-
-   在下例中，Chaos Mesh 将向指定的 EC2 实例中注入 `ec2-restart` 故障，使得该实例重启。
-
-   ```yaml
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: AWSChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: ec2-restart
-     awsRegion: cn-northwest-1
-     duration: 3m
-     ec2Instance: i-037b1f38debb59bd7
-     secretName: cloud-key-secret-aws
-   ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./aws-restart.yaml
-   ```
-
-### AWS detach volume 示例
-
-1. 将实验配置写入到 `aws-detach-volume.yaml` 文件中。
-
-   在下例中，Chaos Mesh 将向两个指定的 EC2 实例中注入 `detach-volume` 故障，使这两个实例在 1 分钟内与它们的指定存储卷分离。
-
-   ```yaml
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: AWSChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: detach-volume
-     awsRegion: cn-northwest-1
-     deviceName: /dev/xvda
-     duration: 1m
-     ec2Instance: i-0e368667e544fa955
-     secretName: cloud-key-secret-aws
-     volumeID: vol-01b3d68c074cd93a9
-   status:
-     experiment: {}
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: AWSChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: detach-volume
-     awsRegion: cn-northwest-1
-     deviceName: /dev/xvdaa
-     duration: 1m
-     ec2Instance: i-01da8eef32743b5de
-     secretName: cloud-key-secret-aws
-     volumeID: vol-0f1ecf66cb8d0328e
-   ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./aws-detach-volume.yaml
-   ```
-
-### 字段说明
-
-下表介绍以上 YAML 配置文件中的字段。
-
-| 参数 | 类型 | 说明 | 默认值 | 是否必填 |
-| :--- | :--- | :--- | :--- | :--- |
-| action | string | 指定要注入的故障类型，仅支持 `ec2-stop`、`ec2-restart` 和 `detach-volume`。 | `ec2-stop` | 是 |
-| mode | string | 指定实验的运行方式，可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）和 `random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。| 无 | 是 |
-| value | string | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` 时，`value` 用于指定 Pod 的百分比。 | 无 | 否 |
-| secretName | string | 指定存储 AWS 认证信息的 Kubernetes Secret 名字。 | 无 | 否 |
-| awsRegion | string | 指定 AWS 区域。 | 无 | 是 | us-east-2 |
-| ec2Instance | string | 指定 EC2 实例的 ID。 | 无 | 是 |
-| volumeID | string | 当 `action` 为 `detach-volume` 时必填，指定 EBS 卷的 ID。 | 无 | 否 |
-| deviceName | string | 当 `action` 为 `detach-volume` 时必填，指定设备名。 | 无 | 否 | 
-| duration | string | 指定实验的持续时间。| 无 | 是 |
diff --git a/i18n/zh-cn/developer-docs/fault_injection/dns-faults.md b/i18n/zh-cn/developer-docs/fault_injection/dns-faults.md
deleted file mode 100644
index 5be57651a..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/dns-faults.md
+++ /dev/null
@@ -1,126 +0,0 @@
----
-title: 模拟 DNS 故障
-description: 模拟 DNS 故障
-sidebar_position: 5
-sidebar_label: 模拟 DNS 故障
----
-
-# 模拟 DNS 故障
-
-DNSChaos 用于模拟错误的 DNS 响应。例如，DNSChaos 可以在接收到 DNS 请求时返回错误，或随机的 IP 地址。
-
-## 部署 Chaos DNS server
-
-执行以下命令，检查 DNS 服务的状态是否正常：
-
-```bash
-kubectl get pods -n chaos-mesh -l app.kubernetes.io/component=chaos-dns-server
-```
-
-请确保 Pod 的状态为 `Running`。
-
-## 注意事项
-
-1. 目前 DNSChaos 只支持 DNS 记录类型 `A` 和 `AAAA`。
-
-2. Chaos DNS 服务运行带有 [k8s_dns_chaos](https://github.com/chaos-mesh/k8s_dns_chaos) 插件的 CoreDNS。如果 Kubernetes 集群本身的 CoreDNS 服务包含一些特殊配置，请执行以下命令编辑 configMap `dns-server-config`，使 Chaos DNS 服务配置与 K8s CoreDNS 服务配置一致：
-
-    ```bash
-    kubectl edit configmap dns-server-config -n chaos-mesh
-    ```
-
-## 使用 kbcli 模拟故障注入
-
-DNS 故障可分为 `random` 和 `error` 两种类型。你可以选择其中一种进行 DNS 故障注入。
-
-`--pattern` 用于选择与故障匹配的域名模板，是必需的，支持使用占位符 `?` 和通配符 `*`。
-
-### DNS random
-
-执行以下命令，向默认命名空间中的所有 Pod 注入 DNS 故障。当发送 DNS 请求到指定的域名时，将返回一个随机的 IP 地址。
-
-```bash
-kbcli fault network dns random --patterns=google.com --duration=1m
-```
-
-### DNS error
-
-执行以下命令，向默认命名空间中的所有 Pod 注入 DNS 故障。当发送 DNS 请求到指定的域名时，将返回一个错误。
-
-```bash
-kbcli fault network dns error --patterns=google.com --duration=1m
-```
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 `--dry-run` 命令来查看 YAML 文件，还可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-dns-chaos-on-kubernetes/#使用-yaml-方式创建实验)获取更详细的信息。
-
-### DNS random 示例
-
-1. 将实验配置写入到 `dns-random.yaml` 文件中。
-
-    在下例中，Chaos Mesh 向默认命名空间中的所有 Pod 注入 DNS 故障。当发送 DNS 请求到指定的域名时，将返回一个 IP 地址。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: DNSChaos
-    metadata:
-      creationTimestamp: null
-      generateName: dns-chaos-
-      namespace: default
-    spec:
-      action: random
-      duration: 1m
-      mode: all
-      patterns:
-      - google.com
-      selector:
-        namespaces:
-        - default
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./dns-random.yaml
-   ```
-
-### DNS error 示例
-
-1. 将实验配置写入到 `dns-error.yaml` 文件中。
-
-    在下例中，Chaos Mesh 向默认命名空间中的所有 Pod 注入 DNS 故障。当发送 DNS 请求到指定的域名时，将返回一个错误。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: DNSChaos
-    metadata:
-      creationTimestamp: null
-      generateName: dns-chaos-
-      namespace: default
-    spec:
-      action: error
-      duration: 1m
-      mode: all
-      patterns:
-      - google.com
-      selector:
-        namespaces:
-        - default
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-partition.yaml
-   ```
-
-### 字段说明
-
-| 参数 | 类型 | 说明 | 默认值 | 是否必填 | 示例 |
-| :-- | :-- | :-- | :-- | :-- | :-- |
-| `action` | string | 定义 DNS 故障的行为，可选值为 `random` 或 `error`。当值为 `random` 时， DNS 服务返回随机的 IP 地址；当值为 `error` 时 DNS 服务返回错误。| 无 | 是 | `random` 或 `error` |
-| `patterns` | string array  | 选择匹配故障行为的域名模版， 支持占位符 `?` 以及通配符 `*`。 | [] | 否 | `google.com`、`chaos-mesh.org`、`github.com` |
-| `mode` | string | 指定实验的运行方式，可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）和 `random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | 无 | 是 | `one` |
-| `value` | string | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` 时，`value` 用于指定 Pod 的百分比。 | 无 | 否 | `1` |
-| `selector` | struct | 指定目标 Pod。| 无 | 是 |  |
diff --git a/i18n/zh-cn/developer-docs/fault_injection/gcp-fault.md b/i18n/zh-cn/developer-docs/fault_injection/gcp-fault.md
deleted file mode 100644
index 592628808..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/gcp-fault.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-title: 模拟 GCP 故障
-description: 模拟 GCP 故障
-sidebar_position: 11
-sidebar_label: 模拟 GCP 故障
----
-
-# 模拟 GCP 故障
-
-GCPChaos 实验能够模拟指定的 GCP 实例发生故障的场景。目前，GCPChaos 实验支持以下几种故障类型：
-
-* Node Stop：使指定的 GCP 实例进入停止状态。
-* Node Restart：重置指定的 GCP 实例。
-* Disk Loss：从指定的 GCP 实例中卸载存储卷。
-
-## 开始之前
-
-* 默认已导入本地代码的 GCP 身份验证信息。如果尚未导入，请按照[前提条件](./prerequisite.md#check-your-permission)文档中的步骤进行操作。
-
-* 为了方便连接到 GCP 集群，可以提前创建一个 Kubernetes Secret 文件存储身份验证信息。`Secret` 文件的示例如下：
-  
-  ```yaml
-  apiVersion: v1
-  kind: Secret
-  metadata:
-    name: cloud-key-secret-gcp
-    namespace: default
-  type: Opaque
-  stringData:
-    service_account: your-gcp-service-account-base64-encode
-  ```
-  
-  * `name` 表示 Kubernetes Secret 对象的名字。
-  * `namespace` 表示 Kubernetes Secret 对象的命名空间。
-  * `service_account` 存储 GCP 集群的服务账号密钥。请注意，你需要对 GCP 集群的服务账号密钥进行 Base64 编码。如需了解 GCP 服务账号密钥，请参阅[创建和管理服务帐号密钥](https://cloud.google.com/iam/docs/keys-create-delete?hl=zh-cn)。
-
-## 使用 kbcli 模拟故障注入
-
-### Stop
-
-执行以下命令，向指定的 GCP 实例中注入 `node-stop` 故障，使该实例在 3 分钟内处于不可用的状态。
-
-```bash
-kbcli fault node stop [node1] [node2] -c=gcp --region=us-central1-c --duration=3m
-```
-
-执行上述命令后，`node-stop` 命令会创建资源，包括 Secret `cloud-key-secret-gcp` 和 GCPChaos `node-chaos-w98j5`。执行 `kubectl describe node-chaos-w98j5` 命令，可以验证是否成功注入了 `node-stop` 故障。
-
-:::caution
-
-在更改集群权限、更新密钥或更改集群 context 时，必须删除 `cloud-key-secret-gcp`。注入 `node-stop` 后，将根据新的密钥创建一个新的 `cloud-key-secret-gcp`。
-
-:::
-
-### Restart
-
-执行以下命令，向指定的 GCP 实例中注入 `node-restart` 故障，使得该实例重启。
-
-```bash
-kbcli fault node restart [node1] [node2] -c=gcp --region=us-central1-c
-```
-
-### Detach volume
-
-执行以下命令，向指定的 GCP 实例中注入 `detach-volume` 故障，使该实例与指定存储卷分离。
-
-```bash
-kbcli fault node detach-volume [node1] -c=gcp --region=us-central1-c --device-name=/dev/sdb
-```
-
-## 使用 YAML 文件模拟故障注入
-
-### GCP stop 示例
-
-1. 将实验配置写入到 `gcp-stop.yaml` 文件中。
-
-   在下例中，Chaos Mesh 将向指定的 GCP 实例中注入 `node-stop` 故障，使该实例在 30 秒内不可用。
-
-   ```yaml
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: GCPChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: node-stop
-     duration: 30s
-     instance: gke-yjtest-default-pool-c2ee710b-fs5q
-     project: apecloud-platform-engineering
-     secretName: cloud-key-secret-gcp
-     zone: us-central1-c
-   ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./aws-detach-volume.yaml
-   ```
-
-### GCP restart 示例
-
-1. 将实验配置写入到 `gcp-restart.yaml` 文件中。
-
-   在下例中，Chaos Mesh 将向指定的 GCP 实例中注入 `node-reset` 故障，使得该实例重启。
-
-   ```yaml
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: GCPChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: node-reset
-     duration: 30s
-     instance: gke-yjtest-default-pool-c2ee710b-fs5q
-     project: apecloud-platform-engineering
-     secretName: cloud-key-secret-gcp
-     zone: us-central1-c
-   ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./aws-detach-volume.yaml
-   ```
-
-### GCP detach volume 示例
-
-1. 将实验配置写入到 `gcp-detach-volume.yaml` 文件中。
-
-   在下例中，Chaos Mesh 将向指定的 GCP 实例中注入 `disk-loss` 故障，使该实例在 30 秒内与指定存储卷分离。
-
-   ```yaml
-   apiVersion: chaos-mesh.org/v1alpha1
-   kind: GCPChaos
-   metadata:
-     creationTimestamp: null
-     generateName: node-chaos-
-     namespace: default
-   spec:
-     action: disk-loss
-     deviceNames:
-     - /dev/sdb
-     duration: 30s
-     instance: gke-yjtest-default-pool-c2ee710b-fs5q
-     project: apecloud-platform-engineering
-     secretName: cloud-key-secret-gcp
-     zone: us-central1-c
-   ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./aws-detach-volume.yaml
-   ```
-
-### 字段说明
-
-下表介绍以上 YAML 配置文件中的字段。
-
-| 参数 | 类型 | 说明 | 默认值 | 是否必填 |
-| :--- | :--- | :--- | :--- | :--- |
-| action | string | 指定要注入的故障类型，支持 `node-stop`、`node-reset` 和 `disk-loss`。 | `node-stop` | 是 |
-| mode | string | 指定实验的运行方式，可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）和 `random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | 无 | 是 |
-| value | string | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` 时，`value` 用于指定 Pod 的百分比。 | 无 | 否 |
-| secretName | string | 指定存储 GCP 认证信息的 Kubernetes Secret 名字。| 无 | 否 |
-| project | string | 指定 GCP 项目的 ID。 | 无 | 是 | real-testing-project |
-| zone | string | 指定 GCP 实例的区域。 | 无 | 是 |
-| instance | string | 指定 GCP 实例的名称。| 无 | 是 |
-| deviceNames | []string | 当 `action` 为 `disk-loss` 时必填，指定设备磁盘 ID。 | 无 | 否 |
-| duration | string | 指定实验的持续时间。 | 无 | 是 |
diff --git a/i18n/zh-cn/developer-docs/fault_injection/http-fault.md b/i18n/zh-cn/developer-docs/fault_injection/http-fault.md
deleted file mode 100644
index ae840ebf8..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/http-fault.md
+++ /dev/null
@@ -1,209 +0,0 @@
----
-title: 模拟 HTTP 故障
-description: 模拟 HTTP 故障
-sidebar_position: 6
-sidebar_label: 模拟 HTTP 故障
----
-
-# 模拟 HTTP 故障
-
-HTTPChaos 实验用于模拟在 HTTP 请求和响应过程中发生故障的场景。目前，HTTPChaos 支持以下几种故障类型：
-
-* Abort：中断请求和响应；
-* Delay：为请求或响应过程注入延迟；
-* Replace：替换 HTTP 请求或响应报文中的部分内容；
-* Patch：在 HTTP 请求或响应报文中添加额外内容。
-
-HTTPChaos 支持多种故障类型的组合。在创建 HTTPChaos 实验时，如果同时配置了多种 HTTP 故障类型，实验运行时注入故障的优先级（顺序）固定为 abort -> delay -> replace -> patch。其中 abort 故障会导致短路，直接中断此次连接。
-
-## 开始之前
-
-在注入 HTTPChaos 相关故障之前，请注意以下事项：
-
-* 确保目标 Pod 上没有运行 Chaos Mesh 的 Control Manager。
-* 默认情况下，相关命令将同时作用于 Pod 中的客户端和服务器。如果你不需要这种设置，请参考[官方文档](https://chaos-mesh.org/docs/simulate-http-chaos-on-kubernetes/#specify-side)。
-* 确保目标服务已禁用 HTTPS 访问，因为 HTTPChaos 暂不支持注入 HTTPS 连接。
-* 为使 HTTPChaos 故障注入生效，尽量避免复用客户端的 TCP socket，在注入故障前建立的 TCP socket 上进行 HTTP 请求不受 HTTPChaos 影响。
-* 请在生产环境谨慎使用非幂等语义请求（例如大多数 POST 请求）。若使用了这类请求，故障注入后可能无法通过重复请求使目标服务恢复正常状态。
-
-## 使用 kbcli 模拟故障注入
-
-下表介绍所有 HTTP 故障类型的常见字段。
-
-📎 Table 1. kbcli HTTP 故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--target` | 指定故障注入的目标过程为 `Request` 或 `Response`，需要同时配置与 target 相关的字段。 | `Request` | 否 |
-| `--port` | 指定目标服务监听的 TCP 端口。| 80 | 否 |
-| `--path` | 指定目标请求的 URL 路径，支持[通配符](https://www.wikiwand.com/en/Matching_wildcards)。 | * | 否 |
-| `--method` | 指定目标请求的 HTTP method。 | `GET` | 否 |
-| `--code` | 指定目标响应的状态码，仅当 `target=response` 时生效。 | 0 | 否 |
-
-### Abort
-
-执行以下命令，向指定的 Pod 中注入 abort 故障 1 分钟。
-
-```bash
-kbcli fault network http abort --duration=1m
-```
-
-### Delay
-
-执行以下命令，向指定的 Pod 中注入 delay 故障 15 秒。
-
-```bash
-kbcli fault network http delay --delay=15s
-```
-
-### Replace
-
-执行以下命令，替换 HTTP 请求或响应报文中的部分内容，持续 1 分钟。
-
-```bash
-kbcli fault network http replace --replace-method=PUT --duration=1m
-```
-
-### Patch
-
-执行以下命令，在 HTTP 请求或响应报文中添加额外的内容。
-
-```bash
-kbcli fault network http patch --body='{"key":""}' --type=JSON --duration=30s
-```
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 `--dry-run` 命令来查看 YAML 文件，还可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-http-chaos-on-kubernetes/#使用-yaml-文件创建实验)获取更详细的信息。
-
-### HTTP abort 示例
-
-1. 将实验配置写入到 `http-abort.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将向指定的 Pod 中注入 abort 故障 1 分钟。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: HTTPChaos
-    metadata:
-      creationTimestamp: null
-      generateName: http-chaos-
-      namespace: default
-    spec:
-      abort: true
-      duration: 1m
-      method: GET
-      mode: all
-      path: '*'
-      port: 80
-      selector:
-        namespaces:
-        - default
-      target: Request
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./http-abort.yaml
-   ```
-
-### HTTP delay 示例
-
-1. 将实验配置写入到 `http-delay.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将向指定的 Pod 中注入 delay 故障 15 秒。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: HTTPChaos
-    metadata:
-      creationTimestamp: null
-      generateName: http-chaos-
-      namespace: default
-    spec:
-      delay: 15s
-      duration: 10s
-      method: GET
-      mode: all
-      path: '*'
-      port: 80
-      selector:
-        namespaces:
-        - default
-      target: Request
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./http-delay.yaml
-   ```
-
-### HTTP replace 示例
-
-1. 将实验配置写入到 `http-replace.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将替换 HTTP 请求或响应报文中的部分内容，持续 1 分钟。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: HTTPChaos
-    metadata:
-      creationTimestamp: null
-      generateName: http-chaos-
-      namespace: default
-    spec:
-      duration: 1m
-      method: GET
-      mode: all
-      path: '*'
-      port: 80
-      replace:
-        method: PUT
-      selector:
-        namespaces:
-        - default
-      target: Request
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./http-replace.yaml
-   ```
-
-### HTTP patch 示例
-
-1. 将实验配置写入到 `http-patch.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将在 HTTP 请求或响应报文中添加额外的内容。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: HTTPChaos
-    metadata:
-      creationTimestamp: null
-      generateName: http-chaos-
-      namespace: default
-    spec:
-      duration: 30s
-      method: GET
-      mode: all
-      patch:
-        body:
-          type: JSON
-          value: '{"key":""}'
-      path: '*'
-      port: 80
-      selector:
-        namespaces:
-        - default
-      target: Request
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./http-patch.yaml
-   ```
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/fault_injection/introduction.md b/i18n/zh-cn/developer-docs/fault_injection/introduction.md
deleted file mode 100644
index 32cccd12a..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/introduction.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: 简介
-description: 故障注入简介
-sidebar_position: 1
-sidebar_label: 简介
----
-
-# 简介
-
-故障注入是验证数据产品的稳定性和可靠性的重要方式。Kubernetes 生态中有许多成熟的故障注入产品，如 Chaos Mesh 和 Litmus。KubeBlocks 直接将 [Chaos Mesh](https://chaos-mesh.org/) 集成为插件，通过 CLI 和 YAML 文件执行故障注入。
-
-KubeBlocks 提供了两种类型的故障注入。
-
-* 基本资源类型故障：
-  * [PodChaos](./pod-faults.md)：模拟 Pod 故障，如 Pod 节点重启、Pod 持续不可用和容器重启等。
-  * [NetworkChaos](./network-faults.md)：模拟网络故障，如网络延迟、网络丢包、包乱序和各种网络分区。
-  * [DNSChaos](./dns-faults.md)：模拟 DNS 故障，如随机 DNS 域名和返回错误 IP 地址。
-  * [HTTPChaos](./http-fault.md)：模拟 HTTP 通信故障，如 HTTP 通信延迟。
-  * [StressChaos](./stress-fault.md)：模拟 CPU 或内存抢占。
-  * [IOChaos](./io-faults.md)：模拟特定应用程序的文件 I/O 故障，如 I/O 延迟、读写失败。
-  * [TimeChaos](./time-fault.md)：模拟时间跳动异常。
-
-* 平台类型故障：
-  * [AWSChaos](./aws-fault.md)：模拟 AWS 平台故障，如 AWS 实例停止、重启和卷卸载。
-  * [GCPChaos](./gcp-fault.md)：模拟 GCP 平台故障，如 GCP 实例停止、重启和卷卸载。
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/fault_injection/io-faults.md b/i18n/zh-cn/developer-docs/fault_injection/io-faults.md
deleted file mode 100644
index 2f5a5f016..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/io-faults.md
+++ /dev/null
@@ -1,247 +0,0 @@
----
-title: 模拟 I/O 故障
-description: 模拟 I/O 故障
-sidebar_position: 7
-sidebar_label: 模拟 I/O 故障
----
-
-# 模拟 I/O 故障
-
-IOChaos 实验能够模拟文件系统发生故障的场景。目前，I/OChaos 实验支持以下几种故障类型：
-
-* Latency：延迟文件系统调用；
-* Fault：使文件系统调用返回错误；
-* AttrOverride：修改文件属性；
-* Mistake：使文件读到或写入错误的值。
-
-## 开始之前
-
-* I/O 故障注入只能在 Linux 上执行。
-* 实验结果需要进入容器内部查看，且要指定 volume 挂载路径。
-* 建议只对 Write 和 Read 操作注入 I/O 故障。
-
-## 使用 kbcli 模拟故障注入
-
-下表介绍 I/O 故障类型的常见字段。
-
-📎 Table 1. kbcli I/O 故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--volume-path` | 指定 volume 在目标容器内的挂载点，必须为挂载的根目录。 | 无 | 是 |
-| `--path` | 指定注入故障的生效范围，可以是通配符，也可以是单个文件。| * | 否 |
-| `--percent` | 指定每次操作发生故障的概率，单位为 %。 | 100 | 否 |
-| `--container`, `-c` | 指定注入故障的容器名称。| 无 | 否 |
-| `--method` | 指定 I/O 操作，支持 `read` 和 `write`。 | * | 否 |
-
-### Latency
-
-执行以下命令，向 `/data` 目录注入延迟故障，使该目录下的所有文件内容产生 10 秒延迟。即，延迟 Read 操作。
-
-`--delay` 指定具体的延迟时长，必填。
-
-```bash
-kbcli fault io latency --delay=10s --volume-path=/data
-```
-
-### Fault
-
-常见的错误号：
-
-* 1: Operation not permitted
-* 2: No such file or directory
-* 5: I/O error
-* 6: No such device or address
-* 12: Out of memory
-* 16: Device or resource busy
-* 17: File exists
-* 20: Not a directory
-* 22: Invalid argument
-* 24: Too many open files
-* 28: No space left on device
-
-点击参考[完整的错误编号列表](https://raw.githubusercontent.com/torvalds/linux/master/include/uapi/asm-generic/errno-base.h)。
-
-执行以下命令，向 `/data` 目录注入文件错误故障，使该目录下的所有文件系统 100% 出现故障，并返回错误码 22（invalid argument）。
-
-`--errno` 指定系统应该返回的错误号，必填。
-
-```bash
-kbcli fault io errno --volume-path=/data --errno=22
-```
-
-### Attribute override
-
-执行以下命令，向目录 `/data` 注入 attrOverride 故障，使得该目录下的所有文件系统操作 100% 将目标文件的权限更改为 72（即八进制中的 110）。这将导致文件只能由所有者和其所在的组执行，无权进行其他操作。
-
-```bash
-kbcli fault io attribute --volume-path=/data --perm=72
-```
-
-你可以使用以下参数来修改相关属性。
-
-📎 Table 2. kbcli AttrOverride 参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--blocks` | 文件占用块数 | 无 | 否 |
-| `--ino` | ino 号 | 无 | 否 |
-| `--nlink` | 硬链接数量 | 无 | 否 |
-| `--perm` | 文件权限的十进制表示 | 无 | 否 |
-| `--size` |文件大小 | 无 | 否 |
-| `--uid` | 所有者的用户 ID | 无 | 否 |
-| `--gid` | 所有者的组 ID | 无 | 否 |
-
-### Mistake
-
-执行以下命令，向目录 `/data` 注入读写错误故障，使该目录下的读写操作有 10% 的概率发生错误。在此过程中，将随机选择一个最大长度为 10 个字节的位置，并将其替换为 0 字节。
-
-```bash
-kbcli fault io mistake --volume-path=/data --filling=zero --max-occurrences=10 --max-length=1
-```
-
-📎 Table 3. kbcli Mistake 参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--filling` | 错误数据的填充内容，只能为 zero（填充 0）或 random（填充随机字节）。 | 无 | 是 |
-| `max-occurrences` | 错误在每一次操作中最多出现次数。 | 无 | 是 |
-| `--max-length` | 每次错误的最大长度（单位为字节）。 | 无 |  是 |
-
-:::warning
-
-不建议在除了 READ 和 WRITE 之外的文件系统调用上使用 mistake 错误。这可能会导致文件系统损坏、程序崩溃等后果。
-
-:::
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 `--dry-run` 命令来查看 YAML 文件，还可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-io-chaos-on-kubernetes/#使用-yaml-文件创建实验)获取更详细的信息。
-
-### Fault latency 示例
-
-1. 将实验配置写入到 `fault-latency.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将向 `/data` 目录注入延迟故障，使该目录下的所有文件产生 10 秒延迟。即，延迟读取操作。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: IOChaos
-    metadata:
-      creationTimestamp: null
-      generateName: io-chaos-
-      namespace: default
-    spec:
-      action: latency
-      delay: 10s
-      duration: 10s
-      mode: all
-      percent: 100
-      selector:
-        namespaces:
-        - default
-      volumePath: /data
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./fault-latency.yaml
-   ```
-
-### Fault fault 示例
-
-1. 将实验配置写入到 `fault-fault.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将向 `/data` 目录注入文件错误故障，使该目录下的所有文件系统 100% 出现故障，并返回错误码 22（invalid argument）。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: IOChaos
-    metadata:
-      creationTimestamp: null
-      generateName: io-chaos-
-      namespace: default
-    spec:
-      action: fault
-      duration: 10s
-      errno: 22
-      mode: all
-      percent: 100
-      selector:
-        namespaces:
-        - default
-      volumePath: /data
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./fault-fault.yaml
-   ```
-
-### Fault attrOverride 示例
-
-1. 将实验配置写入到 `fault-attrOverride.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将向目录 `/data` 注入 attrOverride 故障，使得该目录下的所有文件系统操作 100% 将目标文件的权限更改为 72（即八进制中的 110）。这将导致文件只能由所有者和其所在的组执行，无权进行其他操作。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: IOChaos
-    metadata:
-      creationTimestamp: null
-      generateName: io-chaos-
-      namespace: default
-    spec:
-      action: attrOverride
-      attr:
-        perm: 72
-      duration: 10s
-      mode: all
-      percent: 100
-      selector:
-        namespaces:
-        - default
-      volumePath: /data
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./fault-attrOverride.yaml
-   ```
-
-### Fault mistake 示例
-
-1. 将实验配置写入到 `fault-mistake.yaml` 文件中。
-
-    在下例中，Chaos Mesh 将向目录 `/data` 注入读写错误故障，使该目录下的读写操作有 10% 的概率发生错误。在此过程中，将随机选择一个最大长度为 10 个字节的位置，将其替换为 0 字节。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: IOChaos
-    metadata:
-      creationTimestamp: null
-      generateName: io-chaos-
-      namespace: default
-    spec:
-      action: mistake
-      duration: 10s
-      mistake:
-        filling: zero
-        maxLength: 1
-        maxOccurrences: 10
-      mode: all
-      percent: 100
-      selector:
-        namespaces:
-        - default
-      volumePath: /data
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./fault-mistake.yaml
-   ```
diff --git a/i18n/zh-cn/developer-docs/fault_injection/network-faults.md b/i18n/zh-cn/developer-docs/fault_injection/network-faults.md
deleted file mode 100644
index 216d9d908..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/network-faults.md
+++ /dev/null
@@ -1,350 +0,0 @@
----
-title: 模拟网络故障
-description: 模拟网络故障
-sidebar_position: 4
-sidebar_label: 模拟网络故障
----
-
-# 模拟网络故障
-
-网络故障包括 Partition、Net Emulation（包括丢包、延迟、重复和损坏）以及 Bandwidth 几种类型。
-
-* Partition：网络断开或分区；
-* Net emulation：模拟网络质量较差的情况，如高延迟、高丢包率、包乱序等；
-* Bandwidth：限制节点之间通信的带宽。
-
-## 开始之前
-
-* 在进行网络注入的过程中，请保证 Controller Manager 与 Chaos Daemon 之间连接通畅，否则将无法恢复。
-* 如果使用 Net Emulation 功能，请确保 Linux 内核中已安装 `NET_SCH_NETEM` 模块。如果使用的是 CentOS，可以通过 kernel-modules-extra 包安装，大部分其他 Linux 发行版已默认安装相应模块。
-
-## 使用 kbcli 模拟故障注入
-
-下表介绍所有网络故障类型的常见字段。
-
-📎 Table 1. kbcli 网络故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `pod name`  | 指定注入故障的 Pod 名称。例如，<br /> 在命令中添加 Pod 名称 `mysql-cluster-mysql-0`，完整命令为  `kbcli fault pod kill mysql-cluster-mysql-0`。  | 默认 | 否 |
-| `--direction` | 指示目标数据包的方向。可用值包括 `from`（从目标发出的数据包）、`to`（发送到目标的数据包）和 `both`（全部选中）。 | `to` | 否 |
-| `-e`,`--external-target` |指示 Kubernetes 外部的网络目标，可以是 IPv4 地址或域名。该参数仅在 `direction: to` 时有效。 | 无 | 否 |
-| `--target-mode` | 指定目标的模式。如果指定了目标，则需一起指定 `target-mode`。可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）、`random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | 无 | 否 |
-| `--target-value` | 指定目标的值。| 无 | 否 |
-| `--target-label` | 指定目标的标签。 | 无 | 否 |
-| `--duration` | 指定分区的持续时间。 | 无 | 否 |
-| `--target-ns-fault` | 指定目标的命名空间。| 无 | 否 |
-
-### Partition
-
-执行以下命令，将 `network-partition` 注入到 Pod 中，使 Pod `mycluster-mysql-1` 与 Kubernetes 的内外部网络分离。
-
-```bash
-kbcli fault network partition mycluster-mysql-1
-```
-
-### Net emulation
-
-Net Emulation 模拟网络质量较差的情况，如高延迟、高丢包率、包乱序等。
-
-#### 丢包
-
-执行以下命令，将 `network-loss` 注入到 Pod `mycluster-mysql-1` 中，使得其与外界通信丢包率为 50%。
-
-```bash
-kbcli fault network loss mycluster-mysql-1 -e=kubeblocks.io --loss=50
-```
-
-📎 Table 2. kbcli 网络丢包故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--loss` | 表示丢包发生的概率。 | 无 | 是 |
-| `-c`, `--correlation` | 表示丢包发生的概率与前一次是否发生的相关性。取值范围：[0, 100]。 | 无 | 否 |
-
-#### 延迟
-
-执行以下命令，将 `network-delay` 注入到 Pod `mycluster-mysql-1` 中，使指定 Pod 的网络连接延迟 15 秒。
-
-```bash
-kbcli fault network delay mycluster-mysql-1 --latency=15s -c=100 --jitter=0ms
-```
-
-📎 Table 3. kbcli 网络延迟故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--latency` | 表示延迟的时间长度。         | 无          | 是      |
-| `--jitter` | 表示延迟时间的变化范围。  | 0 ms          | 否       |
-| `-c`, `--correlation` | 表示延迟时间的时间长度与前一次延迟时长的相关性。取值范围：[0, 100]。| 无 | 否 |
-
-#### 包重复
-
-执行以下命令，向指定的 Pod 注入包重复的混乱，持续时间为 1 分钟，重复率为 50%。
-
-`--duplicate` 指定了包重复包的比率，取值范围为 [0,100]。
-
-```bash
-kbcli fault network duplicate mysql-cluster-mysql-1 --duplicate=50
-```
-
-📎 Table 4. kbcli 包重复故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--duplicate`         | 表示包重复发生的概率。取值范围：[0, 100]。 | 无 | 是 |
-| `-c`, `--correlation` | 表示包重复发生的概率与前一次是否发生的相关性。取值范围：[0, 100]。 | 无 | 否 |
-
-#### 包损坏
-
-执行以下命令，向指定的 Pod 注入包损坏的混乱，持续时间为 1 分钟，包损坏率为 50%。
-
-```bash
-kbcli fault network corrupt mycluster-mysql-1 --corrupt=50 --correlation=100 --duration=1m
-```
-
-### Bandwidth
-
-执行以下命令，设置指定 Pod 与外部环境之间的带宽为 1 Kbps，持续时间为 1 分钟。
-
-```bash
-kbcli fault network bandwidth mycluster-mysql-1 --rate=1kbps --duration=1m
-```
-
-📎 Table 4. kbcli Bandwidth 故障参数说明
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--rate` | 表示带宽限制的速率。 | 无 | 是 |
-| `--limit` | 表示在队列中等待的字节数。 | 1 | 否 |
-| `--buffer` | 表示能够瞬间发送的最大字节数。| 1 | 否 |
-| `--prakrate` | 表示 `bucket` 的最大消耗率。 | 0 | 否 |
-| `--minburst` | 表示 `peakrate bucket` 的大小。 | 0 | 否 |
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 `--dry-run` 命令来查看 YAML 文件，还可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-network-chaos-on-kubernetes/#使用-yaml-方式创建实验)获取更详细的信息。
-
-### Partition 示例
-
-1. 将实验配置写入到 `network-partition.yaml` 文件中。
-
-    在以下示例中，Chaos Mesh 将 `network-partition` 注入到 Pod 中，使 Pod `mycluster-mysql-1` 与 Kubernetes 的内外部网络分离。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: NetworkChaos
-    metadata:
-      creationTimestamp: null
-      generateName: network-chaos-
-      namespace: default
-    spec:
-      action: partition
-      direction: to
-      duration: 10s
-      mode: all
-      selector:
-        namespaces:
-        - default
-        pods:
-          default:
-          - mycluster-mysql-1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-partition.yaml
-   ```
-
-### Net emulation 示例
-
-#### 丢包示例
-
-1. 将实验配置写入到 `network-loss.yaml` 文件中。
-
-    在以下示例中，Chaos Mesh 将 `network-loss` 注入到 Pod `mycluster-mysql-1` 中，使得其与外界通信丢包率为 50%。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: NetworkChaos
-    metadata:
-      creationTimestamp: null
-      generateName: network-chaos-
-      namespace: default
-    spec:
-      action: loss
-      direction: to
-      duration: 10s
-      externalTargets:
-      - kubeblocks.io
-      loss:
-        loss: "50"
-      mode: all
-      selector:
-        namespaces:
-        - default
-        pods:
-          default:
-          - mycluster-mysql-1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-loss.yaml
-   ```
-
-#### 延迟示例
-
-1. 将实验配置写入到 `network-delay.yaml` 文件中。
-
-    在以下示例中，Chaos Mesh 将 `network-delay` 注入到 Pod `mycluster-mysql-1` 中，使指定 Pod 的网络连接延迟 15 秒。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: NetworkChaos
-    metadata:
-      creationTimestamp: null
-      generateName: network-chaos-
-      namespace: default
-    spec:
-      action: delay
-      delay:
-        correlation: "100"
-        jitter: 0ms
-        latency: 15s
-      direction: to
-      duration: 10s
-      mode: all
-      selector:
-        namespaces:
-        - default
-        pods:
-          default:
-          - mycluster-mysql-1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-delay.yaml
-   ```
-
-#### 包重复示例
-
-1. 将实验配置写入到 `network-duplicate.yaml` 文件中。
-
-    在以下示例中，Chaos Mesh 向指定的 Pod 注入包重复的混乱，持续时间为 1 分钟，重复率为 50%。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: NetworkChaos
-    metadata:
-      creationTimestamp: null
-      generateName: network-chaos-
-      namespace: default
-    spec:
-      action: duplicate
-      direction: to
-      duplicate:
-        duplicate: "50"
-      duration: 10s
-      mode: all
-      selector:
-        namespaces:
-        - default
-        pods:
-          default:
-          - mysql-cluster-mysql-1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-duplicate.yaml
-   ```
-
-#### 包损坏示例
-
-1. 将实验配置写入到 `network-corrupt.yaml` 文件中。
-
-    在以下示例中，Chaos Mesh 向指定的 Pod 注入包损坏的混乱，持续时间为 1 分钟，包损坏率为 50%。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: NetworkChaos
-    metadata:
-      creationTimestamp: null
-      generateName: network-chaos-
-      namespace: default
-    spec:
-      action: corrupt
-      corrupt:
-        correlation: "100"
-        corrupt: "50"
-      direction: to
-      duration: 1m
-      mode: all
-      selector:
-        namespaces:
-        - default
-        pods:
-        default:
-        - mycluster-mysql-1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-corrupt.yaml
-   ```
-
-### Bandwidth 示例
-
-1. 将实验配置写入到 `network-bandwidth.yaml` 文件中。
-
-    在以下示例中，Chaos Mesh 设置指定 Pod 与外部环境之间的带宽为 1 Kbps，持续时间为 1 分钟。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: NetworkChaos
-    metadata:
-      creationTimestamp: null
-      generateName: network-chaos-
-      namespace: default
-    spec:
-      action: bandwidth
-      bandwidth:
-        buffer: 1
-        limit: 1
-        rate: 1kbps
-      direction: to
-      duration: 1m
-      mode: all
-      selector:
-        namespaces:
-        - default
-        pods:
-          default:
-          - mycluster-mysql-1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./network-bandwidth.yaml
-   ```
-
-### 字段说明
-
-下表介绍以上 YAML 配置文件中的字段。
-
-| 参数 | 类型  | 说明 | 默认值 | 是否必填 | 示例 |
-| :---      | :---  | :---        | :---          | :---     | :---    |
-| action | string | 指定故障类型。如 `partition`、`loss`、`delay`、`duplicate`、`corrupt` 和 `bandwidth`。| 无 | 是 | `bandwidth` |
-| duration | string | 指定实验的持续时间。 | 无 | 是 | 10s |
-| mode | string | 指定实验的运行方式，可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）和 `random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | 无 | 是 | `fixed-percent` |
-| value | string | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` `时，value` 用于指定 Pod 的百分比。 | 无 | 否 | 50 |
-| selector | struct | 通过定义节点和标签来指定目标 Pod。| 无 | 是 <br /> 如果未指定，系统将终止默认命名空间下的所有 Pod。|
-| duration | string | 指定实验的持续时间。 | 无 | 是 | 30s |
diff --git a/i18n/zh-cn/developer-docs/fault_injection/pod-faults.md b/i18n/zh-cn/developer-docs/fault_injection/pod-faults.md
deleted file mode 100644
index 1f2c02f83..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/pod-faults.md
+++ /dev/null
@@ -1,183 +0,0 @@
----
-title: 模拟 Pod 故障
-description: 模拟 Pod 故障
-sidebar_position: 3
-sidebar_label: 模拟 Pod 故障
----
-
-# 模拟 Pod 故障
-
-Pod 故障包括 Pod failure、Pod kill 和 Container kill。
-
-- Pod failure：向指定的 Pod 注入故障，使得该 Pod 在一段时间内不可用；
-- Pod kill：杀死指定的 Pod。为确保 Pod 能够成功重启，需要配置 ReplicaSet 或类似的机制；
-- Container kill：杀死目标 Pod 中的指定容器。
-
-## 使用限制
-
-无论 Pod 是否绑定至 Deployment、StatefulSet、DaemonSet 或其他控制器，Chaos Mesh 都可以向任一 Pod 注入 PodChaos。当向独立的 Pod 注入 PodChaos 时，可能会发生不同的情况。比如，向独立的 Pod 注入 `pod-kill` 故障时，无法保证应用程序在故障发生后能够恢复正常。
-
-## 开始之前
-
-- 确保在目标 Pod 上没有运行 Chaos Mesh 的控制管理器。
-- 如果故障类型是 `pod-kill`，请配置 ReplicaSet 或类似机制，确保 Pod 能够自动重启。
-
-## 使用 kbcli 模拟故障注入
-
-下表介绍所有 Pod 故障类型的常见字段。
-
-📎 Table 1. Pod 故障参数说明
-
-| 参数                  | 说明              | 默认值  | 是否必填 |
-| :-----------------------| :------------------------| :------------ | :------- |
-| `pod name`  | 指定注入故障的 Pod 名称。例如，<br /> 在命令中添加 Pod 名称 `mysql-cluster-mysql-0`，完整命令为  `kbcli fault pod kill mysql-cluster-mysql-0`。 | 默认 | 否 |
-| `--namespace` | 指定创建 Chaos 的命名空间。 | 当前命名空间 | 否 |
-| `--ns-fault` | 指定一个命名空间，使该命名空间中的所有 Pod 都无法使用。例如，<br /> `kbcli fault pod kill --ns-fault=kb-system`。 | 默认 | 否 |
-| `--node`   | 指定一个节点，使该节点上的所有 Pod 都无法使用。例如，<br /> `kbcli fault pod kill --node=minikube-m02`。 | 无 | 否 |
-| `--label`  | 指定一个标签，使默认命名空间中具有该标签的 Pod 无法使用。例如，<br /> `kbcli fault pod kill --label=app.kubernetes.io/component=mysql`。 | 无 | 否 |
-| `--node-label` | 指定一个节点标签，使具有该节点标签的节点上的所有 Pod 都无法使用。例如，<br /> `kbcli fault pod kill --node-label=kubernetes.io/arch=arm64`。 | 无 | 否 |
-| `--mode` | 指定实验的运行方式，可选择项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）、`random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | `all` | 否 |
-| `--value` | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` 时，`value` 用于指定 Pod 的百分比。例如，<br />  `kbcli fault pod kill --mode=fixed-percent --value=50`。 | 无 | 否 |
-| `--duration` | 指定实验的持续时间。 | 10s | 否 |
-
-### Pod kill
-
-执行以下命令，将 `pod-kill` 注入到默认命名空间中的所有 Pod 中，使这些 Pod 被杀死。
-
-```bash
-kbcli fault pod kill
-```
-
-### Pod failure
-
-执行以下命令，将 `pod-failure` 注入到默认命名空间中的所有 Pod 中，并使这些 Pod 在 10 秒内不可用。
-
-```bash
-kbcli fault pod failure --duration=10s
-```
-
-### Container kill
-
-执行以下命令，将 `container-kill` 注入到默认命名空间中所有 Pod 的容器中，并使这些容器被杀死。注意，`--container` 是必需的。
-
-```bash
-kbcli fault pod kill-container --container=mysql
-```
-
-你还可以添加多个容器。例如，在默认命名空间中杀死 `mysql` 和 `config-manager` 容器。
-
-```bash
-kbcli fault pod kill-container --container=mysql --container=config-manager
-```
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 `--dry-run` 命令来查看 YAML 文件，还可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-pod-chaos-on-kubernetes/#使用-yaml-配置文件创建实验)获取更详细的信息。
-
-### Pod kill 示例
-
-1. 将实验配置写入到 `pod-kill.yaml` 文件中。
-
-    在下例中，Chaos Mesh 向指定的 Pod 中注入了 `pod-kill` 故障，使该 Pod 被杀死。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: PodChaos
-    metadata:
-      creationTimestamp: null
-      generateName: pod-chaos-
-      namespace: default
-    spec:
-      action: pod-kill
-      duration: 10s
-      mode: fixed-percent
-      selector:
-        namespaces:
-        - default
-        labelSelectors:
-        'app.kubernetes.io/component': 'mysql'
-      value: "50"
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./pod-kill.yaml
-   ```
-
-### Pod failure 示例
-
-1. 将实验配置写入到 `pod-failure.yaml` 文件中。
-
-    在下例中，Chaos Mesh 向指定的 Pod 中注入了 `pod-failure` 故障，使该 Pod 在 30 秒内不可用。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: PodChaos
-    metadata:
-      creationTimestamp: null
-      generateName: pod-chaos-
-      namespace: default
-    spec:
-      action: pod-failure
-      duration: 30s
-      mode: fixed-percent
-      selector:
-        namespaces:
-        - default
-        labelSelectors:
-        'app.kubernetes.io/component': 'mysql'
-      value: "50"
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./pod-kill.yaml
-   ```
-
-### Container kill 示例
-
-1. 将实验配置写入到 `container-kill.yaml` 文件中。
-
-    在下例中，Chaos Mesh 向指定的 Pod 中注入了 `container-kill` 故障，使该 Container 被杀死。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: PodChaos
-    metadata:
-      creationTimestamp: null
-      generateName: pod-chaos-
-      namespace: default
-    spec:
-      action: container-kill
-      duration: 10s
-      mode: fixed-percent
-      selector:
-        namespaces:
-        - default
-        labelSelectors:
-        'app.kubernetes.io/component': 'mysql'
-      value: "50"
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./pod-kill.yaml
-   ```
-
-### 字段说明
-
-下表介绍以上 YAML 配置文件中的字段。
-
-| 参数 | 类型  | 说明 | 默认值 | 是否必填 | 示例 |
-| :---      | :---  | :---        | :---          | :---     | :---    |
-| action | string | 指定要注入的故障类型，仅支持 `pod-failure`、`pod-kill` 和 `container-kill`。 | 无 | 是 | `pod-kill` |
-| duration | string | 指定实验的持续时间。 | 无 | 是 | 10s |
-| mode | string | 指定实验的运行方式，可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）和 `random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | 无 | 是 | `fixed-percent` |
-| value | string | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` `时，value` 用于指定 Pod 的百分比。 | 无 | 否 | 50 |
-| selector | struct | 通过定义节点和标签来指定目标 Pod。| 无 | 是 <br /> 如果未指定，系统将终止默认命名空间下的所有 Pod。 |  |
-| containerNames | string | 当你将 `action` 配置为 `container-kill` 时，此配置为必填，用于指定注入故障的目标 Container 名。 | 无 | 否 | mysql |
-| gracePeriod | int64 | 当你将 `action` 配置为 `pod-kill` 时，此配置为必填，用于指定删除 Pod 之前的持续时间。 | 0 | 否 | 0 |
-| duration | string | 指定实验的持续时间。 | 无 | 是 | 30s |
diff --git a/i18n/zh-cn/developer-docs/fault_injection/prerequisite.md b/i18n/zh-cn/developer-docs/fault_injection/prerequisite.md
deleted file mode 100644
index 1b64ca922..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/prerequisite.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: 前提条件
-description: 进行故障注入的前提条件
-sidebar_position: 2
-sidebar_label: 前提条件
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 前提条件
-
-## 检查权限
-
-故障注入需要 `local code` 权限，请确保访问密钥已被授予 `local code` 权限。
-
-<Tabs>
-<TabItem value="EKS" label="EKS" default>
-
-前往 [IAM](https://console.amazonaws.cn/iamv2/home?#/home)，点击**用户** -> **用户名** -> **创建访问密钥**，然后选择**本地代码**。
-
-![Create access key](./../../img/kbcli-fault-local-code.png)
-
-:::note
-
-在创建新的访问密钥后，需要重新设置 `aws configure`。
-
-:::
-
-</TabItem>
-
-<TabItem value="GKE" label="GKE">
-
-验证帐户是否具有创建 Podchaos 的权限。
-
-```bash
-kubectl auth can-i create podchaos.chaos-mesh.org -n default --as "useraccont"
-```
-
-如果输出为 yes，则表示已具备所需的权限。
-
-如果输出为 no，请删除验证流程。
-
-```bash
-kubectl delete validatingwebhookconfigurations.admissionregistration.k8s.io chaos-mesh-validation-auth
-```
-
-如果输出为 `reauth related error`，则可能与你的 GKE 帐户权限有关。执行以下命令，重置权限并清理环境。
-
-```bash
-rm -rf .config/gcloud
-
-gcloud init
-
-gcloud auth application-default login
-
-export GOOGLE_PROJECT=xxx
-
-kubectl delete secret cloud-key-secret-gcp
-```
-
-</TabItem>
-
-</Tabs>
-
-## 部署 Chaos Mesh
-
-KubeBlocks 支持通过 Helm 或 kbcli 部署 Chaos Mesh。
-
-这里使用 ChaosMesh v2.5.2，并启用 DNS 服务器进行 DNS 故障注入。
-
-<Tabs>
-<TabItem value="kbcli" label="kbcli" default>
-
-执行以下命令，在 Containerd 中安装 ChaosMesh：
-
-```bash
-kbcli addon enable fault-chaos-mesh
-```
-
-执行以下命令，在 k3d/k3s 中安装 ChaosMesh：
-
-```bash
-kbcli addon enable fault-chaos-mesh --set dnsServer.create=true --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/k3s/containerd/containerd.sock
-```
-
-如果设置了污点（taints），可以使用以下命令设置容忍度（tolerations）：
-
-```bash
-# 默认情况下，ChaosMesh 遵循 KubeBlocks 的容忍度
-# 你可以根据需要为 fault-chaos-mesh 的四个组件（controllerManager、chaosDaemon、dashboard 和 dnsServer）指定容忍度。
-# 一旦为某个组件指定了容忍度，所有组件的默认容忍度都将失效。建议要么为四个组件都指定容忍度，要么都不指定。
-kbcli addon enable fault-chaos-mesh \
---tolerations '[{"key":"kb-controller","operator":"Equal","effect":"NoSchedule","value":"true"}]' \
---tolerations 'chaosDaemon:[{"key":"kb-controller","operator":"Equal","effect":"NoSchedule","value":"true"},{"key":"kb-data","operator":"Equal","effect":"NoSchedule","value":"true"}]' \
---tolerations 'dashboard:[{"key":"kb-controller","operator":"Equal","effect":"NoSchedule","value":"true"}]' \
---tolerations 'dnsServer:[{"key":"kb-controller","operator":"Equal","effect":"NoSchedule","value":"true"}]' 
-```
-
-</TabItem>
-
-<TabItem value="Helm" label="Helm">
-
-```bash
-helm repo add chaos-mesh https://charts.chaos-mesh.org
-kubectl create ns chaos-mesh
-```
-
-执行以下命令，在 Containerd 中安装 ChaosMesh：
-
-```bash
-helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-mesh --version 2.5.2 --set chaosDaemon.privileged=true --set dnsServer.create=true --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
-```
-
-执行以下命令，在 k3d/k3s 中安装 ChaosMesh：
-
-```bash
-helm install chaos-mesh chaos-mesh/chaos-mesh -n=chaos-mesh --version 2.5.2 --set chaosDaemon.privileged=true --set dnsServer.create=true --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/k3s/containerd/containerd.sock
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/developer-docs/fault_injection/stress-fault.md b/i18n/zh-cn/developer-docs/fault_injection/stress-fault.md
deleted file mode 100644
index 7f95f1be8..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/stress-fault.md
+++ /dev/null
@@ -1,64 +0,0 @@
----
-title: 模拟压力场景
-description: 模拟压力场景
-sidebar_position: 8
-sidebar_label: 模拟压力场景
----
-
-# 模拟压力场景
-
-StressChaos 实验用于模拟容器内压力的场景。本文档介绍如何创建 StressChaos 实验。
-
-| 参数                   | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------------------------ | :------------ | :------- |
-| `--cpu-worker` | 指定施加 CPU 压力的线程个数。必须指定 `--cpu-worker` 或 `--memory-worker` 中的一个。| 无 | 否 |
-| `--cpu-load` | 指定占据 CPU 的百分比。`0` 表示没有增加额外负载，`100` 表示满负载。总负载为 `workers * load`。 | 20 | 否 |
-| `--memory-worker` | 指定施加内存压力的线程个数。必须指定 `--cpu-worker` 或 `--memory-worker` 中的一个。 | 无 | 否 |
-| `--memory-size` | 指定分配内存的大小或是占总内存的百分比，分配内存的总和为 `size`。| 无 | 否 |
-| `--container` | 指定容器名称，可以用于指定多个容器。如果未指定，则默认为 Pod 中的第一个容器。| 无 | 否 |
-
-## 使用 kbcli 模拟故障注入
-
-执行以下命令，在默认命名空间的所有 Pod 的第一个容器中创建进程，并持续进行 CPU 和内存的分配、读取和写入，最多占用 100MB 的内存，持续 10 秒钟。在此过程中，有 2 个线程施加 CPU 压力，1 个线程施加内存压力。
-
-```bash
-kbcli fault stress --cpu-worker=2 --cpu-load=50 --memory-worker=1 --memory-size=100Mi
-```
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以在上述 kbcli 命令的末尾添加 --dry-run 命令来查看 YAML 文件，还可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-heavy-stress-on-kubernetes/#使用-yaml-方式创建实验)获取更详细的信息。
-
-### 压力示例
-
-1. 将实验配置写入到 `stress.yaml` 文件中。
-
-    在下例中，Chaos Mesh 在默认命名空间的所有 Pod 的第一个容器中创建了一个进程，并持续进行 CPU 和内存的分配、读取和写入，最多占用 100MB 的内存，持续 10 秒钟。在此过程中，有 2 个线程施加 CPU 压力，1 个线程施加内存压力。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: StressChaos
-    metadata:
-      creationTimestamp: null
-      generateName: stress-chaos-
-      namespace: default
-    spec:
-      duration: 10s
-      mode: all
-      selector:
-        namespaces:
-        - default
-      stressors:
-        cpu:
-          load: 50
-          workers: 2
-        memory:
-          size: 100Mi
-          workers: 1
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./stress.yaml
-   ```
diff --git a/i18n/zh-cn/developer-docs/fault_injection/time-fault.md b/i18n/zh-cn/developer-docs/fault_injection/time-fault.md
deleted file mode 100644
index dfbd03d13..000000000
--- a/i18n/zh-cn/developer-docs/fault_injection/time-fault.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: 模拟时间故障
-description: 模拟时间故障
-sidebar_position: 9
-sidebar_label: 模拟时间故障
----
-
-# 模拟时间故障
-
-TimeChaos 实验用于模拟时间发生偏移的场景。本文档将介绍如何创建 TimeChaos 实验。
-
-:::note
-
-TimeChaos 只影响容器中 PID 命名空间的 PID `1` 进程及其子进程，通过 `kubectl exec` 启动的进程不受其影响。
-
-:::
-
-| 参数                   | 缩写 | 说明               | 默认值 | 是否必填 |
-| :----------------------- | :------- | :------------------------ | :------------ | :------- |
-| `--time-offset` | 无 | 指定时间偏移的长度。 | 无 | 是 |
-| `--clock-id` | 无 | 指定时间偏移作用的时钟，详见 [clock_gettime 文档](https://man7.org/linux/man-pages/man2/clock_gettime.2.html)。| CLOCK_REALTIME | 否 |
-| `--container` | -c | 指定注入故障的容器名称。 | 无 | 否 |
-
-## 使用 kbcli 模拟故障注入
-
-执行以下命令，向指定的 Pod 中注入时间故障，将该 Pod 中进程的时间向前推移 5 秒。一旦时间故障注入，该 Pod 就会处于不可用状态，并立即重启。
-
-```bash
-kbcli fault time --time-offset=-5s
-```
-
-## 使用 YAML 文件模拟故障注入
-
-本节介绍如何使用 YAML 文件模拟故障注入。你可以参考 [Chaos Mesh 官方文档](https://chaos-mesh.org/zh/docs/next/simulate-time-chaos-on-kubernetes/#使用-yaml-方式创建实验)获取更详细的信息。
-
-1. 将实验配置写入到 `time.yaml` 文件中。
-
-    在下例中，Chaos Mesh 向指定的 Pod 中注入时间故障，将该 Pod 中进程的时间向前推移 5 秒。一旦时间故障注入，该 Pod 就会处于不可用状态，并立即重启。
-
-    ```yaml
-    apiVersion: chaos-mesh.org/v1alpha1
-    kind: TimeChaos
-    metadata:
-      creationTimestamp: null
-      generateName: time-chaos-
-      namespace: default
-    spec:
-      duration: 10s
-      mode: all
-      selector:
-        namespaces:
-        - default
-      timeOffset: -5s
-    ```
-
-2. 使用 `kubectl` 创建实验。
-
-   ```bash
-   kubectl apply -f ./time.yaml
-   ```
-
-### 字段说明
-
-下表介绍以上 YAML 配置文件中的字段。
-
-| 参数 | 类型 | 说明 | 默认值 | 是否必填 |
-| :--- | :--- | :--- | :--- | :--- |
-| timeOffset | string | 指定时间偏移的长度。| 无 | 是 | 
-| clockIds | []string | 指定时间偏移作用的时钟，详见 [clock_gettime 文档](https://man7.org/linux/man-pages/man2/clock_gettime.2.html)。 | `["CLOCK_REALTIME"]` | 否 |
-| mode | string | 指定实验的运行方式，可选项包括：`one`（表示随机选出一个符合条件的 Pod）、`all`（表示选出所有符合条件的 Pod）、`fixed`（表示选出指定数量且符合条件的 Pod）、`fixed-percent`（表示选出占符合条件的 Pod 中指定百分比的 Pod）和 `random-max-percent`（表示选出占符合条件的 Pod 中不超过指定百分比的 Pod）。 | 无 | 是 |
-| value | string | 取决于 `mode` 的配置，为 `mode` 提供对应的参数。例如，当你将 `mode` 配置为 `fixed-percent` `时，value` 用于指定 Pod 的百分比。 | 无 | 否 |
-| containerNames | []string | 指定注入故障的容器名称。 | 无 | 否 |
-| selector | struct | 指定目标 Pod。 | 无 | 是 |
diff --git a/i18n/zh-cn/developer-docs/integration/_category_.yml b/i18n/zh-cn/developer-docs/integration/_category_.yml
deleted file mode 100644
index 3b1222658..000000000
--- a/i18n/zh-cn/developer-docs/integration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 集成数据库引擎
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/integration/add-ons-of-kubeblocks.md b/i18n/zh-cn/developer-docs/integration/add-ons-of-kubeblocks.md
deleted file mode 100644
index 6572f0b02..000000000
--- a/i18n/zh-cn/developer-docs/integration/add-ons-of-kubeblocks.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: 简介
-description: 简要介绍 KubeBlocks 支持的数据库引擎
-keywords: [数据库引擎, 集成]
-sidebar_position: 1
-sidebar_label: KubeBlocks 中的数据库引擎
----
-
-# KubeBlocks 中的数据库引擎
-
-KubeBlocks 是基于 K8s 的云原生数据基础设施，用于管理各类数据库引擎。
-
-本系列文档将介绍数据库引擎集成的基础知识，帮助你快速入门，成为 KubeBlocks 社区的一员。
-
-KubeBlocks 集成生态丰富，已经接入多种主流数据库，包括：
-
-- 关系型数据库：ApeCloud-MySQL（MySQL 集群版）、PostgreSQL（PostgreSQL 主备版）；
-- NoSQL 数据库：MongoDB、Redis；
-- 图数据库：Nebula（来自社区贡献者）；
-- 时序数据库：TDengine、Greptime（来自社区贡献者）；
-- 向量数据库：Milvus、Qdrant、Weaviate 等；
-- 流数据库：Kafka、Pulsar。
-
-在开始之前，你需要有以下知识储备：
-1. 会写点 YAML（例如知道 YAML 的缩进需要多少个空格）。
-2. 了解 Helm（例如知道什么是 Helm 和 Helm chart）。
-3. 玩过 K8s（例如知道什么是 Pod，在 K8s 上用 Helm 装过 Operator）。
-4. 了解 KubeBlocks  的基本概念，如 ClusterDefinition、ClusterVersion 和 Cluster。
-
-如有任何问题，可以加入[官方 Slack 频道](https://join.slack.com/t/kubeblocks/shared_invite/zt-22cx2f84x-BPZvnLRqBOGdZ_XSjELh4Q)进行咨询。
\ No newline at end of file
diff --git a/i18n/zh-cn/developer-docs/integration/backup-and-restore.md b/i18n/zh-cn/developer-docs/integration/backup-and-restore.md
deleted file mode 100644
index a8bf3760e..000000000
--- a/i18n/zh-cn/developer-docs/integration/backup-and-restore.md
+++ /dev/null
@@ -1,310 +0,0 @@
----
-title: 备份恢复
-description: 创建备份并恢复
-keywords: [数据库引擎, 备份, 恢复]
-sidebar_position: 3
-sidebar_label: 备份恢复
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 备份恢复
-
-本文档以 Oracle MySQL 为例，介绍如何在 KubeBlocks 中创建备份并恢复（点击参考[完整 PR](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-2-backup-restore/)）。
-
-备份可以分为多种类型。从方式上分，有卷快照备份和文件备份；从内容上分，有数据备份和日志备份；从量上分，有全量备份和增量备份；从时间上分，有定时备份和按需备份等等。
-
-本文档主要介绍如何在 KubeBlocks 上实现最常见的全量快照备份和文件备份。首先，需要明确两个前提：
-
-- 快照备份依赖 Kubernetes 的卷快照能力。
-- 文件备份依赖各个数据库引擎的备份工具。
-  
-Table 1. 展示了 KubeBlocks 中与备份相关的常见概念，后文会通过示例说明它们的作用和使用方法。
-
-:paperclip: Table 1. 术语表
-
-| 术语 | 说明 | 范围 |
-| :--- | :---------- | :---- |
-| Backup | 备份对象 <br /> 即备份对象的实体。 | 命名空间 |
-| BackupPolicy | 备份策略 <br /> 定义各种备份类型的相关策略， 比如调度、备份保留时间、使用哪种备份工具等。 | 命名空间 |
-| BackupTool | 备份工具 <br /> 即 KubeBlocks 中备份工具的载体。每个 BackupTool 都应该实现对应备份工具的备份逻辑和恢复逻辑。 | 集群 |
-| BackupPolicyTemplate | 备份策略模板<br />即备份与 ClusterDefinition 结合的桥梁。在创建集群时，KubeBlocks 会根据 BackupPolicyTemplate 自动为每个集群对象生成一个默认的备份策略。 | 集群 |
-
-## 开始之前
-
-- 阅读[添加数据库引擎](./how-to-add-an-add-on.md)文档。
-- 了解 K8s 的基本概念，例如 Pod、PVC、PV、VolumeSnapshot 等。
-
-## 步骤 1. 准备环境
-
-1. 安装 CSI Driver。
-
-   因为卷快照只支持 CSI Driver，请确保你的 Kubernetes 已经正确配置。
-
-   - 如果在本地环境，你可以通过 KubeBlocks Add-on 功能快速安装 `csi-host-driver`：
-
-     ```bash
-     kbcli addon enable csi-hostpath-driver
-     ```
-
-   - 如果是云环境，则需要根据各个云环境配置相应的 CSI Driver。
-
-2. 将该 `storageclass` 设置为默认值，方便后续创建集群。
-
-   ```bash
-   kubectl get sc
-   >
-   NAME                        PROVISIONER             RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
-   csi-hostpath-sc (default)   hostpath.csi.k8s.io     Delete          WaitForFirstConsumer   true                   35s
-   ```
-
-## 步骤 2. 指定卷类型
-
-在 ClusterDefinition 中指定卷类型 [必须配置]。
-
-```yaml
-  componentDefs:
-    - name: mysql-compdef
-      characterType: mysql
-      workloadType: Stateful
-      service:
-        ports:
-          - name: mysql
-            port: 3306
-            targetPort: mysql
-      volumeTypes:
-        - name: data
-          type: data
-```
-
-`volumeTypes` 用于说明卷类型和卷名称。卷类型（`volumeTypes.type`）分为两种：
-
-- `data`：数据信息；
-- `log`：日志信息。
-
-KubeBlocks 支持对数据和日志的不同备份方式。这里只配置了数据卷的信息。
-
-## 步骤 3. 添加备份配置
-
-准备两个文件 `BackupPolicyTemplate.yml` 和 `BackupTool.yml`。
-
-### BackupPolicy template
-
-这是备份策略的模版，主要描述：
-
-1. 为 Cluster 的哪个组件备份；
-2. 是否定时备份；
-3. 如何设置快照备份；
-4. 如何设置文件备份；
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: BackupPolicyTemplate
-metadata:
-  name: oracle-mysql-backup-policy-template
-  labels:
-    clusterdefinition.kubeblocks.io/name: oracle-mysql # 通过 label 指定作用域，必填
-spec:
-  clusterDefinitionRef: oracle-mysql  # 指定作用域，是哪个 ClusterDef 生成的集群
-  backupPolicies:
-  - componentDefRef: mysql-compdef    # 指定作用域，是哪一个组件相关的
-    schedule:                         # schedule 用于指定定时备份的时间和启动情况
-      snapshot:
-        enable: true                  # 启动定时快照备份
-        cronExpression: "0 18 * * *"
-      datafile:                       # 禁用定时文件备份
-        enable: false
-        cronExpression: "0 18 * * *"        
-    snapshot:                         # 快照备份，默认保留最新的 5 个版本
-      backupsHistoryLimit: 5
-    datafile:                         # 数据文件备份，依赖备份工具
-      backupToolName: oracle-mysql-xtrabackup
-```
-
-如果启用了定时任务，KubeBlocks 会在后台创建一个 CronJob。
-
-在一个新的集群创建后，KubeBlocks 会通过 `clusterdefinition.kubeblocks.io/name` 标签来查找对应的 template 名，并创建相应的 BackupPolicy。
-
-:::note
-
-如果你成功添加了 `BackupPolicyTemplate`，但是新建的集群没有默认的 BackupPolicy，请检查：
-
-1. `ClusterDefinionRef` 是否正确；
-2. `BackupPolicyTemplate` 的 lable 是否正确；
-3. 是否有多个关联的 `BackupPolicyTemplate`。
-   如果是，需要通过 annotation 标记其中一个为默认模板。
-
-   ```yaml
-     annotations:
-      dataprotection.kubeblocks.io/is-default-policy-template: "true"
-   ```
-
-:::
-
-### BackupTool
-
-:::note
-
-`BackupTool` 主要是为文件备份服务。如果你只需要快照备份，不需要文件备份，则不需要配置 `BackupTool`。
-
-:::
-
-`BackTool.yml` 用来描述备份工具的具体执行逻辑，主要服务于文件备份（datafile）。它包括：
-
-1. 备份工具镜像；
-2. backup 的脚本；
-3. restore 的脚本。
-
-```yaml
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: BackupTool
-metadata:
-  name: oracle-mysql-xtrabackup
-  labels:
-spec:
-  image: docker.io/perconalab/percona-xtrabackup:8.0.32  # 通过 xtrabackup 备份
-  env:                         # 注入依赖的环境变量名称
-    - name: DATA_DIR
-      value: /var/lib/mysql
-  physical:
-    restoreCommands:           # restore 命令
-      - sh
-      - -c
-      ...
-  backupCommands:             # backup 命令
-    - sh
-    - -c
-    ...
-```
-
-`BackupTool` 的配置和备份工具强相关。比如这里使用 Percona Xtrabackup 工具备份，就需要在 `backupCommands` 和 `restoreCommands` 中填写脚本。
-
-## 步骤 4. 备份恢复集群
-
-一切就绪，下面来试试如何备份和恢复一个集群。
-
-### 4.1 创建集群
-
-因为前面已经添加了 `BackupPolicyTemplate`，在创建完集群后，KubeBlocks 会监测备份策略，并为该集群创建一个 `BackupPolicy`，可通过以下命令查看：
-
-1. 创建集群。
-
-   <Tabs>
-
-   <TabItem value="kbcli" label="kbcli" default>
-
-   ```bash
-   kbcli cluster create mycluster --cluster-definition oracle-mysql 
-   ```
-
-   </TabItem>
-
-   <TabItem value="Helm" label="Helm">
-
-   ```bash
-   helm install mysql ./tutorial-2-backup-restore/oracle-mysql
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群备份策略。
-
-   ```bash
-   kbcli cluster list-backup-policy mycluster
-   ```
-
-### 4.2 快照备份
-
-```bash
-kbcli cluster backup mycluster --type snapshot
-```
-
-`type` 指定备份类型是 Snapshot 还是 datafile。
-
-如果有多个备份策略，可以通过 `--policy` flag 指定。
-
-### 4.3 文件备份
-
-KubeBlocks 支持备份到本地和云上对象存储。这里展示如何备份到本地。
-
-1. 修改 BackupPolicy，指定 PVC 名称。
-
-   如 `spec.datafile.persistentVolumeClaim.name` 模块所示, 需要指定备份 pvc 的名称。
-
-   ```yaml
-     spec:
-       datafile:
-         backupToolName: oracle-mysql-xtrabackup
-         backupsHistoryLimit: 7
-         persistentVolumeClaim:
-           name: mycluster-backup-pvc
-           createPolicy: IfNotPresent
-           initCapacity: 20Gi
-   ```
-
-2. 执行备份命令, 将 `--type` 设置为 `datafile`。
-
-   ```bash
-   kbcli cluster backup mycluster  --type datafile
-   ```
-
-### 4.4 从备份创建集群
-
-1. 查看备份。
-
-   ```bash
-   kbcli cluster list-backups
-   ```
-
-2. 选择备份创建集群。
-
-   ```bash
-   kbcli cluster restore <clusterName> --backup <backup-name>
-   ```
-
-很快一个新的集群就创建出来了。
-
-:::caution
-
-需要注意的是，某些数据库只有在第一次初始化的时候才创建 root 账号和密码。
-
-因此，前面通过备份恢复出来的数据库集群，虽然在流程上创建了新的 root 账号和密码，但是并没有生效，还需要通过原集群的 root 账号和密码登录。
-
-:::
-
-## 参考资料
-
-- 关于 KubeBlocks 的备份恢复功能，可参考[备份恢复](./../../user-docs/backup-and-restore/overview.md)文档。
-
-## 附录
-
-### A.1 集群数据保护策略
-
-KubeBlocks 对有状态的集群提供了数据保护策略。不同策略提供了不同的数据备份方式，大家可以尝试下列场景：
-
-1. 如果通过 `kbcli cluster delete` 删除了集群，备份还在吗？
-2. 如果把 cluster 的 `terminationPolicy` 改为 `WipeOut`，再删除，备份还在吗？
-3. 如果把 cluster 的 `terminationPolicy` 改为 `DoNotTerminate`，再删除，会发生什么？
-
-:::note
-
-请参考 [KubeBlocks 的数据保护行为](./../../user-docs/kubeblocks-for-mysql/cluster-management/delete-mysql-cluster.md#终止策略)。
-
-:::
-
-### A.2 查看备份情况
-
-[步骤 4](#步骤-4-备份恢复集群) 中通过 backup 子命令创建了备份。
-
-```bash
-kbcli cluster backup mycluster  --type snapshot
-```
-
-可以看到生成了一个新的备份对象，可以通过 `describe-backup` 子命令查看更多信息。
-
-```bash
-kbcli cluster describe-backup <your-back-up-name>
-```
diff --git a/i18n/zh-cn/developer-docs/integration/environment-variables-and-placeholders.md b/i18n/zh-cn/developer-docs/integration/environment-variables-and-placeholders.md
deleted file mode 100644
index da8c17598..000000000
--- a/i18n/zh-cn/developer-docs/integration/environment-variables-and-placeholders.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: 环境变量和占位符
-description: KubeBlocks 的环境变量和占位符
-keywords: [环境变量, 占位符]
-sidebar_position: 10
-sidebar_label: 环境变量和占位符
----
-
-# 环境变量和占位符
-
-## 环境变量
-
-### Pod 环境变量
-
-以下变量由 KubeBlocks 注入到每个 Pod 中。
-
-| 名称 | 说明 |
-| :--- | :---------- |
-| `KB_POD_NAME` | K8s Pod 名称 |
-| `KB_NAMESPACE` | K8s Pod 命名空间 |
-| `KB_SA_NAME` | KubeBlocks 服务账号名称 |
-| `KB_NODENAME` | K8s 节点名称 |
-| `KB_HOSTIP` | K8s 主机 IP 地址 |
-| `KB_PODIP` | K8s Pod IP 地址 |
-| `KB_PODIPS` | K8s Pod IP 地址 |
-| `KB_POD_UID` | POD UID (`pod.metadata.uid`) |
-| `KB_CLUSTER_NAME` | KubeBlocks 集群 API 对象名称 |
-| `KB_COMP_NAME` | 运行中 Pod 的 KubeBlocks 集群 API 对象的 `.spec.components.name`。 |
-| `KB_CLUSTER_COMP_NAME` | 运行中 Pod 的 KubeBlocks 集群 API 对象的 `<.metadata.name>-<.spec.components.name>`。 |
-| `KB_REPLICA_COUNT` | 运行中 Pod 的组件副本数 |
-| `KB_CLUSTER_UID` | 运行中 Pod 的 KubeBlocks 集群 API 对象的 `metadata.uid`。 |
-| `KB_CLUSTER_UID_POSTFIX_8` | `KB_CLUSTER_UID` 的最后八位数字 |
-| `KB_{ordinal}_HOSTNAME` | 运行中 Pod 的主机名，其中 `{ordinal}` 是 Pod 的序号。<br />如果工作负载类型为无状态（Stateless），则不适用。 |
-| `KB_POD_FQDN` | 运行中 Pod 的完全限定域名（FQDN）。<br />如果工作负载类型为无状态（Stateless），则不适用。|
-
-## 占位符
-
-### ComponentValueFrom API
-
-| 名称 | 说明 |
-| :--- | :---------- |
-| `POD_ORDINAL` | Pod 的序号 |
-| `POD_FQDN` | Pod 的完全限定域名（FQDN） |
-| `POD_NAME` | Pod 的名称 |
-
-### ConnectionCredential API
-
-| 名称 | 说明 |
-| :--- | :---------- |
-| `UUID` | 生成一个随机的 UUID v4 字符串 |
-| `UUID_B64` | 生成一个随机的 UUID v4 BASE64 编码的字符串 |
-| `UUID_STR_B64` | 生成一个随机的 UUID v4 字符串，然后进行 BASE64 编码 |
-| `UUID_HEX` | 生成一个随机的 UUID v4 的 HEX 表示 |
-| `HEADLESS_SVC_FQDN` | 无头服务的 FQDN 占位符。值为 `- $(CLUSTER_NAME)-$(1ST_COMP_NAME)-headless.$(NAMESPACE).svc`，其中 1ST_COMP_NAME 是提供 `ClusterDefinition.spec.componentDefs[].service` 属性的第一个组件。|
-| `SVC_FQDN` | 服务的 FQDN 占位符。值为 `- $(CLUSTER_NAME)-$(1ST_COMP_NAME).$(NAMESPACE).svc`，其中 1ST_COMP_NAME 是提供 `ClusterDefinition.spec.componentDefs[].service` 属性的第一个组件。 |
-| `SVC_PORT_{PORT_NAME}` | 具有指定端口名称的 ServicePort 的端口值。例如，在一个 servicePort 的 JSON struct：<br /> `{"name": "mysql", "targetPort": "mysqlContainerPort", "port": 3306}` 中，连接凭证值中的 `"$(SVC_PORT_mysql)"` 为 3306。 |
-| `RANDOM_PASSWD` | 随机生成的 8 个字符 |
diff --git a/i18n/zh-cn/developer-docs/integration/how-to-add-an-add-on.md b/i18n/zh-cn/developer-docs/integration/how-to-add-an-add-on.md
deleted file mode 100644
index b12a2e4ee..000000000
--- a/i18n/zh-cn/developer-docs/integration/how-to-add-an-add-on.md
+++ /dev/null
@@ -1,433 +0,0 @@
----
-title: 添加数据库引擎
-description: 在 KubeBlocks 中添加数据库引擎
-keywords: [数据库引擎, 添加数据库引擎]
-sidebar_position: 2
-sidebar_label: 添加数据库引擎
----
-
-# 添加数据库引擎
-
-本文档以 Oracle MySQL 为例，介绍如何在 KubeBlocks 中添加数据库引擎（点击参考[完整 PR](https://github.com/apecloud/learn-kubeblocks-addon)）。
-
-整个接入过程分成三大步：
-
-1. 规划集群蓝图。
-2. 准备集群模板。
-3. 添加 `addon.yaml` 文件。
-
-## 步骤 1. 规划集群蓝图
-
-首先需要规划一个集群蓝图，知道你想要的集群长什么样：
-
-- 集群包含哪些组件；
-- 每个组件是什么形态：
-  - 有状态/无状态。
-  - 单机版/主备版/集群版。
-
-本文档要部署的集群只包含一个组件，该组件是有状态的，且只有一个节点。Table 1. 中展示了部署集群所需要的基本信息。
-
-部署一个 MySQL 8.0 单机版集群。
-
-:paperclip: Table 1. Oracle MySQL 集群蓝图
-
-| 术语              | 设置                                                                                                     |
-|-------------------|--------------------------------------------------------------------------------------------------------------|
-| ClusterDefinition | 启动脚本：默认。<br /> 配置文件：默认。<br /> 服务端口：3306。<br /> Component 个数：1，即 MySQL。 |
-| ClusterVersion    | Image: docker.io/mysql:8.0.34                                                                                |
-| Cluster.yaml      | 由用户创建时指定。                                                           |
-
-## 步骤 2. 准备集群模板
-
-### 2.1 创建 Helm chart
-
-选项 1.`helm create oracle-mysql`
-
-选项 2. 直接创建一个文件夹 `mkdir oracle-mysql`
-
-包含以下文件内容：
-
-```bash
-> tree oracle-mysql
-.
-├── Chart.yaml        # 包含 chart 相关信息的 YAML 文件
-├── templates         # 模板目录，赋值后将生成有效的 Kubernetes 清单文件
-│   ├── NOTES.txt     # 可选：纯文本文件，包含简短的使用说明
-│   ├── _helpers.tpl  # 放置 helpers 的位置，可以在整个 chart 中重复使用
-│   ├── clusterdefinition.yaml
-│   └── clusterversion.yaml
-└── values.yaml       # 该 chart 的默认配置值
-
-2 directories, 6 files
-```
-
-这里着重分析 `templates` 下的 YAML 文件。
-
-`templates` 目录下只有两个 YAML 文件：`clusterDefintion.yaml` 和 `clusterVersion.yaml`。前者描述组件拓扑，后者描述组件版本信息。
-
-- `clusterDefinition.yaml`
-
-  整个 YAML 文件看上去很长，下面逐个说明各个字段的用途。
-
-  - `ConnectionCredential`
-
-    ```yaml
-      connectionCredential:
-        username: root
-        password: "$(RANDOM_PASSWD)"
-        endpoint: "$(SVC_FQDN):$(SVC_PORT_mysql)"
-        host: "$(SVC_FQDN)"
-        port: "$(SVC_PORT_mysql)"
-    ```
-
-    这里会创建一个 secret，其命名规则为 `{clusterName}-conn-credential`。它包含用户名、密码、endpoint、port 等常规信息，在其他服务访问该集群时使用（这个 secret 会先于其他资源创建，可以在其他地方引用该对象）。
-
-    `$(RANDOM_PASSWD)` 在创建时会替换为一个随机密码。
-
-    `$(SVC_PORT_mysql)` 通过选择端口名来指定要暴露的端口号，这里为 `mysql`。
-
-    更多关于环境变量的说明，参看[环境变量和占位符](./environment-variables-and-placeholders.md)文档。
-
-  - `ComponentDefs`
-
-      ```yaml
-        componentDefs:
-          - name: mysql-compdef
-            characterType: mysql
-            workloadType: Stateful
-            service:
-              ports:
-                - name: mysql
-                  port: 3306
-                  targetPort: mysql
-            podSpec:
-              containers:
-              ...
-      ```
-
-    `componentDefs`，即组件定义。它定义了每个组件运行所需的基本信息，包括启动脚本、配置、端口等等。
-
-    这里我们只有一个 MySQL 组件。为了方便区分，我们把它命名为 `mysql-compdef`，表示这是 MySQL 的一个组件定义。
-
-  - `name` [必填]
-
-    即组件名称。这个名称没有特定标准，选择一个易区分有表达力的名字就可以。
-
-    如果我们将拓扑、版本和资源解耦（就像数据库中的 table normalize 一样），我们不仅可以让每一个对象描述的信息都更清晰和聚焦, 而且还可以通过这些对象的组合来生成更丰富的集群。因此，我们可以将 Cluster 表示为
-
-    $$
-    Cluster = ClusterDefinition.yaml \Join ClusterVersion.yaml \Join ...
-    $$
-
-    这个 `name` 就是那个join key。
-
-    记住这个 `name`，后面要考的。
-
-  - `characterType` [选填]
-
-    `characterType` 是一个字符串类型，用来识别这是一个什么引擎，例如 `mysql`、`postgresql`、`redis` 等。它主要用于数据库连接，在操作数据库时，它能快速识别引擎类型，找到匹配的操作命令。
-
-    它可以是一个任意的字符串，或者你也可以给你的引擎起一个独特的名称。前期我们没有数据库引擎相关的操作，因此也可以空缺。
-
-  - `workloadType` [必填]
-
-    顾名思义就是 Workload 类型。K8s 提供了几个基础款，比如 Deployment，StatefulSet 等。Kubeblocks 在此基础上做了抽象并提供了更丰富的 Workload。比如：
-    - Stateless，无状态服务；
-    - Stateful，有状态服务；
-    - Consensus，有状态服务，且有自选举能力，有角色。
-
-    之后我们会更深入地介绍 Workload（包括设计、实现、如何使用等）。
-
-    因为这里使用的是 MySQL 单机版，因此使用 `Stateful` 就足够了。
-
-  - `service` [选填]
-
-    ```yaml
-          service:
-            ports:
-              - name: mysql  # 端口名 mysql，connectionCredential 会查找这个名称找到对应的 port
-                port: 3306
-                targetPort: mysql
-    ```
-
-    它定义如何为该组件创建一个 Service，暴露哪些端口。
-
-    还记得 `connectionCredential` 中介绍的，集群对外暴露的 port 和 endpoint 吗？
-
-    通过 `$(SVC_PORT_mysql)$` 来选择端口，`mysql` 就是这里的 `service.ports[0].name` mysql。
-
-    :::note
-
-    如果 `connectionCredential` 中填写了端口名，必须确保端口名出现在这里。
-
-    :::
-
-  - `podSpec`
-
-    podSpec 的定义和 Kubernetes 的 podSpec 相同。
-
-    ```yaml
-          podSpec:
-            containers:
-              - name: mysql-container
-                imagePullPolicy: IfNotPresent
-                volumeMounts:
-                  - mountPath: /var/lib/mysql
-                    name: data
-                ports:
-                  - containerPort: 3306
-                    name: mysql
-                env:
-                  - name: MYSQL_ROOT_HOST
-                    value: {{ .Values.auth.rootHost | default "%" | quote }}
-                  - name: MYSQL_ROOT_USER
-                    valueFrom:
-                      secretKeyRef:
-                        name: $(CONN_CREDENTIAL_SECRET_NAME)
-                        key: username
-                  - name: MYSQL_ROOT_PASSWORD
-                    valueFrom:
-                      secretKeyRef:
-                        name: $(CONN_CREDENTIAL_SECRET_NAME)
-                        key: password
-    ```
-
-    这里定义了只包含一个 container 的 Pod，即 `mysql-container`，以及所需的环境变量、端口等常规信息。
-
-    我们从名为 `$(CONN_CREDENTIAL_SECRET_NAME)` 的 secret 中获取用户名和密码作为 pod environment variable。
-
-    这是一个 placeholder, 用来指代前文中提到的 Connection credential Secret。
-
-- `clusterVersion.yaml`
-
-   所有版本相关的信息都配置在 `clusterVersion.yaml` 中。
-
-   现在可以为每一个 Component 需要的每一个 container 补充 image 信息。
-
-   ```yaml
-     clusterDefinitionRef: oracle-mysql
-     componentVersions:
-     - componentDefRef: mysql-compdef
-       versionsContext:
-         containers:
-         - name: mysql-container
-           image: {{ .Values.image.registry | default "docker.io" }}/{{ .Values.image.repository }}:{{ .Values.image.tag }}
-           imagePullPolicy: {{ default .Values.image.pullPolicy "IfNotPresent" }}
-   ```
-
-   还记得在 ClusterDefinition 中采用的 ComponentDef Name 吗？对，`mysql-compdef`，在这里填写该组件的每一个 container 的 image 信息。
-
-:::note
-
-写好了 ClusterDefinition 和 ClusterVersion之后，可以快速测试一下，在本地安装一下试试。
-
-:::
-
-### 2.2 安装 Helm chart
-
-安装 Helm。
-
-```bash
-helm install oracle-mysql ./oracle-mysql
-```
-
-成功安装后，可以看到如下信息：
-
-```yaml
-NAME: oracle-mysql
-LAST DEPLOYED: Wed Aug  2 20:50:33 2023
-NAMESPACE: default
-STATUS: deployed
-REVISION: 1
-TEST SUITE: None
-```
-
-### 2.3 创建集群
-
-通过 `kbcli cluster create`，就可以快速拉起一个 MySQL 集群。
-
-```bash
-kbcli cluster create mycluster --cluster-definition oracle-mysql
->
-Info: --cluster-version is not specified, ClusterVersion oracle-mysql-8.0.34 is applied by default
-Cluster mycluster created
-```
-
-通过 `--cluster-definition` 指定 ClusterDefinition 的名字。
-
-:::note
-
-如果只有一个 ClusterVersion 对象关联该 ClusterDefinition，kbcli在创建集群时，会使用该 ClusterVersion。
-
-如果有多个 ClusterVersion 对象关联该 ClusterDefinition，则需要显式指定。
-
-:::
-
-创建完之后，就可以：
-
-**A. 查看集群状态**
-
-   ```bash
-   kbcli cluster list mycluster
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION               TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   default     oracle-mysql         oracle-mysql-8.0.34   Delete               Running   Aug 02,2023 20:52 UTC+0800
-   ```
-
-**B. 连接集群**
-
-   ```bash
-   kbcli cluster connect mycluster
-   >
-   Connect to instance mycluster-mysql-compdef-0
-   mysql: [Warning] Using a password on the command line interface can be insecure.
-   Welcome to the MySQL monitor.  Commands end with ; or \g.
-   Your MySQL connection id is 8
-   Server version: 8.0.34 MySQL Community Server - GPL
-
-   Copyright (c) 2000, 2023, Oracle and/or its affiliates.
-
-   Oracle is a registered trademark of Oracle Corporation and/or its
-   affiliates. Other names may be trademarks of their respective
-   owners.
-
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql>
-   ```
-
-**C. 简单运维，如 Scale up**
-
-   ```bash
-   kbcli cluster vscale mycluster --components mysql-compdef --cpu='2' --memory=2Gi
-   ```
-
-**D. 简单运维，如 Stop**
-
-   停止集群将释放所有计算资源。
-
-   ```bash
-   kbcli cluster stop mycluster
-   ```
-
-## 步骤 3. 添加 `addon.yaml` 文件
-
-还有最后一步，你就可以通过 KubeBlocks 平台发布你的数据库集群，让更多的用户快速创建你定义的集群。
-
-那就是添加一个 add-on 文件，成为 KubeBlocks add-on 的一员。详情请参考 `tutorial-1-create-an-addon/oracle-mysql-addon.yaml`。
-
-```bash
-apiVersion: extensions.kubeblocks.io/v1alpha1
-kind: Addon
-metadata:
-  name: tutorial-mysql
-spec:
-  description: 'MySQL is a widely used, open-source....'
-  type: Helm
-  helm:
-    chartsImage: registry-of-your-helm-chart
-  installable:
-    autoInstall: false
-
-  defaultInstallValues:
-    - enabled: true
-```
-
-然后通过 `chartsImage` 来配置你的 Helm chart 远端仓库地址。
-
-## 步骤 4. （可选）发布到 Kubeblocks 社区
-
-你可以将 Helm chart 贡献给 [KubeBlocks add-ons](https://github.com/apecloud/kubeblocks-addons)，将 `addon.yaml` 贡献给 [KubeBlocks](https://github.com/apecloud/kubeblocks)。
-
-`addon.yaml` 文件放在 `kubeblocks/deploy/helm/templates/addons` 目录下。
-
-## 附录
-
-### A.1 如何为同一个引擎配置多个版本？
-
-在日常生产环境中碰到的一个常见问题就是：要支持多个版本。而在 KubeBlocks 中，可以通过**多个 ClusterVersion 关联同一个 ClusterDefinition** 的方式来解决这个问题。
-
-以本文中的 MySQL 为例。
-
-1. 修改 `ClusterVersion.yaml` 文件，支持多个版本。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: ClusterVersion
-   metadata:
-     name: oracle-mysql-8.0.32
-   spec:
-     clusterDefinitionRef: oracle-mysql   ## 关联同一个 clusterdefinition: oracle-mysql
-     componentVersions:
-     - componentDefRef: mysql-compdef
-       versionsContext:
-         containers:
-           - name: mysql-container
-             image: <image-of-mysql-8.0.32> ## 镜像地址为 8.0.32
-   ---
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: ClusterVersion
-   metadata:
-     name: oracle-mysql-8.0.18
-   spec:
-     clusterDefinitionRef: oracle-mysql  ## 关联同一个 clusterdefinition: oracle-mysql
-     componentVersions:
-     - componentDefRef: mysql-compdef
-       versionsContext:
-         containers:
-           - name: mysql-container
-             image: <image-of-mysql-8.0.18> ## 镜像地址为 8.0.18
-   ```
-
-2. 创建 Cluster 时，指定版本信息。
-
-   - 创建一个 8.0.32 版本的集群。
-
-     ```bash
-     kbcli cluster create mycluster --cluster-definition oracle-mysql --cluster-version oracle-mysql-8.0.32
-     ```
-
-   - 创建一个 8.0.18 版本的集群。
-
-     ```bash
-     kbcli cluster create mycluster --cluster-definition oracle-mysql --cluster-version oracle-mysql-8.0.18
-     ```
-
-   这样就可以快速为你的引擎实现多版本支持了。
-
-### A.2 kbcli 创建集群不能满足需求怎么办？
-
-`kbcli` 提供了一套便捷且通用的方案来创建集群。创建时会设置一些值，例如资源大小，但这并不能满足每个引擎的需求，尤其是当集群包含多个组件且需要选择性使用时。
-
-为了解决这个问题，你可以用一个 Helm chart 来渲染集群，或者通过 `cluster.yaml` 文件来创建，例如：
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: default
-spec:
-  clusterDefinitionRef: oracle-mysql        # 指定 ClusterDefinition
-  clusterVersionRef: oracle-mysql-8.0.32    # 指定 ClusterVersion
-  componentSpecs:                           # 枚举要用的组件
-  - componentDefRef: mysql-compdef          # 第一个组件, 它的组件类型为 mysql-compdef
-    name: mysql-comp                        # 第一个组件, 名为 mysql-comp
-    replicas: 1
-    resources:                              # 指定 CPU 和内存大小
-      limits:
-        cpu: "1"
-        memory: 1Gi
-      requests:
-        cpu: "1"
-        memory: 1Gi
-    volumeClaimTemplates:                   # 设置 PVC 信息，这里的 name 必须和 Component Def 中的对应
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  terminationPolicy: Delete
-```
diff --git a/i18n/zh-cn/developer-docs/integration/monitoring.md b/i18n/zh-cn/developer-docs/integration/monitoring.md
deleted file mode 100644
index 3e867b1da..000000000
--- a/i18n/zh-cn/developer-docs/integration/monitoring.md
+++ /dev/null
@@ -1,266 +0,0 @@
----
-title: 监控
-description: 如何在 KubeBlocks 种配置监控功能
-keywords: [监控]
-sidebar_position: 6
-sidebar_label: 监控
----
-
-# 监控
-
-本文档以 Oracle MySQL 为例，介绍如何在 KubeBlocks 中配置监控（点击参考[完整 PR](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-4-monitor-cluster/oracle-mysql)）。
-
-## 开始之前
-
-1. 了解 K8s 基本概念，例如 Pod、Sidecar 模式等。
-2. 阅读[添加数据库引擎](./how-to-add-an-add-on.md)文档。
-3. 了解基本的监控系统概念，例如 Prometheus、 Grafana 等。
-
-## 背景知识
-
-监控是 Kubernetes 可观测体系的一个重要部分，可以帮助开发者查看系统运行状态，快速定位问题。
-
-Kubeblocks 目前以数据库引擎 add-on 的形式集成了 Prometheus 和 Grafana 监控组件。本文档介绍如何适配 Prometheus/Grafana 方案。
-
-### Prometheus 简介
-
-Prometheus 提供了一个开源监控解决方案，集成了指标收集、指标存储、告警通知等功能。
-
-Prometheus 在云原生、容器化和微服务架构中广泛应用，它可以帮助开发人员和运维团队实时监控应用程序的性能和健康状态，以便更快速地识别和解决问题，确保应用程序的可靠性和可用性。它通常与 Grafana 一起使用，以创建强大的监控和可观察性解决方案。
-
-### Grafana 简介
-
-Grafana 是一个开源的分析和监控平台，广泛用于可视化时间序列数据。它允许用户创建交互式和可自定义的仪表盘，以监视、分析和理解来自各种来源的数据。
-
-:paperclip: Table 1. 术语表
-
-| 术语 | 说明 |
-| :--  | :---------- |
-| Prometheus Exporter | Prometheus 导出器是一个用于采集监控数据并通过 Prometheus 监控规范对外提供数据的组件。<br /> 更详细的 Exporter 列表可参考 [Prometheus  Exporter List](https://prometheus.io/docs/instrumenting/exporters/)。 |
-| Prometheus Metrics | Prometheus 指标通常用于监控和性能分析的数据，例如应用程序的请求计数、响应时间、CPU使用率、内存使用量等。 |
-| Grafana Dashboard | Grafana 仪表盘是一个可视化界面，用于呈现和展示数据，通常用于监控和分析各种时间序列数据。 |
-
-KubeBlocks 集成的 Prometheus 已经配置了抓取任务，因此用户只需要配置 Exporter 即可。在 KubeBlocks 中，Exporter 以 Sidecar 的形式和数据库引擎的主容器部署在同一个 Pod 中。
-
-## 配置 Exporter
-
-先选择一个合适的 Exporter。本文档基于 Oracle MySQL，所以需要一个 mysql-exporter。
-
-### 配置 Exporter 版本
-
-修改 ClusterVersion (`clusterversion.yaml`)。
-
-可以从开源社区（比如 [Prometheus in Docker](https://hub.docker.com/u/prom)）找到合适的 Exporter。
-
-```yaml
-componentVersions:
-- componentDefRef: mysql-compdef
-  versionsContext:
-    containers:
-    - name: mysql-container
-      image: ...
-      imagePullPolicy: ..
-    - name: mysql-exporter               
-      image: prom/mysqld-exporter:v0.14.0
-```
-
-指定 mysql-exporter 镜像为 prom/mysqld-exporter，版本是 v0.14.0。
-
-### 添加 Exporter 容器
-
-修改 `clusterdefinition.yaml` 文件，以 Sidecar 形式配置 mysql-exporter。
-
-```yaml
-podSpec:
-  containers:
-    # mysql container 和其他 containers ->
-    - name: mysql-exporter
-      ports:
-        - name: metrics
-          containerPort: 9104
-          protocol: TCP
-      env:
-        - name: "MYSQL_MONITOR_USER"
-          valueFrom:
-            secretKeyRef:
-              name: $(CONN_CREDENTIAL_SECRET_NAME)
-              key: username
-        - name: "MYSQL_MONITOR_PASSWORD"
-          valueFrom:
-            secretKeyRef:
-              name: $(CONN_CREDENTIAL_SECRET_NAME)
-              key: password          
-        - name: "DATA_SOURCE_NAME"
-          value: "$(MYSQL_MONITOR_USER):$(MYSQL_MONITOR_PASSWORD)@(localhost:3306)/"
-```
-
-如上所示，这里在原来的 PodSpec 中添加了一个新的容器，其中 `DATA_SOURCE_NAME` 为 mysql-exporter 的环境变量。
-
-:::caution
-
-不同的 Exporter 所需的环境变量不同，需要根据具体的 Exporter 特性来配置。
-
-本文档使用的是 mysql exporter 0.14.0，在最新版本 mysql exporter 0.15.0 已经不再支持 `DATA_SOURCE_NAME`  变量。
-
-:::
-
-### 配置 monitor 属性
-
-修改 `clusterdefinition.yaml` 文件，配置 `monitor` 属性。
-
-```yaml
-componentDefs:
-  - name: mysql-compdef
-    characterType: mysql
-    service: ..
-    monitor:
-      exporterConfig:
-        scrapePort: 9104        # Exporter 监听端口，用于 Prometheus Pull 数据
-        scrapePath: "/metrics"  # Exporter 路径，用于 Prometheus Pull 数据
-```
-
-KuBeBlocks 支持多种监控方案。如果用开源的 Prometheus/Grafana 方案，需要在 `monitor` 中需要配置 Exporter 的监听端口和 metrics 路径。这里的配置需要和[添加 Exporter 容器](#添加-exporter-容器)中配置的容器端口（container-port）对应。
-
-## 配置 Grafana 仪表盘
-
-### 获取 Grafana 仪表盘配置
-
-Grafana 仪表盘可以帮助用户实时监控、分析和理解数据的趋势。对主流数据库，用户可以轻松找到多种仪表盘的配置文件（JSON 格式）。
-- [Grafana 官网](https://grafana.com/grafana/dashboards)。
-- [KubeBlocks 仪表盘](https://github.com/apecloud/kubeblocks-mixin)。
-
-### 添加到集群配置
-
-在 Grapha 仪表盘页面中直接导入下载的 JSON 文件，或者将其配置到你的集群模板中。
-
-后者更通用一些，所有通过该模板产生的集群都可以复用相同的配置。
-
-为此，需要在原有的 Helm chart 上，新加两个文件：
-
-- dashboards：保存 dashboard JSON 文件。
-- grafana：创建一个 ConfigMap 保存 dashboard JSON 文件中的内容。
-
-```yaml
-tree oracle-mysql
-.
-├── Chart.yaml
-├── dashboards
-│   └── mysql.json
-├── templates
-│   ├── NOTES.txt   
-│   ├── _helpers.tpl
-│   ├── clusterdefinition.yaml
-│   └── clusterversion.yaml
-│   └── grafana
-│       └── configmap-dashboards.yaml
-└── values.yaml
-
-4 directories, 8 files
-```
-
-## 监控集群数据
-
-### 准备环境，开启 Prometheus 监控组件
-
-执行 `kbcli addon list` 命令查看下列监控相关插件是否已启用（状态为 `Enabled`）。 
-
-```bash
-kbcli addon list
->
-...
-grafana                        Helm   Enabled                   true  
-alertmanager-webhook-adaptor   Helm   Enabled                   true    
-prometheus                     Helm   Enabled    alertmanager   true
-...
-```
-
-如果未启用（状态为 `Disabled`），则需要逐一启用：
-
-```bash
-kbcli addon enable prometheus
-kbcli addon enable alertmanager-webhook-adaptor
-kbcli addon enable grafana
-```
-
-启用后，可以看到集成的三个 Dashboard。
-
-```bash
-kbcli dashboard list
->
-NAME                                 NAMESPACE   PORT    CREATED-TIME
-kubeblocks-grafana                   kb-system   13000   Jul 24,2023 11:38 UTC+0800
-kubeblocks-prometheus-alertmanager   kb-system   19093   Jul 24,2023 11:38 UTC+0800
-kubeblocks-prometheus-server         kb-system   19090   Jul 24,2023 11:38 UTC+0800
-```
-
-### 创建数据库集群
-
-1. 安装集群模板。
-
-   ```bash
-   helm install oracle-mysql ./path-to-your-helm-chart/oracle-mysql
-   ```
-
-2. 开启监控。
-
-   选项 1. 创建集群时开启
-
-   ```bash
-   kbcli cluster create mycluster --cluster-definition='oracle-mysql' --monitor='true'
-   ```
-
-   选项 2. 在已有集群中开启
-
-   ```bash
-   kbcli cluster update mycluster --monitor='true'
-   ```
-
-### 打开仪表盘
-
-   ```bash
-   # 查看可用的仪表盘
-   kbcli dashboard list
-   >
-   NAME                                      NAMESPACE        PORT        CREATED-TIME
-   kubeblocks-grafana                        default          3000        Jan 13,2023 10:53 UTC+0800
-   kubeblocks-prometheus-alertmanager        default          9093        Jan 13,2023 10:53 UTC+0800
-   kubeblocks-prometheus-server              default          9090        Jan 13,2023 10:53 UTC+0800
-
-   # 选择 Grafana，使用默认浏览器打开网页控制台
-   kbcli dashboard open kubeblocks-grafana
-   ```
-
-### 登录仪表盘
-
-![Grafana Homepage](./../../img/addon-monitoring-grafana-homepage.png)
-
-:::note
-
-如果提示需要登录，请使用以下用户名和密码。
-
-```bash
-Username: admin 
-Password: kubeblocks
-```
-
-:::
-
-## 总结
-
-本文档介绍了如何快速适配 Prometheus/Grafana 方案来监控你的数据库集群。KubeBlocks 未来还会推出基于 OpenTelemetry 的监控方案，敬请期待。
-
-## 参考资料
-
-1. [Prometheus](https://prometheus.io/)。
-2. [Grafana 仪表盘](https://grafana.com/grafana/dashboards/)。
-3. [创建仪表盘](https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/create-dashboard/)。
-
-## 附录
-
-### A.1 关闭集群监控
-
-KubeBlocks 支持通过 `kbcli` 动态启动和关闭某一个集群的监控：
-
-```bash
-kbcli cluster update mycluster --monitor='false'
-```
diff --git a/i18n/zh-cn/developer-docs/integration/multi-component.md b/i18n/zh-cn/developer-docs/integration/multi-component.md
deleted file mode 100644
index a545932c8..000000000
--- a/i18n/zh-cn/developer-docs/integration/multi-component.md
+++ /dev/null
@@ -1,262 +0,0 @@
----
-title: 多组件配置
-description: 如何在 KubeBlocks 中进行多组件配置，以 NebulaGraph 为例
-keywords: [多组件,add-on]
-sidebar_position: 7
-sidebar_label: 多组件配置
----
-
-# 多组件配置
-
-之前的文档介绍了单组件集群（例如 Oracel-MySQL）的定义、备份和配置。
-
-本文档将以 NebulaGraph 为例，说明如何接入一个多组件集群，以及解释多组件配置中的几个常见问题（点击参考[完整 PR](https://github.com/apecloud/kubeblocks-addons/tree/main/addons/nebula)。
-
-## 开始之前
-
-- 阅读[添加数据库引擎](./how-to-add-an-add-on.md)文档。
-- 了解 KubeBlocks 常见概念，例如 ClusterDefinition、Cluster、ComponentRef、Component 等。
-
-## NebulaGraph 架构
-
-在配置前，先了解一下 NebulaGraph 的整体架构。
-
-NebulaGraph 是一种存储与计算分离的架构，由三种服务构成：Graph 服务、Meta 服务和 Storage 服务。具体架构见下图。
-
-![NebulaGraph Architecture](./../../img/nebula-archi.png)
-
-- Metad：是基于 Raft 协议的组件，负责数据管理。例如 Schema 操作、集群管理和用户权限管理等。
-- Graphd：是计算组件，主要负责处理查询请求，包括解析查询语句、校验语句、生成和执行查询计划等。
-- Storaged：是基于 Multi Group Raft 的分布式存储组件，负责存储数据。
-
-如果把客户端也考虑进来：就多了一个组件。
-
-- Client：是无状态组件，用于连接 Graphd，下发 graph query。
-
-## 配置集群拓扑
-
-现在你已经了解了 NebulaGraph 由哪 4 个组件组成，每个组件如何启动和配置了。
-
-和单组件集群一样，你可以快速整理出一个多组件集群的定义。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterDefinition
-metadata:
-  name: nebula
-spec:
-  componentDefs:
-    - name: nebula-console    # client
-      workloadType: Stateless
-      characterType: nebula
-      podSpec: ...
-    - name: nebula-graphd     # graphd
-      workloadType: Stateful
-      podSpec: ...
-    - name: nebula-metad      # metad
-      workloadType: Stateful
-      podSpec: ...
-    - name: nebula-storaged   # storaged
-      workloadType: Stateful
-      podSpec: ...
----
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterVersion
-metadata:
-  name: nebula-3.5.0
-spec:
-  clusterDefinitionRef: nebula   # clusterdef name
-  componentVersions:
-    - componentDefRef: nebula-console  # 指定 client image
-      versionsContext:
-        containers:
-        - name: nebula-console
-          image: ...
-    - componentDefRef: nebula-graphd  # 指定 graphd image
-      versionsContext:
-        containers:
-        - name: nebula-graphd
-          image: 
-    - componentDefRef: nebula-metad   # 指定 metad image
-      versionsContext:
-        containers:
-        - name: nebula-metad
-          image: ...
-    - componentDefRef: nebula-storaged  # 指定 storaged image
-      versionsContext:
-        containers:
-        - name: nebula-storaged
-          image: ...
-```
-
-上述 YAML 文件展示了 NebulaGraph 的 ClusterDefinition 和 ClusterVersion 的大纲。
-
-这里对应 NebulaGraph 的架构分别定义了 4 个组件（包括客户端）及其版本信息。
-
-如果每个组件可以独立启动，那上述文件提供的信息就足够了。
-
-但是一般来说，多组件集群的组件之间往往有属性依赖，该如何说明这一部分组件依赖的关系呢?
-
-## 配置组件间依赖
-
-在配置多组件集群的过程中可以发现，组件之间往往存在一些信息依赖。下图展示了 NebulaGraph 集群各个组件之间的依赖，例如：
-
-1. Nebula-Console 需要知道 Nebula-Graphd 的端口号和服务名（Service Name）。
-2. Nebula-Graphd 需要知道 metad 组件每个 Pod 的地址。
-3. Nebula-Storaged 需要知道 metad 组件每个 Pod 的地址。
-
-![Nebula Inter-Component References](./../../img/nebula-intercomponent-reference.png)
-
-以下是 3 类常见的组件间依赖：
-
-1. **Service Reference**
-
-   例如 Nebula-Console 需要获取 Nebula-Graphd 的 Service Name。
-
-2. **HostName Reference**
-
-   例如 Nebula-Graphd 需要配置 Nebula-metad 的所有 Pod 的地址。该引用通常指向一个有状态的组件。
-
-3. **Field Reference**
-
-   例如 Nebula-Console 需要获取 Nebula-Graph 的某一个服务端口名。
-
-这些被依赖的信息需要在集群启动时，通过环境变量的方式注入到该组件的 Pod 中（不论是通过 configmap 加载，还是定义为 pod env），这样才能确保集群正常启动。
-
-在 KubeBlocks 中，可以通过 `ComponentDefRef` API 来实现。`ComponentDefRef` 引入了以下几个 API：
-
-- `componentDefName` 用于指定被依赖的组件定义名；
-- `componentRefEnv`,定义了一组需要被注入的环境变量：
-  - `name`  定义了被注入的环境变量变量名称；
-  - `valueFrom` 定义了个环境变量值的来源。
-
-下面逐一说明 `ComponentDefRef` 是如何解决前面提到的 3 类重建依赖的。
-
-### Service Reference
-
-场景 1：Nebula-Console 需要获取 Nebula-Graphd 的 Service Name。
-
-在定义 `nebula-console` 时，添加如下组件引用定义（见 `componentDefRef`）：
-
-```yaml
-    - name: nebula-console
-      workloadType: Stateless
-      characterType: nebula
-      componentDefRef:
-        - componentDefName: nebula-graphd
-          componentRefEnv:
-            - name: GRAPHD_SVC_NAME
-              valueFrom:
-                type: ServiceRef
-```
-
-- 指定被依赖的组件为 `nebula-graphd`。
-- 被注入的环境变量名为 `GRAPHD_SVC_NAME`。
-- 变量的值类型为 `ServerRef`，表示值来源于被依赖组件的 Service Name。
-
-:::note
-
-在 KubeBlocks 中，如果已经为某一个组件定义了 `service` 属性，那么在创建集群时，KubeBlocks 会为该组件创建一个名为 `{clusterName}-{componentName}` 的 Service。
-
-:::
-
-### HostName Reference
-
-场景 2:  Nebula-Graphd 需要配置 Nebula-Metad 的所有 Pod 的地址。
-
-```yaml
-    - name: nebula-graphd
-      workloadType: Statelful    
-      componentDefRef:
-        - componentDefName: nebula-metad
-          componentRefEnv:
-            - name: NEBULA_METAD_SVC
-              valueFrom:
-                type: HeadlessServiceRef
-                format: $(POD_FQDN):9559    # 可选，指定值的格式
-```
-
-- 指定被依赖的组件为 `nebula-metad`。
-- 被注入的环境变量名为 `NEBULA_METAD_SVC`。
-- 变量的值类型为 `HeadlessServiceRef`。
-  - 表示值来源于被依赖组件的所有 Pod FQDN，默认会用 `,` 连接多个值。
-  - 若默认的 FQDN 格式不能满足你的需求，可以通过 `format` API 自定义格式 (如 Line 9 所示)。
-
-:::note
-
-KuBeBlocks 提供了三个内置变量作为 place-holder，在集群创建时会被替换为具体的值：
-
-- `${POD_ORDINAL}`，即 Pod 的序数；
-- `${POD_NAME}`，即 Pod 的名称，格式为 `{clusterName}-{componentName}-{podOrdinal}`；
-- `${POD_FQDN}`，即 Pod 的 Full Qualified Domain Name（FQDN）。
-
-在 KubeBlocks 中，每一个有状态的组件默认都会有一个 Headless Service，名为:
-`headlessServiceName = {clusterName}-{componentName}-headless`。
-
-因此，每个有状态组件的 Pod FQDN 的格式为
-`POD_FQDN = {clusterName}-{componentName}-{podIndex}.{headlessServiceName}.{namespace}.svc`。
-
-:::
-
-### Field Reference
-
-场景 3: Nebula-Console 需要获取 Nebula-Graph 的某一个服务端口名。
-
-在 `nebula-console` 组件定义时，可添加如下配置（见 `componentDefRef`）。
-
-```yaml
-    - name: nebula-console
-      workloadType: Stateless
-      characterType: nebula
-      componentDefRef:
-        - componentDefName: nebula-graphd
-          componentRefEnv:
-            - name: GRAPHD_SVC_PORT
-              valueFrom:
-                type: FieldRef
-                fieldPath: $.componentDef.service.ports[?(@.name == "thrift")].port
-```
-
-- 指定被依赖的组件为 `nebula-graphd`。
-- 被注入的环境变量名为 `GRAPHD_SVC_PORT`。
-- 变量的值类型为 `FieldRef`，表示值来源于被依赖组件的某一个属性值，通过 `fieldPath` 指定。
-
-`fieldPath` 提供了一种通过 JSONPath 语法来解析属性值的方式。
-
-KubeBlocks 在解析这里的 JSONPath 时，会默认注册两个 root objects：
-
-- **componentDef**：即被引用的componentDef 对象。
-- **components**：即创建的 Cluster 中，被引用的 componentDef 对应的所有组件。
-
-因此，在 `fieldPath` 中可以用 `$.componentDef.service.ports[?(@.name == "thrift")].port` 表示获取该组件定义的 service 中名为 `thrift` 的端口号。
-
-## 总结
-
-本文档以 NebulaGraph 为例，介绍了多组件之间依赖的几种类型和解决方案。
-
-除了 NebulaGraph，目前 GreptimeDB、Pulsar、RisingWave、StarRocks 等引擎也都使用了 `componentDefRef` API 来解决组件间引用的问题，可以参考它们的实现。
-
-更多 `componentDefRef` API 的说明请参考 [ComponentDefRef API](https://kubeblocks.io/docs/release-0.6/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1alpha1.ComponentDefRef)。
-
-## 附录
-
-### A1. YAML 小贴士
-
-graphd、metad、storaged 都需要 metad 中集群各个 Pod FQDN，无需重复配置，只需要利用 YAML 的锚点就可以轻松解决：
-
-```yaml
-- name: nebula-graphd
-  # ...
-  componentDefRef:
-    - &metadRef # 通过 `&` 定义锚点
-      componentDefName: nebula-metad
-      componentRefEnv:
-        - name: NEBULA_METAD_SVC
-          valueFrom:
-            type: HeadlessServiceRef
-            format: $(POD_FQDN){{ .Values.clusterDomain }}:9559
-            joinWith: ","
-- name: nebula-storaged
-  componentDefRef:
-    - *metadRef # 通过 `*` 使用锚点，避免重复定义
-```
diff --git a/i18n/zh-cn/developer-docs/integration/parameter-configuration.md b/i18n/zh-cn/developer-docs/integration/parameter-configuration.md
deleted file mode 100644
index 078d1cf25..000000000
--- a/i18n/zh-cn/developer-docs/integration/parameter-configuration.md
+++ /dev/null
@@ -1,343 +0,0 @@
----
-title: 参数更新
-description: 如何在 KubeBlocks 中配置参数模板并更新参数
-keywords: [参数更新]
-sidebar_position: 5
-sidebar_label: 参数更新
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 参数更新
-
-本文档继续以 Oracle MySQL 为例，介绍如何在 KubeBlocks 中配置参数模板并更新参数（点击参考[完整 PR](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-3-config-and-reconfig/)）。
-
-## 开始之前
-
-1. 了解 K8s 基本概念，例如 Pod、ConfigMap 等。
-2. 阅读[参数模板](./parameter-template.md)文档。
-3. 了解 Go Template (非必须)。
-4. 了解 CUE Lang (非必须)。
-
-## 背景知识
-
-KubeBlocks 通过将 ConfgMap 挂载到卷的方式来添加配置，并秉持 Kubernetes-Native 的理念，即：`ConfigMap is the only source-of-truth`，将参数变更的入口收敛到 ConfigMap，防止出现配置漂移（drifting）。所以 KubeBlocks 的参数变更遵从以下顺序：
-1. 先修改 ConfigMap 中的参数值；
-2. 根据 ConfigMap 的变更推导出参数变化（add/delete/update）；
-3. 将变更应用到引擎。
-
-不同参数的更新方式不同，主要有以下两类：
-- 静态参数，通过重启集群生效（冷更新）；
-- 动态参数，通过动态刷参生效（热更新）。
-
-Table 1. 枚举了 4 种常见的动态刷参方式，包括 UNIX Signal、SQL、Auto 等。目前 KubeBlocks 对接的引擎都可以通过其中一种或者多种方式来实现。例如，在 PostgreSQL 中，要实现动态刷参，可以：
-- UNIX Signal：下发 `SIGHUP` 信号；
-- Tools：调用 `pg_ctl` 命令；
-- SQL：执行 SQL 语句，直接更新内存参数。
-
-:paperclip: Table 1. 参数热更新方式总结
-
-| 变更方式     | 说明 | 适用范围 |
-| :---------- | :----------- | :------------ |
-| Unix Signal | 例如 PostgreSQL。 <br /> 参数变更后，如果需要重新加载配置文件，可以给 PG 发送 `SIGHUP` 信号。 | 适用于支持 UNIX Signal 变更的引擎。 |
-| SQL         | 例如 MySQL。 <br /> 需要通过 SQL 语句发下变更内容 `SET GLOBAL <var> =<value>`。 | 适用于大部分 RDBMS 引擎。 <br /> **注**: 需要适配 `execSQL` 接口。目前 KubeBlocks 只支持 MySQL 和 PostgreSQL。 |
-| Tools       | 例如 Redis or MongoDB。 <br /> 提供了相关的 tools 工具来更新参数。 | 通过自定义脚本或者本地工具实现，通用性高。 |
-| Auto        | 引擎本身会 watch 配置文件的变化，检查到配置文件变更后，会主动更新。 | 依赖引擎是否支持自动加载。 |
-
-在[参数模板](./parameter-template.md)一文中提到，K8s 通过卷挂载方式使用 ConfigMap 时，该 ConfigMap 的变更会被更新到 Pod。但这个变更不是实时的。因此，KuBeBlocks 不仅需要区分参数的更新方式，还要 watch 对应的变更是否已经同步到 Pod 上。
-了解这些背景之后，来看看 KubeBlocks 是怎么通过 `ConfigConstraint` API 管理参数变更的。
-
-## ConfigConstraint
-
-作为一个支持多引擎的平台，KubeBlocks 需要了解如下信息，更好地支持配置变更：
-
-1. 配置文件的格式。
-
-   不同格式的配置文件的结构不同。KubeBlocks 会根据结构解析配置文件，推导出每次变更的信息(增加/删除/更新的参数)。
-
-2. 参数的作用方式。
-
-   指定参数的作用方式（effect scope），知道哪些是动态参数，哪些是静态参数，哪些是不可变参数，帮助决策，使参数快速生效。
-
-3. 参数动态变更的方式。
-
-   如 Table 1. 所示，参数动态变更的方式很多。需要根据引擎指定其适用的动态变更方式。
-
-4. 定义参数校验规则。
-
-   用于校验参数的有效值，防止误操作。在生产环境中，经常会有“手误”写错了参数值，导致数据库无法启动的情况。参数校验增加了一层保护，提前做校验，防止此类误操作。
-
-:::note
-
-KubeBlocks 会为配置了 `ConfigConstraint` 的 Component 创建一个 config-manager sidecar，用于感知配置文件的更新、下发 Signal、执行参数更新脚本等。
-
-:::
-
-这些信息被抽象到 KubeBlocks 的 `ConfigConstraint`（参数约束）中，如下所示。其中一共有 4 个部分，对应前文提到的 4 个关键配置信息。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ConfigConstraint
-metadata:
-  name: oracle-mysql-config-constraints
-spec:
-  # 1. 指定配置文件格式为 INI，且只关注其中 mysqld 小节的内容
-  formatterConfig:
-    format: ini
-    iniConfig:
-      sectionName: mysqld
-
-  # 2. MySQL 的动态刷参方式，通过 reload-script 执行 SQL 语句
-  reloadOptions:
-    tplScriptTrigger:
-      sync: true
-      # 指定用哪个脚本文件更新
-      scriptConfigMapRef: oracle-mysql-reload-script
-      namespace: {{ .Release.Namespace }}
-
-  ## 3.1 配置静态参数列表
-  staticParameters:
-    - open_files_limit
-    - performance_schema
-    - enforce_gtid_consistency
-
-  ## 3.2 配置动态参数列表
-  dynamicParameters:
-    - innodb_buffer_pool_size
-    - max_connections
-    - gtid_mode
-
-  ## 4. 通过 CUE 模板，定义参数校验规则 
-  cfgSchemaTopLevelName: MysqlParameter
-  configurationSchema:
-    cue: |-
-      {{- .Files.Get "config/oracle-mysql-config-constraint.cue" | nindent 6 }}
-```
-
-下面逐个解释每个 API 的使用方法。
-
-### FormatterConfig
-
-FormatterConfig 描述了配置文件的格式。常见的格式有 `ini`、`yaml`、`json`、`xml`、`properties` 等。配置文件本身只是一个文本信息，不同格式的文件都需要不同的解析器。
-
-当 KubeBlocks 感知到配置文件变更时，会根据已知的格式推导出参数的变更(增/删/改)，并通知 Pod 去更新。
-
-例如，MySQL 的可调整的参数来自 `ini` 格式，且只解析其中的 `mysqld` 字段信息。
-
-```bash
-  formatterConfig:
-    format: ini               # 配置文件格式，目前支持 ini、xml、yaml、json、hcl 等格式
-    iniConfig:
-      sectionName: mysqld     # 如果是 ini 格式，可能包含多个 section，需要指定 section 名称
-```
-
-### ReloadOptions
-
-ReloadOptions 描述了动态刷参的方式。
-
-Table 1. 总结了 4 种常见的动态刷参方式。相应的，KubeBlocks 也支持配置多种刷参方式：
-
-- tplScriptTrigger：通过模板文件刷参数；
-- shellTrigger：通过执行脚本刷参；
-- unixSignalTrigger：通过 UNIX Signal 刷参；
-- 不配置：即 AutoLoad 模式，交由数据库引擎自动更新。
-
-***示例***
-- tplScriptTrigger
-
-  本例选择 `tplScriptTrigger`，通过定义模板文件中的内容来配置参数。
-
-  ```bash
-    reloadOptions:
-      tplScriptTrigger:                                 # 通过模板文件刷参
-        sync: true                                      # 同步更新
-        scriptConfigMapRef: oracle-mysql-reload-script  # 引用的模板文件 
-        namespace: {{ .Release.Namespace }}
-  ```
-
-- shellTrigger
-
-  `shellTrigger` 通过 Shell 脚本动态刷参。这是一种更通用的方案，因为大部分数据库都支持通过客户端更新参数。
-
-  ```yaml
-    reloadOptions:
-      shellTrigger:
-        sync: true
-        command:
-          - "update-dynamic-config.sh" 
-  ```
-
-:::note
-
-这些 ReloadOptions 中的脚本会被加载到 Pod 上，通过前文提到的 config-manager sidecar 执行。
-
-:::
-
-### Static/Dynamic Parameters
-
-KubeBlocks 支持配置动态参数（dynamic）、静态参数（static）和不可变参数（immutable）。这样区分是为了识别变更的参数类型，来决策参数的生效方式。
-
-KubeBlocks 内置了多种刷参策略，根据变更内容，智能选择最合适的变更策略。
-
-下面枚举了几个常见的 MySQL 参数，比如静态参数 `performance_schema`，动态参数 `max_connection`。如果参数列表过长，推荐使用 `.Files.Get` 函数处理。
-
-```yaml
-  ## 3.1 配置静态参数列表
-  staticParameters:
-    - open_files_limit
-    - performance_schema
-    - enforce_gtid_consistency
-
-  ## 3.2 配置动态参数列表
-  dynamicParameters:
-    - innodb_buffer_pool_size
-    - max_connections
-    - gtid_mode
-```
-
-### ConfigurationSchema
-
-在变更时，有时会因为写入了无效参数值，导致集群启动失败。
-
-KubeBlocks 提供了 ConfigurationSchema 用于参数值有效性校验，主要使用 CUE 语言来做校验。通过描述每个参数的类型、默认值、取值范围等，防止因为参数值错误而导致问题。
-
-下面提供了一个 MySQL 参数值校验配置。
-
-```yaml
-#MysqlParameter: {
-
-    // Sets the autocommit mode
-    autocommit?: string & "0" | "1" | "OFF" | "ON"
-
-    open_files_limit: int | *5000
-
-    // Enables or disables the Performance Schema
-    performance_schema: string & "0" | "1" | "OFF" | "ON" | *"0"
-    
-    // The number of simultaneous client connections allowed.
-    max_connections?: int & >=1 & <=100000    
-    ...
- }
-```
-
-这里为 MySQL 中的参数 `performance_schema` 定义了一些约束。
-
-- 参数值类型为 string；
-- 参数取值可以为 ON，OFF 或者 0，1；
-- 参数默认值为 0。
-
-```yaml
-    // Enables or disables the Performance Schema
-    performance_schema: string & "0" | "1" | "OFF" | "ON" | *"0"
-```
-
-## 如何更新参数
-
-KubeBlocks 通过命令行 kbcli 提供了更便捷的参数管理方式。
-
-### 创建集群
-
-KubeBlocks 支持用 kbcli 和 Helm 进行创建。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create mycluster --cluster-definition='oracle-mysql' --cluster-version oracle-mysql-8.0.32
-```
-
-</TabItem>
-
-<TabItem value="Helm" label="Helm">
-
-```bash
-helm install oracle-mysql path-to-your-helm-chart/oracle-mysql
-```
-
-</TabItem>
-
-</Tabs>
-
-### 查看参数配置
-
-可以看到详细的配置信息，包括配置模板名和配置约束名等。
-
-```bash
-kbcli cluster describe-config mycluster
->
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME   FILE     ENABLED   TEMPLATE                       CONSTRAINT                        RENDERED                            COMPONENT    CLUSTER
-mysql-config       my.cnf   true      oracle-mysql-config-template   oracle-mysql-config-constraints   mycluster-mysql-comp-mysql-config   mysql-comp   mycluster
-
-History modifications:
-OPS-NAME   CLUSTER   COMPONENT   CONFIG-SPEC-NAME   FILE   STATUS   POLICY   PROGRESS   CREATED-TIME   VALID-UPDATED
-```
-
-### 更新参数
-
-例如，如果要修改 MySQL 的 max_connection 参数，根据前文配置可以知道：
-
-- 它是动态参数；
-- 它的取值范围是 [1, 10000]。
-
-:::note
-
-对于 KubeBlocks v0.6.0 及更高版本，请运行 `kbcli cluster edit-config` 来配置参数。
-
-:::
-
-```bash
-kbcli cluster edit-config mycluster
-```
-
-然后会看到一个交互的编辑界面。我们直接将 max_connection 修改为 1000。
-
-![Interactive Config Editor](./../../img/addon-interactive-config-editor.png)
-
-保存变更后再次确认变更信息， 即可实现参数的更新。
-
-![Confirm Config Changes](./../../img/addon-confirm-config-changes.png)
-
-### 查看变更历史
-
-再次查看参数配置。可以看到，除了参数模板之外，还记录了参数的历史修改信息和变更的具体内容。
-
-```bash
-kbcli cluster describe-config mycluster
->
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME   FILE     ENABLED   TEMPLATE                       CONSTRAINT                        RENDERED                            COMPONENT    CLUSTER
-mysql-config       my.cnf   true      oracle-mysql-config-template   oracle-mysql-config-constraints   mycluster-mysql-comp-mysql-config   mysql-comp   mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT    CONFIG-SPEC-NAME   FILE     STATUS    POLICY   PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-7p442   mycluster   mysql-comp   mysql-config       my.cnf   Succeed            1/1        Aug 25,2023 18:27 UTC+0800   {"my.cnf":"{\"mysqld\":{\"max_connections\":\"1000\"}}"}
-```
-
-## 参考资料
-
-- [Configure a Pod to Use a ConfigMap](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/)
-- [CUE Lang Overview](https://cuetorials.com/zh/overview/)
-- [KubeBlocks ApeCloud MySQL Configuration](https://cn.kubeblocks.io/docs/preview/user-docs/overview/introduction)
-
-## 附录
-
-### A.1 如何查看变更流程？
-
-参数变更是一种 KubeBlocks 的 `operations`，简称 `ops`。
-
-用户通过 `kbcli` 下发变更后，可以看到 KubeBlocks 中产生了一个 `Reconfigration` 类型的 `ops`。如[查看变更历史](#查看变更历史)一节所示，用户可以看到有一个名为 `mycluster-reconfiguring-7p442` 的 `ops`。还可以通过下面的命令查看参数变更的详细信息，包括变更内容、变更策略、变更时间等。
-
-```bash
-kbcli cluster describe-op <your-reconfig-ops-name>
-```
-
-### A.2 如何两次配置之间的差异？
-
-执行 `diff-config` 命令，比较两次配置的差异。
-
-```bash
-kbcli cluster diff-config <your-reconfig-ops1> <your-reconfig-ops2>
-```
diff --git a/i18n/zh-cn/developer-docs/integration/parameter-template.md b/i18n/zh-cn/developer-docs/integration/parameter-template.md
deleted file mode 100644
index f3d7cb2b1..000000000
--- a/i18n/zh-cn/developer-docs/integration/parameter-template.md
+++ /dev/null
@@ -1,232 +0,0 @@
----
-title: 参数模板
-description: 如何在 KubeBlocks 中配置参数模板 
-keywords: [参数模板]
-sidebar_position: 4
-sidebar_label: 参数模板
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 参数模板
-
-本文档以 Oracle MySQL 为例，介绍如何在 KubeBlocks 中配置参数模板（点击参考[完整 PR](https://github.com/apecloud/learn-kubeblocks-addon/tree/main/tutorial-3-config-and-reconfig/)）。
-
-## 开始之前
-
-1. 了解 K8s 基本概念，例如 Pod，ConfigMap 等。
-2. 阅读[添加数据库引擎](./how-to-add-an-add-on.md)文档。
-3. 了解 Go Template（非必须）。
-
-## 背景知识
-
-在创建集群时，开发者通常会根据资源情况、性能需求、环境等信息调整参数。云数据库厂商，如 AWS、阿里云等也提供了不同的参数模版（例如 RDS 有高性能模版，异步模版等）供用户选择，方便快速启动。
-
-在 K8s 中，用户可将参数文件以 ConfigMap 的形式挂载到 Pod 的卷上。但是 K8s 只管理 ConfigMap 的更新并将其同步到 Pod 卷，如果数据库引擎不支持动态加载配置文件（例如 MySQL、PostgreSQL），那就只能登录数据库并执行更新操作。而通过直接登录数据库的方式操作，很容易导致配置漂移。
-
-为了防止配置漂移，KubeBlocks 通过 ConfigMap 来管理参数，且秉持 `ConfigMap is the only source-of-truth` 的理念，即所有配置的变更都是先应用到 ConfigMap 上，然后根据参数的不同生效方式，再应用到集群的每个 Pod 上。
-
-本文将介绍 Kubeblocks 中参数配置的相关内容，包括如何添加参数模版、如何修改参数、如何配置参数校验等。在之后的教程中，还会详细说明参数/配置如何更新。
-
-## 配置参数模板
-
-KubeBlocks 通过 ***Go Template*** 来渲染参数模版，除了常见函数，还内置了一些数据库中常用到的计算函数（例如 `callBufferSizeByResource`、`getContainerCPU`）。
-
-KubeBlocks 具有强大的渲染能力，能让你快速定制一个 ***自适应参数模板***（Adaptive ConfigTemplate），根据上下文（例如内存、CPU 大小）来渲染合适的配置文件。
-
-### 添加参数模板
-
-```yaml
-1 apiVersion: v1
-2 kind: ConfigMap
-3 metadata:
-4   name: oracle-mysql-config-template
-5   labels:
-6     {{- include "oracle-mysql.labels" . | nindent 4 }}
-7 data:
-8   my.cnf: |-
-9     {{`
-10      [mysqld]
-11      port=3306
-12      {{- $phy_memory := getContainerMemory ( index $.podSpec.containers 0 ) }}
-13      {{- $pool_buffer_size := ( callBufferSizeByResource ( index $.podSpec.containers 0 ) ) }}
-14      {{- if $pool_buffer_size }}
-15      innodb_buffer_pool_size={{ $pool_buffer_size }}
-16      {{- end }}
-17 
-18      # 如果内存小于 8Gi，禁用 performance_schema
-19      {{- if lt $phy_memory 8589934592 }}
-20      performance_schema=OFF
-21      {{- end }}
-22 
-23      [client]
-24      port=3306
-25      socket=/var/run/mysqld/mysqld.sock
-26      `
-27    }}
-```
-
-上面展示了一个通过 ConfigMap 定义的 MySQL 自适应参数模板。模板中配置了几个常见的 MySQL 参数，包括 `port`，`innodb_buffer_pool_size` 等。
-它根据容器启动时配置的 memory，
-
-- 计算得到 `innodb_buffer_size` 大小（Line 11 ~ Line 15）。
-- 在 memory 小于 8Gi 时，禁用 `performance_schema` 来减少对性能的影响（Line 19 ~ Line 21）。
-
-`callBufferSizeByResource` 是 KubeBlocks 预定义的一个 bufferPool 计算规则，主要为 MySQL 服务。
-
-此外，你也可以通过查询 memory 和 cpu 来定制你的计算公式：
-
-- `getContainerMemory` 获取 Pod 上某个 container 的 memory 大小。
-- `getContainerCPU` 获取 Pod 中某个 container 的 CPU 大小。
-
-:::note
-
-你可以按需定制更多的参数计算方式，比如
-
-- 根据 memory 大小，计算出一个合适的 `max_connection` 值。
-- 根据 memory 总量，计算其他组件的合理配置。
-
-:::
-
-### 使用参数模板
-
-#### 修改 ClusterDefinition
-
-可以通过 `ClusterDefinition` 中的 `configSpecs` 来指定参数模板，引用在[添加参数模板](#添加参数模板)中定义的 ConfigMap。
-
-```yaml
-  componentDefs:
-    - name: mysql-compdef
-      configSpecs:
-        - name: mysql-config
-          templateRef: oracle-mysql-config-template # 定义参数模板的 ConfigMap 名
-          volumeName: configs                       # 挂载的卷名称         
-          namespace: {{ .Release.Namespace }}       # 该参数模板 ConfigMap 的 Namespace
-      podSpec:
-        containers:
-         - name: mysql-container
-           volumeMounts:
-             - mountPath: /var/lib/mysql
-               name: data
-             - mountPath: /etc/mysql/conf.d       # 挂载的配置文件路径，引擎相关  
-               name: configs                      # 和 Line 6 的 volumeName 对应   
-           ports:
-            ...
-```
-
-如上所示，需要通过添加 `configSpecs` 字段修改 `ClusterDefinition.yaml` 文件，分别指定：
-
-- templateRef: 模板所在的 ConfigMap 对象名称。
-- volumeName: 挂载到 Pod 的卷名。
-- namespace: 模板文件的名空间（ConfigMap 是 namespace scope 的，一般为 KubeBlocks 安装的命名空间）。
-
-#### 查看配置信息
-
-当一个新的集群创建后，KubeBlocks 会根据配置模板渲染好对应的 Configmap，并将该 ConfigMap 挂载到 `configs` 卷中。
-
-1. 安装 Helm chart。
-
-   ```bash
-   helm install oracle-mysql path-to-your-helm-char/oracle-mysql
-   ```
-
-2. 创建集群。
-
-   ```bash
-   kbcli cluster create mycluster --cluster-definition oracle-mysql --cluster-version oracle-mysql-8.0.32
-   ```
-
-3. 查看配置。
-
-   kbcli 提供了 `describe-config` 子命令来查看集群的配置信息。
-
-   ```bash
-   kbcli cluster describe-config mycluster --components mysql-compdef
-   >
-   ConfigSpecs Meta:
-   CONFIG-SPEC-NAME   FILE     ENABLED   TEMPLATE                       CONSTRAINT   RENDERED                               COMPONENT       CLUSTER
-   mysql-config       my.cnf   false     oracle-mysql-config-template                mycluster-mysql-compdef-mysql-config   mysql-compdef   mycluster
-
-   History modifications:
-   OPS-NAME   CLUSTER   COMPONENT   CONFIG-SPEC-NAME   FILE   STATUS   POLICY   PROGRESS   CREATED-TIME   VALID-UPDATED
-   ```
-
-可以查看到：
-
-- 配置模版名：oracle-mysql-config-template。
-- 渲染后的 ConfigMap：mycluster-mysql-compdef-mysql-config。
-- 加载的文件名：my.cnf。
-
-## 总结
-
-本文档介绍了如何通过参数模板来渲染“自适应”参数。
-
-K8s 会将 ConfigMap 的变更定时同步到 Pod 上，但是大部分引擎并不会主动加载新的配置（比如 MySQL、PostgreSQL、Redis）。因为，用户无法仅通过修改 ConfigMap 就实现 Reconfig（参数变更）的能力。下一篇文档将介绍如何配置参数变更。
-
-## 附录
-
-### A.1 如何配置多个参数模板？
-
-在生产环境中，开发者通常需要多个参数模板来满足不同需求。例如阿里云 RDS 就提供了高性能参数模板、异步模板等。
-
-在 KubeBlocks 中，你可以通过配置多个 `ClusterVerion` 来实现这一需求。
-
-还记得我们对 cluster 的定义吗，它可以表示为：
-
-$$
-Cluster = ClusterDefinition.yaml \Join ClusterVersion.yaml \Join Cluster.yaml
-$$
-
-其中 JoinKey 就是 Component Name。
-
-而多个 ClusterVersion 可以和同一个 ClusterDefinition 组合。
-
-```yaml
-## 第一个 ClusterVersion，使用 ClusterDefinition 中的配置
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterVersion
-metadata:
-  name: oracle-mysql
-spec:
-  clusterDefinitionRef: oracle-mysql
-  componentVersions:
-  - componentDefRef: mysql-compdef
-    versionsContext:
-      containers:
-        - name: mysql-container
-          ...
----
-## 第二个 ClusterDefinition，定义了自己的 configSpecs，会覆盖 ClusterDefinition 的配置
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ClusterVersion
-metadata:
-  name: oracle-mysql-perf
-spec:
-  clusterDefinitionRef: oracle-mysql
-  componentVersions:
-  - componentDefRef: mysql-compdef
-    versionsContext:
-      containers:
-        - name: mysql-container
-         ...
-    # 这里的 name 需要与 ClusterDefinition 中定义的 ConfigMap 的名称一致
-    configSpecs:
-      - name: mysql-config    
-        templateRef: oracle-mysql-perf-config-template
-        volumeName: configs
-```
-
-这里创建了两个 `ClusterVersion` 对象。第一个使用了默认的参数模版（没有配置任何信息）。第二个通过 `configSpecs` 指定了一个新的参数模版 `oracle-mysql-perf-config-template`。 
-
-在创建 Cluster 时，你可以指定 `ClusterVersion` 参数来创建不同配置的集群，如：
-
-```bash
-kbcli cluster create mysqlcuster --cluster-definition oracle-mysql --cluster-version  oracle-mysql-perf
-```
-
-:::note
-
-KubeBlocks 会通过 `configSpecs.name` 来合并 ClusterVersion 和 ClusterDefinition 中的配置。请确保在 ClusterVersion 中定义的 `configSpecs.name` 和 ClusterDefinition 中定义的名称一致。
-
-:::
diff --git a/i18n/zh-cn/developer-docs/overview.md b/i18n/zh-cn/developer-docs/overview.md
deleted file mode 100644
index 4aedde081..000000000
--- a/i18n/zh-cn/developer-docs/overview.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: 简介
-description: 开发者文档简介
-keywords: [开发者文档]
-sidebar_position: 1
-sidebar_label: 指南
----
-
-# 简介
-
-正确使用开发者文档可以帮助开发者更好地利用资源，释放开发潜力。KubeBlocks 的开发者文档包括集成数据库引擎、API 参考、引用外部组件、故障注入等模块。
-
-* [集成数据库引擎](./integration/add-ons-of-kubeblocks.md)
-* [API 参考](./api-reference/cluster.md)
-* [引用外部组件](./external-component/reference-external-component.md)
-* [故障注入](./fault_injection/introduction.md)
diff --git a/i18n/zh-cn/developer-docs/terminology.md b/i18n/zh-cn/developer-docs/terminology.md
deleted file mode 100644
index f62675301..000000000
--- a/i18n/zh-cn/developer-docs/terminology.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: 术语
-description: KubeBlocks 中的术语
-keywords: [术语]
-sidebar_position: 2
-sidebar_label: 术语
----
-# 术语
-
-##### Addon
-
-Addon 是一种高效且开放的扩展机制。开发者可以使用 KubeBlocks addon 快速在 KubeBlocks 中添加新的数据库引擎，并获取该引擎的基础管理功能，比如生命周期管理、数据备份与恢复、指标和日志收集等等。
-
-##### ActionSet
-
-ActionSet 是一组使用特定工具执行备份恢复的命令，比如使用 xtrabackup 备份 MySQL 的命令，以及从备份中恢复数据的命令等等。
-
-##### BackupPolicy
-
-BackupPolicy 表示集群的备份策略，涵盖了备份存储库（BackupRepo）、备份对象和备份方法等信息。在一个备份策略中可以定义多个备份方法，每个方法引用相应的 ActionSet。在创建备份时，可以指定所需的备份策略和备份方法。
-
-##### BackupRepo
-
-BackupRepo 是备份数据的存储库。其原理是使用 CSI 驱动程序将备份数据上传到各种存储系统，例如对象存储系统（如 S3、GCS）和存储服务器（如 FTP、NFS）等。
-
-##### BackupSchedule
-
-BackupSchedule 声明了集群中自动备份的配置，包括备份频率、保留期限、备份策略和备份方法等。BackupSchedule Controller 会根据自定义资源（CR）中指定的配置创建 CronJob，自动备份集群。
-
-##### Cluster
-
-Cluster 即集群，集群由组件构成。
-
-##### Component
-
-Component 即组件，是构建数据存储和处理系统的基本单元。组件利用 StatefulSet（可以是 Kubernetes 原生 StatefulSet，也可以是客户指定的 StatefulSet，如 OpenKruise）来管理一个或多个 Pod。
-
-##### ComponentRef
-
-ComponentRef 用于选择需要引用的组件及其字段。
-
-##### ComponentClassDefinition
-
-ComponentClassDefinition 用于定义组件参数。
-
-##### ConfigConstraint
-
-为了方便更改配置，KubeBlocks 将引擎配置文件抽象为 ConfigConstraints。ConfigConstraints 抽象出来的信息包括：
- - 配置文件的格式；
- - 动态参数、静态参数、不可变参数；
- - 动态变化的参数；
- - 参数校验规则。
-
-##### CRD (Custom Resource Definition)
-
-CRD（Custom Resource Definition），即自定义资源定义，是一种强大的 Kubernetes API 扩展机制，允许开发者引入新的数据类型和对象（即自定义的资源）。
-
-##### Operator
-
-Operator 是一种自定义资源，可以实现对一个或多个特定应用或服务的自动化管理。Operator 通过监视和响应自定义资源对象的状态变化，帮助在 Kubernetes 中进行管理任务。
-
-##### OpsDefinition
-
-Ops 是 Operations（操作）的简称，表示数据库运维操作。它定义了与数据库管理相关的操作任务，指定集群和组件支持的操作类型。
-
-##### OpsRequest
-
-一个 OpsRequest 表示一次运维任务请求。
-
-##### RBAC (Role-Based Access Control)
-
-RBAC（Role-Based Access Control），即基于角色的访问控制，是一种计算机系统的安全机制，旨在根据组织内个人用户的角色授予其对资源的访问权限，控制用户访问那些仅限于授权用户访问的任务。Kubernetes 的内置 API 可以管理命名空间和集群中的角色，使它们同特定的资源与个人用户关联起来。
-
-##### RSM （ReplicatedStateMachines）
-
-RSM（ReplicatedStateMachines）是一种负责管理本地 Kubernetes 对象（如 StatefulSet 和 Pod）的工作负载。
-
-##### ServiceDescriptor
-
-ServiceDescriptor 是一个自定义资源（CR）对象，用于描述引用存储服务的 API 对象。它允许用户抽象出由 Kubernetes 或非 Kubernetes 环境提供的服务，可供 KubeBlocks 内的其他集群对象引用。ServiceDescriptor 可用于解决诸如服务依赖、组件依赖和组件共享等问题。
\ No newline at end of file
diff --git a/i18n/zh-cn/img/addon-confirm-config-changes.png b/i18n/zh-cn/img/addon-confirm-config-changes.png
deleted file mode 100644
index 634c09887..000000000
Binary files a/i18n/zh-cn/img/addon-confirm-config-changes.png and /dev/null differ
diff --git a/i18n/zh-cn/img/addon-interactive-config-editor.png b/i18n/zh-cn/img/addon-interactive-config-editor.png
deleted file mode 100644
index df5ab9df0..000000000
Binary files a/i18n/zh-cn/img/addon-interactive-config-editor.png and /dev/null differ
diff --git a/i18n/zh-cn/img/addon-monitoring-grafana-homepage.png b/i18n/zh-cn/img/addon-monitoring-grafana-homepage.png
deleted file mode 100644
index 1cc5c4cec..000000000
Binary files a/i18n/zh-cn/img/addon-monitoring-grafana-homepage.png and /dev/null differ
diff --git a/i18n/zh-cn/img/apecloud-mysql-intro-role-changing.jpg b/i18n/zh-cn/img/apecloud-mysql-intro-role-changing.jpg
deleted file mode 100644
index 36032638f..000000000
Binary files a/i18n/zh-cn/img/apecloud-mysql-intro-role-changing.jpg and /dev/null differ
diff --git a/i18n/zh-cn/img/api-delete-single-follower-pod-status.png b/i18n/zh-cn/img/api-delete-single-follower-pod-status.png
deleted file mode 100644
index d265da5bc..000000000
Binary files a/i18n/zh-cn/img/api-delete-single-follower-pod-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-all-pods-connect-after.png b/i18n/zh-cn/img/api-ha-all-pods-connect-after.png
deleted file mode 100644
index 2b71649a2..000000000
Binary files a/i18n/zh-cn/img/api-ha-all-pods-connect-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-all-pods-delete.png b/i18n/zh-cn/img/api-ha-all-pods-delete.png
deleted file mode 100644
index e046235b4..000000000
Binary files a/i18n/zh-cn/img/api-ha-all-pods-delete.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-all-pods-get-status.png b/i18n/zh-cn/img/api-ha-all-pods-get-status.png
deleted file mode 100644
index 1dc316e99..000000000
Binary files a/i18n/zh-cn/img/api-ha-all-pods-get-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-all-pods-grep-role-after.png b/i18n/zh-cn/img/api-ha-all-pods-grep-role-after.png
deleted file mode 100644
index b47b27220..000000000
Binary files a/i18n/zh-cn/img/api-ha-all-pods-grep-role-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-all-pods-grep-role.png b/i18n/zh-cn/img/api-ha-all-pods-grep-role.png
deleted file mode 100644
index 9539be61f..000000000
Binary files a/i18n/zh-cn/img/api-ha-all-pods-grep-role.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-connect-single-follower-pod.png b/i18n/zh-cn/img/api-ha-connect-single-follower-pod.png
deleted file mode 100644
index 0fb0f61fb..000000000
Binary files a/i18n/zh-cn/img/api-ha-connect-single-follower-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-delete-leader-pod-after.png b/i18n/zh-cn/img/api-ha-delete-leader-pod-after.png
deleted file mode 100644
index 25797237a..000000000
Binary files a/i18n/zh-cn/img/api-ha-delete-leader-pod-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-delete-leader-pod.png b/i18n/zh-cn/img/api-ha-delete-leader-pod.png
deleted file mode 100644
index 25eee2c51..000000000
Binary files a/i18n/zh-cn/img/api-ha-delete-leader-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-grep-role-single-follower-pod.png b/i18n/zh-cn/img/api-ha-grep-role-single-follower-pod.png
deleted file mode 100644
index ae560f414..000000000
Binary files a/i18n/zh-cn/img/api-ha-grep-role-single-follower-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-grep-role.png b/i18n/zh-cn/img/api-ha-grep-role.png
deleted file mode 100644
index 6d1f56e39..000000000
Binary files a/i18n/zh-cn/img/api-ha-grep-role.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-leader-pod-connect-check.png b/i18n/zh-cn/img/api-ha-leader-pod-connect-check.png
deleted file mode 100644
index e65b2c973..000000000
Binary files a/i18n/zh-cn/img/api-ha-leader-pod-connect-check.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-pg-after.png b/i18n/zh-cn/img/api-ha-pg-after.png
deleted file mode 100644
index 24c3c13b8..000000000
Binary files a/i18n/zh-cn/img/api-ha-pg-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-pg-original-status.png b/i18n/zh-cn/img/api-ha-pg-original-status.png
deleted file mode 100644
index d8b374064..000000000
Binary files a/i18n/zh-cn/img/api-ha-pg-original-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-pg-replication-info.png b/i18n/zh-cn/img/api-ha-pg-replication-info.png
deleted file mode 100644
index 8e8f38b97..000000000
Binary files a/i18n/zh-cn/img/api-ha-pg-replication-info.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-single-follower-pod-delete.png b/i18n/zh-cn/img/api-ha-single-follower-pod-delete.png
deleted file mode 100644
index 30aa26b96..000000000
Binary files a/i18n/zh-cn/img/api-ha-single-follower-pod-delete.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-single-follower-pod-grep-role-after.png b/i18n/zh-cn/img/api-ha-single-follower-pod-grep-role-after.png
deleted file mode 100644
index 82ab8d926..000000000
Binary files a/i18n/zh-cn/img/api-ha-single-follower-pod-grep-role-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-two-pod-get-status.png b/i18n/zh-cn/img/api-ha-two-pod-get-status.png
deleted file mode 100644
index bf07416d7..000000000
Binary files a/i18n/zh-cn/img/api-ha-two-pod-get-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-two-pods-connect-after.png b/i18n/zh-cn/img/api-ha-two-pods-connect-after.png
deleted file mode 100644
index 133146baf..000000000
Binary files a/i18n/zh-cn/img/api-ha-two-pods-connect-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-two-pods-grep-role-after.png b/i18n/zh-cn/img/api-ha-two-pods-grep-role-after.png
deleted file mode 100644
index bc15b37ca..000000000
Binary files a/i18n/zh-cn/img/api-ha-two-pods-grep-role-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ha-two-pods-grep-role.png b/i18n/zh-cn/img/api-ha-two-pods-grep-role.png
deleted file mode 100644
index 5800c232f..000000000
Binary files a/i18n/zh-cn/img/api-ha-two-pods-grep-role.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-monitoring copy.png b/i18n/zh-cn/img/api-monitoring copy.png
deleted file mode 100644
index f9e1e8612..000000000
Binary files a/i18n/zh-cn/img/api-monitoring copy.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-monitoring.png b/i18n/zh-cn/img/api-monitoring.png
deleted file mode 100644
index f9e1e8612..000000000
Binary files a/i18n/zh-cn/img/api-monitoring.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-both-pods-grep-role-after.png b/i18n/zh-cn/img/api-mysql-ha-both-pods-grep-role-after.png
deleted file mode 100644
index 8b0aa6d2e..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-both-pods-grep-role-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-both-pods-grep-role.png b/i18n/zh-cn/img/api-mysql-ha-both-pods-grep-role.png
deleted file mode 100644
index 789f06dff..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-both-pods-grep-role.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-both-pods-status.png b/i18n/zh-cn/img/api-mysql-ha-both-pods-status.png
deleted file mode 100644
index 57e74c463..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-both-pods-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-delete-both-pods.png b/i18n/zh-cn/img/api-mysql-ha-delete-both-pods.png
deleted file mode 100644
index 1f89fedb5..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-delete-both-pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-delete-primary-pod-after.png b/i18n/zh-cn/img/api-mysql-ha-delete-primary-pod-after.png
deleted file mode 100644
index 5262c9fc8..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-delete-primary-pod-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-delete-primary-pod.png b/i18n/zh-cn/img/api-mysql-ha-delete-primary-pod.png
deleted file mode 100644
index e1f9635fb..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-delete-primary-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-grep-role-secondary-pod.png b/i18n/zh-cn/img/api-mysql-ha-grep-role-secondary-pod.png
deleted file mode 100644
index 1c6db7fc0..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-grep-role-secondary-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-grep-role.png b/i18n/zh-cn/img/api-mysql-ha-grep-role.png
deleted file mode 100644
index 2c14759bc..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-grep-role.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-secondary-pod-grep-role-after.png b/i18n/zh-cn/img/api-mysql-ha-secondary-pod-grep-role-after.png
deleted file mode 100644
index 19e2a1224..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-secondary-pod-grep-role-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-mysql-ha-secondary-pod-status.png b/i18n/zh-cn/img/api-mysql-ha-secondary-pod-status.png
deleted file mode 100644
index 771e51031..000000000
Binary files a/i18n/zh-cn/img/api-mysql-ha-secondary-pod-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/api-ysql-ha-delete-secondary-pod.png b/i18n/zh-cn/img/api-ysql-ha-delete-secondary-pod.png
deleted file mode 100644
index 471f36ec8..000000000
Binary files a/i18n/zh-cn/img/api-ysql-ha-delete-secondary-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/backup-and-restore-backup-repo-1.png b/i18n/zh-cn/img/backup-and-restore-backup-repo-1.png
deleted file mode 100644
index c8df5b889..000000000
Binary files a/i18n/zh-cn/img/backup-and-restore-backup-repo-1.png and /dev/null differ
diff --git a/i18n/zh-cn/img/backup-and-restore-backup-repo-2.png b/i18n/zh-cn/img/backup-and-restore-backup-repo-2.png
deleted file mode 100644
index d293f9805..000000000
Binary files a/i18n/zh-cn/img/backup-and-restore-backup-repo-2.png and /dev/null differ
diff --git a/i18n/zh-cn/img/backup-and-restore-backup-repo-3.png b/i18n/zh-cn/img/backup-and-restore-backup-repo-3.png
deleted file mode 100644
index 9ae8f8a55..000000000
Binary files a/i18n/zh-cn/img/backup-and-restore-backup-repo-3.png and /dev/null differ
diff --git a/i18n/zh-cn/img/connect-to-a-kafka-cluster-gain-elb-address.png b/i18n/zh-cn/img/connect-to-a-kafka-cluster-gain-elb-address.png
deleted file mode 100644
index 149db7d06..000000000
Binary files a/i18n/zh-cn/img/connect-to-a-kafka-cluster-gain-elb-address.png and /dev/null differ
diff --git a/i18n/zh-cn/img/connect-to-database-in-production-env-network-locations.jpg b/i18n/zh-cn/img/connect-to-database-in-production-env-network-locations.jpg
deleted file mode 100644
index ee325b83f..000000000
Binary files a/i18n/zh-cn/img/connect-to-database-in-production-env-network-locations.jpg and /dev/null differ
diff --git a/i18n/zh-cn/img/connect-to-database-in-testing-env.png b/i18n/zh-cn/img/connect-to-database-in-testing-env.png
deleted file mode 100644
index e181fca85..000000000
Binary files a/i18n/zh-cn/img/connect-to-database-in-testing-env.png and /dev/null differ
diff --git a/i18n/zh-cn/img/create-and-connect-databases-overview.jpg b/i18n/zh-cn/img/create-and-connect-databases-overview.jpg
deleted file mode 100644
index 88c65e8c2..000000000
Binary files a/i18n/zh-cn/img/create-and-connect-databases-overview.jpg and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_connect_cluster_after.png b/i18n/zh-cn/img/failure_simulation_connect_cluster_after.png
deleted file mode 100644
index cf2efc148..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_connect_cluster_after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_connect_cluster_follower.png b/i18n/zh-cn/img/failure_simulation_connect_cluster_follower.png
deleted file mode 100644
index 7ee397a5d..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_connect_cluster_follower.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_connect_three_pods.png b/i18n/zh-cn/img/failure_simulation_connect_three_pods.png
deleted file mode 100644
index c379be4ba..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_connect_three_pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_connect_two_pods.png b/i18n/zh-cn/img/failure_simulation_connect_two_pods.png
deleted file mode 100644
index 35b2e474b..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_connect_two_pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_delete_follower_pod.png b/i18n/zh-cn/img/failure_simulation_delete_follower_pod.png
deleted file mode 100644
index 91979e509..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_delete_follower_pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_delete_pod.png b/i18n/zh-cn/img/failure_simulation_delete_pod.png
deleted file mode 100644
index d7d39db04..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_delete_pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_delete_three_pods.png b/i18n/zh-cn/img/failure_simulation_delete_three_pods.png
deleted file mode 100644
index 5ea90978f..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_delete_three_pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_delete_two_pods.png b/i18n/zh-cn/img/failure_simulation_delete_two_pods.png
deleted file mode 100644
index dba597a52..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_delete_two_pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_describe_cluster.png b/i18n/zh-cn/img/failure_simulation_describe_cluster.png
deleted file mode 100644
index a0a74049a..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_describe_cluster.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_describe_cluster_2.png b/i18n/zh-cn/img/failure_simulation_describe_cluster_2.png
deleted file mode 100644
index 42ec0d5ed..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_describe_cluster_2.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_describe_cluster_after.png b/i18n/zh-cn/img/failure_simulation_describe_cluster_after.png
deleted file mode 100644
index fcdb23dc3..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_describe_cluster_after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_describe_cluster_follower.png b/i18n/zh-cn/img/failure_simulation_describe_cluster_follower.png
deleted file mode 100644
index d37269dad..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_describe_cluster_follower.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_describe_three_pods.png b/i18n/zh-cn/img/failure_simulation_describe_three_pods.png
deleted file mode 100644
index c5bff9e66..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_describe_three_pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/failure_simulation_describe_two_pods.png b/i18n/zh-cn/img/failure_simulation_describe_two_pods.png
deleted file mode 100644
index 4f2390036..000000000
Binary files a/i18n/zh-cn/img/failure_simulation_describe_two_pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-delete-both-pods-after.png b/i18n/zh-cn/img/ha-mysql-delete-both-pods-after.png
deleted file mode 100644
index d03c199ac..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-delete-both-pods-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-delete-both-pods.png b/i18n/zh-cn/img/ha-mysql-delete-both-pods.png
deleted file mode 100644
index c37f7a0ec..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-delete-both-pods.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-delete-primary-pod.png b/i18n/zh-cn/img/ha-mysql-delete-primary-pod.png
deleted file mode 100644
index 6105ddc85..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-delete-primary-pod.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-delete-secondary-after.png b/i18n/zh-cn/img/ha-mysql-delete-secondary-after.png
deleted file mode 100644
index e32ee9908..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-delete-secondary-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-delete-secondary.png b/i18n/zh-cn/img/ha-mysql-delete-secondary.png
deleted file mode 100644
index 6d1f6febd..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-delete-secondary.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-describe-cluster.png b/i18n/zh-cn/img/ha-mysql-describe-cluster.png
deleted file mode 100644
index dd61fd7c5..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-describe-cluster.png and /dev/null differ
diff --git a/i18n/zh-cn/img/ha-mysql-primary-pod-describe-after.png b/i18n/zh-cn/img/ha-mysql-primary-pod-describe-after.png
deleted file mode 100644
index 79e0840df..000000000
Binary files a/i18n/zh-cn/img/ha-mysql-primary-pod-describe-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/kafka-connect-cross-vpc.png b/i18n/zh-cn/img/kafka-connect-cross-vpc.png
deleted file mode 100644
index 329ef7bfb..000000000
Binary files a/i18n/zh-cn/img/kafka-connect-cross-vpc.png and /dev/null differ
diff --git a/i18n/zh-cn/img/kbcli-fault-local-code.png b/i18n/zh-cn/img/kbcli-fault-local-code.png
deleted file mode 100644
index 3333e16f2..000000000
Binary files a/i18n/zh-cn/img/kbcli-fault-local-code.png and /dev/null differ
diff --git a/i18n/zh-cn/img/kubeblocks-api-layers.png b/i18n/zh-cn/img/kubeblocks-api-layers.png
deleted file mode 100644
index f263ec7d6..000000000
Binary files a/i18n/zh-cn/img/kubeblocks-api-layers.png and /dev/null differ
diff --git a/i18n/zh-cn/img/kubeblocks-architecture-ha.png b/i18n/zh-cn/img/kubeblocks-architecture-ha.png
deleted file mode 100644
index c63e839d2..000000000
Binary files a/i18n/zh-cn/img/kubeblocks-architecture-ha.png and /dev/null differ
diff --git a/i18n/zh-cn/img/kubeblocks-architecture.png b/i18n/zh-cn/img/kubeblocks-architecture.png
deleted file mode 100644
index 0015e0951..000000000
Binary files a/i18n/zh-cn/img/kubeblocks-architecture.png and /dev/null differ
diff --git a/i18n/zh-cn/img/kubeblocks-general-purpose-arch.png b/i18n/zh-cn/img/kubeblocks-general-purpose-arch.png
deleted file mode 100644
index b5dbb9331..000000000
Binary files a/i18n/zh-cn/img/kubeblocks-general-purpose-arch.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mongodb-migration-timestamp.png b/i18n/zh-cn/img/mongodb-migration-timestamp.png
deleted file mode 100644
index aa233a030..000000000
Binary files a/i18n/zh-cn/img/mongodb-migration-timestamp.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_active.png b/i18n/zh-cn/img/mysql_migration_active.png
deleted file mode 100644
index 277172914..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_active.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_application_cdc.png b/i18n/zh-cn/img/mysql_migration_application_cdc.png
deleted file mode 100644
index a1cbe96c2..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_application_cdc.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_application_status.png b/i18n/zh-cn/img/mysql_migration_application_status.png
deleted file mode 100644
index a6ec9dc1a..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_application_status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_batch_optimized_apply.png b/i18n/zh-cn/img/mysql_migration_batch_optimized_apply.png
deleted file mode 100644
index 8a978e1bb..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_batch_optimized_apply.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_create_endpoints.png b/i18n/zh-cn/img/mysql_migration_create_endpoints.png
deleted file mode 100644
index 4bd6600ea..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_create_endpoints.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_create_task.png b/i18n/zh-cn/img/mysql_migration_create_task.png
deleted file mode 100644
index a198ba9d7..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_create_task.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_full_load_tuning_settings.png b/i18n/zh-cn/img/mysql_migration_full_load_tuning_settings.png
deleted file mode 100644
index dff09f81d..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_full_load_tuning_settings.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_migration_type.png b/i18n/zh-cn/img/mysql_migration_migration_type.png
deleted file mode 100644
index 32f344e41..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_migration_type.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_replication_instance.png b/i18n/zh-cn/img/mysql_migration_replication_instance.png
deleted file mode 100644
index c4ed76a9a..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_replication_instance.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_select_rds_db_instance.png b/i18n/zh-cn/img/mysql_migration_select_rds_db_instance.png
deleted file mode 100644
index 0a9fb6beb..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_select_rds_db_instance.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_target_table_preparation_mode.png b/i18n/zh-cn/img/mysql_migration_target_table_preparation_mode.png
deleted file mode 100644
index 790a0ad1a..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_target_table_preparation_mode.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_test_connection.png b/i18n/zh-cn/img/mysql_migration_test_connection.png
deleted file mode 100644
index b1d51cc82..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_test_connection.png and /dev/null differ
diff --git a/i18n/zh-cn/img/mysql_migration_turn_on_validation.png b/i18n/zh-cn/img/mysql_migration_turn_on_validation.png
deleted file mode 100644
index 8d05b0904..000000000
Binary files a/i18n/zh-cn/img/mysql_migration_turn_on_validation.png and /dev/null differ
diff --git a/i18n/zh-cn/img/nebula-archi.png b/i18n/zh-cn/img/nebula-archi.png
deleted file mode 100644
index 941d049f8..000000000
Binary files a/i18n/zh-cn/img/nebula-archi.png and /dev/null differ
diff --git a/i18n/zh-cn/img/nebula-intercomponent-reference.png b/i18n/zh-cn/img/nebula-intercomponent-reference.png
deleted file mode 100644
index 0a0c1dd94..000000000
Binary files a/i18n/zh-cn/img/nebula-intercomponent-reference.png and /dev/null differ
diff --git a/i18n/zh-cn/img/obervability-advanced-logs-loki-grafana.png b/i18n/zh-cn/img/obervability-advanced-logs-loki-grafana.png
deleted file mode 100644
index bc823f64e..000000000
Binary files a/i18n/zh-cn/img/obervability-advanced-logs-loki-grafana.png and /dev/null differ
diff --git a/i18n/zh-cn/img/observability-loki-in-grafana.png b/i18n/zh-cn/img/observability-loki-in-grafana.png
deleted file mode 100644
index 0dd284201..000000000
Binary files a/i18n/zh-cn/img/observability-loki-in-grafana.png and /dev/null differ
diff --git a/i18n/zh-cn/img/pg-migration-sink.png b/i18n/zh-cn/img/pg-migration-sink.png
deleted file mode 100644
index 8ade5825d..000000000
Binary files a/i18n/zh-cn/img/pg-migration-sink.png and /dev/null differ
diff --git a/i18n/zh-cn/img/pgsql-ha-after.png b/i18n/zh-cn/img/pgsql-ha-after.png
deleted file mode 100644
index e39fe235f..000000000
Binary files a/i18n/zh-cn/img/pgsql-ha-after.png and /dev/null differ
diff --git a/i18n/zh-cn/img/pgsql-ha-before.png b/i18n/zh-cn/img/pgsql-ha-before.png
deleted file mode 100644
index 3051246e1..000000000
Binary files a/i18n/zh-cn/img/pgsql-ha-before.png and /dev/null differ
diff --git a/i18n/zh-cn/img/pgsql-ha-pg_stat_replication.png b/i18n/zh-cn/img/pgsql-ha-pg_stat_replication.png
deleted file mode 100644
index f45ff5c79..000000000
Binary files a/i18n/zh-cn/img/pgsql-ha-pg_stat_replication.png and /dev/null differ
diff --git a/i18n/zh-cn/img/pgsql-migration-describe-task.png b/i18n/zh-cn/img/pgsql-migration-describe-task.png
deleted file mode 100644
index a28ef5594..000000000
Binary files a/i18n/zh-cn/img/pgsql-migration-describe-task.png and /dev/null differ
diff --git a/i18n/zh-cn/img/pgsql-migration-timestamp.png b/i18n/zh-cn/img/pgsql-migration-timestamp.png
deleted file mode 100644
index aa233a030..000000000
Binary files a/i18n/zh-cn/img/pgsql-migration-timestamp.png and /dev/null differ
diff --git a/i18n/zh-cn/img/proxy-architecture.png b/i18n/zh-cn/img/proxy-architecture.png
deleted file mode 100644
index 98059f839..000000000
Binary files a/i18n/zh-cn/img/proxy-architecture.png and /dev/null differ
diff --git a/i18n/zh-cn/img/redis-high-availability-initial-status.png b/i18n/zh-cn/img/redis-high-availability-initial-status.png
deleted file mode 100644
index fef04b80b..000000000
Binary files a/i18n/zh-cn/img/redis-high-availability-initial-status.png and /dev/null differ
diff --git a/i18n/zh-cn/img/redis-high-availability-role.png b/i18n/zh-cn/img/redis-high-availability-role.png
deleted file mode 100644
index adfbe7ebb..000000000
Binary files a/i18n/zh-cn/img/redis-high-availability-role.png and /dev/null differ
diff --git a/i18n/zh-cn/img/redis-high-availability-status-after-exception.png b/i18n/zh-cn/img/redis-high-availability-status-after-exception.png
deleted file mode 100644
index 2b28275e5..000000000
Binary files a/i18n/zh-cn/img/redis-high-availability-status-after-exception.png and /dev/null differ
diff --git a/i18n/zh-cn/img/try-kb-on-cloud-accesskey-management.png b/i18n/zh-cn/img/try-kb-on-cloud-accesskey-management.png
deleted file mode 100644
index 708047942..000000000
Binary files a/i18n/zh-cn/img/try-kb-on-cloud-accesskey-management.png and /dev/null differ
diff --git a/i18n/zh-cn/img/try-kb-on-cloud-dashboard.png b/i18n/zh-cn/img/try-kb-on-cloud-dashboard.png
deleted file mode 100644
index 44af1b17b..000000000
Binary files a/i18n/zh-cn/img/try-kb-on-cloud-dashboard.png and /dev/null differ
diff --git a/i18n/zh-cn/img/try-kb-on-cloud-mysql-panel.png b/i18n/zh-cn/img/try-kb-on-cloud-mysql-panel.png
deleted file mode 100644
index 8b2f79716..000000000
Binary files a/i18n/zh-cn/img/try-kb-on-cloud-mysql-panel.png and /dev/null differ
diff --git a/i18n/zh-cn/img/try-kb-on-local-dashboard.png b/i18n/zh-cn/img/try-kb-on-local-dashboard.png
deleted file mode 100644
index 44af1b17b..000000000
Binary files a/i18n/zh-cn/img/try-kb-on-local-dashboard.png and /dev/null differ
diff --git a/i18n/zh-cn/img/try-kb-on-local-mysql-panel.png b/i18n/zh-cn/img/try-kb-on-local-mysql-panel.png
deleted file mode 100644
index 8b2f79716..000000000
Binary files a/i18n/zh-cn/img/try-kb-on-local-mysql-panel.png and /dev/null differ
diff --git a/i18n/zh-cn/img/try-kb-on-local-nyancat.png b/i18n/zh-cn/img/try-kb-on-local-nyancat.png
deleted file mode 100644
index 34fffcd65..000000000
Binary files a/i18n/zh-cn/img/try-kb-on-local-nyancat.png and /dev/null differ
diff --git a/i18n/zh-cn/user-docs/connect-databases/_category_.yml b/i18n/zh-cn/user-docs/connect-databases/_category_.yml
deleted file mode 100644
index 5eab895a5..000000000
--- a/i18n/zh-cn/user-docs/connect-databases/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: 连接数据库
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/connect-databases/connect-to-database-in-production-environment.md b/i18n/zh-cn/user-docs/connect-databases/connect-to-database-in-production-environment.md
deleted file mode 100644
index 3853fed6d..000000000
--- a/i18n/zh-cn/user-docs/connect-databases/connect-to-database-in-production-environment.md
+++ /dev/null
@@ -1,257 +0,0 @@
----
-title: 在生产环境中连接数据库
-description: 如何在生产环境中连接数据库
-keywords: [生产环境, 连接数据库]
-sidebar_position: 3
-sidebar_label: 生产环境
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 在生产环境中连接数据库
-
-在生产环境中，使用 CLI 和 SDK 客户端连接数据库是很常见的。主要有以下三种场景：
-
-- 场景 1：Client1 和数据库位于同一个 Kubernetes 集群中。如果要连接 Client1 和数据库，请参考[使用 ClusterIP 方案](#场景-1-连接在同一个-kubernetes-集群中的客户端)。
-- 场景 2：Client2 在 Kubernetes 集群之外，但与数据库位于同一个 VPC 中。如果要连接 Client2 和数据库，请参考[暴露 VPC 内网地址方案](#场景-2-连接在-kubernetes-集群之外但与-kubernetes-集群位于同一-vpc-中的客户)。
-- 场景 3：Client3 和数据库位于不同的 VPC，例如其他 VPC 或公共网络。如果要连接 Client3 和数据库，请参考[暴露 VPC 公网地址方案](#场景-3-连接在其他-vpc-或公共网络中的客户端)。
-
-参考下面的网络位置关系图。
-
-![Example](../img/../../img/connect-to-database-in-production-env-network-locations.jpg)
-
-## 场景 1. 连接在同一个 Kubernetes 集群中的客户端
-
-客户端和数据库在同一个 Kubernetes 集群内运行，客户端可以通过数据库 Endpoint 获取域名进行访问。
-
-您可以使用数据库的 ClusterIP 或域名进行连接。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-使用 `kbcli cluster describe ${cluster-name}` 检查数据库的端口。
-
-```bash
-kbcli cluster describe x
->
-Name: x         Created Time: Mar 01,2023 11:45 UTC+0800
-NAMESPACE   CLUSTER-DEFINITION   VERSION           STATUS    TERMINATION-POLICY
-default     apecloud-mysql       ac-mysql-8.0.30   Running   Delete
-
-Endpoints:
-COMPONENT   MODE        INTERNAL                                 EXTERNAL
-x           ReadWrite   x-mysql.default.svc.cluster.local:3306   <none>
-
-Topology:
-COMPONENT   INSTANCE    ROLE     STATUS    AZ                NODE                                                       CREATED-TIME
-mysql       x-mysql-0   leader   Running   cn-northwest-1b   ip-10-0-2-184.cn-northwest-1.compute.internal/10.0.2.184   Mar 01,2023 11:45 UTC+0800
-
-Resources Allocation:
-COMPONENT   DEDICATED   CPU(REQUEST/LIMIT)   MEMORY(REQUEST/LIMIT)   STORAGE-SIZE   STORAGE-CLASS
-mysql       false       1 / 1                1Gi / 1Gi               data:10Gi      <none>
-
-Images:
-COMPONENT   TYPE    IMAGE
-mysql       mysql   registry.cn-hangzhou.aliyuncs.com/apecloud/apecloud-mysql-server:8.0.30-5.alpha2.20230105.gd6b8719.2
-
-Events(last 5 warnings, see more:kbcli cluster list-events -n default x):
-TIME   TYPE   REASON   OBJECT   MESSAGE
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubeclt">
-
-```bash
-kubectl get service mycluster-mysql
-```
-
-</TabItem>
-
-</Tabs>
-
-## 场景 2. 连接在 Kubernetes 集群之外但与 Kubernetes 集群位于同一 VPC 中的客户
-
-使用一个稳定的域名以实现长期连接。您可以使用云厂商提供的内部负载均衡器来实现这一目的。
-
-:::note
-
-以下命令能够为数据库创建一个负载均衡器实例，并可能会产生云厂商的费用。
-
-:::
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster expose ${cluster-name} --type vpc --enable=true
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubeclt">
-
-此处以 MySQL 集群为例，在阿里云上为集群暴露 VPC 访问地址的方式如下：
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-enable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: vpc
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Enable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-</Tabs>
-
-如需禁用负载均衡器实例，请执行以下命令。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster expose ${cluster-name} --type vpc --enable=false
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubeclt">
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-disable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: vpc
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Disable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-禁用负载均衡器实例后，实例将无法访问。
-
-:::
-
-## 场景 3. 连接在其他 VPC 或公共网络中的客户端
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-客户端和数据库在不同的 VPC 中，需要走公网访问，您可使用云厂商的外部负载均衡器，开启方法如下：
-
-:::note
-
-以下命令会为数据库实例创建一个负载均衡器实例，并可能会产生云厂商的费用。
-
-:::
-
-```bash
-kbcli cluster expose ${cluster-name} --type internet --enable=true
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubeclt">
-
-以 MySQL 集群为例，在阿里云上为集群暴露公网访问地址的方式如下：
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-enable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: internet
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Enable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-</Tabs>
-
-如需禁用负载均衡器实例，请执行以下命令。
-
-:::note
-
-一旦禁用，实例将无法访问。
-
-:::
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster expose ${cluster-name} --type internet --enable=false
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubeclt">
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: ops-expose-disable
-  namespace: demo
-spec:
-  clusterName: mycluster
-  expose:
-  - componentName: mysql
-    services:
-    - name: internet
-      roleSelector: leader
-      serviceType: LoadBalancer
-    switch: Disable
-  preConditionDeadlineSeconds: 0
-  type: Expose
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/connect-databases/connect-to-database-in-testing-environment.md b/i18n/zh-cn/user-docs/connect-databases/connect-to-database-in-testing-environment.md
deleted file mode 100644
index 455b7b46e..000000000
--- a/i18n/zh-cn/user-docs/connect-databases/connect-to-database-in-testing-environment.md
+++ /dev/null
@@ -1,152 +0,0 @@
----
-title: 在测试环境中连接数据库
-description: 如何在测试环境中连接数据库
-keywords: [连接数据库, 测试环境]
-sidebar_position: 2
-sidebar_label: 测试环境
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 在测试环境中连接数据库
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-## 方案 1. 使用 kbcli cluster connect 命令
-
-您可以使用 `kbcli cluster connect` 命令并指定要连接的集群名称。
-
-```bash
-kbcli cluster connect ${cluster-name}
-```
-
-它的底层命令是 `kubectl exec`。只要能够访问 K8s API 服务器，就可以使用该命令。
-
-## 方案 2. 使用 CLI 或者 SDK 客户端连接数据库
-
-执行以下命令以获取目标数据库的网络信息，并使用其打印输出的 IP 地址进行连接。
-
-```bash
-kbcli cluster connect --show-example --show-password ${cluster-name}
-```
-
-其打印输出的信息包括数据库地址、端口号、用户名和密码。下图以 MySQL 数据库为例。
-
-- 地址：-h 表示服务器地址。在下面的示例中为 127.0.0.1。
-- 端口：-P 表示端口号。在下面的示例中为 3306。
-- 用户名：-u 表示用户名。
-- 密码：-p 表示密码。在下面的示例中为 hQBCKZLI。
-
-:::note
-
-密码不包括 -p 本身。
-
-:::
-![testing env](../img/../../img/connect-to-database-in-testing-env.png)
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubeclt">
-
-## 步骤 1. 获取数据库凭证
-
-在连接运行在 Kubernetes 集群内的 MySQL 数据库之前，您需要从 Kubernetes Secret 中获取用户名和密码。Kubernetes 中的 Secret 通常是经过 base64 编码的，因此您需要将其解码以获得实际的凭据。以下是使用 kubectl 获取凭证的方法。
-
-1. 获取 `username`。
-
-   使用 `kubectl get secrets` 命令，从 demo 命名空间中名为 `mycluster-conn-credential` 的 secret 中提取用户名。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-   ```
-
-   - 您可使用实际的集群名称替换命令中的 "mycluster"。
-   - 您可使用实际的命名空间名称替换命令中的 "demo"。
-
-2. 获取 `password`。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   2gvztbvz
-   ```
-
-   - 您可使用实际的集群名称替换命令中的 "mycluster"。
-   - 您可使用实际的命名空间名称替换命令中的 "demo"。
-
-:::note
-
-大多数 KubeBlocks v0.9 Addon 中，包含连接凭据的 secret 命名格式为 `{cluster.name}-conn-credential`。但是在新版本中，部分 Addon secret 的命名可能已更改为 `{cluster.name}-{component.name}-account-{account.name}`。为确保使用正确的 secret 名称，可执行以下命令罗列命名空间中的所有 secret，并查找与数据库集群相关的项。
-
-```bash
-kubectl get secrets -n demo | grep mycluster
-```
-
-:::
-
-## 步骤 2. 连接集群
-
-获取凭证后，您可以通过以下两种方式连接至在 K8s 集群中运行的 MySQL 数据库。
-
-- 使用 `kubectl exec` 直连 Pod。
-- 使用 `kubectl port-forward` 从本地连接数据库。
-
-### 方式 1. 使用 kubectl exec 直连 Pod
-
-在某些情况下，您可能需要直接连接到 Kubernetes Pod 内运行的 MySQL 数据库，而无需依赖外部访问。这种情况下，您可以使用 `kubectl exec` 进入 Pod，直接在集群内与 MySQL 实例进行交互，避免使用外部数据库地址。
-
-1. 指定需要连接的 Pod，并执行以下命令。
-
-   `kubectl exec` 命令在 MySQL Pod 中创建了交互式 shell 对话，您可以直接在 Pod 环境中使用以下命令。
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-   ```
-
-   - `-ti`：打开交互式终端会话（`-t` 分配一个 TTY，`-i` 将伪 TTY 传输给容器）。
-   - `-n demo`：指定 Pod 所在的命名空间 demo。
-   - `mycluster-mysql-0`：MySQL Pod 的名称。如果名称与您的实际情况不同，请确保替换为实际的 Pod 名称。
-   - `-- bash`：在 Pod 内打开一个 Bash shell。如果容器中没有 Bash，也可以使用 sh。
-
-2. 连接集群。
-
-   进入 Pod 后，您可使用 MySQL 客户端连接到同一 Pod 或集群内运行的数据库服务。由于您已经在 Pod 内，因此无需指定外部主机或地址。
-
-   ```bash
-   mysql -u root -p2gvztbvz
-   ```
-
-### 方式 2. 使用 kubectl port-forward 连接
-
-在 Kubernetes 集群中管理已部署的数据库时，可使用 `kubectl port-forward` 从本地安全地连接到数据库。该命令将本地端口的流量转发到 Kubernetes 集群中的端口，您可以像在本地运行数据库服务一样访问数据库集群。
-
-以下为在本地使用 CLI 工具连接集群的示例。
-
-1. 使用 `kubectl port-forward` 转发端口。
-
-   首先，您需要从本地将端口转发至在 K8s 中运行的 MySQL 服务。如下命令将您本地的 3306 端口转发至集群中 MySQL 服务的同一端口。
-
-   ```bash
-   kubectl port-forward svc/mycluster-mysql 3306:3306 -n demo
-   ```
-
-   - `svc/mycluster-mysql`：代指您的 K8s 集群中的 MySQL 服务。
-   - `3306:3306`：将本地 3306 端口与服务的 3306 端口绑定。
-   - `-n demo`：指定 MySQL 服务所在的命名空间 demo。
-
-2. 从本地连接数据库。
-
-   端口转发完成后，您可以使用标准的 MySQL 客户端连接至 MySQL 数据库，这一操作与通过 127.0.0.1 连接客户端的体验一致。该连接将安全地通过这一通道转发到集群内部的服务。
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306 -u root -p2gvztbvz
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/connect-databases/overview-on-connect-databases.md b/i18n/zh-cn/user-docs/connect-databases/overview-on-connect-databases.md
deleted file mode 100644
index 5356196a6..000000000
--- a/i18n/zh-cn/user-docs/connect-databases/overview-on-connect-databases.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: 连接数据库
-description: 如何连接数据库
-keywords: [连接数据库]
-sidebar_position: 1
-sidebar_label: 简介
----
-
-# 简介
-
-部署 KubeBlocks 并创建集群后，对应的数据库会在 Kubernetes 上运行，每个副本都在 Pod 中运行，InstanceSet 将管理这些 Pod。您可以通过暴露的数据库服务地址（ClusterIP、LoadBalancer 或 NodePort），使用客户端工具或 SDK 连接到数据库。详见[在生产环境中连接数据库](./connect-to-database-in-production-environment.md)。
-
-如果您在 Playground 或测试环境中使用 KubeBlocks 创建数据库集群，也可以使用 `kubectl port-forward` 将数据库服务地址映射到本地机器的端口。然后，您可以使用客户端工具或集成在 `kbcli` 中的通用数据库客户端连接数据库。不过，请注意这种方法仅适用于测试和调试，不应在生产环境中使用。详见[在测试环境中连接数据库](./connect-to-database-in-testing-environment.md)。
diff --git a/i18n/zh-cn/user-docs/create_database/_category_.yml b/i18n/zh-cn/user-docs/create_database/_category_.yml
deleted file mode 100644
index 023b49820..000000000
--- a/i18n/zh-cn/user-docs/create_database/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: 创建数据库集群
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/create_database/overview-of-create-database.md b/i18n/zh-cn/user-docs/create_database/overview-of-create-database.md
deleted file mode 100644
index a8a0234d1..000000000
--- a/i18n/zh-cn/user-docs/create_database/overview-of-create-database.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: 如何创建数据库集群
-description: 如何创建数据库集群
-keywords: [创建数据库, KubeBlocks]
-sidebar_position: 1
-sidebar_label: 概览
----
-
-# 创建数据库集群
-
-KubeBlocks 通过插件（Addon）机制支持多种数据库引擎。部署 KubeBlocks 后，您可以使用 KubeBlocks 创建各种数据库集群，例如 MySQL、PostgreSQL、Redis、MongoDB、Kafka、Pulsar、RabbitMQ、Elasticsearch、Qdrant 等。具体创建步骤可参考相应的文档。
-
-- [ApeCloud MySQL](./../kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md)
-- [MySQL 社区版](./../kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md)
-- [PostgreSQL](./../kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md)
-- [Redis](./../kubeblocks-for-redis/cluster-management/create-and-connect-to-a-redis-cluster.md)
-- [MongoDB](./../kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md)
-- [Kafka](./../kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md)
-- [Pulsar](./../kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kb.md)
-- [RabbitMQ](./../kubeblocks-for-rabbitmq/manage-rabbitmq.md)
-- [Elasticsearch](./../kubeblocks-for-elasticsearch/manage-elasticsearch.md)
-- [StarRocks](./../kubeblocks-for-starrocks/manage-starrocks.md)
-- [Milvus](./../kubeblocks-for-milvus/manage-milvus.md)
-- [Qdrant](./../kubeblocks-for-qdrant/manage-qdrant.md)
diff --git a/i18n/zh-cn/user-docs/handle-an-exception/_category_.yml b/i18n/zh-cn/user-docs/handle-an-exception/_category_.yml
deleted file mode 100644
index 066d53f55..000000000
--- a/i18n/zh-cn/user-docs/handle-an-exception/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 10
-label: 故障处理
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/handle-an-exception/handle-a-cluster-exception.md b/i18n/zh-cn/user-docs/handle-an-exception/handle-a-cluster-exception.md
deleted file mode 100644
index 498e3b675..000000000
--- a/i18n/zh-cn/user-docs/handle-an-exception/handle-a-cluster-exception.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: 异常处理
-description: 如何进行异常处理
-keywords: [集群异常]
-sidebar_position: 1
-sidebar_label: 异常处理
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 异常处理
-
-发生异常时，你可以按照以下步骤解决问题。
-
-## 步骤
-
-1. 检查集群状态。
-
-    <Tabs>
-
-    <TabItem value="kbcli" label="kbcli" default>
-
-    ```bash
-    kbcli cluster list mycluster
-    ```
-
-    </TabItem>
-
-    <TabItem value="kubectl" label="kubeclt">
-
-    ```bash
-    kubectl describe cluster mycluster
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 根据状态信息进行处理。
-
-    | **状态**       | **信息** |
-    | :---             | :---            |
-    | Abnormal         | 可以访问集群，但某些 Pod 发生异常。这可能是操作过程中的中间状态，系统会自动恢复，无需执行其他额外操作。等待集群状态变为 `Running` 即可。 |
-    | ConditionsError  | 集群正常，但 Condition 发生异常。这可能是由于配置丢失或异常而导致的操作失败。需要手动恢复。 |
-    | Failed | 无法访问集群。检查 `status.message `字符串并获取异常原因，然后根据提示进行手动恢复。 |
-
-    你可以查看集群的状态以获取更多信息。
-
-## 兜底策略
-
-如果上述操作无法解决问题，请尝试：
-
-- 重新启动该集群。如果重新启动失败，可以手动删除 Pod。
-- 将集群状态回滚到更改前的状态。
diff --git a/i18n/zh-cn/user-docs/installation/_category_.yml b/i18n/zh-cn/user-docs/installation/_category_.yml
deleted file mode 100644
index 7333fb43d..000000000
--- a/i18n/zh-cn/user-docs/installation/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 安装
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/installation/install-addons.md b/i18n/zh-cn/user-docs/installation/install-addons.md
deleted file mode 100644
index 90d8d1651..000000000
--- a/i18n/zh-cn/user-docs/installation/install-addons.md
+++ /dev/null
@@ -1,185 +0,0 @@
----
-title: 安装引擎
-description: 使用 Helm 安装 KubeBlocks 支持的引擎
-keywords: [引擎, helm, KubeBlocks]
-sidebar_position: 4
-sidebar_label: 安装引擎
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 安装引擎
-
-KubeBlocks v0.8.0 发布后，数据库引擎插件（Addon）与 KubeBlocks 解耦，KubeBlocks 默认安装了部分引擎，如需体验其它引擎，需通过索引安装。如果您卸载了部分引擎，也可通过本文步骤，重新安装。
-
-本文以 elasticsearch 为例，可根据实际情况替换引擎名称。
-
-官网引擎索引仓库为 [KubeBlocks 索引](https://github.com/apecloud/block-index)。引擎代码维护在 [KubeBlocks 引擎插件仓库](https://github.com/apecloud/kubeblocks-addons)。
-
-:::note
-
-请确保 Addon 和 KubeBlocks 的大版本匹配。
-
-例如，如果您当前使用的 KubeBlocks 版本是 v0.9.2，Addon 应安装对应的 v0.9.0，而不是其他版本（如 v0.8.0），否则系统将因版本不匹配产生报错。
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. （可选）添加 KubeBlocks 仓库。如果您使用 Helm 安装了 KubeBlocks 或此前已添加过该仓库，只需执行 `helm repo update`。
-
-   ```bash
-   helm repo add kubeblocks https://apecloud.github.io/helm-charts
-   helm repo update
-   ```
-
-2. 查看引擎版本。
-
-   ```bash
-   helm search repo kubeblocks/elasticsearch --devel --versions
-   ```
-
-3. 以 elasticsearch 为例，安装引擎。使用 `--version` 指定版本。
-
-   ```bash
-   helm install kb-addon-es kubeblocks/elasticsearch --namespace kb-system --create-namespace --version x.y.z
-   ```
-
-4. 验证该引擎是否安装成功。
-
-   如果状态显示为 `deployed`，则表明该引擎已成功安装。
-
-   ```bash
-   helm list -A
-   >
-   NAME                 NAMESPACE	REVISION	UPDATED                                	STATUS  	 CHART                             APP VERSION
-   ...
-   kb-addon-es          kb-system	1       	2024-11-27 10:04:59.730127 +0800 CST   	deployed	 elasticsearch-0.9.0               	8.8.2   
-   ```
-
-5. （可选）您可以执行以下命令卸载引擎。如果您已使用该引擎创建集群，请先删除集群。
-
-   ```bash
-   helm uninstall kb-addon-es --namespace kb-system
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看引擎仓库索引。
-
-   kbcli 默认创建名为 `kubeblocks` 的索引，可使用 `kbcli addon index list` 查看该索引。
-
-   ```bash
-   kbcli addon index list
-   >
-   INDEX        URL
-   kubeblocks   https://github.com/apecloud/block-index.git 
-   ```
-
-   如果命令执行结果未显示或者你想要添加自定义索引仓库，则表明索引未建立，可使用 `kbcli addon index add <index-name> <source>` 命令手动添加索引。例如，
-
-   ```bash
-   kbcli addon index add kubeblocks https://github.com/apecloud/block-index.git
-   ```
-
-   如果不确定索引是否为最新版本，可使用如下命令更新索引。
-
-   ```bash
-   kbcli addon index update kubeblocks
-   ```
-
-2. （可选）索引建立后，可以通过 `addon search` 命令检查想要安装的引擎是否在索引信息中存在。
-
-   ```bash
-   kbcli addon search elasticsearch
-   >
-   ADDON           VERSION         INDEX
-   elasticsearch   0.7.0           kubeblocks
-   elasticsearch   0.7.1           kubeblocks
-   elasticsearch   0.7.2           kubeblocks
-   elasticsearch   0.8.0           kubeblocks
-   elasticsearch   0.9.0           kubeblocks
-   ```
-
-3. 安装引擎。
-
-   当引擎有多个版本和索引源时，可使用 `--index` 指定索引源，`--version` 指定安装版本。系统默认以 `kubeblocks` 索引仓库为索引源，安装最新版本。
-
-   ```bash
-   kbcli addon install elasticsearch --index kubeblocks --version x.y.z
-   ```
-
-4. 验证该引擎是否安装成功。
-
-   如果状态显示为 `Enabled`，则表明该引擎已成功安装。
-
-   ```bash
-   kbcli addon list
-   >
-   NAME                           VERSION        PROVIDER    STATUS     AUTO-INSTALL
-   elasticsearch                  0.9.0          apecloud    Enabled    true
-   ```
-
-5. （可选）您可以执行以下命令停用引擎。如果您已使用该引擎创建集群，请先删除集群。
-
-   ```bash
-   kbcli addon disable elasticsearch
-   ```
-
-   您也可以卸载该引擎。
-
-   ```bash
-   kbcli addon uninstall elasticsearch
-   ```
-
-:::note
-
-kbcli 支持启用/停用引擎。您可以按需调整引擎启用状态。此外，使用 kbcli 安装 KubeBlocks 时，系统默认安装但禁用了部分引擎，这类引擎的状态为 `Disabled`，您可以通过 kbcli 启用这类引擎。例如，
-
-```bash
-kbcli addon list
->
-NAME                           VERSION        PROVIDER    STATUS     AUTO-INSTALL
-alertmanager-webhook-adaptor   0.1.4          apecloud    Disabled   false
-apecloud-otel-collector        0.1.2-beta.3   apecloud    Disabled   false
-aws-load-balancer-controller   1.4.8          community   Disabled   false
-csi-driver-nfs                 4.5.0          community   Disabled   false
-csi-hostpath-driver            0.7.0          community   Disabled   false
-grafana                        6.43.5         community   Disabled   false
-llm                            0.9.0          community   Disabled   false
-prometheus                     15.16.1        community   Disabled   false
-qdrant                         0.9.1          community   Disabled   false
-victoria-metrics-agent         0.8.41         community   Disabled   false
-```
-
-* 启用引擎。
-
-   ```bash
-   kbcli addon enable qdrant
-   ```
-
-* 禁用引擎。
-
-   ```bash
-   kbcli addon disable qdrant
-   ```
-
-启用/禁用引擎后，查看引擎列表，检查引擎状态是否按需变更。
-
-```bash
-kbcli addon list
->
-NAME                           VERSION        PROVIDER    STATUS     AUTO-INSTALL
-qdrant                         0.9.1          community   Enabled    false
-```
-
-:::
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/installation/install-kbcli.md b/i18n/zh-cn/user-docs/installation/install-kbcli.md
deleted file mode 100644
index 43e19305a..000000000
--- a/i18n/zh-cn/user-docs/installation/install-kbcli.md
+++ /dev/null
@@ -1,203 +0,0 @@
----
-title: 安装 kbcli 
-description: 安装 kbcli 
-keywords: [安装, kbcli,]
-sidebar_position: 2
-sidebar_label: 安装 kbcli
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 安装 kbcli
-
-你可以将 `kbcli` 安装在笔记本电脑或者云上的虚拟机上。
-
-## 环境准备
-
-Windows 用户需配置 PowerShell 5.0 及以上的版本。
-
-## 安装 kbcli
-
-kbcli 目前支持 macOS、Windows 和 Linux 系统。
-
-<Tabs>
-<TabItem value="macOS" label="macOS" default>
-
-使用 `curl` 或 `brew` 安装 kbcli。
-
-- 选项 1：执行 `curl` 命令安装 kbcli
-
-  1. 安装 kbcli。
-
-      ```bash
-      curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
-      ```
-
-      如果想安装 kbcli 的指定版本，请按照以下步骤进行操作：
-      
-      1. 在 [kbcli 发布页面](https://github.com/apecloud/kbcli/releases/)中查看可用版本。
-      2. 使用 `-s` 指定版本，并执行以下命令。
-        
-          ```bash
-          curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s x.y.z
-          ```
-
-         您可以通过 [kbcli 发布列表](https://github.com/apecloud/kbcli/releases) 查看 kbcli 的所有版本，包括 alpha 及 beta 版本。
-
-         也可通过执行以下命令，获取稳定版本：
-
-         ```bash
-         curl -s "https://api.github.com/repos/apecloud/kbcli/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r
-         ```
-
-      :::note
-
-      kbcli 默认安装最新版本。如果您的环境中已有正在运行的 KubeBlocks 实例，则需要安装与之匹配的 kbcli 版本。
-
-      例如，如果您当前使用的 KubeBlocks 版本是 v0.8.3，kbcli 应安装对应的 v0.8.3，而不是更高版本（如 v0.9.0），否则系统将因版本不匹配产生报错。
-
-      :::
-
-  2. 执行 `kbcli version` 命令，检查 kbcli 版本并确保已成功安装。
-
-      :::note
-
-      如果安装超时，请检查你的网络设置并重试。
-
-      :::
-
-- 选项 2：用 Homebrew 安装 kbcli
-
-  1. 安装 ApeCloud 的 Homebrew 包（ApeCloud tap）。
-     
-      ```bash
-      brew tap apecloud/tap
-      ```
-
-  2. 安装 kbcli。
-     
-      ```bash
-      brew install kbcli
-      ```
-      
-      如果想安装 kbcli 的指定版本，执行：
-
-      ```bash
-      # 查看可用版本 
-      brew search kbcli
-
-      # 安装指定版本
-      brew install kbcli@x.y.z
-      ```
-     
-  3. 确认 kbcli 是否已成功安装。
-
-      ```bash
-      kbcli -h
-      ```
-
-</TabItem>
-
-<TabItem value="Windows" label="Windows">
-
-有两种方法可以在 Windows 上安装 kbcli。
-
-- 选项 1：使用脚本安装
-
-:::note
-
-默认情况下，脚本将安装在 C:\Program Files\kbcli-windows-amd64，且无法修改。
-
-如果需要自定义安装路径，请使用压缩文件。
-
-:::
-
-1. 以**管理员**身份执行 PowerShell，并执行 `Set-ExecutionPolicy Unrestricted`。
-2. 安装 `kbcli`。
-
-   以下脚本将自动在 C:\Program Files\kbcli-windows-amd64 安装环境变量。
-
-    ```bash
-    powershell -Command " & ([scriptblock]::Create((iwr https://www.kubeblocks.io/installer/install_cli.ps1)))"
-    ```
-
-    如果想安装 kbcli 的指定版本，在上述命令后面加上 `-v` 和你想安装的版本号。
-
-    ```bash
-    powershell -Command " & ([scriptblock]::Create((iwr https://www.kubeblocks.io/installer/install_cli.ps1))) -v 0.5.2"
-    ```
-  
-- 选项 2：使用安装包安装
-
-1. 在 [kbcli Release 页面](https://github.com/apecloud/kbcli/releases/)下载 kbcli 安装包。
-2. 解压文件并将其添加到环境变量中。
-   1. 单击 Windows 图标，选择**系统设置**。
-   2. 点击**设置** -> **相关设置** -> **高级系统设置**。
-   3. 在**高级**选项卡上，点击**环境变量**。
-   4. 点击**新建**，将 kbcli 安装包的路径添加到用户和系统变量中。
-   5. 点击**应用**和**确定**。
-
-</TabItem>
-
-<TabItem value="Linux" label="Linux">
-
-使用 `curl` 命令安装 kbcli。
-
-1. 安装 kbcli。
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
-    ```
-
-    如果想安装 kbcli 的指定版本，在上述命令后面加上 `-s` 和你想安装的版本号。
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s x.y.z
-    ```
-
-2. 执行 `kbcli version` 命令，检查 `kbcli` 版本并确保已成功安装。
-
-:::note
-
-如果安装超时，请检查你的网络设置并重试。
-
-:::
-
-</TabItem>
-</Tabs>
-
-## 升级 kbcli
-
-升级 kbcli 仅需[卸载当前版本](./uninstall-kubeblocks-and-kbcli.md#卸载-kbcli)，并安装新版本。
-
-## (可选) 启用 kbcli 的自动补全功能
-
-`kbcli` 支持命令行自动补全。 
-
-```bash
-# 配置 SHELL-TYPE 为 bash、fish、PowerShell、zsh 中的一种
-kbcli completion SHELL-TYPE -h
-```
-
-举个例子，如果想要启用 zsh 的 kbcli 自动补全功能：
-
-***步骤：***
-
-1. 查阅用户指南。
-
-   ```bash
-   kbcli completion zsh -h
-   ```
-
-2. 启用终端的补全功能。
-
-   ```bash
-   echo "autoload -U compinit; compinit" >> ~/.zshrc
-   ```
-
-3. 启用 `kbcli` 的自动补全功能。
-
-   ```bash
-   echo "source <(kbcli completion zsh); compdef _kbcli kbcli" >> ~/.zshrc
-   ```
diff --git a/i18n/zh-cn/user-docs/installation/install-kubeblocks.md b/i18n/zh-cn/user-docs/installation/install-kubeblocks.md
deleted file mode 100644
index 10ae1320a..000000000
--- a/i18n/zh-cn/user-docs/installation/install-kubeblocks.md
+++ /dev/null
@@ -1,331 +0,0 @@
----
-title: 安装 KubeBlocks
-description: 在现有的 Kubernetes 集群上使用 Helm 安装 KubeBlocks
-keywords: [污点, 亲和性, 容忍, 安装, kbcli, KubeBlocks]
-sidebar_position: 3
-sidebar_label: 安装 KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 安装 KubeBlocks
-
-使用 Playground 创建一个新的 Kubernetes 集群并安装 KubeBlocks，是快速上手的一种方法。然而，在实际生产环境中，情况会复杂得多，应用程序在不同的命名空间中运行，还存在资源或权限限制。本文档将介绍如何在现有的 Kubernetes 集群上部署 KubeBlocks。
-
-KubeBlocks 是 Kubernetes 原生 operator，可通过 Helm、 kubectl 应用 YAML 文件或者 kbcli 安装 KubeBlocks。
-
-如果您想要在本地环境试用 KubeBlocks，可通过 [Playground](./../try-out-on-playground/try-kubeblocks-on-local-host.md) 试用，或者[先在本地创建 Kubernetes 测试集群](./prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md)，然后按照本文操作步骤安装 KubeBlocks。
-
-:::note
-
-- 请确保您安装和卸载 KubeBlocks 使用的方式保持一致，例如，如果您使用 Helm 安装 KubeBlocks，卸载时也需使用 Helm。
-- 请确保您已安装 [kubectl](https://kubernetes.io/docs/tasks/tools/)，[Helm](https://helm.sh/docs/intro/install/) 或 [kbcli](./install-kbcli.md)。
-- 请确保您已安装 Snapshot Controller。如果尚未安装，请按照 [安装 Snapshot Controller](#安装-kubeblocks) 部分中的步骤安装。
-
-:::
-
-## 环境准备
-
-准备一个可访问的 Kubernetes 集群，版本要求 1.22 及以上。该集群应满足如下要求。
-
-<table>
-	<tr>
-	    <th colspan="3">资源要求</th>
-	</tr >
-	<tr>
-	    <td >控制面</td>
-	    <td colspan="2">建议创建 1 个具有 4 核 CPU、4 GB 内存和 50 GB 存储空间的节点。</td>
-	</tr >
-	<tr >
-	    <td rowspan="4">数据面</td>
-	    <td> MySQL </td>
-	    <td>建议至少创建 3 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。</td>
-	</tr>
-	<tr>
-	    <td> PostgreSQL </td>
-        <td>建议至少创建 2 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。</td>
-	</tr>
-	<tr>
-	    <td> Redis </td>
-        <td>建议至少创建 2 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。</td>
-	</tr>
-	<tr>
-	    <td> MongoDB </td>
-	    <td>建议至少创建 3 个具有 2 核 CPU、4 GB 内存和 50 GB 存储空间的节点。</td>
-	</tr>
-</table>
-
-## 安装 Snapshot Controller
-
-SnapshotController 是一个 Kubernetes 组件，用于管理 CSI 卷快照，可让用户创建、恢复和删除持久卷 (PV) 的快照。KubeBlocks DataProtection 控制器会使用 Snapshot Controller 来为数据库创建快照备份。
-
-如果您的 Kubernetes 集群没有以下 CRD，说明您可能没有部署 Snapshot Controller。
-
-```bash
-kubectl get crd volumesnapshotclasses.snapshot.storage.k8s.io
-kubectl get crd volumesnapshots.snapshot.storage.k8s.io
-kubectl get crd volumesnapshotcontents.snapshot.storage.k8s.io
-```
-
-:::note
-
-如果您确定不需要使用快照备份功能, 可以只安装SnapshotController CRD, 跳过后续步骤。
-
-```bash
-# v8.2.0 is the latest version of the external-snapshotter, you can replace it with the version you need.
-kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
-kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
-kubectl create -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/v8.2.0/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
-```
-
-:::
-
-### 第 1 步：部署 Snapshot Controller
-
-可以通过 Helm 或者 kubectl 安装 Snapshot Controller。以下演示如何使用 Helm 安装：
-
-```bash
-helm repo add piraeus-charts https://piraeus.io/helm-charts/
-helm repo update
-# Update the namespace to an appropriate value for your environment (e.g. kb-system)
-helm install snapshot-controller piraeus-charts/snapshot-controller -n kb-system --create-namespace
-```
-
-如需更多信息，请参阅 [Snapshot Controller Configuration](https://artifacthub.io/packages/helm/piraeus-charts/snapshot-controller#configuration)。
-
-### 第 2 步：验证 Snapshot Controller 是否安装成功
-
-检查 snapshot-controller Pod 是否正在运行：
-
-```bash
-kubectl get pods -n kb-system | grep snapshot-controller
-```
-
-<details>
-
-<summary>Output</summary>
-
-```bash
-snapshot-controller-xxxx-yyyy   1/1   Running   0   30s
-```
-
-</details>
-
-如果该 Pod 处于 CrashLoopBackOff 状态，请查看日志：
-
-```bash
-kubectl logs -n kb-system deployment/snapshot-controller
-```
-
-## 安装KubeBlocks
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-按照以下步骤使用 Helm 安装 KubeBlocks：
-
-1. 获取 KubeBlocks 版本:
-
-   * 选项 A - 获取最新稳定版本(例如 v0.9.2):
-   ```bash
-   curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r | head -n 1
-   ```
-
-   * 选项 B - 查看所有可用版本(包括 alpha 和 beta 版本):
-     * 访问 [KubeBlocks 发布列表](https://github.com/apecloud/kubeblocks/releases)。
-     * 或使用命令:
-     ```bash
-     curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[].tag_name' | sort -V -r
-     ```
-
-2. 使用选择的版本创建所需的 CRDs:
-   ```bash
-   # 将 <VERSION> 替换为您选择的版本
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks_crds.yaml
-
-   # 示例:如果版本是 v0.9.2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks_crds.yaml
-   ```
-
-3. 添加 KubeBlocks 的 Helm 仓库：
-
-   ```bash
-   helm repo add kubeblocks https://apecloud.github.io/helm-charts
-   helm repo update
-   ```
-
-4. 安装 KubeBlocks：
-
-   ```bash
-   helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace
-   ```
-
-   如果您想要在安装 KubeBlocks 添加自定义容忍度，可使用以下命令：
-
-   ```bash
-   helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace \
-     --set-json 'tolerations=[ { "key": "control-plane-taint", "operator": "Equal", "effect": "NoSchedule", "value": "true" } ]' \
-     --set-json 'dataPlane.tolerations=[{ "key": "data-plane-taint", "operator": "Equal", "effect": "NoSchedule", "value": "true"    }]'
-   ```
-
-   如果您想要安装指定版本的 KubeBlocks，可执行如下步骤：
-
-   1. 在 [KubeBlocks 发布列表](https://github.com/apecloud/kubeblocks/releases/) 中查看可用版本。
-   2. 使用 `--version` 指定版本，并执行以下命令：
-
-      ```bash
-      helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --version=<VERSION>
-      ```
-
-     :::note
-
-     如果不指定版本，默认安装最新版本。
-
-     :::
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-与 Kubernetes 中的其他资源相同，KubeBlocks 也可以通过 YAML 文件和 kubectl 命令进行安装。
-
-1. 获取 KubeBlocks 版本:
-
-   * 选项 A - 获取最新稳定版本(例如 v0.9.2):
-   ```bash
-   curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[] | select(.prerelease == false) | .tag_name' | sort -V -r | head -n 1
-   ```
-
-   * 选项 B - 查看所有可用版本(包括 alpha 和 beta 版本):
-      * 访问 [KubeBlocks 发布列表](https://github.com/apecloud/kubeblocks/releases)。
-      * 或使用命令:
-     ```bash
-     curl -s "https://api.github.com/repos/apecloud/kubeblocks/releases?per_page=100&page=1" | jq -r '.[].tag_name' | sort -V -r
-     ```
-
-2. 使用选择的版本创建所需的 CRDs:
-   ```bash
-   # 将 <VERSION> 替换为您选择的版本
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks_crds.yaml
-
-   # 示例:如果版本是 v0.9.2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks_crds.yaml
-   ```
-
-3. 安装 KubeBlocks:
-
-   ```bash
-   # 将 <VERSION> 替换为在步骤 2 中使用的相同版本
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/<VERSION>/kubeblocks.yaml
-
-   # 示例:如果版本是 v0.9.2
-   kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.2/kubeblocks.yaml
-   ```
-
-   :::note
-
-   请确保创建 CRDs 和安装 KubeBlocks 时使用相同版本以避免兼容性问题。
-
-   :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-执行 `kbcli kubeblocks install` 将 KubeBlocks 安装在 `kb-system` 命名空间中，或者使用 `--namespace` 指定一个命名空间。
-
-```bash
-kbcli kubeblocks install
-```
-
-如果想安装 KubeBlocks 的指定版本，请按照以下步骤操作：
-
-1. 查看可用的版本：
-
-    ```bash
-    kbcli kubeblocks list-versions
-    ```
-
-    如需查看包含 alpha 和 beta 在内的版本，可执行以下命令：
-
-    ```bash
-    kbcli kb list-versions --devel --limit=100
-    ```
-
-    或者，你可以在 [KubeBlocks 发布列表](https://github.com/apecloud/kubeblocks/releases/)中查看可用的版本。
-
-2. 使用 `--version` 指定版本：
-
-    ```bash
-    kbcli kubeblocks install --version=<VERSION>
-    ```
-
-    :::note
-
-    kbcli 默认安装最新版本。如果您的环境中已有正在运行的 KubeBlocks 实例，则需要安装与之匹配的 kbcli 版本。
-
-    例如，如果您当前使用的 KubeBlocks 版本是 v0.9.2，kbcli 应安装对应的 v0.9.2，而不是更高版本（如 v1.0.0），否则系统将因版本不匹配产生报错。
-
-    :::
-
-</TabItem>
-
-</Tabs>
-
-## 验证 KubeBlocks 安装
-
-执行以下命令，检查 KubeBlocks 是否已成功安装：
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n kb-system get pods
-```
-
-***结果***
-
-如果工作负载都显示已处于 Running 状态，则表明已成功安装 KubeBlocks。
-
-```bash
-NAME                                             READY   STATUS    RESTARTS       AGE
-alertmanager-webhook-adaptor-8dfc4878d-svzrc     2/2     Running   0              3m56s
-grafana-77dfd6959-4gnhp                          1/1     Running   0              3m56s
-kb-addon-snapshot-controller-546f84b78d-8rjs4    1/1     Running   0              3m56s
-kubeblocks-7cf7745685-ddlwk                      1/1     Running   0              4m39s
-kubeblocks-dataprotection-95fbc79cc-b544l        1/1     Running   0              4m39s
-prometheus-alertmanager-5c9fc88996-qltrk         2/2     Running   0              3m56s
-prometheus-kube-state-metrics-5dbbf757f5-db9v6   1/1     Running   0              3m56s
-prometheus-node-exporter-r6kvl                   1/1     Running   0              3m56s
-prometheus-pushgateway-8555888c7d-xkgfc          1/1     Running   0              3m56s
-prometheus-server-5759b94fc8-686xp               2/2     Running   0              3m56s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli kubeblocks status
-```
-
-***结果***
-
-如果工作负载都显示已准备就绪，则表明已成功安装 KubeBlocks。
-
-```bash
-KubeBlocks is deployed in namespace: kb-system, version: <VERSION>
->
-KubeBlocks Workloads:
-NAMESPACE   KIND         NAME                           READY PODS   CPU(CORES)   MEMORY(BYTES)   CREATED-AT
-kb-system   Deployment   kb-addon-snapshot-controller   1/1          N/A          N/A             Oct 13,2023 14:27 UTC+0800
-kb-system   Deployment   kubeblocks                     1/1          N/A          N/A             Oct 13,2023 14:26 UTC+0800
-kb-system   Deployment   kubeblocks-dataprotection      1/1          N/A          N/A             Oct 13,2023 14:26 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/installation/prepare-a-local-k8s-cluster/_category_.yml b/i18n/zh-cn/user-docs/installation/prepare-a-local-k8s-cluster/_category_.yml
deleted file mode 100644
index 91327bbc9..000000000
--- a/i18n/zh-cn/user-docs/installation/prepare-a-local-k8s-cluster/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 本地测试环境准备
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/installation/prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md b/i18n/zh-cn/user-docs/installation/prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md
deleted file mode 100644
index dd8ce907b..000000000
--- a/i18n/zh-cn/user-docs/installation/prepare-a-local-k8s-cluster/prepare-a-local-k8s-cluster.md
+++ /dev/null
@@ -1,228 +0,0 @@
----
-title: 创建本地 Kubernetes 测试集群
-description: 创建本地 Kubernetes 测试集群
-keywords: [kbcli, kubeblocks, addons, 安装，引擎]
-sidebar_position: 3
-sidebar_label: 本地测试环境准备
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建本地 Kubernetes 测试集群
-
-本文将说明如何使用三种流行的轻量级工具：Minikube、K3d 和 Kind，在本地创建 Kubernetes 测试集群，可用于在本地环境试用 KubeBlocks。这些工具非常适合开发、测试和实验，而无需搭建完整的生产级 Kubernetes 集群。
-
-## 前置条件
-
-在开始之前，请确保您已经在本地安装了以下工具：
-
-- Docker：所有三个工具都使用 Docker 来创建容器化的 Kubernetes 集群。
-- kubectl：Kubernetes 的命令行工具，用于与集群交互。参考 [kubectl 安装文档](https://kubernetes.io/docs/tasks/tools/)。
-
-## 使用 Kind 创建 Kubernetes 集群
-
-Kind 是 Kubernetes IN Docker 的缩写。它在 Docker 容器中运行 Kubernetes 集群，非常适合在本地进行 Kubernetes 测试。
-
-1. 安装 Kind。详情可参考 [Kind Quick Start](https://kind.sigs.k8s.io/docs/user/quick-start/)。
-
-   <Tabs>
-
-   <TabItem value="macOS" label="macOS" default>
-
-   ```bash
-   brew install kind
-   ```
-
-   </TabItem>
-
-   <TabItem value="Linux" label="Linux">
-
-   ```bash
-   # For AMD64 / x86_64
-   [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64
-   # For ARM64
-   [ $(uname -m) = aarch64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-arm64
-   chmod +x ./kind
-   sudo cp ./kind /usr/local/bin/kind
-   rm -rf kind
-   ```
-
-   </TabItem>
-
-   <TabItem value="Windows" label="Windows">
-
-   可使用 chocolatey 安装 Kind。
-
-   ```bash
-   choco install kind
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 通过 Kind 创建 Kubernetes 集群：
-
-   ```bash
-   kind create cluster --name mykindcluster
-   ```
-
-   该命令将创建一个单节点的 Kubernetes 集群，运行在 Docker 容器中。
-
-3. 检查集群是否已启动并运行。
-
-   ```bash
-   kubectl get nodes
-   ```
-
-   从输出结果中可以看到一个名为 `mykindcluster-control-plane` 的节点。
-
-4. （可选）配置多节点集群。
-
-   Kind 也支持创建多节点的集群。可通过配置文件来创建多节点集群：
-
-   ```yaml
-   kind: Cluster
-   apiVersion: kind.x-k8s.io/v1alpha4
-   nodes:
-     role: control-plane
-     role: worker
-     role: worker
-   ```
-
-   使用该配置文件创建集群：
-
-   ```bash
-   kind create cluster --name multinode-cluster --config kind-config.yaml
-   ```
-
-5. 如需删除 Kind 集群，可以使用以下命令。
-
-   ```bash
-   kind delete cluster --name mykindcluster
-   ```
-
-## 使用 Minikube 创建 Kubernetes 集群
-
-Minikube 支持在本地机器的虚拟机或容器中运行单节点的 Kubernetes 集群。
-
-1. 安装 Minikube。详情可参考 [Minikube Quck Start](https://minikube.sigs.k8s.io/docs/start/)。
-
-   <Tabs>
-
-   <TabItem value="macOS" label="macOS" default>
-
-   ```bash
-   brew install minikube
-   ```
-
-   </TabItem>
-
-   <TabItem value="Linux" label="Linux">
-
-   ```bash
-   curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
-   sudo rpm -Uvh minikube-latest.x86_64.rpm
-   ```
-
-   </TabItem>
-
-   <TabItem value="Windows" label="Windows">
-
-   可使用 chocolatey 安装 Minikube。
-
-   ```bash
-   choco install minikube
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 启动 Minikube。该命令将创建一个本地的 Kubernetes 集群：
-
-   ```bash
-   minikube start
-   ```
-
-   您也可以指定其他驱动（例如 Docker、Hyperkit、KVM 等）启动。
-
-   ```bash
-   minikube start --driver=docker
-   ```
-
-3. 验证安装。
-
-   检查 Minikube 是否正在运行：
-
-   ```bash
-   minikube status
-   ```
-
-   检查 Kubernetes 集群是否已启动：
-
-   ```bash
-   kubectl get nodes
-   >
-   NAME       STATUS   ROLES           AGE    VERSION
-   minikube   Ready    control-plane   197d   v1.26.3
-   ```
-
-   从输出结果中可以看到 Minikube 节点处于 Ready 状态。
-
-## 使用 k3d 创建 Kubernetes 集群
-
-k3d 是一个轻量级工具，它在 Docker 容器中运行 k3s（一个轻量的 Kubernetes 发行版）。
-
-1. 安装 k3d。详情可参考 [k3d Quick Start](https://k3d.io/v5.7.4/#releases)。
-
-   <Tabs>
-
-   <TabItem value="macOS" label="macOS" default>
-
-   ```bash
-   brew install k3d
-   ```
-
-   </TabItem>
-
-   <TabItem value="Linux" label="Linux">
-
-   ```bash
-   curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
-   ```
-
-   </TabItem>
-
-   <TabItem value="Windows" label="Windows">
-
-   可使用 chocolatey 安装 k3d。
-
-   ```bash
-   choco install k3d
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 创建 k3s 集群。
-
-   ```bash
-   k3d cluster create myk3s
-   ```
-
-   执行该命令后，将创建一个名为 `myk3s` 的 Kubernetes 集群，包含一个服务器节点。
-
-3. 验证集群是否运行。
-
-   ```bash
-   kubectl get nodes
-   ```
-
-4. 如需删除 k3s 集群，可使用以下命令。
-
-   ```bash
-   k3d cluster delete mycluster
-   ```
diff --git a/i18n/zh-cn/user-docs/installation/uninstall-kubeblocks-and-kbcli.md b/i18n/zh-cn/user-docs/installation/uninstall-kubeblocks-and-kbcli.md
deleted file mode 100644
index 09320cf0e..000000000
--- a/i18n/zh-cn/user-docs/installation/uninstall-kubeblocks-and-kbcli.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-title: 卸载 KubeBlocks
-description: 卸载 KubeBlocks
-keywords: [kubeblocks, 卸载]
-sidebar_position: 5
-sidebar_label: 卸载 KubeBlocks 及 kbcli
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 卸载 KubeBlocks 及 kbcli
-
-卸载顺序：
-
-1. 卸载前，请确保所有集群和备份已删除
-
-   ```bash
-   kubectl delete cluster <clustername> -n namespace
-   ```
-
-   ```bash
-   kubectl delete backup <backname> -n namespace
-   ```
-
-2. 卸载 KubeBlocks。
-
-## 卸载 KubeBlocks
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-在执行以下命令前，请删除之前创建的所有集群和资源，否则卸载可能无法成功。
-
-```bash
-helm uninstall kubeblocks --namespace kb-system
-```
-
-Helm 不会删除 CRD 对象。请使用以下命令删除 KubeBlocks 创建的对象。
-
-```bash
-kubectl get crd -o name | grep kubeblocks.io | xargs kubectl delete
-```
-
-</TabItem>
-
-<TabItem value="YAML" label="YAML">
-
-从 KubeBlocks chart 生成 YAML 文件，并使用 `kubectl` 进行卸载。使用 `--version x.y.z` 指定版本，确保卸载的版本与安装的版本相同。
-
-```bash
-helm template kubeblocks kubeblocks/kubeblocks --version x.y.z --namespace kb-system | kubectl delete -f -
-```
-
-</TabItem>
-
-</Tabs>
-
-## 卸载 kbcli
-
-如果想在试用结束后删除 kbcli，请选择与安装 kbcli 时所使用的相同选项。
-
-<Tabs>
-
-<TabItem value="macOS" label="macOS" default>
-
-如果你使用的是 `curl`，执行以下命令：
-
-```bash
-sudo rm /usr/local/bin/kbcli
-```
-
-如果你使用的是 `brew`，执行以下命令：
-
-```bash
-brew uninstall kbcli
-```
-
-kbcli 会在 HOME 目录下创建一个名为 `~/.kbcli` 的隐藏文件夹，用于存储配置信息和临时文件。你可以在卸载 kbcli 后删除此文件夹。
-
-</TabItem>
-
-<TabItem value="Windows" label="Windows">
-
-1. 进入 `kbcli` 的安装路径，并删除安装文件夹。
-  
-    - 如果你通过脚本安装了 `kbcli`，请前往 `C:\Program Files` 并删除 `kbcli-windows-amd64` 文件夹。
-    - 如果你自定义了安装路径，请前往指定路径，并删除安装文件夹。
-  
-2. 删除环境变量。
-   1. 点击 Windows 图标，然后点击 **系统**。
-   2. 进入 **设置** -> **相关设置** -> **高级系统设置**。
-   3. 在 **高级** 标签页，点击 **环境变量**。
-   4. 在 **用户变量** 或 **系统变量** 列表中，双击 **Path**。
-       - 如果你通过脚本安装了 `kbcli`，双击 **用户变量** 中的 Path。
-       - 如果你自定义了安装路径，请根据之前创建变量的位置，双击相应的 **Path**。
-   5. 选择 `C:\Program Files\kbcli-windows-amd64` 或自定义的路径，并删除它。此操作需要二次确认。
-
-3. 删除名为 `.kbcli` 的文件夹。
-
-    kbcli 会在 C:\Users\username 目录下创建一个名为 `.kbcli` 的文件夹，用于存储配置信息和临时文件。你可以在卸载 kbcli 后删除此文件夹。
-
-</TabItem>
-
-<TabItem value="Linux" label="Linux">
-
-使用 `curl` 命令卸载 kbcli。
-
-```bash
-sudo rm /usr/local/bin/kbcli
-```
-
-kbcli 会在 HOME 目录下创建一个名为 `~/.kbcli` 的隐藏文件夹，用于存储配置信息和临时文件。你可以在卸载 kbcli 后删除此文件夹。
-
-</TabItem>
-
-</Tabs>
-
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/_category_.yml
deleted file mode 100644
index 578f44d50..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 11
-label: 用 KubeBlocks 管理 ApeCloud MySQL
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/_category_.yml
deleted file mode 100644
index acd750f5f..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 简介
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/apecloud-mysql-intro.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/apecloud-mysql-intro.md
deleted file mode 100644
index 30d686599..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/apecloud-mysql-intro/apecloud-mysql-intro.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: ApeCloud MySQL 简介
-description: ApeCloud MySQL 简介
-keywords: [apecloud mysql, mysql, 简介]
-sidebar_position: 1
----
-
-# ApeCloud MySQL 简介
-
-MySQL 是全球最流行的开源数据库，受到许多公司的欢迎，例如 Facebook、Twitter、Netflix、Uber、Airbnb、Shopify 和 Booking 等。
-
-KubeBlocks 采用了 ApeCloud 公司提供的 MySQL 高可用版本，做了数据压缩和高可用性方面的改进。
-
-- 当节点数大于等于 3 个时，通过一致性算法协议构成强一致高可用性集群，确保在单可用区故障的情况下 RPO=0。其中，主节点提供读写能力，其余节点提供只读服务。
-- 当节点数等于 2 时，构成主备复制集群，其中主节点提供读写能力，备节点通过异步复制与主节点保持同步，提供只读服务和故障容灾能力。
-- 当节点数等于 1 时，构成单节点集群，提供读写服务。KubeBlocks 仍然提供自动恢复能力，在云盘不损坏的情况下保证 RPO=0。
-
-## 实例角色
-
-ApeCloud MySQL 支持四种角色类型，即 **Leader**（领导者）、**Follower**（跟随者）、**Candidate**（候选者）和 **Learner**（学习者）。Leader 和 Follower 组成高可用性集群，提供 RPO=0 能力。
-
-- Leader：Leader 是集群的主实例，支持读写操作，是集群强一致节点。由所有参与选举的 Candidate 投票产生。得票数最多的 Candidate 成为 Leader，其他的成为 Follower。
-- Follower：Follower 支持数据一致性只读服务，并与 Leader 和其他 Follower 组成高可用性集群。
-- Learner：Learner 通常用于跨地域的一致性只读数据节点实例，通过 Paxos 协议实现数据同步，数据同步源可以是 Leader 或 Follower。Learner 是一致性算法协议中的特殊角色，不参与投票，也不成为 Candidate，类似旁听角色。
-- Candidate：Candidate 是一个中间角色，只在选举过程或无法形成多数派选出 Leader 时存在。一般来说，高可用集群中的所有 Candidate 在选举完成后，最终都会成为 Leader 或 Follower 角色。
-
-| 角色类型 | Leader | Follower | Learner | Candidate |
-| --- | --- | --- | --- | --- |
-| 功能能力 | RW/HA | RO/HA | RO | - |
-
-![ApeCloud MySQL 角色切换](./../../../img/apecloud-mysql-intro-role-changing.jpg)
-
-### 故障切换
-
-故障切换将重定向流量，把正在执行的任务从主节点切换到从节点。
-
-### 只读功能
-
-节点提供只读能力。除了 Follower 角色之外，还可以通过添加 Learner 角色来扩展集群的只读能力。需要注意的是，通过 Follower 或 Learner 执行只读操作时，可能会与 Leader 存在数据延迟。这种延迟可能是由于日志同步延迟或日志回放延迟导致的。
-
-### 容错性
-
-集群具备节点故障容错能力。在 n 个节点集群下，可以容忍的故障节点数为 `floor(n/2) + 1，其中 n=[1,99]`，满足 Paxos 算法协议的要求。基于此，可以得出在指定可容忍节点故障数为 f 的情况下，需要创建的节点数为 n=2*f+1，其中 f>=0。例如，如果可容忍的故障节点数为 1，则根据公式可知，集群中的最小节点数为 3。即，在一个 Paxos 组中，能够保证具有 1 个故障节点下集群的持续服务能力。根据下表可以看出，创建奇数个节点集群更具性价比。
-
-| 集群节点数 | 节点大多数 | 可容忍故障节点数 |
-| --- | --- | --- |
-| 3 | 2 | 1 |
-| 4 | 3 | 1 |
-| 5 | 3 | 2 |
-| 6 | 4 | 2 |
-| 7 | 4 | 3 |
-| 8 | 5 | 3 |
-| 9 | 5 | 4 |
-| 10 | 6 | 4 |
-
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/_category_.yml
deleted file mode 100644
index e337e232a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md
deleted file mode 100644
index d1d36fd1f..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-an-apecloud-mysql-cluster.md
+++ /dev/null
@@ -1,299 +0,0 @@
----
-title: 创建并连接到 ApeCloud MySQL 集群
-description: 如何创建并连接到 ApeCloud MySQL 集群
-keywords: [mysql, 创建 ApeCloud MySQL 集群, 连接 ApeCloud MySQL 集群]
-sidebar_position: 1
-sidebar_label: 创建并连接
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建并连接 ApeCloud MySQL 集群
-
-本文档展示如何创建并连接到 ApeCloud MySQL 集群。
-
-## 创建并连接到 ApeCloud MySQL 集群
-
-### 开始之前
-
-* 如果您想通过 `kbcli` 创建并连接 ApeCloud MySQL 集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 ApeCloud MySQL 引擎已启用。KubeBlocks 默认已安装 ApeCloud MySQL，如果您在安装 KubeBlocks 关闭/卸载了该引擎，可参考相关文档，再次[启用/安装该引擎](./../../installation/install-addons.md)。
-  
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io apecloud-mysql
-  >
-  NAME             TYPE   VERSION   PROVIDER   STATUS    AGE
-  apecloud-mysql   Helm                        Enabled   61m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-  
-  ```bash
-  kbcli addon list
-  >
-  NAME                           VERSION         PROVIDER    STATUS     AUTO-INSTALL
-  ...
-  apecloud-mysql                 0.9.0           apecloud    Enabled    true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 查看可用于创建集群的数据库类型和版本。
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-  
-  确认 `apecloud-mysql` cluster definition 是否已安装。
-
-  ```bash
-  kubectl get clusterdefinition apecloud-mysql
-  >
-  NAME             TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  apecloud-mysql                              Available   85m
-  ```
-
-  查看可用于创建集群的版本。
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=apecloud-mysql
-  >
-  NAME                CLUSTER-DEFINITION   STATUS      AGE
-  ac-mysql-8.0.30     apecloud-mysql       Available   85m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 为保持隔离，本教程中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-### 创建集群
-
-KubeBlocks 支持创建两种类型的 ApeCloud MySQL 集群：单机版（Standalone）和集群版（RaftGroup）。单机版仅支持一个副本，适用于对可用性要求较低的场景。 集群版包含三个副本，适用于对高可用性要求较高的场景。为了确保高可用性，所有的副本都默认分布在不同的节点上。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 ApeCloud MySQL 集群。
-
-   KubeBlocks 通过 `Cluster` 定义集群。以下是创建 ApeCloud MySQL 集群版的示例。
-
-   如果您只有一个节点可用于部署集群版，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: apecloud-mysql
-     topology: apecloud-mysql
-     componentSpecs:
-       - name: mysql
-         serviceVersion: "8.0.30"
-         disableExporter: false
-         replicas: 3
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-mysql-cluster.md#终止策略)。 |
-   | `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 ApeCloud MySQL 集群时，该值必须为 `apecloud-mysql`。 |
-   | `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。ApeCloud MySQL 版本为 8.0.30。 |
-   | `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。ApeCloud MySQL 建议配置奇数，如 [1,3,5,7]。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-   KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   执行以下命令，查看已创建的 ApeCloud MySQL 集群的 YAML 文件：
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. 查看集群是否创建成功。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   12m
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建 ApeCloud MySQL 集群。
-
-   创建单机版。
-
-   ```bash
-   kbcli cluster create apecloud-mysql mycluster --namespace demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create apecloud-mysql --help
-
-   kbcli cluster create apecloud-mysql -h
-   ```
-
-   例如，您可以使用 `--mode` 指定集群形态为 `raftGroup`，创建集群版集群。
-
-   ```bash
-   kbcli cluster create apecloud-mysql mycluster --mode='raftGroup' --namespace demo
-   ```
-
-   如果您只有一个节点用于部署集群版集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create apecloud-mysql mycluster \
-       --mode='raftGroup' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-使用 `kubectl exec` 命令进入 Pod 并连接到数据库。
-
-KubeBlocks operator 会创建一个名为 `mycluster-conn-credential` 的新的 Secret 来存储集群的连接凭证。该 Secret 包含以下 key：
-
-* `username`：集群的根用户名。
-* `password`：根用户的密码。
-* `port`：集群的端口。
-* `host`：集群的主机。
-* `endpoint`：集群的终端节点，与 `host:port` 相同。
-
-1. 获取用于 `kubectl exec` 命令的 `username` 和 `password`。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   2gvztbvz
-   ```
-
-2. 使用用户名和密码，进入 Pod `mycluster-mysql-0` 并连接到数据库。
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-   mysql -uroot -p2gvztbvz
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-还可以使用端口转发在本地计算机上连接数据库。
-
-1. 通过端口转发服务。
-
-   ```bash
-   kubectl port-forward svc/mycluster-mysql 3306:3306 -n demo
-   ```
-
-2. 在新的终端窗口中执行以下命令，连接到数据库。
-
-   ```bash
-   mysql -uroot -p2gvztbvz
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster  -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-有关详细的数据库连接指南，请参考[连接数据库](./../../connect-databases/overview-on-connect-databases.md)。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md
deleted file mode 100644
index 11d1fd6d1..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/delete-mysql-cluster.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [mysql, 删除集群]
-sidebar_position: 7
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除集群
-
-## 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看当前集群的终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/expand-volume.md
deleted file mode 100644
index ce8e6490d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,180 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-sidebar_position: 3
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 存储磁盘扩容。
-
-:::note
-
-磁盘扩容会触发 Pod 重启。重启后，主节点可能会发生变化。
-
-:::
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则后续操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-     name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: mysql
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi"
-    EOF
-    ```
-
-2. 可通过以下任意一种方式验证磁盘扩容操作是否完成。
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 当 Ops 状态为 `Succeed`或集群状态再次回到 `Running` 后，查看对应的集群资源是否按需变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 3
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改磁盘容量值
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看对应的集群资源是否按需变更。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    ```bash
-    kbcli cluster volume-expand mycluster --components="mysql" --volume-claim-templates="data" --storage="40Gi" -n demo
-    ```
-
-    - `--components` 表示需扩容的组件名称。
-    - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-    - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-   - 查看 OpsRequest 进度。
-
-      执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-      ```
-
-   - 查看集群状态。
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-      mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Updating   Sep 19,2024 16:01 UTC+0800
-      ```
-
-     * STATUS=Updating 表示扩容正在进行中。
-     * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/restart-mysql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/restart-mysql-cluster.md
deleted file mode 100644
index 748657838..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/restart-mysql-cluster.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [mysql, 重启, 集群重启]
-sidebar_position: 4
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-集群重启后，主节点可能会发生变化。
-
-:::
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: mysql
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                READY   STATUS        RESTARTS   AGE
-   mycluster-mysql-0   4/4     Running       0          5m32s
-   mycluster-mysql-1   4/4     Running       0          6m36s
-   mycluster-mysql-2   3/4     Terminating   0          7m37s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，执行以下命令来重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster --components="mysql" \
-     --ttlSecondsAfterSucceed=30 -n demo
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 检查集群状态，验证重启操作是否成功。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-   - STATUS=Updating 表示集群正在重启中。
-   - STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/scale-for-apecloud-mysql.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/scale-for-apecloud-mysql.md
deleted file mode 100644
index af38b14c5..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/scale-for-apecloud-mysql.md
+++ /dev/null
@@ -1,429 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [mysql, 水平扩缩容, 垂直扩缩容]
-sidebar_position: 2
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# MySQL 集群扩缩容
-
-KubeBlocks 支持对 ApeCloud MySQL 集群进行垂直扩缩容和水平扩缩容。
-
-:::note
-
-集群垂直或水平扩缩容后，KubeBlocks 会根据新的规格自动匹配合适的配置模板。这因为 KubeBlocks 在 v0.9.0 中引入了动态配置功能。该功能简化了配置参数的过程，节省了时间和精力，并减少了由于配置错误引起的性能问题。有关详细说明，请参阅[配置](./../configuration/configuration.md)。
-
-:::
-
-## 垂直扩缩容
-
-您可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则后续操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: mysql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 3
-       resources: # 修改资源参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 20Gi
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-   ```bash
-   kbcli cluster vscale mycluster --components="mysql" --memory="4Gi" --cpu="2" -n demo
-   ```
-
-   - `--components` 表示可进行垂直扩容的组件名称。
-   - `--memory` 表示组件请求和限制的内存大小。
-   - `--cpu` 表示组件请求和限制的 CPU 大小。
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-     mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Updating   Sep 26,2024 16:01 UTC+0800
-     ```
-
-     - STATUS=Updating 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-
-       > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者您也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，您可以应用水平扩容将 Pod 的数量从三个增加到五个。扩容过程包括数据的备份和恢复。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [水平扩缩容](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleOut: 
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleIn: 
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```yaml
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 1 # 修改该参数值
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 20Gi
-    terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-   ```bash
-   kbcli cluster hscale mycluster --components="mysql" --replicas=3 -n demo
-   ```
-
-   - `--components` 表示准备进行水平扩容的组件名称。
-   - `--replicas` 表示指定组件的副本数。
-
-2. 通过以下任意一种方式验证水平扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-     - STATUS=Updating 表示正在进行水平扩容。
-     - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，您可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/mysql-cluster-mysql-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. 删除错误的备份和 volumesnapshot 资源。
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/stop-start-a-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/stop-start-a-cluster.md
deleted file mode 100644
index f7249ed93..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/stop-start-a-cluster.md
+++ /dev/null
@@ -1,172 +0,0 @@
----
-title: 停止/启动集群
-description: 如何停止/启动集群
-keywords: [mysql, 停止集群, 启动集群]
-sidebar_position: 5
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-  
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 设为 0，删除 Pods。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: apecloud-mysql
-      clusterVersionRef: ac-mysql-8.0.30
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true  
-        replicas: 0 # 修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 启动集群
-  
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-  
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 数值调整为停止集群前的数量，再次启动集群。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: apecloud-mysql
-      clusterVersionRef: ac-mysql-8.0.30
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true
-        replicas: 3 # 修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否再次启动。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/switchover.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/switchover.md
deleted file mode 100644
index 55d424b48..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/cluster-management/switchover.md
+++ /dev/null
@@ -1,154 +0,0 @@
----
-title: 切换 MySQL 集群
-description: 如何切换 MySQL 集群
-keywords: [mysql, 切换集群, switchover]
-sidebar_position: 6
-sidebar_label: 切换
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 切换 ApeCloud MySQL 集群
-
-数据库 switchover 是指在数据库集群中将主数据库的角色切换到备用数据库的过程，使备用数据库成为新的主数据库实例。通常在主数据库故障、维护或升级时执行 switchover 操作，以确保数据库服务的高可用性和连续性。可使用命令对 ApeCloud MySQL 集群版执行切换，KubeBlocks 将切换实例角色。
-
-## 开始之前
-
-* 确保集群正常运行。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   apecloud-mysql       ac-mysql-8.0.30   Delete               Running   27m
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-* 检查以下角色探针参数是否存在，确认是否已启用探针。
-
-   ```bash
-   kubectl get cd apecloud-mysql -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 2
-       periodSeconds: 1
-       timeoutSeconds: 1
-   ```
-
-## 切换集群
-
-将 ApeCloud MySQL 集群版集群的一个 Follower 切换为 Leader，并将原 Leader 实例切换为 Follower。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-* 不指定 Leader 实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: apecloud-mysql
-      instanceName: '*'
-  EOF
-  ```
-
-* 指定一个新的 Leader 实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: apecloud-mysql
-      instanceName: 'mycluster-mysql-2'
-  EOF
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* 不指定 Leader 实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster -n demo
-    ```
-
-* 指定一个新的 Leader 实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-2' -n demo
-    ```
-
-* 如果有多个组件，可以使用 `--components` 参数指定一个组件。
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-2' --components='apecloud-mysql' -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 验证集群切换
-
-查看实例状态，验证切换是否成功。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get pods -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 处理异常情况
-
-如果报错，请参考[异常处理](./../../handle-an-exception/handle-a-cluster-exception.md)排查问题。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/configuration/_category_.yml
deleted file mode 100644
index f7f240b8d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/configuration/configuration.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/configuration/configuration.md
deleted file mode 100644
index e6d9ac04a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/configuration/configuration.md
+++ /dev/null
@@ -1,446 +0,0 @@
----
-title: 配置集群参数
-description: 如何配置集群参数
-keywords: [mysql, 参数, 配置]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-本文档将说明如何配置集群参数。
-
-从 v0.9.0 开始，KubeBlocks 支持数据库参数配置动态渲染。当数据库实例的规格发生变化时（例如，用户进行了实例的升降配），KubeBlocks 会根据新的规格自动匹配适用的参数模板。这是因为不同规格的数据库实例可能需要不同的最佳参数配置以优化性能和资源利用率。当用户选择不同的数据库实例规格时，KubeBlocks 会自动检测并确定适用于新规格的最佳数据库参数配置，以确保数据库在新规格下具有最优的性能和配置。
-
-配置动态渲染功能简化了数据库规格调整的过程。用户无需手动更改数据库参数，KubeBlocks 会自动处理参数的更新和配置，以适应新的规格。这样可以节省时间和精力，并减少由于参数设置不正确而导致的性能问题。
-
-需要注意的是，配置动态渲染功能并不适用于所有参数。有些参数可能需要手动进行调整和配置。此外，如果你对数据库参数进行了手动修改，KubeBlocks 在更新数据库参数模板时可能会覆盖手动修改。因此，在使用动态调整功能时，建议先备份和记录自定义的参数设置，以便在需要时进行恢复。
-
-<Tabs>
-
-<TabItem value="修改配置文件" label="修改配置文件" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl get configurations.apps.kubeblocks.io -n demo
-
-   kubectl edit configurations.apps.kubeblocks.io mycluster-mysql -n demo
-   ```
-
-2. 按需配置参数。以下实例中添加了 `spec.configFileParams`，用于配置 `max_connections` 参数。
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: mysql
-     configItemDetails:
-     - configFileParams:
-         my.cnf:
-           parameters:
-             max_connections: "600"
-       configSpec:
-         constraintRef: mysql8.0-config-constraints
-         name: mysql-consensusset-config
-         namespace: kb-system
-         templateRef: mysql8.0-config-template
-         volumeName: mysql-config
-       name: mysql-consensusset-config
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`max_connections` 参数修改为 `600`。
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: mysql
-       configurations:
-       - keys:
-         - key: my.cnf
-           parameters:
-           - key: max_connections
-             value: "600"
-         name: mysql-consensusset-configuration
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 OpsRequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了该集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-查看集群的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-从元信息中可以看到，集群 `mycluster` 有一个名为 `my.cnf` 的配置文件。
-
-你也可以查看此配置文件和参数的详细信息。
-
-* 查看当前配置文件的详细信息。
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail -n demo
-   ```
-
-* 查看参数描述。
-
-   ```bash
-   kbcli cluster explain-config mycluster -n demo | head -n 20
-   ```
-
-* 查看指定参数的使用文档。
-  
-   ```bash
-   kbcli cluster explain-config mycluster --param=innodb_buffer_pool_size --config-specs=mysql-consensusset-config -n demo
-   ```
-
-   ApeCloud MySQL 目前支持多个模板，你可以通过 `--config-specs` 来指定一个配置模板。执行 `kbcli cluster describe-config mycluster` 查看所有模板的名称。
-
-   <details>
-
-   <summary>输出</summary>
-
-   ```bash
-   template meta:
-     ConfigSpec: mysql-consensusset-config        ComponentName: mysql        ClusterName: mycluster
-
-   Configure Constraint:
-     Parameter Name:     innodb_buffer_pool_size
-     Allowed Values:     [5242880-18446744073709552000]
-     Scope:              Global
-     Dynamic:            false
-     Type:               integer
-     Description:        The size in bytes of the memory buffer innodb uses to cache data and indexes of its tables  
-   ```
-  
-   </details>
-
-   * Allowed Values：定义了参数的有效值范围。
-   * Dynamic: 决定了参数配置的生效方式。根据被修改参数的生效类型，有**动态**和**静态**两种不同的配置策略。
-     * `Dynamic` 为 `true` 时，参数**动态**生效，可在线配置。
-     * `Dynamic` 为 `false` 时，参数**静态**生效，需要重新启动 Pod 才能生效。
-   * Description：描述了参数的定义。
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-以下示例以配置 `max_connections` 和 `innodb_buffer_pool_size` 为例。
-
-1. 查看 `max_connections` 和 `innodb_buffer_pool_size` 的当前值。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 167   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 134217728 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-2. 调整 `max_connections` 和 `innodb_buffer_pool_size` 的值。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --set=max_connections=600,innodb_buffer_pool_size=512M
-   ```
-
-   :::note
-
-   确保设置的值在该参数的 Allowed Values 范围内。如果设置的值不符合取值范围，系统会提示错误。例如：
-
-   ```bash
-   kbcli cluster configure mycluster  --set=max_connections=200,innodb_buffer_pool_size=2097152 -n demo
-   error: failed to validate updated config: [failed to cue template render configure: [mysqld.innodb_buffer_pool_size: invalid value 2097152 (out of bound >=5242880):
-    343:34
-   ]
-   ]
-   ```
-
-   :::
-
-3. 查看参数配置状态。
-
-   `Status.Progress` 展示参数配置的整体状态，而 `Conditions` 展示详细信息。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-zk4b4 -n demo
-   ```
-
-   <details>
-
-   <summary>输出</summary>
-
-   ```bash
-   Spec:
-     Name: mycluster-reconfiguring-zk4b4	NameSpace: demo	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster --components=mysql --config-spec=mysql-consensusset-config --config-file=my.cnf --set innodb_buffer_pool_size=512M --set max_connections=600 --namespace=demo
-
-   Status:
-     Start Time:         Sep 19,2024 18:26 UTC+0800
-     Completion Time:    Sep 19,2024 18:26 UTC+0800
-     Duration:           3s
-     Status:             Succeed
-     Progress:           1/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                            STATUS   MESSAGE
-   Sep 19,2024 18:19 UTC+0800   WaitForProgressing   WaitForProgressing                True     wait for the controller to process the OpsRequest: mycluster-reconfiguring-zk4b4 in Cluster: mycluster
-   Sep 19,2024 18:19 UTC+0800   Validated            ValidateOpsRequestPassed          True     OpsRequest: mycluster-reconfiguring-zk4b4 is validated
-   Sep 19,2024 18:19 UTC+0800   Reconfigure          ReconfigureStarted                True     Start to reconfigure in Cluster: mycluster, Component: mysql
-   Sep 19,2024 18:19 UTC+0800   Succeed              OpsRequestProcessedSuccessfully   True     Successfully processed the OpsRequest: mycluster-reconfiguring-zk4b4 in Cluster: mycluster
-
-   Warning Events: <none>
-   ```
-
-   </details>
-
-4. 连接到数据库，验证参数是否按预期配置。
-
-   配置生效过程约需要 30 秒，这是由于 kubelet 需要一定时间才能将对 ConfigMap 的修改同步到 Pod 的卷。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 600   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-  
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 536870912 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，支持以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-下面以配置 MySQL 单机版为例。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster --config-spec=mysql-consensusset-config -n demo
-   ```
-
-   :::note
-
-   * ApeCloud MySQL 目前支持多个模板，需通过 `--config-spec` 指定一个配置模板。执行 `kbcli cluster describe-config mycluster -n demo` 查看所有模板的名称。
-   * 如果集群中有多个组件，请使用 `--components` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-djdfc -n demo
-   ```
-
-3. 连接到数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2. KubeBlocks 未来将支持删除参数。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，你可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
->
-component: mysql
-
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME            FILE           ENABLED   TEMPLATE                   CONSTRAINT                                RENDERED                                    COMPONENT   CLUSTER
-mysql-consensusset-config   my.cnf         true      mysql8.0-config-template   mysql8.0-config-constraints               mycluster-mysql-mysql-consensusset-config   mysql       mycluster
-vttablet-config             vttablet.cnf   true      vttablet-config-template   mysql-scale-vttablet-config-constraints   mycluster-mysql-vttablet-config             mysql       mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME            FILE     STATUS    POLICY              PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-zk4b4   mycluster   mysql       mysql-consensusset-config   my.cnf   Succeed   syncDynamicReload   1/1        Sep 19,2024 18:26 UTC+0800   {"my.cnf":"{\"mysqld\":{\"innodb_buffer_pool_size\":\"512M\",\"max_connections\":\"600\"}}"}
-mycluster-reconfiguring-djdfc   mycluster   mysql       mysql-consensusset-config   my.cnf   Succeed   syncDynamicReload   1/1        Sep 19,2024 18:31 UTC+0800   {"my.cnf":"{\"mysqld\":{\"max_connections\":\"610\"}}"}                     
-```
-
-从上面可以看到，有三个参数被修改过。
-
-比较这些改动，查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-zk4b4 mycluster-reconfiguring-djdfc -n demo
->
-DIFF-CONFIGURE RESULT:
-  ConfigFile: my.cnf    TemplateName: mysql-consensusset-config ComponentName: mysql    ClusterName: mycluster       UpdateType: update      
-
-PARAMETERNAME             MYCLUSTER-RECONFIGURING-ZK4B4   MYCLUSTER-RECONFIGURING-DJDFC  
-max_connections           600                             610                                        
-innodb_buffer_pool_size   512M                            512M
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/high-availability/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/high-availability/_category_.yml
deleted file mode 100644
index e669dd108..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: 高可用
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/high-availability/high-availability.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/high-availability/high-availability.md
deleted file mode 100644
index 27b766b77..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/high-availability/high-availability.md
+++ /dev/null
@@ -1,411 +0,0 @@
----
-title: 故障模拟与自动恢复
-description: 集群自动恢复
-keywords: [mysql, 高可用, 故障模拟, 自动恢复]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 故障模拟与自动恢复
-
-作为一个开源数据管理平台，KubeBlocks 目前支持三十多种数据库引擎，并且持续扩展中。由于这些数据库本身的高可用能力是参差不齐的，因此KubeBlocks设计实现了一套高可用系统用于保障数据库实例的高可用能力。KubeBlocks 高可用系统采用了统一的 HA 框架设计，实现对数据库的高可用支持，使得不同的数据库在 KubeBlocks 上可以获得类似的高可用能力和体验。
-
-下面以 ApeCloud MySQL 为例，演示它的故障模拟和恢复能力。
-
-## 故障恢复
-
-:::note
-
-下面通过删除 Pod 来模拟故障。在资源充足的情况下，也可以通过机器宕机或删除容器来模拟故障，其自动恢复过程与本文描述的相同。
-
-:::
-
-### 开始之前
-
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 创建一个 ApeCloud MySQL 集群版，详情可参考[创建 MySQL 集群](./../cluster-management/create-and-connect-a-mysql-cluster.md)。
-* 执行 `kubectl get cd apecloud-mysql -o yaml` 检查 ApeCloud MySQL 集群版是否已启用 _rolechangedprobe_（默认情况下是启用的）。如果出现以下配置信息，则表明已启用：
-
-  ```bash
-  probes:
-    roleProbe:
-      failureThreshold: 2
-      periodSeconds: 1
-      timeoutSeconds: 1
-  ```
-
-### Leader 节点异常
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 ApeCloud MySQL 集群版。
-
-   在 `Topology` 中查看 Leader 节点的名称。在这个例子中，Leader 节点为 `mycluster-mysql-1`。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_cluster.png)
-2. 删除 Leader 节点 `mycluster-mysql-2`，模拟节点故障。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_pod](./../../../img/failure_simulation_delete_pod.png)
-3. 执行 `kbcli cluster describe` 和 `kbcli cluster connect` 命令，查看 pod 状态和集群连接。
-
-    ***结果***
-
-    此处示例显示 pod 角色发生变化。原 Leader 节点删除后，系统选出新的 Leader 为 `mycluster-mysql-1`。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster_after](./../../../img/failure_simulation_describe_cluster_after.png)
-
-    ApeCloud MySQL 集群版可以在几秒钟恢复连接。
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_cluster_after](./../../../img/failure_simulation_connect_cluster_after.png)
-
-***自动恢复机制***
-
-这是因为 Leader 节点删除后，ApeCloud MySQL 集群版会自行选主，选出新的 Leader 为 `mycluster-mysql-1`，KubeBlocks 探测到 Leader 角色发生变化，会发出通知，更新访问链路。原先异常节点会自动重建，恢复正常三节点状态。从异常开始到恢复完成，整体耗时在 30 秒内。
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 ApeCloud MySQL 集群版 pod 角色。在本示例中，Leader 节点为 `mycluster-1`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_pod](./../../../img/api-ha-grep-role.png)
-2. 删除 Leader 节点 `mycluster-mysql-1`，模拟节点故障。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 -n demo
-    ```
-
-    ![delete_pod](./../../../img/api-ha-delete-leader-pod.png)
-3. 检查 pod 状态和集群连接。
-
-    此处示例显示 pod 角色发生变化。原 Leader 节点删除后，系统选出新的 Leader 为 `mycluster-mysql-0`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_after](./../../../img/api-ha-delete-leader-pod-after.png)
-
-    连接到该集群，检查 pod 角色和状态。该集群可在几秒内连接成功。
-
-    ```bash
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-    >
-    root
-
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-    >
-    pt2mmdlp4
-
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_cluster_after](./../../../img/api-ha-leader-pod-connect-check.png)
-
-   ***自动恢复机制***
-
-   Leader 节点删除后，ApeCloud MySQL 集群版会自行选主。上述示例中，选出新的 Leader 为 `mycluster-mysql-0`，KubeBlocks 探测到 Leader 角色发生变化，会发出通知，更新访问链路。原先异常节点会自动重建，恢复正常集群版状态。从异常开始到恢复完成，整体耗时正常在 30s 之内。
-
-</TabItem>
-
-</Tabs>
-
-### 单个 Follower 节点异常
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 ApeCloud MySQL 集群版。
-
-   在 `Topology` 中查看 Follower 节点的名称。在这个例子中，Follower 节点是 `mycluster-mysql-0` 和 `mycluster-mysql-2`。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_cluster_after.png)
-
-2. 删除 Follower 节点 `mycluster-mysql-0`。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 -n demo
-    ```
-
-    ![delete_cluster](./../../../img/failure_simulation_delete_follower_pod.png)
-
-3. 查看集群状态，发现 Follower 节点处于 `Terminating` 状态。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster_follower](./../../../img/failure_simulation_describe_cluster_follower.png)
-
-4. 连接到 MySQL 集群版，发现单个 Follower 的异常不影响集群的读写操作。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ![connect_cluster_follower](./../../../img/failure_simulation_connect_cluster_follower.png)
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 pod 角色，如下示例中 follower 节点为 `mycluster-mysql-1` and `mycluster-mysql-2`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-ha-grep-role-single-follower-pod.png)
-2. 删除 follower 节点 `mycluster-mysql-1`。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 -n demo
-    ```
-
-    ![delete_follower_pod](./../../../img/api-ha-single-follower-pod-delete.png)
-3. 打开一个新的终端窗口，查看 pod 状态。可以发现 follower 节点 `mycluster-mysql-1` 处于 `Terminating` 状态。
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![view_cluster_follower_status](./../../../img/api-delete-single-follower-pod-status.png)
-
-    再次查看 pod 角色。
-
-    ![describe_cluster_follower](./../../../img/api-ha-single-follower-pod-grep-role-after.png)
-
-4. 连接集群，发现单个 Follower 节点异常不影响集群的读写操作。
-
-    ```bash
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_cluster_follower](./../../../img/api-ha-connect-single-follower-pod.png)
-
-</TabItem>
-
-</Tabs>
-
-***自动恢复机制***
-
-这是因为单个 Follower 节点异常不会触发角色重新选主，也不会切换访问链路，所以集群读写不受影响，Follower 异常后会自动触发重建，恢复正常，整体耗时在 30 秒内。
-
-### 两个节点异常
-
-集群可用的前提是多数节点状态正常，当多数节点异常时，原 Leader 节点将自动降级为 Follower 节点。因此，任意两个节点异常都会导致最后仅存一个 Follower 节点。所以，无论是一个 Leader 和一个 Follower 发生异常，还是两个 Follower 发生异常，其故障表现和自动恢复情况都是一样的。
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 ApeCloud MySQL 集群版。
-
-   在 `Topology` 中查看 Follower 节点的名称。在这个例子中，Follower 节点是 `mycluster-mysql-0` 和 `mycluster-mysql-2`。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_cluster_2.png)
-2. 删除两个 Follower 节点。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0
-    ```
-
-    ![delete_two_pods](./../../../img/failure_simulation_delete_two_pods.png)
-3. 查看 MySQL 集群版状态，发现集群自动选举出了新的 Leader 节点。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_two_pods](./../../../img/failure_simulation_describe_two_pods.png)
-4. 几秒钟后再次执行连接集群命令，数据库连接恢复正常。
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_two_pods](./../../../img/failure_simulation_connect_two_pods.png)
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 Pod 状态。如下示例中，follower 节点为 `mycluster-mysql-1` 和 `mycluster-mysql-2`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-ha-two-pods-grep-role.png)
-2. 删除两个 follower 节点。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_two_pods](./../../../img/api-ha-two-pod-get-status.png)
-3. 打开一个新的终端窗口，查看 pod 状态，发现两个 follower 节点 `mycluster-mysql-1` 和 `mycluster-mysql-2` 都处于 `Terminating` 状态。
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![view_cluster_follower_status](./../../../img/api-ha-two-pod-get-status.png)
-
-    查看节点角色，发现已选举产生新的 leader。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_follower](./../../../img/api-ha-two-pods-grep-role-after.png)
-
-4. 稍等几秒后，连接集群，发现集群中的 pod 在此正常运行。
-
-    ```bash
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_two_pods](./../../../img/api-ha-two-pods-connect-after.png)
-
-</TabItem>
-
-</Tabs>
-
-***自动恢复机制***
-
-这是因为当 ApeCloud MySQL 两个节点异常时，满足多数节点不可用，导致 Leader 节点会自动降级为 Follower 节点，此时集群不可读写。待节点自动重建完成后，集群重新选出 Leader 节点恢复到可读写状态。整体耗时在 30 秒内。
-
-### 所有节点异常
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 ApeCloud MySQL 集群版。
-
-   在 `Topology` 中查看节点名称。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_cluster](./../../../img/failure_simulation_describe_two_pods.png)
-2. 删除所有节点。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_three_pods](./../../../img/failure_simulation_delete_three_pods.png)
-3. 查看集群状态，发现节点角色发生改变。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-    ![describe_three_clusters](./../../../img/failure_simulation_describe_three_pods.png)
-4. 几秒钟后再次执行 `kbcli cluster connect mycluster`，数据库连接恢复正常。
-
-    ```bash
-    kbcli cluster connect mycluster -n demo
-    ```
-
-    ![connect_three_clusters](./../../../img/failure_simulation_connect_three_pods.png)
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看节点角色。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-ha-all-pods-grep-role.png)
-2. 删除所有节点。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0 mycluster-mysql-2 -n demo
-    ```
-
-    ![delete_three_pods](./../../../img/api-ha-all-pods-delete.png)
-3. 打开一个新的终端窗口，查看 pod 状态，发现所有 pod 均处于 `Terminating` 状态。
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![describe_three_clusters](./../../../img/api-ha-all-pods-get-status.png)
-4. 再次查看节点角色，发现已选举产生新的 leader。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_follower](./../../../img/api-ha-all-pods-grep-role-after.png)
-5. 稍等几秒后，连接集群，发现集群中的 pod 已恢复正常运行。
-
-    ```bash
-    kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-    mysql -uroot -pt2mmdlp4
-    ```
-
-    ![connect_three_clusters](./../../../img/api-ha-all-pods-connect-after.png)
-
-</TabItem>
-
-</Tabs>
-
-***自动恢复机制***
-
-这是因为节点删除后，都会自动触发重建，然后 ApeCloud MySQL 会自动完成集群恢复及选主。选主完成后，Kubeblocks 会探测新 Leader，并更新访问链路，恢复可用。整体耗时在 30 秒内。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/kubeblocks-for-apecloud-mysql.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/kubeblocks-for-apecloud-mysql.md
deleted file mode 100644
index 152972542..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/kubeblocks-for-apecloud-mysql.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: 用 KubeBlocks 管理ApeCloud MySQL
-description: KubeBlocks 中的 ApeCloud MySQL 功能列表
-keywords: [ApeCloud, Mysql, 简介, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 ApeCloud MySQL
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 ApeCloud MySQL 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/apecloud-mysql)查看 YAML 示例。
-
-* [简介](./apecloud-mysql-intro/apecloud-mysql-intro.md)
-* [集群管理](./cluster-management/create-and-connect-a-mysql-cluster.md)
-* [配置](./configuration/configuration.md)
-* [高可用](./high-availability/high-availability.md)
-* [代理](./proxy/introduction.md)
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/_category_.yml
deleted file mode 100644
index f757374a2..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: 代理
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/apecloud-mysql-proxy.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/apecloud-mysql-proxy.md
deleted file mode 100644
index dacfe178c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/apecloud-mysql-proxy.md
+++ /dev/null
@@ -1,731 +0,0 @@
----
-title: ApeCloud MySQL 代理
-description: 如何使用 ApeCloud MySQL 代理
-keywords: [apecloud mysql 代理, 代理]
-sidebar_position: 2
-sidebar_label: ApeCloud MySQL 代理
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# ApeCloud MySQL 代理
-
-## 开始之前
-
-1. [安装 kbcli](./../../installation/install-kbcli.md)。
-2. [安装 Helm](https://helm.sh/docs/intro/install/)。
-3. 安装 KubeBlocks。
-
-   可以执行 `kbcli playground init` 安装 k3d 集群和 KubeBlocks。详情请参考[在本地使用 KubeBlocks](./../../try-out-on-playground/try-kubeblocks-on-local-host.md) 或[在云上使用 KubeBlocks](./../../try-out-on-playground/try-kubeblocks-on-cloud.md)。
-
-   ```bash
-   kbcli playground init
-
-   # 使用--version 指定版本
-   kbcli playground init --version='x.y.z'
-   ```
-
-   如果已经有 Kubernetes 集群，可以直接[安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-4. 准备一个名为 mycluster 的 ApeCloud MySQL 集群版集群，用于演示如何为现有集群启用代理功能。详情请参考[创建并连接到 MySQL 集群](./../cluster-management/create-and-connect-a-mysql-cluster.md)。
-
-## 创建代理集群
-
-建议使用 `kbcli` 创建 ApeCloud MySQL 代理集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 添加 KubeBlocks 仓库。
-
-   ```bash
-   helm repo add kubeblocks https://apecloud.github.io/helm-charts
-   ```
-
-2. 查看仓库列表，确认 KubeBlocks 仓库是否已添加。
-
-   ```bash
-   helm repo list
-   ```
-
-3. 执行更新命令，确保您已安装最新版本。
-
-   ```bash
-   helm repo update
-   ```
-
-4. 安装 etcd，用于创建外部服务引用。
-
-   1. 查看 etcd 的所有版本。
-
-       ```bash
-       helm search repo kubeblocks/etcd --devel --versions
-       ```
-
-   2. 安装 etcd 引擎。
-
-       ```bash
-       helm install etcd kubeblocks/etcd --version=v0.6.5
-       ```
-
-   3. 安装 etcd 集群。
-
-       ```bash
-       helm install etcd-cluster kubeblocks/etcd-cluster 
-       ```
-
-   4. 查看 etcd 集群状态，确保其处于 `Running` 状态。
-
-       ```bash
-       kubectl get cluster
-       >
-       NAME           CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS      AGE
-       etcd-cluster   etcd                 etcd-v3.5.6   Halt                 Running     10s
-       ```
-
-   5. 查看 etcd 集群的服务地址。
-
-       ```bash
-       kubectl get service
-       >
-       NAME                             TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                                                  AGE
-       etcd-cluster-etcd                ClusterIP   10.110.23.89   <none>        2379/TCP                                                 55s
-       etcd-cluster-etcd-headless       ClusterIP   None           <none>        2379/TCP,2380/TCP,3501/TCP,50001/TCP                     55s
-       kubernetes                       ClusterIP   10.96.0.1      <none>        443/TCP                                                  13m
-       ```
-
-       您可以将服务地址组合起来，获取 endpoint。或者您可使用服务地址的 IP 作为连接地址。
-
-       以下为服务地址组合的示例。
-
-       ```bash
-       etcd-cluster-etcd.default.svc.cluster.local:2379
-       ```
-
-5. 创建 ApeCloud MySQL 代理集群。
-   1. 查看 ApeCloud MySQL 代理集群可用版本。
-
-       ```bash
-       helm search repo kubeblocks/apecloud-mysql --devel --versions
-       ```
-
-   2. （可选）如果您在安装 KubeBlocks 时停用了 `apecloud-mysql` 引擎，可执行以下命令并指定版本，安装 ApeCloud MySQL 的集群定义（cluster definition）。如果您安装 KubeBlocks 时选用了默认设置，可跳过本步骤。
-
-       ```bash
-       helm install myproxy kubeblocks/apecloud-mysql --version=v0.9.0
-       ```
-
-   3. 创建 ApeCloud MySQL 代理集群。
-
-       ```bash
-       helm install myproxy kubeblocks/apecloud-mysql-cluster --version=v0.9.0 --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-       ```
-
-:::note
-
-如果您只有一个节点可用于部署集群版，可在创建集群时将 `extra.availabilityPolicy` 设置为 `none`。
-
-```bash
-helm install myproxy kubeblocks/apecloud-mysql-cluster --version=v0.9.0 --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379" --set extra.availabilityPolicy=none
-```
-
-:::
-
-6. 查看集群状态。
-
-   ```bash
-   kubectl get cluster
-
-   kubectl get pods
-   ```
-
-   您也可以进入 etcd 容器或 wesql-scale 容器内部，查看 wesql-scale 的配置或检查 etcd 服务的可用性。
-
-   ```bash
-   etcdctl --endpoints=http://etcd-cluster-etcd.default.svc.cluster.local:2379 get /vitess --prefix --keys-only
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 启用 etcd 引擎，创建 etcd 集群。
-
-   1. 安装并启用 etcd 引擎。etcd 引擎默认未安装，需安装后在进行后续操作。可参考[使用引擎](./../../installation/install-with-kbcli/install-addons.md)文档。
-
-       ```bash
-       # 1. 查看是否已添加 KubeBlocks 引擎索引
-       kbcli addon index list
-
-       # 如果列表为空，请先添加索引
-       kbcli addon index add kubeblocks https://github.com/apecloud/block-index.git
-
-       # 2. 搜索 etcd 引擎
-       kbcli addon search etcd
-
-       # 3. 安装 etcd 引擎
-       kbcli addon install etcd --index kubeblocks --version 0.9.0
-
-       # 4. 启用 etcd 引擎
-       kbcli addon enable etcd
-
-       # 5. 确认 etcd 引擎是否已启用
-       kbcli addon list
-       ```
-
-   2. 创建 etcd 集群。
-
-       ```bash
-       kbcli cluster create myetcd --cluster-definition etcd
-       ```
-
-   3. 查看 etcd 服务状态。
-
-       ```bash
-       kbcli cluster list myetcd
-       ```
-
-2. 查看 etcd 服务地址或 etcd pod 地址。
-
-    ```bash
-    kubectl get service
-    >
-    NAME                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                  AGE
-    kubernetes                       ClusterIP   10.96.0.1        <none>        443/TCP                                                  85d
-    myetcd-etcd                      ClusterIP   10.101.227.143   <none>        2379/TCP                                                 111s
-    myetcd-etcd-headless             ClusterIP   None             <none>        2379/TCP,2380/TCP,3501/TCP,50001/TCP                     111s
-    ```
-
-3. 创建 ApeCloud MySQL Proxy 集群。
-
-    ```bash
-    helm repo add kubeblocks https://apecloud.github.io/helm-charts
-
-    helm install myproxy kubeblocks/apecloud-mysql-cluster --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-    ```
-
-4. 查看集群状态。
-
-    ```bash
-    kbcli get cluster
-
-    kbcli get pods
-    ```
-
-    您也可进入 etcd 或者 wesql-scale 容器中查看wesql-scale 配置，或检查 etcd 服务可用性。
-
-    ```bash
-    etcdctl --endpoints=http://etcd-cluster-etcd.default.svc.cluster.local:2379 get /vitess --prefix --keys-only
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 动态启用代理
-
-ApeCloud MySQL 代理本质是一个数据库代理。通过设置 `proxyEnabled=true`，可以将 ApeCloud MySQL 集群版切换为 ApeCloud MySQL 代理集群。
-
-```bash
-helm upgrade mycluster kubeblocks/apecloud-mysql-cluster --set mode=raftGroup,proxyEnabled=true,etcd.serviceReference.endpoint="etcd-cluster-etcd.default.svc.cluster.local:2379"
-```
-
-如需关闭代理，可执行以下命令。
-
-```bash
-helm upgrade mycluster kubeblocks/apecloud-mysql-cluster --set mode=raftGroup
-```
-
-## 连接代理集群
-
-ApeCloud MySQL 代理通过 `vtgate` 组件进行路由，MySQL 服务器访问 `vtgate` 的方式和访问 `mysqld` 很像。代理提供的外部 SQL 访问地址是 `vtgate` 的地址和端口，而 KubeBlocks 默认创建的 `vtgate` 地址是 `myproxy-cluster-vtgate-headless`，端口号为 `15306`。你可以通过与代理处于相同命名空间的任意 Pod 中的 MySQL 服务器访问 ApeCloud MySQL 代理。
-
-### 通过 VTGate 连接代理集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 将 VTGate 的端口映射到本地主机，使本地主机可以访问代理。
-
-   ```bash
-   kubectl port-forward svc/vt-vtgate-headless 15306:15306
-   ```
-
-2. 连接到集群。
-
-   ```bash
-   mysql -h 127.0.0.1 -P 15306
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-执行以下命令连接到代理集群。
-
-```bash
-kbcli cluster connect myproxy --components vtgate
-```
-
-### 通过 MySQL 服务器连接代理集群
-
-执行以下命令连接到代理集群。
-
-```bash
-kbcli cluster connect myproxy --components vtgate
-```
-
-</TabItem>
-
-</Tabs>
-
-### 通过 MySQL 服务器连接代理集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 将 MySQL 服务器的端口暴露到本地主机，使本地主机可以访问 MySQL 服务器。
-
-   ```bash
-   kubectl port-forward svc/vt-mysql 3306:3306
-   ```
-
-2. 连接到集群。
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-执行以下命令，连接至 MySQL 服务器。
-
-```bash
-kbcli cluster connect myproxy
-```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-如果要测试 MySQL 的故障切换功能，请先删除 Pod，然后进行端口转发。或者你可以编写一个 shell 脚本进行测试。比如，
-
-如果使用 VTGate：
-
-```bash
-while true; do date; kubectl port-forward svc/vt-vtgate-headless 15306:15306; sleep 0.5; done
-```
-
-如果使用 MySQL：
-
-```bash
-while true; do date; kubectl port-forward svc/vt-mysql 3306:3306; sleep 0.5; done
-```
-
-:::
-
-## 配置代理集群参数
-
-<Tabs>
-
-<TabItem value="编辑配置文件" label="编辑配置文件" default>
-
-1. 查看当前配置文件的详细信息。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io myproxy-vtgate
-   ```
-
-2. 按需配置参数。如下示例添加 `spec.configFileParams` 部分，用以配置 `max_connections`。
-
-   ```yaml
-   spec:
-     clusterRef: myproxy
-     componentName: vtgate
-     configItemDetails:
-     - configFileParams:
-         vtgate.cnf:
-           parameters:
-             healthcheck_timeout: "5s"
-       configSpec:
-         constraintRef: mysql-scale-vtgate-config-constraints
-         name: vtgate-config
-         namespace: kb-system
-         templateRef: vtgate-config-template
-         volumeName: mysql-scale-config
-       name: vtgate-config
-       payload: {}
-   ```
-
-3. 连接至该集群，确认配置是否生效。
-
-   1. 将 MySQL 服务器的端口暴露到本地主机，使本地主机可以访问 MySQL 服务器。
-
-      ```bash
-      kubectl port-forward svc/vt-vtgate-headless 15306:15306
-      ```
-
-   2. 连接集群，确认参数是否已修改。
-
-      ```bash
-      mysql -h 127.0.0.1 -P 3306
-
-      >
-      mysql> show variables like 'healthcheck_timeout';
-      +---------------------+-------+
-      | Variable_name       | Value |
-      +---------------------+-------+
-      | healthcheck_timeout |  5s   |
-      +---------------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-将 OpsRequest 应用于指定集群，根据您的需要配置参数。
-
-* 配置 VTTablet 示例
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: acmysql-vttablet-reconfiguring
-      namespace: default
-    spec:
-      clusterName: acmysql-cluster
-      force: false
-      reconfigure:
-        componentName: mysql
-        configurations:
-          - keys:
-              - key: vttablet.cnf
-                parameters:
-                  - key: health_check_interval
-                    value: 4s
-            name: vttablet-config
-      preConditionDeadlineSeconds: 0
-      type: Reconfiguring
-    ```
-
-* 配置 VTGate 示例
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: acmysql-vtgate-reconfiguring
-      namespace: default
-    spec:
-      clusterName: acmysql-cluster
-      force: false
-      reconfigure:
-        componentName: vtgate
-        configurations:
-        - keys:
-          - key: vtgate.cnf
-            parameters:
-            - key: healthcheck_timeout
-              value: 2s
-          name: vtgate-config
-      preConditionDeadlineSeconds: 0
-      type: Reconfiguring
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-VTGate、VTConsensus 和 VTTablet 都支持参数配置。你可以使用 `--components` 参数指定组件来配置 VTGate 和 VTConsensus，使用 `--components=mysql --config-specs=vttablet-config` 同时指定组件和配置文件模板来配置 VTTablet，因为 VTTablet 是 MySQL 组件的附属组件。
-
-### 查看参数详情
-
-* 查看当前配置文件的详细信息。
-
-   ```bash
-   # vtgate
-   kbcli cluster describe-config myproxy --components vtgate --show-detai
-   
-   # vtcontroller
-   kbcli cluster describe-config myproxy --components vtcontroller --show-detail
-   
-   # vttablet
-   kbcli cluster describe-config myproxy --component mysql --show-detail --config-specs vttablet-config
-   ```
-
-* 查看参数描述。
-
-   ```bash
-   # vtgate
-   kbcli cluster explain-config myproxy --components vtgate
-
-   # vttablet
-   kbcli cluster explain-config myproxy --components mysql --config-specs=vttablet-config
-   ```
-
-* 查看指定参数的定义。
-
-   ```bash
-   kbcli cluster explain-config myproxy --components vtgate --param=healthcheck_timeout
-   ```
-
-### 配置参数
-
-1. 查看 MySQL 服务器中的当前值。
-
-   ```bash
-   kbcli cluster connect myproxy --components=vtgate
-   ```
-
-   ```bash
-   mysql> show variables like '%healthcheck_timeout%';
-   ```
-
-   ```bash
-   mysql> show variables like '%health_check_interval%';
-   ```
-
-2. 配置 VTGate 的 `healthcheck_timeout` 和 VTTablet 的 `health_check_interval`。
-
-   你可以通过使用 `--set` 或编辑参数配置文件进行配置。
-
-   * 使用 `--set`。
-
-      ```bash
-      # vtgate
-      kbcli cluster configure myproxy --components vtgate --set=healthcheck_timeout=2s
-
-      # vttablet
-      kbcli cluster configure myproxy --set=health_check_interval=4s --components=mysql --config-spec=vttablet-config
-      ```
-
-   * 编辑参数配置文件。
-
-      ```bash
-      kbcli cluster edit-config myproxy --components vtgate
-      ```
-
-    :::note
-
-    执行 `vtgate` 参数配置命令后，会启动一个新的 vtgate Pod，并终止旧的 vtgate Pod。你可以执行以下命令监视旧 Pod 是否被终止。
-
-    ```bash
-    kubectl get pod <vtgate-pod-name> -w
-    ```
-
-    :::
-
-3. 执行以下命令查看配置状态。比如，
-
-   ```bash
-   kbcli cluster describe-ops myproxy -reconfiguring-lth8d -n default
-   ```
-
-   :::note
-
-   关于参数配置的更多信息，请参考[配置](./../configuration/configuration.md)。
-
-   :::
-
-</TabItem>
-
-</Tabs>
-
-## 日志
-
-您可以使用 kbcli 和 kubectl 来查看组件、Pod 和容器的日志文件。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-查看 VTGate 日志。
-
-```bash
-kubectl logs myproxy-cluster-vtgate-8659d5db95-4dzt5
-```
-
-查看 VTTablet 日志，`-c` 为必选项。
-
-```bash
-kubectl logs myproxy-cluster-mysql-0 -c vttablet
-```
-
-进入容器，查看更多 VTGate 日志。
-
-```bash
-kubectl exec -it myproxy-cluster-vtgate-8659d5db95-4dzt5 -- bash
-ls /vtdataroot
-```
-
-进入容器，查看更多 VTTablet 日志。
-
-```bash
-kubectl exec -it myproxy-cluster-mysql-0  -c vttablet -- bash
-ls /vtdataroot
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-查看不同组件的日志。
-
-```bash
-kbcli cluster list-logs myproxy
-kbcli cluster list-logs myproxy --components vtgate
-kbcli cluster list-logs myproxy --components vtcontroller
-kbcli cluster list-logs myproxy --components mysql
-```
-
-查看 Pod 日志。
-
-```bash
-kbcli cluster logs myproxy --instance myproxy-vtgate-85bdcf99df-wbmnl
-```
-
-查看 Pod 中容器的日志。
-
-```bash
-kbcli cluster logs myproxy --instance myproxy-mysql-0 -c vttablet
-```
-
-</TabItem>
-
-</Tabs>
-
-## 读写分离
-
-你可以启用读写分离功能。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 获取当前集群的配置文件。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io myproxy-vtgate
-   ```
-
-2. 将 `read_write_splitting_policy` 配置为 `random`。
-
-   ```yaml
-   spec:
-     clusterRef: myproxy
-     componentName: vtgate
-     configItemDetails:
-     - configFileParams:
-         vtgate.cnf:
-           parameters:
-             read_write_splitting_policy: "random"
-       configSpec:
-         constraintRef: mysql-scale-vtgate-config-constraints
-         name: vtgate-config
-         namespace: kb-system
-         templateRef: vtgate-config-template
-         volumeName: mysql-scale-config
-       name: vtgate-config
-       payload: {}
-   ```
-
-您也可以设置读写分离的比例，以下示例将 70% 的流量导向只读节点。
-
-```yaml
-spec:
-   clusterRef: myproxy
-   componentName: vtgate
-   configItemDetails:
-   - configFileParams:
-      vtgate.cnf:
-         parameters:
-            read_write_splitting_rati: "70"
-      configSpec:
-      constraintRef: mysql-scale-vtgate-config-constraints
-      name: vtgate-config
-      namespace: kb-system
-      templateRef: vtgate-config-template
-      volumeName: mysql-scale-config
-      name: vtgate-config
-      payload: {}
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster configure myproxy --components vtgate --set=read_write_splitting_policy=random
-```
-
-还可以设置读写分离的比例。如下是设置 70% 的流量导向只读节点的例子。
-
-```bash
-kbcli cluster configure myproxy --components vtgate --set=read_write_splitting_ratio=70
-```
-
-此外，你还可以在 VTGate 终端中执行 `show workload` 来查看流量分布。
-
-```bash
-show workload;
-```
-
-</TabItem>
-
-</Tabs>
-
-## 透明故障切换
-
-执行以下命令，实现透明故障切换。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io myproxy-vtgate
-   ```
-
-2. 将 `enable_buffer` 设置为 `true`。
-
-   ```yaml
-   spec:
-     clusterRef: myproxy
-     componentName: vtgate
-     configItemDetails:
-     - configFileParams:
-         vtgate.cnf:
-           parameters:
-             enable_buffer: "true"
-       configSpec:
-         constraintRef: mysql-scale-vtgate-config-constraints
-         name: vtgate-config
-         namespace: kb-system
-         templateRef: vtgate-config-template
-         volumeName: mysql-scale-config
-       name: vtgate-config
-       payload: {}
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster configure myproxy --components vtgate --set=enable_buffer=true
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/introduction.md b/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/introduction.md
deleted file mode 100644
index 5234bb0ae..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-apecloud-mysql/proxy/introduction.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: MySQL 代理简介
-description: MySQL 代理简介
-keywords: [简介, 代理]
-sidebar_position: 1
-sidebar_label: 简介
----
-
-# MySQL 代理
-
-## 简介
-
-数据库代理是数据库开发和管理人员改善应用程序的可伸缩性、性能、安全性和弹性的重要工具。
-
-ApeCloud MySQL 代理是一个专为与 MySQL 高度兼容而设计的数据库代理。它支持 MySQL 传输协议、读写分离、连接池和透明的故障切换。本节介绍 ApeCloud MySQL 代理的架构、功能和主要优势。
-
-## 架构
-
-ApeCloud MySQL 代理是 Vitess 项目的一个分支。为了提供更好的 SQL 兼容性，例如更好的子查询、公共表表达式（CTE）和表达式评估，它移除了对分片的支持。下图展示了代理集群的架构。
-
-**VTGate**：客户端应用一般通过标准的 MySQL 传输协议连接到 VTGate。VTGate 是无状态的，可以轻松高效地扩展其大小和性能。它类似于 MySQL，负责解析 SQL 查询，还有规划和路由查询请求到 VTTablet 上进行处理。
-
-**VTTablet**：VTTablet 通常作为 MySQL 的附加组件实现。如果 ApeCloud MySQL 代理部署在 Kubernetes 中，那么 VTTablet 与 MySQL 就放置在同一个 pod 中。VTTablet 接受来自 VTGate 的 gRPC 请求，然后将这些查询发送到 MySQL 上执行。VTTablet 还处理一些权限检查和日志记录的任务，但其最关键的角色是确保适当的连接池管理。
-
-**VTController**：VTController 组件帮助在 VTGate 和 VTTablet 之间实现服务发现，并使它们能够存储集群的元数据。如果 MySQL 的角色发生变化，例如从 Leader 变为 Follower，VTTablet 的角色也会相应变化。VTController 会检查 MySQL 集群的状态，并向 VTTablet 发送命令，请求其更改角色。
-
-![ApeCloud MySQL Proxy architecture](./../../../img/proxy-architecture.png)
-
-## 连接池
-
-数据库连接会占用内存。为了确保缓冲池中有足够的内存，数据库通常会限制 'max_connections' 的值。然而，由于应用程序通常是无状态的，并且可能需要快速扩展和创建大量连接，数据库很有可能会超负荷运行。因此，这类应用程序不适合直接连接到 MySQL 服务器并创建连接池。
-
-使用 ApeCloud MySQL 代理，应用程序可以根据需要创建任意数量的连接，无需担心 'max_connections' 错误。因为 ApeCloud MySQL 代理接管了数据库连接池的建立，允许应用程序在 MySQL 服务器端共享和重用连接。这降低了 MySQL 服务器端打开和关闭连接所带来的内存和 CPU 开销，提高了可伸缩性和性能。
-
-## 读写分离
-
-使用只读节点可以显著减轻主数据库节点的工作负载，提高资源利用率。然而，管理多个只读节点并决定何时使用各个节点却并不容易。ApeCloud MySQL 代理通过提供三个重要功能来解决这个问题：读写分离、写后读一致性和负载均衡。这些功能可以使应用程序更有效地利用只读节点。
-
-**读写分离**：ApeCloud MySQL 代理通过自动将读查询路由到只读节点，将写查询路由到主节点，简化了应用程序逻辑。这是通过解析 SQL 语句实现的，它因此改善了负载均衡，确保有效利用可用资源。
-
-**写后读一致性**：此功能与读写分离配合使用，以在获得性能改进的同时保持数据一致性。当应用程序将数据写入主节点，并在只读节点上读取时，ApeCloud MySQL 代理确保刚刚写入主节点的数据可以从只读节点中访问和读取。
-
-**负载均衡**：ApeCloud MySQL 代理通过使用各种负载均衡策略将查询路由到适当的只读节点，从而帮助管理只读节点。这确保工作负载在所有可用节点上均匀分布，因此实现了性能优化和资源利用率的提高。
-
-## 透明的故障切换
-
-故障切换旨在确保当系统中原始数据库实例不可用时，能切换到另一个实例上并保持其高可用性。触发故障切换的因素有很多，包括数据库实例问题和计划维护过程（如数据库升级）等。
-
-在没有 ApeCloud MySQL 代理的情况下，故障切换需要短暂的停机时间与数据库的现有连接断开，还需要应用程序重新打开这些连接。ApeCloud MySQL 代理能够自动检测故障切换，并在保持应用程序连接完整的同时，将应用程序的 SQL 缓冲在其内存中，在数据库出现问题的情况下增强应用程序的弹性。
-
-应用程序端的连接错误问题通常无法完全解决。然而，代理是无状态的，开发者可以部署多个节点以实现高可用性。此外，代理的重启/恢复速度也比数据库更快，因为它不需要从撤销-重做日志中恢复。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-elasticsearch/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-elasticsearch/_category_.yml
deleted file mode 100644
index 0040676e1..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-elasticsearch/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 20
-label: 用 KubeBlocks 管理 Elasticsearch
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-elasticsearch/manage-elasticsearch.md b/i18n/zh-cn/user-docs/kubeblocks-for-elasticsearch/manage-elasticsearch.md
deleted file mode 100644
index 7d32c962d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-elasticsearch/manage-elasticsearch.md
+++ /dev/null
@@ -1,1051 +0,0 @@
----
-title: 用 KubeBlocks 管理 Elasticsearch
-description: 如何用 KubeBlocks 管理 Elasticsearch
-keywords: [elasticsearch]
-sidebar_position: 1
-sidebar_label: 用 KubeBlocks 管理 Elasticsearch
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 用 KubeBlocks 管理 Elasticsearch
-
-Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎，能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心，Elasticsearch 会集中存储您的数据，让您飞快完成搜索，微调相关性，进行强大的分析，并轻松缩放规模。
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 Elasticsearch 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/elasticsearch)查看 YAML 示例。
-
-## 开始之前
-
-- 如果您想通过 `kbcli` 创建并连接 Elasticsearch 集群，请先[安装 kbcli](./../installation/install-kbcli.md)。
-- [安装 KubeBlocks](./../installation/install-kubeblocks.md)。
-- [安装并启用 elasticsearch 引擎](./../installation/install-addons.md)。
-
-## 创建集群
-
-***步骤***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-KubeBlocks 通过 `Cluster` 定义集群。以下是创建 Elasticsearch 集群的示例。KubeBlocks 还支持创建Pod 默认分布在不同节点。如果您只有一个节点可用于部署集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-  annotations:
-    kubeblocks.io/extra-env: '{"master-roles":"master", "data-roles": "data", "ingest-roles": "ingest", "transform-roles": "transform"}'
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: master
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: data
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: ingest
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-  - name: transform
-    componentDef: elasticsearch-8-1.0.0
-    replicas: 1
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 2Gi
-      requests:
-        cpu: '0.5'
-        memory: 2Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-EOF
-```
-
-| 字段                                   | 定义  |
-|---------------------------------------|--------------------------------------|
-| `metadata.annotations`                | 定义了 Elasticsearch 集群类型。 |
-| `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](#终止策略)。 |
-| `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-| `spec.componentSpecs.componentDef`    | 指定了用于定义 component 特性和行为的 ComponentDefinition 自定义资源（CR）。 |
-| `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。 |
-| `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-| `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-| `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-| `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-执行以下命令，查看已创建的 Elasticsearch 集群：
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建集群。
-
-   ```bash
-   kbcli cluster create elasticsearch mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 --help 或 -h 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create elasticsearch --help
-   kbcli cluster create elasticsearch -h
-   ```
-
-   如果您只有一个节点用于部署多副本集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create elasticsearch mycluster \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 查看集群是否已创建。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS     CREATED-TIME
-   mycluster   demo                                       Delete               Creating   Sep 27,2024 11:42 UTC+0800  
-   ```
-
-3. 查看集群信息。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接集群
-
-Elasticsearch 提供 HTTP 访问协议，使用端口 9200 进行通信。您可通过本地主机访问集群。
-
-```bash
-curl http://127.0.0.1:9200/_cat/nodes?v
-```
-
-## 扩缩容
-
-### 水平扩缩容
-
-水平扩展改变 Pod 的数量。例如，您可以将副本从三个扩展到五个。
-
-从 v0.9.0 开始，KubeBlocks 还支持了指定实例扩缩容。可通过 [水平扩缩容文档](./../maintenance/scale/horizontal-scale.md) 文档了解更多细节和示例。
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster                                                 Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: elasticsearch
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: elasticsearch
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```yaml
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: elasticsearch
-     clusterVersionRef: elasticsearch-8.8.2
-     componentSpecs:
-     - name: elasticsearch
-       componentDefRef: elasticsearch
-       replicas: 1 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-    ```bash
-    kbcli cluster hscale elasticsearch --replicas=2 --components=elasticsearch -n demo
-    ```
-
-    - `--components` 表示准备进行水平扩容的组件名称。
-    - `--replicas` 表示指定组件的副本数。 根据需要设定数值，进行扩缩容。
-
-2. 通过以下任意一种方式验证水平扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 Succeed 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-xpdwz -n demo
-       ```
-
-    - 查看集群状态。
-  
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示正在进行水平扩容。
-       - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 垂直扩缩容
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster                                                 Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: elasticsearch
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: elasticsearch
-     clusterVersionRef: elasticsearch-8.8.2
-     componentSpecs:
-     - name: elasticsearch
-       componentDefRef: elasticsearch
-       replicas: 1
-       resources: # 修改 resources 下的参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-    ```bash
-    kbcli cluster vscale mycluster --cpu=2 --memory=3Gi --components=elasticsearch -n demo
-    ```
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 Succeed 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-rpw2l -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示正在进行垂直扩容。
-       - STATUS=Running 表示垂直扩容已完成。
-       - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-          > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者您也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 磁盘扩容
-
-### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster                                                 Delete               Running   49m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: elasticsearch
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: elasticsearch
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: elasticsearch
-     clusterVersionRef: elasticsearch-8.8.2
-     componentSpecs:
-     - name: elasticsearch
-       componentDefRef: elasticsearch
-       replicas: 1 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    ```bash
-    kbcli cluster volume-expand elasticsearch --storage=40Gi --components=elasticsearch -t data -n demo
-    ```
-
-    - `--components` 表示需扩容的组件名称。
-    - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-    - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops elasticsearch-volumeexpansion-5pbd2 -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS      CREATED-TIME
-       mycluster   demo                                               Delete               Updating    Sep 27,2024 11:42 UTC+0800
-       ```
-
-       * STATUS=Updating 表示扩容正在进行中。
-       * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。当集群停止时，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-### 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-    将 replicas 的值修改为 0，删除 pod。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: elasticsearch
-      clusterVersionRef: elasticsearch-8.8.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: elasticsearch
-        componentDefRef: elasticsearch
-        disableExporter: true  
-        replicas: 0
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: standard
-            accessModes:
-             - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-  
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-    将 replicas 数值修改为初始值，启动集群。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: elasticsearch
-      clusterVersionRef: elasticsearch-8.8.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: elasticsearch
-        componentDefRef: elasticsearch
-        disableExporter: true  
-        replicas: 1
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: standard
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否再次启动。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-集群重启后，主节点可能会发生变化。
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 执行以下命令，重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: elasticsearch
-   EOF
-   ```
-
-2. 查看 pod 和运维操作状态，验证重启操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 执行以下命令，重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，执行以下命令来重启指定集群。
-
-   ```bash
-   kbcli cluster restart elasticsearch --components="elasticsearch" \
-   --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启是否成功。
-
-   检查集群状态，验证重启操作是否成功。
-
-   ```bash
-   kbcli cluster list elasticsearch
-   >
-   NAME            NAMESPACE   CLUSTER-DEFINITION          VERSION               TERMINATION-POLICY   STATUS    CREATED-TIME
-   elasticsearch   default     elasticsearch               elasticsearch-8.8.2   Delete               Running   Jul 05,2024 17:51 UTC+0800
-   ```
-
-   - STATUS=Updating 表示集群正在重启中。
-   - STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
-
-## 删除集群
-
-### 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster                                                 Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo                                               Delete               Running   Sep 27,2024 11:42 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/_category_.yml
deleted file mode 100644
index 2ec90d95d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 17
-label: 用 KubeBlocks 管理 Kafka
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/_category_.yml
deleted file mode 100644
index e337e232a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/connect-to-a-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/connect-to-a-cluster.md
deleted file mode 100644
index 2b6126d7b..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/connect-to-a-cluster.md
+++ /dev/null
@@ -1,277 +0,0 @@
----
-title: 连接到 Kafka 集群
-description: 如何连接到 Kafka 集群
-keywords: [kafka, 连接 Kafka 集群, 连接, 网络]
-sidebar_position: 2
-sidebar_label: 连接
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 连接到 Kafka 集群
-
-## 概述
-
-在连接 Kafka 集群之前，请检查网络环境，并确认连接场景。一般来说，有三种连接场景：
-
-- 在 Kubernetes 集群内连接到 Kafka 集群。
-- 在 Kubernetes 集群外同一 VPC 下连接到 Kafka 集群。
-- 在公共互联网连接到 Kafka 集群。
-
-## 在 Kubernetes 集群内连接到 Kafka 集群
-
-通过直连 Kafka 集群的 ClusterIP service:9092 访问。
-
-***步骤：***
-
-1. 获取 Kafka ClusterIP 服务的地址和端口号。
-
-   ```bash
-   kubectl get svc
-   ```
-
-   *示例:*
-
-   ```bash
-   NAME                    TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                               AGE
-   kubernetes              ClusterIP   10.43.0.1     <none>        443/TCP                               9d
-   ivy85-broker-headless   ClusterIP   None          <none>        9092/TCP,9093/TCP,9094/TCP,5556/TCP   7d16h
-   ivy85-broker            ClusterIP   10.43.8.124   <none>        9093/TCP,9092/TCP,5556/TCP            7d16h
-   ```
-
-2. 使用端口号连接到 Kafka 集群。
-
-   下面展示如何使用官方客户端脚本连接 Kafka 集群。
-
-   a. 启动客户端 Pod。
-
-     ```bash
-     kubectl run kafka-producer --restart='Never' --image docker.io/bitnami/kafka:3.3.2-debian-11-r54 --command -- sleep infinity
-     kubectl run kafka-consumer --restart='Never' --image docker.io/bitnami/kafka:3.3.2-debian-11-r54 --command -- sleep infinity
-     ```
-
-   b. 登录 kafka-producer。
-
-     ```bash
-     kubectl exec -ti kafka-producer -- bash
-     ```
-
-   c. 创建 topic。
-
-     ```bash
-     kafka-topics.sh --create --topic quickstart-events --bootstrap-server xxx-broker:9092
-     ```
-
-   d. 创建 producer。
-
-     ```bash
-     kafka-console-producer.sh --topic quickstart-events --bootstrap-server xxx-broker:9092
-     ```
-
-   e. 输入：Hello, KubeBlocks，然后按 Enter 键。
-
-   f. 打开新的终端窗口并登录到 kafka-consumer。
-
-     ```bash
-     kubectl exec -ti kafka-consumer -- bash
-     ```
-
-   g. 创建 consumer，指定消费 topic 和从开头开始消费消息。
-
-     ```bash
-     kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server xxx-broker:9092
-     ```
-
-    然后将得到输出 'Hello, KubeBlocks'。
-
-## 在 Kubernetes 集群外同一 VPC 下连接到 Kafka 集群
-
-许多使用 AWS EKS 的用户希望能从 EC2 实例访问 Kafka 集群，本节将展示具体操作步骤。
-
-***步骤：***
-
-1. 将 `host-network-accessible` 的值设置为 true。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - componentDefRef: kafka-server
-       disableExporter: true
-       name: broker
-       replicas: 1
-       resources:
-         limits:
-           cpu: "1"
-           memory: 1Gi
-         requests:
-           cpu: "1"
-           memory: 1Gi
-       serviceAccountName: kb-sa-kafka
-       services:
-       - annotations:
-           service.beta.kubernetes.io/aws-load-balancer-type: nlb
-           service.beta.kubernetes.io/aws-load-balancer-internal: "true"
-         name: vpc
-         serviceType: LoadBalancer
-       tls: false
-     terminationPolicy: Delete
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster create kafka mycluster --host-network-accessible=true -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 获取相应的 ELB 地址。
-
-   ```bash
-   kubectl get svc -n demo
-   ```
-
-   ![获取 ELB 地址](../../../img/connect-to-a-kafka-cluster-gain-elb-address.png)
-
-  :::note
-
-  xxxxxx-xxx.cn-northwest-1.elb.amazonaws.com.cn 是 K8s 外部同一 VPC 下能访问的 ELB 地址。
-
-  :::
-
-3. 使用 ELB 地址进行连接。
-
-    在上例中，ELB 地址为 a0e01377fa33xxx-xxx.cn-northwest-1.elb.amazonaws.com.cn:9092。
-
-## 在公共互联网连接到 Kafka 集群
-
-:::caution
-
-限制条件：目前版本只支持 Kafka broker 单 replica（combined: --replicas=1 或 separated: --broker-replicas=1）使用以下方案。
-
-:::
-
-***步骤：***
-
-1. 将 `--publicly-accessible` 的值设置为 true。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - componentDefRef: kafka-server
-       disableExporter: true
-       name: broker
-       replicas: 1
-       resources:
-         limits:
-           cpu: "1"
-           memory: 1Gi
-         requests:
-           cpu: "1"
-           memory: 1Gi
-       serviceAccountName: kb-sa-kafka
-       services:
-       - annotations:
-           service.beta.kubernetes.io/aws-load-balancer-type: nlb
-           service.beta.kubernetes.io/aws-load-balancer-internal: "false"
-         name: vpc
-         serviceType: LoadBalancer
-       tls: false
-     terminationPolicy: Delete
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster create kafka mycluster --publicly-accessible=true -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 获取实例对应的 ELB 地址。
-
-   ```bash
-   kubectl get svc -n demo
-   ```
-
-   下图为查看 ELB 地址的示例。
-
-   ![获取 ELB 地址](./../../../img/kafka-connect-cross-vpc.png)
-
-  :::note
-
-  xxxx-xxxx.cn-northwest-1.elb.amazonaws.com.cn 是公网下能访问的 ELB 地址。
-
-  :::
-
-3. 配置 hostname 映射。
-
-   1. 登录远程机器。
-   2. 查看 ELB 地址 IP。
-
-      ```bash
-      nslookup a96caad7bab59xxxx-xxxx.cn-northwest-1.elb.amazonaws.com.cn
-      ```
-
-   3. 获取 Broker 地址。
-
-      Broker 地址为固定格式，将下面字符串中 `{clusterName}` 替换成 Kafka Cluster Name 即可。
-
-      ```bash
-      {clusterName}-broker-0.{clusterName}-broker-headless.default.svc
-      ```
-
-   4. 配置 /etc/hosts 映射。
-
-       ```bash
-       vi /etc/hosts
-       # 最下方添加,注意将 {clusterName} 和 IP 地址替换成真实的值：
-       52.83.xx.xx {clusterName}-broker-0.{clusterName}-broker-headless.default.svc
-       ```
-
-4. 使用 ELB 地址进行连接。
-
-    在上例中，ELB 地址为 xxxx-xxxx.cn-northwest-1.elb.amazonaws.com.cn:9092。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md
deleted file mode 100644
index b3cf28ccf..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/create-a-kafka-cluster.md
+++ /dev/null
@@ -1,280 +0,0 @@
----
-title: 创建 Kafka 集群
-description: 如何创建 Kafka 集群
-keywords: [kafka, 集群, 管理]
-sidebar_position: 1
-sidebar_label: 创建
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建 Kafka 集群
-
-本文档展示如何创建一个 Kafka 集群。
-
-## 开始之前
-
-* 如果您想通过 `kbcli` 创建和管理集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 Kafka 引擎 已启用。如果引擎未启用，可参考相关文档，[启用该引擎](./../../installation/install-addons.md)。
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io kafka
-  >
-  NAME    TYPE   VERSION   PROVIDER   STATUS    AGE
-  kafka   Helm                        Enabled   13m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                           TYPE   STATUS     EXTRAS         AUTO-INSTALL  
-  ...
-  kafka                          Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 为保持隔离，本教程中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-:::note
-
-- KubeBlocks 集成了 Kafka v3.3.2，以 KRaft 模式运行。
-- 在生产环境中，不建议以组合模式使用 KRaft 集群。
-- 建议将控制器数量设置在 3 到 5 个之间，实现复杂性和可用性的平衡。
-
-:::
-
-## 创建 Kafka 集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 Kafka 集群。
-
-   KubeBlocks 通过 `Cluster` 定义集群。以下为创建不同模式 Kafka 集群的示例。
-
-   如果您只有一个节点可用于部署多副本集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-   * 创建组合模式的 Kafka 集群。
-
-     ```yaml
-     # 组合模式
-     kubectl apply -f - <<EOF
-     apiVersion: apps.kubeblocks.io/v1
-     kind: Cluster
-     metadata:
-       name: mycluster
-       namespace: demo
-     spec:
-       terminationPolicy: Delete
-       clusterDef: kafka
-       topology: combined_monitor
-       componentSpecs:
-         - name: kafka-combine
-           env:
-             - name: KB_KAFKA_BROKER_HEAP # use this ENV to set BROKER HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_KAFKA_CONTROLLER_HEAP # use this ENV to set CONTROLLER_HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_BROKER_DIRECT_POD_ACCESS # set to FALSE for node-port
-               value: "true"
-           replicas: 1
-           resources:
-             limits:
-               cpu: "1"
-               memory: "1Gi"
-             requests:
-               cpu: "0.5"
-               memory: "0.5Gi"
-           volumeClaimTemplates:
-             - name: data
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 20Gi
-             - name: metadata
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 1Gi
-         - name: kafka-exporter 
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "1Gi"
-             requests:
-               cpu: "0.1"
-               memory: "0.2Gi"
-     EOF
-     ```
-
-   * 创建分离模式的 Kafka 集群。
-
-     ```yaml
-     # 分离模式
-     kubectl apply -f - <<EOF
-     apiVersion: apps.kubeblocks.io/v1
-     kind: Cluster
-     metadata:
-       name: mycluster
-       namespace: demo
-     spec:
-       terminationPolicy: Delete
-       clusterDef: kafka
-       topology: separated_monitor
-       componentSpecs:
-         - name: kafka-broker
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "0.5Gi"
-             requests:
-               cpu: "0.5"
-               memory: "0.5Gi"
-           env:
-             - name: KB_KAFKA_BROKER_HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_KAFKA_CONTROLLER_HEAP
-               value: "-XshowSettings:vm -XX:MaxRAMPercentage=100 -Ddepth=64"
-             - name: KB_BROKER_DIRECT_POD_ACCESS
-               value: "true"
-           volumeClaimTemplates:
-             - name: data
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 20Gi
-             - name: metadata
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 1Gi
-         - name: kafka-controller
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "0.5Gi"
-             requests:
-               cpu: "0.5"
-               memory: "0.5Gi"
-           volumeClaimTemplates:
-             - name: metadata
-               spec:
-                 storageClassName: ""
-                 accessModes:
-                   - ReadWriteOnce
-                 resources:
-                   requests:
-                     storage: 1Gi
-         - name: kafka-exporter
-           replicas: 1
-           resources:
-             limits:
-               cpu: "0.5"
-               memory: "1Gi"
-             requests:
-               cpu: "0.1"
-               memory: "0.2Gi"
-     EOF
-     ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-mysql-cluster.md#终止策略)。 |
-   | `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 Kafka 集群时，该值必须为 `kafka`。 |
-   | `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。有效值为 [combined,combined_monitor,separated,separated_monitor]。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-2. 查看集群是否创建成功。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-   mycluster   kafka                kafka-3.3.2   Delete               Running   2m2s
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建 Kafka 集群。
-
-   使用 `kbcli cluster create` 命令创建集群。
-
-   ```bash
-   kbcli cluster create kafka mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create kafka --help
-   kbcli cluster create kafka -h
-   ```
-
-   如果您只有一个节点用于部署多副本集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create kafka mycluster \
-       --mode='combined' \
-       --replicas=3 \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/delete-kafka-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/delete-kafka-cluster.md
deleted file mode 100644
index 5032b1cb2..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/delete-kafka-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [kafka, 删除集群, 删除保护]
-sidebar_position: 7
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除集群
-
-## 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式，可在创建集群时进行设置。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/expand-volume.md
deleted file mode 100644
index 20bf91f47..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,190 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-keywords: [kafka, 磁盘扩容]
-sidebar_position: 4
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 磁盘存储扩容。
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volumeexpansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: broker
-       volumeClaimTemplates:
-       - name: data
-         storage: 40Gi
-   EOF
-   ```
-
-2. 验证磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-     Name:  data
-     Spec:
-       Access Modes:
-         ReadWriteOnce
-       Resources:
-         Requests:
-           Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 在集群的 YAML 文件中更改 `spec.components.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.components.volumeClaimTemplates.spec.resources` 是 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - name: kafka
-       componentDefRef: kafka
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改该参数值
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-     Name:  data
-     Spec:
-       Access Modes:
-         ReadWriteOnce
-       Resources:
-         Requests:
-           Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 使用 `kbcli cluster volume-expand` 命令配置所需资源，然后再次输入集群名称进行磁盘扩容。
-
-   ```bash
-   kbcli cluster volume-expand mycluster -n demo --storage=40Gi --components=kafka --volume-claim-templates=data
-   ```
-
-   - `--components` 表示需扩容的组件名称。
-   - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-   - `--storage` 表示磁盘需扩容至的大小。
-
-2. 验证磁盘扩容操作是否成功。
-
-   - 查看 OpsRequest 进度。
-
-     执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME             NAMESPACE     CLUSTER-DEFINITION        VERSION                  TERMINATION-POLICY        STATUS          CREATED-TIME
-     mycluster        demo          kafka                     kafka-3.3.2              Delete                    Updating        Sep 27,2024 15:27 UTC+0800
-     ```
-
-     * STATUS=Updating 表示扩容正在进行中。
-     * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/restart-a-kafka-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/restart-a-kafka-cluster.md
deleted file mode 100644
index c31c2b998..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/restart-a-kafka-cluster.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [kafka, 重启]
-sidebar_position: 5
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-重启集群将触发 Pod 并行重启。重启后，主节点可能会发生变化。
-
-:::
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest，重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: broker
-   EOF
-   ```
-
-2. 查看 pod 和运维操作状态，验证重启操作。
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="kafka" \
-     --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启操作。
-
-   执行以下命令，检查集群状态，验证重启操作。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME    CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-   kafka   kafka                kafka-3.3.2    Delete               Running    19m
-   ```
-
-   * STATUS=Updating 表示集群正在重启中。
-   * STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/scale.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/scale.md
deleted file mode 100644
index 9ad976da6..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/scale.md
+++ /dev/null
@@ -1,491 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [kafka, 水平扩缩容, 垂直扩缩容]
-sidebar_position: 3
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Kafka 集群扩缩容
-
-KubeBlocks 支持对 Kafka 集群进行垂直扩缩容和水平扩缩容。
-
-## 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: broker
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     componentSpecs:
-     - name: broker
-       componentDefRef: broker
-       replicas: 1
-       resources: # 修改参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-   ```bash
-   kbcli cluster vscale mycluster -n demo --components="broker" --memory="4Gi" --cpu="2" 
-   ```
-
-   - `--components` 的值可以是 `broker` 或 `controller`。
-     - broker：在组合模式下表示所有节点；在分离模式下表示所有 broker 节点。
-     - controller：表示在分离模式下的所有对应节点。
-   - `--memory` 表示组件内存的请求和限制大小。
-   - `--cpu` 表示组件 CPU 的请求和限制大小。
-  
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME             NAMESPACE        CLUSTER-DEFINITION       VERSION                TERMINATION-POLICY        STATUS          CREATED-TIME
-     mycluster        demo         kafka                    kafka-3.3.2            Delete                    Updating        Sep 27,2024 15:15 UTC+0800
-     ```
-
-     - STATUS=Updating 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-       > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-   :::note
-
-   垂直扩容不会同步与 CPU 和内存相关的参数，需要手动调用配置的 OpsRequest 来进行更改。详情请参考[配置](./../configuration/configuration.md)。
-
-   :::
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，你可以应用水平扩容将 Pod 的数量从三个增加到五个。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [水平扩缩容文档](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-- 确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl -n demo get cluster mycluster
-   >
-   NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-   mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-   ```
-
-   </TabItem>
-
-   </Tabs>
-- 不建议在 controller 节点上进行水平扩缩容（包括组合模式和分离模式的 controller 节点）。
-- 在进行水平扩缩容时，必须了解主题分区（topic partition）的存储情况。如果主题只有一个副本，在 broker 扩缩容时可能会导致数据丢失。
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: broker
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: broker
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2 
-     componentSpecs:
-     - name: broker
-       componentDefRef: broker
-       replicas: 2 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  kafka
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      kafka
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-   ```bash
-   kbcli cluster hscale mycluster -n demo \
-     --components="broker" --replicas=3
-   ```
-
-   - `--components` - 的值可以是 `broker` 或 `controller`。
-     - broker：在组合模式下表示所有节点；在分离模式下表示所有 broker 节点。
-     - controller：表示在分离模式下的所有对应节点。
-   - `--memory` 表示组件请求和限制的内存大小。
-   - `--cpu` 表示组件请求和限制的 CPU 大小。
-   - `--replicas` 表示指定组件的副本数。
-
-2. 验证水平扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-     - STATUS=Updating 表示正在进行水平扩容。
-     - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/ivy85-kafka-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. 删除错误的备份（volumesnapshot 由备份生成）和 volumesnapshot 资源。
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/stop-start-a-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/stop-start-a-cluster.md
deleted file mode 100644
index 2922bae8c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/cluster-management/stop-start-a-cluster.md
+++ /dev/null
@@ -1,183 +0,0 @@
----
-title: 停止/启动集群
-description: 如何停止/启动集群
-keywords: [kafka, 停止集群, 启动集群]
-sidebar_position: 6
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-***步骤：***
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-stop
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Stop
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   将 replicas 设为 0，删除 Pods。
-
-   ```yaml
-   >
-   ...
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: kafka
-       componentDefRef: kafka
-       disableExporter: true
-       replicas: 0 # 修改该参数值
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster stop mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 检查集群的状态，查看其是否已停止。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-## 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-   将 replicas 数值调整为停止集群前的数量，再次启动集群。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: kafka
-     clusterVersionRef: kafka-3.3.2
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: kafka
-       componentDefRef: kafka
-       disableExporter: true
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           storageClassName: standard
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 20Gi
-     ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否已启动。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration-recommendations-for-production-environments.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration-recommendations-for-production-environments.md
deleted file mode 100644
index fbfaa7c83..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration-recommendations-for-production-environments.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: 资源描述
-description: Kafka 资源描述
-keywords: [kafka, Java 堆, 硬件资源]
-sidebar_position: 4
-sidebar_label: 资源描述
----
-
-# 资源描述
-
-## Java Heap
-
-指 Kafka 服务器的 JVM 堆配置。在生产环境中，请参考[官方推荐配置](https://kafka.apache.org/33/documentation.html#java)：
-
-```bash
--Xmx6g -Xms6g -XX:MetaspaceSize=96m -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:G1HeapRegionSize=16M -XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80 -XX:+ExplicitGCInvokesConcurrent
-```
-
-- 组合模式
-    在创建 Kafka 集群时，使用 `--broker-heap` 指定堆配置。
-- 分离模式
-    在创建Kafka集群时，使用 `--broker-heap` 指定组件的堆配置；使用 `--controller-heap` 指定控制器的堆配置。
-
-:::note
-
-在修改 Java 堆配置时，请特别注意分配给集群的资源。例如，如果设置了 `--memory=1Gi`，但在 `--broker-heap` 中指定了 `-Xms` 为 `6g`，那么就可能由于内存不足导致 broker 服务无法正常启动。
-
-:::
-
-## 硬件资源
-
-建议在生产环境中使用以下硬件资源：
-
-- `-cpu` >= 16 核
-- `-memory` >= 64 Gi
-
-由于 Kafka 使用大量的页面缓存来提高读写速度，因此分配在堆内存之外的内存资源可以提高整体性能。
-
-- `-storage` 需根据具体情况进行配置。
-
-Kafka 集群的默认压缩算法是 `compression.type=producer`，由生产者端指定。在设置前，你可以参考主题的平均消息大小、压缩比率、主题副本数量和数据保留时间进行综合评估。
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration/_category_.yml
deleted file mode 100644
index f7f240b8d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration/configuration.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration/configuration.md
deleted file mode 100644
index 2464e4133..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/configuration/configuration.md
+++ /dev/null
@@ -1,339 +0,0 @@
----
-title: 配置集群参数
-description: 如何配置集群参数
-keywords: [kafka, 参数, 配置, 再配置]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-KubeBlocks 提供了一套默认的配置生成策略，适用于在 KubeBlocks 上运行的所有数据库，此外还提供了统一的参数配置接口，便于管理参数配置、搜索参数用户指南和验证参数有效性等。
-
-从 v0.6.0 版本开始，KubeBlocks 支持使用 `kbcli cluster configure` 和 `kbcli cluster edit-config` 两种方式来配置参数。它们的区别在于，`kbcli cluster configure` 可以自动配置参数，而 `kbcli cluster edit-config` 则允许以可视化的方式直接编辑参数。
-
-<Tabs>
-
-<TabItem value="编辑配置文件" label="编辑配置文件" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-kafka-combine -n demo
-   ```
-
-2. 按需配置参数。以下实例中添加了 `spec.configFileParams`，用于配置 `log.cleanup.policy` 参数。
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: kafka-combine
-     configItemDetails:
-     - configFileParams:
-         server.properties:
-           parameters:
-             log.cleanup.policy: "compact"
-       configSpec:
-         constraintRef: kafka-cc
-         name: kafka-configuration-tpl
-         namespace: kb-system
-         templateRef: kafka-configuration-tpl
-         volumeName: kafka-config
-       name: kafka-configuration-tpl
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. 确认配置是否生效。
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy = compact
-   mycluster-reconfiguring-wvqns   mycluster   broker      kafka-configuration-tpl   server.properties   Succeed   restart   1/1        May 10,2024 16:28 UTC+0800   {"server.properties":"{\"log.cleanup.policy\":\"compact\"}"}
-   ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`log.cleanup.policy` 参数修改为 `compact`。
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: kafka
-       configurations:
-       - keys:
-         - key: server.properties
-           parameters:
-           - key: log.cleanup.policy
-             value: "compact"
-         name: kafka-configuration-tpl
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   EOF
-   ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 OpsRequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了该集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. 确认配置是否生效。
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy = compact
-   ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-查看集群的当前配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo 
-```
-
-从元数据中可以看到，集群 `mycluster` 有一个名为 `server.properties` 的配置文件。
-
-你也可以查看此配置文件和参数的详细信息。
-
-* 查看当前配置文件的详细信息。
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail
-   ```
-
-* 查看参数描述。
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* 查看指定参数的用户指南。
-  
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --param=log.cleanup.policy
-  ```
-
-  <details>
-
-  <summary>输出</summary>
-
-  ```bash
-  template meta:
-    ConfigSpec: kafka-configuration-tpl	ComponentName: broker	ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     log.cleanup.policy
-    Allowed Values:     "compact","delete"
-    Scope:              Global
-    Dynamic:            false
-    Type:               string
-    Description:        The default cleanup policy for segments beyond the retention window. A comma separated list of valid policies. 
-  ```
-  
-  </details>
-
-  * Allowed Values： 定义了参数的有效值范围。
-  * Dynamic：决定了参数配置的生效方式。目前，Kafka 仅支持 `Dynamic` 为 `false` 的情况，参数的生效类型是**静态**的，需要重新启动 Pod 才能生效。
-  * Description：描述了参数的定义。
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-1. 查看 `log.cleanup.policy` 的值。
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy=delete
-   ```
-
-2. 调整 `log.cleanup.policy` 的值。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --set=log.cleanup.policy=compact
-   ```
-
-   :::note
-
-   确保设置的值在该参数的 Allowed Values 范围内。否则，配置可能会失败。
-
-   :::
-
-3. 查看参数配置状态。
-
-   `Status.Progress` 和 `Status.Status` 展示参数配置的整体状态，而 `Conditions` 展示详细信息。
-
-   当 `Status.Status` 为 `Succeed` 时，配置完成。
-
-   <details>
-
-   <summary>输出</summary>
-
-   ```bash
-   # 参数配置进行中
-   kbcli cluster describe-ops mycluster-reconfiguring-wvqns -n default
-   >
-   Spec:
-     Name: mycluster-reconfiguring-wvqns	NameSpace: default	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=broker --config-specs=kafka-configuration-tpl --config-file=server.properties --set log.cleanup.policy=compact --namespace=default
-
-   Status:
-     Start Time:         Sep 14,2023 16:28 UTC+0800
-     Duration:           5s
-     Status:             Running
-     Progress:           0/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-   ```
-
-   ```bash
-   # 参数配置已完成
-   kbcli cluster describe-ops mycluster-reconfiguring-wvqns -n demo
-   >
-   Spec:
-     Name: mycluster-reconfiguring-wvqns	NameSpace: default	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=broker --config-specs=kafka-configuration-tpl --config-file=server.properties --set log.cleanup.policy=compact --namespace=default
-
-   Status:
-     Start Time:         Sep 14,2023 16:28 UTC+0800
-     Completion Time:    Sep 14,2023 16:28 UTC+0800
-     Duration:           25s
-     Status:             Succeed
-     Progress:           1/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-   ```
-
-   </details>
-
-4. 查看配置文件，验证参数是否按预期配置。
-
-   配置生效过程约需要 30 秒，这是由于 kubelet 需要一定时间才能将对 ConfigMap 的修改同步到 Pod 的卷。
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail | grep log.cleanup.policy
-   >
-   log.cleanup.policy = compact
-   mycluster-reconfiguring-wvqns   mycluster   broker      kafka-configuration-tpl   server.properties   Succeed   restart   1/1        Sep 14,2023 16:28 UTC+0800   {"server.properties":"{\"log.cleanup.policy\":\"compact\"}"}
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，帮助以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   如果集群中有多个组件，请使用 `--component` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops xxx -n demo
-   ```
-
-3. 连接到数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2. KubeBlocks 未来将支持删除参数。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，你可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo                 
-```
-
-从上面可以看到，有三个参数被修改过。
-
-比较这些改动，查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-wvqns mycluster-reconfiguring-hxqfx -n demo
->
-DIFF-CONFIG RESULT:
-  ConfigFile: server.properties	TemplateName: kafka-configuration-tpl	ComponentName: broker	ClusterName: mycluster	UpdateType: update
-
-PARAMETERNAME         MYCLUSTER-RECONFIGURING-WVQNS   MYCLUSTER-RECONFIGURING-HXQFX
-log.retention.hours   168                             200
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/kubeblocks-for-kafka.md b/i18n/zh-cn/user-docs/kubeblocks-for-kafka/kubeblocks-for-kafka.md
deleted file mode 100644
index be7d59327..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-kafka/kubeblocks-for-kafka.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: 用 KubeBlocks 管理 Kafka
-description: KubeBlocks 中的 Kafka 功能列表
-keywords: [kafka, 简介, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 Kafka
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 Kafka 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/kafka)查看 YAML 示例。
-
-* [集群管理](./cluster-management/create-a-kafka-cluster.md)
-* [配置](./configuration/configuration.md)
-* [资源描述](./configuration-recommendations-for-production-environments.md)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-milvus/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-milvus/_category_.yml
deleted file mode 100644
index 41920587f..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-milvus/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 16
-label: 用 KubeBlocks 管理 Milvus
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-milvus/manage-milvus.md b/i18n/zh-cn/user-docs/kubeblocks-for-milvus/manage-milvus.md
deleted file mode 100644
index 9921d10de..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-milvus/manage-milvus.md
+++ /dev/null
@@ -1,923 +0,0 @@
----
-title: 用 KubeBlocks 管理 Milvus
-description: 如何用 KubeBlocks 管理 Milvus
-keywords: [milvus, 向量数据库]
-sidebar_position: 1
-sidebar_label: 用 KubeBlocks 管理 Milvus
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 用 KubeBlocks 管理 Milvus
-
-生成式人工智能的爆火引发了人们对向量数据库的关注。目前，KubeBlocks 支持 Milvus 的管理和运维。本文档展示如何使用 KubeBlocks 管理 Milvus。
-
-Milvus 是高度灵活、可靠且速度极快的云原生开源矢量数据库。它为 embedding 相似性搜索和 AI 应用程序提供支持，并努力使每个组织都可以访问矢量数据库。 Milvus 可以存储、索引和管理由深度神经网络和其他机器学习 (ML) 模型生成的十亿级别以上的 embedding 向量。
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理  Milvus 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/milvus)查看 YAML 示例。
-
-## 开始之前
-
-- 如果您想通过 `kbcli` 创建并连接 Milvus 集群，请先[安装 kbcli](./../installation/install-kbcli.md)。
-- [安装 KubeBlocks](./../installation/install-kubeblocks.md)。
-- [安装并启用 milvus 引擎](./../installation/install-addons.md)。
-- 为了保持隔离，本文档中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-## 创建集群
-
-***步骤：***
-
-KubeBlocks 通过 `Cluster` 定义集群。以下是创建 Milvus 集群的示例。Pod 默认分布在不同节点。如果您只有一个节点可用于部署多副本集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  namespace: demo
-  name: mycluster
-spec:
-  terminationPolicy: Delete
-  clusterDef: milvus
-  topology: cluster
-  componentSpecs:
-    - name: proxy
-      replicas: 1
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage 
-          namespace: demo        
-          clusterServiceSelector:
-            cluster: etcdm-cluster  
-            service:
-              component: etcd       
-              service: headless     
-              port: client          
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:            
-              component: minio     
-              name: admin          
-      disableExporter: true
-    - name: mixcoord
-      replicas: 1
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-    - name: datanode
-      replicas: 1
-      disableExporter: true
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-    - name: indexnode
-      replicas: 1
-      disableExporter: true
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-    - name: querynode
-      replicas: 1
-      disableExporter: true
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      serviceRefs:
-        - name: milvus-meta-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: etcdm-cluster
-            service:
-              component: etcd
-              service: headless
-              port: client
-
-        - name: milvus-log-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: pulsarm-cluster
-            service:
-              component: broker
-              service: headless
-              port: pulsar
-
-        - name: milvus-object-storage
-          namespace: demo
-          clusterServiceSelector:
-            cluster: miniom-cluster
-            service:
-              component: minio
-              service: headless
-              port: http
-            credential:
-              component: minio
-              name: admin
-
-      disableExporter: true
-EOF
-```
-
-| 字段                                   | 定义  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](#终止策略)。 |
-| `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 Milvus 集群时，该值必须为 `milvus`。 |
-| `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。可选值为[standalone, cluster]。 |
-| `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-| `spec.componentSpecs.serviceRefs` | 定义了 component 的 ServiceRef 列表。 |
-| `spec.componentSpecs.serviceRefs.name` | 指定了服务引用声明的标识符，该标识符在 `componentDefinition.spec.serviceRefDeclarations[*].name` 中定义。 |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector` | 引用了另一个 KubeBlocks 集群提供的服务。 |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.cluster` | 定义了集群名称，您可以按需修改。 |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.service.component` | 定义了组件名称。 |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.service.service` | 引用了默认的无头服务（headless Service）。 |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.service.port` | 引用了端口名称。 |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.credential` | 指定了用于验证并与被引用集群建立连接的系统账号（SystemAccount）。  |
-| `spec.componentSpecs.serviceRefs.clusterServiceSelector.credential.name` | 指定了要引用的凭证（SystemAccount）名称，本例中使用 'admin' 账号。 |
-| `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-| `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-| `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-
-您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-执行以下命令，查看已创建的 Milvus 集群：
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-## 扩缩容
-
-当前，KubeBlocks 支持垂直扩缩容 Milvus 集群。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster   milvus-2.3.2                                  Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        milvus-2.3.2                           Delete               Running   Jul 05,2024 17:35 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: milvus
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: milvus
-     clusterVersionRef: milvus-2.3.2
-     componentSpecs:
-     - name: milvus
-       componentDefRef: milvus
-       replicas: 1
-       resources: # Change the values of resources.
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-    ```bash
-    kbcli cluster vscale milvus -n demo --cpu=1 --memory=1Gi --components=milvus 
-    ```
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops milvus-verticalscaling-rpw2l -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-     mycluster   demo                                               Delete               Updating   Jul 05,2024 17:35 UTC+0800
-     ```
-
-     - STATUS=VerticalScaling 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-       > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 磁盘扩容
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster   milvus-2.3.2                                  Delete               Running   4m29s
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        milvus-2.3.2                           Delete               Running   Jul 05,2024 17:35 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: milvus
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi"
-    EOF
-    ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的配置。`spec.componentSpecs.volumeClaimTemplates.spec.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: milvus
-     clusterVersionRef: milvus-2.3.2
-     componentSpecs:
-     - name: milvus
-       componentDefRef: milvus
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改磁盘容量
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-   ```bash
-   kbcli cluster volume-expand milvus --storage=40Gi --components=milvus
-   ```
-
-   - `--components` 表示需扩容的组件名称。
-   - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-   - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops milvus-volumeexpansion-5pbd2 -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示扩容正在进行中。
-       - STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 重启
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 执行以下命令，重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: milvus
-   EOF
-   ```
-
-2. 查看 pod 和运维操作状态，验证重启操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `--components` 和 `--ttlSecondsAfterSucceed` 的值，重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster --components="milvus" -n demo \
-     --ttlSecondsAfterSucceed=30
-   ```
-
-   - `--components` 表示需要重启的组件名称。
-   - `--ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启操作。
-
-   执行以下命令检查集群状态，并验证重启操作。
-
-   ```bash
-   kbcli cluster list milvus -n demo
-   >
-   NAME     NAMESPACE   CLUSTER-DEFINITION     VERSION         TERMINATION-POLICY   STATUS    CREATED-TIME
-   milvus   default     milvus-2.3.2           milvus-2.3.2    Delete               Running   Jul 05,2024 18:35 UTC+0800
-   ```
-
-   * STATUS=Updating 表示集群正在重启中。
-   * STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
-
-## 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-### 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 设为 0，删除 Pods。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: milvus
-      clusterVersionRef: milvus-2.3.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: milvus
-        componentDefRef: milvus
-        disableExporter: true  
-        replicas: 0 # 修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-    
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 数值改为停止集群前的数值，再次启动集群。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: milvus
-      clusterVersionRef: milvus-2.3.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: milvus
-        componentDefRef: milvus
-        disableExporter: true  
-        replicas: 1 # 修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已再次运行。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 删除集群
-
-### 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION                  TERMINATION-POLICY   STATUS    AGE
-mycluster   milvus-2.3.2                                  Delete               Running   29m 
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        milvus-2.3.2                           Delete               Running   Jul 05,2024 17:35 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/_category_.yml
deleted file mode 100644
index 711ebd5d9..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 14
-label: 用 KubeBlocks 管理 MongoDB
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/_category_.yml
deleted file mode 100644
index e337e232a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md
deleted file mode 100644
index ca08104db..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md
+++ /dev/null
@@ -1,285 +0,0 @@
----
-title: 创建并连接到 MongoDB 集群
-description: 如何创建并连接到 MongoDB 集群
-keywords: [mongodb, 创建 MongoDB 集群, 连接 MongoDB 集群]
-sidebar_position: 1
-sidebar_label: 创建并连接
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建并连接到 MongoDB 集群
-
-本文档展示如何创建并连接到一个 MongoDB 集群。
-
-## 创建 MongoDB 集群
-
-### 开始之前
-
-* 如果您想通过 `kbcli` 创建并连接 MongoDB 集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 MongoDB 引擎已启用。如果引擎未安装/启用，可参考相关文档，[安装/启用该引擎](./../../installation/install-addons.md)。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get addons.extensions.kubeblocks.io mongodb
-   >
-   NAME      TYPE   VERSION   PROVIDER   STATUS    AGE
-   mongodb   Helm                        Enabled   23m
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli addon list
-   >
-   NAME                           TYPE   STATUS     EXTRAS         AUTO-INSTALL   
-   ...
-   mongodb                        Helm   Enabled                   true
-   ...
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-* 查看可用于创建集群的数据库类型和版本。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get clusterdefinition mongodb
-   >
-   NAME      TOPOLOGIES   SERVICEREFS   STATUS      AGE
-   mongodb                              Available   23m
-   ```
-
-   ```bash
-   kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=mongodb
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli clusterdefinition list
-
-   kbcli clusterversion list
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-* 为了保持隔离，本文档中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-### 创建集群
-
-KubeBlocks 支持创建两种 MongoDB 集群：单机版（Standalone）和主备版（ReplicaSet）。MongoDB 单机版仅支持一个副本，适用于对可用性要求较低的场景。对于高可用性要求较高的场景，建议创建主备版集群，以支持自动故障切换。为了确保高可用性，所有的副本都默认分布在不同的节点上。如果您只有一个节点可用于部署主备版集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 MongoDB 集群。
-
-   KubeBlocks 通过 `Cluster` 定义集群。以下是创建 MongoDB 单机版的示例。
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: mongodb
-     topology: replicaset
-     componentSpecs:
-       - name: mongodb
-         serviceVersion: "6.0.16"
-         replicas: 3
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-a-mongodb-cluster.md#终止策略)。 |
-   | `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 MongoDB 集群时，该值必须为 `mongodb`。 |
-   | `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。有效值为[4.0.28,4.2.24,4.4.29,5.0.28,6.0.16,7.0.1]。 |
-   | `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-   KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   执行以下命令，查看已创建的 MongoDB 集群：
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建 MongoDB 集群。
-
-   ```bash
-   kbcli cluster create mongodb mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create mongodb --help
-   kbcli cluster create mongodb -h
-   ```
-
-   例如，您可使用 `--mode` 指定集群形态，创建 MongoDB 主备版。
-
-   ```bash
-   kbcli cluster create mongodb mycluster --mode replicaset -n demo
-   ```
-
-   如果您只有一个节点用于部署多副本集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create mongodb mycluster \
-       --mode='replicaset' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        mongodb              mongodb-7.0.12    Delete               Running   Sep 19,2024 16:01 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接到 MongoDB 集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-使用 `kubectl exec` 命令进入 Pod 并连接到数据库。
-
-KubeBlocks operator 会创建一个名为 `mycluster-conn-credential` 的新的 Secret 来存储 MongoDB 集群的连接凭证。该 Secret 包含以下 key：
-
-* `username`：集群的根用户名。
-* `password`：根用户的密码。
-* `port`：集群的端口。
-* `host`：集群的主机。
-* `endpoint`：集群的终端节点，与 `host:port` 相同。
-
-1. 获取用于 `kubectl exec` 命令的 `username` 和 `password`。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   266zfqx5
-   ```
-
-2. 使用用户名和密码，进入 Pod `mycluster-mongodb-0` 并连接到数据库。
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-mongodb-0 -- bash
-
-   root@mycluster-mongodb-0:/# mongo --username root --password 266zfqx5 --authenticationDatabase admin
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-还可以使用端口转发在本地计算机上连接数据库。
-
-1. 通过端口转发服务。
-
-   ```bash
-   kubectl port-forward -n demo svc/mycluster-mongodb 27017:27017  
-   ```
-
-2. 在新的终端窗口中执行以下命令，连接到数据库。
-
-   ```bash
-   root@mycluster-mongodb-0:/# mongo --username root --password 266zfqx5 --authenticationDatabase admin
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster --namespace demo
-```
-
-</TabItem>
-
-</Tabs>
-
-有关详细的数据库连接指南，请参考[连接数据库](./../../connect-databases/overview-on-connect-databases.md)。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/delete-a-mongodb-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/delete-a-mongodb-cluster.md
deleted file mode 100644
index c0ebf5e7a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/delete-a-mongodb-cluster.md
+++ /dev/null
@@ -1,83 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [mongodb, 删除集群, 删除保护]
-sidebar_position: 7
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除集群
-
-## 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式，可在创建集群时进行设置。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete               Running   17m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/expand-volume.md
deleted file mode 100644
index c798f2fa6..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-keywords: [mongodb, 磁盘扩容]
-sidebar_position: 3
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 存储磁盘扩容。
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME             NAMESPACE        CLUSTER-DEFINITION    VERSION            TERMINATION-POLICY        STATUS         CREATED-TIME
-mycluster        demo             mongodb               mongodb-5.0        Delete                    Running        Apr 10,2023 16:20 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: mongodb
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. 验证磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。`spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: mongodb
-     clusterVersionRef: mongodb-5.0
-     componentSpecs:
-     - name: mongodb
-       componentDefRef: mongodb
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改该参数值
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --components="mongodb" --volume-claim-templates="data" --storage="30Gi"
-    ```
-
-    - `--components` 表示需扩容的组件名称。
-    - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-    - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME              NAMESPACE        CLUSTER-DEFINITION        VERSION            TERMINATION-POLICY        STATUS          CREATED-TIME
-       mycluster         demo             mongodb                   mongodb-5.0        Delete                    Updating        Apr 10,2023 16:27 UTC+0800
-       ```
-
-       * STATUS=Updating 表示扩容正在进行中。
-       * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/restart-mongodb-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/restart-mongodb-cluster.md
deleted file mode 100644
index 3851b365a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/restart-mongodb-cluster.md
+++ /dev/null
@@ -1,93 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [mongodb, 重启集群]
-sidebar_position: 4
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: mongodb
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                  READY   STATUS            RESTARTS   AGE
-   mycluster-mongodb-0   3/4     Terminating       0          5m32s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 使用 `kbcli cluster restart` 命令重启集群，然后再次输入集群名称。
-
-    ```bash
-    kbcli cluster restart mycluster -n demo
-    >
-    OpsRequest mongodb-cluster-restart-pzsbj created successfully, you can view the progress:
-          kbcli cluster describe-ops mongodb-cluster-restart-pzsbj -n demo
-    ```
-
-2. 查看集群状态，验证重启操作。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME                   NAMESPACE        CLUSTER-DEFINITION        VERSION            TERMINATION-POLICY        STATUS         CREATED-TIME
-   mongodb-cluster        default          mongodb                   mongodb-5.0        Delete                    Running        Apr 26,2023 12:50 UTC+0800
-   ```
-
-   - STATUS=Updating 表示集群正在重启中。
-   - STATUS=Running 表示集群已重启。
-
-   您也可以使用在步骤 1 中随机生成的请求代码（本例中为 `pzsbj`）验证重启操作是否成功。
-
-    ```bash
-    kbcli cluster describe-ops mycluster-restart-pzsbj -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/scale-for-a-mongodb-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/scale-for-a-mongodb-cluster.md
deleted file mode 100644
index d1487b50a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/scale-for-a-mongodb-cluster.md
+++ /dev/null
@@ -1,453 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [mongodb, 垂直扩容, 垂直扩容 MongoDB 集群]
-sidebar_position: 2
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# MongoDB 集群扩缩容
-
-KubeBlocks 支持对 MongoDB 集群进行垂直扩缩容。
-
-## 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则后续操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete               Running   27m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME             NAMESPACE        CLUSTER-DEFINITION    VERSION            TERMINATION-POLICY        STATUS         CREATED-TIME
-mycluster        demo             mongodb               mongodb-5.0        Delete                    Running        Apr 10,2023 16:20 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: mongodb
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  mongodb
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      mongodb
-    Replicas:  1
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: mongodb
-     clusterVersionRef: mongodb-5.0
-     componentSpecs:
-     - componentDefRef: mongodb
-       enabledLogs:
-       - running
-       disableExporter: true
-       name: mongodb
-       replicas: 2
-       resources: # 修改参数值
-         limits:
-           cpu: "2"
-           memory: 4Gi
-         requests:
-           cpu: "1"
-           memory: 2Gi
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  mongodb
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      mongodb
-    Replicas:  1
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-     ***示例***
-
-     ```bash
-     kbcli cluster vscale mycluster -n demo --components=mongodb --cpu=500m --memory=500Mi
-     ```
-
-   - `--components` 表示可进行垂直扩容的组件名称。
-   - `--memory` 表示组件请求和限制的内存大小。
-   - `--cpu` 表示组件请求和限制的 CPU 大小。
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION          TERMINATION-POLICY   STATUS    CREATED-TIME                 
-     mycluster   demo        mongodb              mongodb-5.0      Delete               Running   Apr 26,2023 11:50 UTC+0800    
-     ```
-
-     - STATUS=Updating 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-       > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者您也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-   :::note
-
-   垂直扩容不会同步与 CPU 和内存相关的参数，需要手动调用配置的 OpsRequest 来进行更改。详情请参考[配置](./../../kubeblocks-for-mongodb/configuration/configure-cluster-parameters.md)。
-
-   :::
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，您可以应用水平扩容将 Pod 的数量从三个增加到五个。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [水平扩缩容文档](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY     STATUS    AGE
-mycluster   mongodb              mongodb-5.0   Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME          NAMESPACE     CLUSTER-DEFINITION    VERSION          TERMINATION-POLICY        STATUS         CREATED-TIME
-mycluster     demo          mongodb               mongodb-5.0      Delete                    Running        April 26,2023 12:00 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mongo-horizontalscaling
-     namespace: default
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mongodb
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mongo-horizontalscaling
-     namespace: default
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mongodb
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```yaml
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: mongo
-     clusterVersionRef: mongodb-5.0
-     componentSpecs:
-     - name: mongo
-       componentDefRef: mongo
-       replicas: 4 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-   ```bash
-   kbcli cluster hscale mycluster -n demo --components="mongodb" --replicas=2
-   ```
-
-   - `--components` 表示准备进行水平扩容的组件名称。
-   - `--replicas` 表示指定组件的副本数。
-
-2. 通过以下任意一种方式验证水平扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-   - STATUS=Updating 表示正在进行水平扩容。
-   - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-04-08T04:20:26Z"
-    message: VolumeSnapshot/mongodb-cluster-mongodb-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. 删除错误的备份和 volumesnapshot 资源。
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-    ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/stop-start-a-mongodb-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/stop-start-a-mongodb-cluster.md
deleted file mode 100644
index 95580af08..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/stop-start-a-mongodb-cluster.md
+++ /dev/null
@@ -1,190 +0,0 @@
----
-title: 停止/启动集群
-description: 停止/启动集群
-keywords: [mongodb, 停止集群, 启动集群]
-sidebar_position: 5
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-***步骤：***
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    将 replicas 设为 0，删除 Pods。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: mongodb
-      clusterVersionRef: mongodb-5.0
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mongodb
-        componentDefRef: mongodb
-        disableExporter: true
-        replicas: 0
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: standard
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 检查集群的状态，查看其是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name:ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    将 replicas 数值调整为停止集群前的数量，再次启动集群。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: mongodb
-      clusterVersionRef: mongodb-5.0
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mongodb
-        componentDefRef: mongodb
-        disableExporter: true
-        replicas: 1
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: standard
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否再次启动。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/switch-over-a-mongodb-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/switch-over-a-mongodb-cluster.md
deleted file mode 100644
index 7d51d4ce0..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/cluster-management/switch-over-a-mongodb-cluster.md
+++ /dev/null
@@ -1,129 +0,0 @@
----
-title: 切换集群
-description: 如何切换集群
-keywords: [mongodb, 切换集群, switchover]
-sidebar_position: 6
-sidebar_label: 切换
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 切换 MongoDB 集群
-
-数据库 switchover 是指在数据库集群中将主数据库的角色切换到备用数据库的过程，使备用数据库成为新的主数据库实例。通常在主数据库故障、维护或升级时执行 switchover 操作，以确保数据库服务的高可用性和连续性。可执行命令对 MongoDB 集群版执行切换，KubeBlocks 将切换实例角色。
-
-## 开始之前
-
-* 确保集群正常运行。
-* 检查以下角色探针参数是否存在，确认是否已启用探针。
-
-   ```bash
-   kubectl get cd mongodb -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 3
-       periodSeconds: 2
-       timeoutSeconds: 2
-   ```
-
-## 切换集群
-
-将 MongoDB 主备版的从节点切换为主节点，原来的主节点实例将被切换为从节点实例。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-`instanceName` 字段的值定义了本次切换是否指定了新的主节点实例。
-
-* 不指定主节点实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-jhkgl
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mongodb
-      instanceName: '*'
-  >>
-  ```
-
-* 指定一个新的主节点实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-jhkgl
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mongodb
-      instanceName: 'mycluster-mongodb-2'
-  >>
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* 不指定主节点实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster -n demo
-    ```
-
-* 指定一个新的主节点实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mongodb-2' -n demo
-    ```
-
-* 如果有多个组件，可以使用 `--components` 参数指定一个组件。
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mongodb-2' --components='mongodb' -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 验证集群切换
-
-检查实例状态，验证切换是否成功。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get pods -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 处理异常情况
-
-如果报错，请参考[异常处理](./../../handle-an-exception/handle-a-cluster-exception.md)排查问题。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/configuration/_category_.yml
deleted file mode 100644
index f7f240b8d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/configuration/configure-cluster-parameters.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/configuration/configure-cluster-parameters.md
deleted file mode 100644
index d578de360..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/configuration/configure-cluster-parameters.md
+++ /dev/null
@@ -1,263 +0,0 @@
----
-title: 配置集群参数
-description: 配置集群参数
-keywords: [mongodb, 参数, 配置, 再配置]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-KubeBlocks 提供了一套默认的配置生成策略，适用于在 KubeBlocks 上运行的所有数据库，此外还提供了统一的参数配置接口，便于管理参数配置、搜索参数用户指南和验证参数有效性等。
-
-从 v0.6.0 版本开始，KubeBlocks 支持使用 `kbcli cluster configure` 和 `kbcli cluster edit-config` 两种方式来配置参数。它们的区别在于，`kbcli cluster configure` 可以自动配置参数，而 `kbcli cluster edit-config` 则允许以可视化的方式直接编辑参数。
-
-<Tabs>
-
-<TabItem value="编辑配置文件" label="编辑配置文件" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-mongodb -n demo
-   ```
-
-2. 按需配置参数。以下实例中添加了 `spec.configFileParams`，用于配置 `systemLog.verbosity` 参数。
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: mongodb
-     configItemDetails:
-     - configFileParams:
-         mongodb.cnf:
-           parameters:
-             systemLog.verbosity: "1"
-       configSpec:
-         constraintRef: mongodb-config-constraints
-         name: mongodb-configuration
-         namespace: kb-system
-         templateRef: mongodb5.0-config-template
-         volumeName: mongodb-config
-       name: mongodb-config
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-    ```bash
-    kubectl exec -n demo mycluster-mongodb-0 -- bash -c "cat /etc/mongodb/mongodb.conf | grep verbosity"
-    >
-      verbosity: 1
-    ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`systemLog.verbosity` 参数修改为 `1`。
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: mongodb
-       configurations:
-       - keys:
-         - key: mongodb.conf
-           parameters:
-           - key: systemLog.verbosity
-             value: "1"
-         name: mongodb-config
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 Opsrequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了该集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   ```bash
-    kubectl exec -n demo mycluster-mongodb-0 -- bash -c "cat /etc/mongodb/mongodb.conf | grep verbosity"
-    >
-      verbosity: 1
-   ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-查看集群的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
->
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME         FILE                  ENABLED   TEMPLATE                     CONSTRAINT                   RENDERED                                      COMPONENT    CLUSTER           
-mongodb-config           keyfile               false     mongodb5.0-config-template   mongodb-config-constraints   mycluster-replicaset-mongodb-config           replicaset   mycluster   
-mongodb-config           mongodb.conf          true      mongodb5.0-config-template   mongodb-config-constraints   mycluster-replicaset-mongodb-config           replicaset   mycluster   
-mongodb-metrics-config   metrics-config.yaml   false     mongodb-metrics-config                                    mycluster-replicaset-mongodb-metrics-config   replicaset   mycluster   
-
-History modifications:
-OPS-NAME   CLUSTER   COMPONENT   CONFIG-SPEC-NAME   FILE   STATUS   POLICY   PROGRESS   CREATED-TIME   VALID-UPDATED 
-```
-
-从元信息中可以看到，集群 `mycluster` 有一个名为 `mongodb.conf` 的配置文件。
-
-您也可以查看此配置文件和参数的详细信息。
-
-* 查看当前配置文件的详细信息。
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail -n demo
-   ```
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-下面展示如何将 `systemLog.verbosity` 配置为 1。
-
-1. 将 `systemLog.verbosity` 设置为 1。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components mongodb --config-specs mongodb-config --config-file mongodb.conf --set systemLog.verbosity=1
-   >
-   Warning: The parameter change you modified needs to be restarted, which may cause the cluster to be unavailable for a period of time. Do you need to continue...
-   Please type "yes" to confirm: yes
-   Will updated configure file meta:
-   ConfigSpec: mongodb-config      ConfigFile: mongodb.conf      ComponentName: mongodb  ClusterName: mycluster
-   OpsRequest mycluster-reconfiguring-q8ndn created successfully, you can view the progress:
-          kbcli cluster describe-ops mycluster-reconfiguring-q8ndn -n default
-   ```
-
-2. 检查配置历史，查看配置任务是否成功。
-
-   ```bash
-
-    kbcli cluster describe-config mycluster -n demo
-    >
-    ConfigSpecs Meta:
-    CONFIG-SPEC-NAME         FILE                  ENABLED   TEMPLATE                     CONSTRAINT                   RENDERED                                   COMPONENT   CLUSTER
-    mongodb-config           keyfile               false     mongodb5.0-config-template   mongodb-config-constraints   mycluster-mongodb-mongodb-config           mongodb     mycluster
-    mongodb-config           mongodb.conf          true      mongodb5.0-config-template   mongodb-config-constraints   mycluster-mongodb-mongodb-config           mongodb     mycluster
-    mongodb-metrics-config   metrics-config.yaml   false     mongodb-metrics-config                                    mycluster-mongodb-mongodb-metrics-config   mongodb     mycluster
-
-    History modifications:
-    OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME   FILE           STATUS    POLICY    PROGRESS   CREATED-TIME                 VALID-UPDATED
-    mycluster-reconfiguring-q8ndn   mycluster   mongodb     mongodb-config     mongodb.conf   Succeed   restart   3/3        Apr 21,2023 18:56 UTC+0800   {"mongodb.conf":"{\"systemLog\":{\"verbosity\":\"1\"}}"}```
-   ```
-
-3. 验证配置结果。
-
-   ```bash
-   kubectl exec -n demo mycluster-mongodb-0 -- bash -c "cat /etc/mongodb/mongodb.conf | grep verbosity"
-   >
-     verbosity: 1
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，帮助以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   如果集群中有多个组件，请使用 `--components` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops xxx -n demo
-   ```
-
-3. 连接到数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2. KubeBlocks 未来将支持删除参数。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，你可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo                  
-```
-
-如果您执行了多次变更，可比较这些变更，查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-q8ndn mycluster-reconfiguring-hxqfx -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/kubeblocks-for-mongodb.md b/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/kubeblocks-for-mongodb.md
deleted file mode 100644
index cd201010e..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mongodb/kubeblocks-for-mongodb.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: 用 KubeBlocks 管理 MongoDB
-description: KubeBlocks 中的 MongoDB 功能列表
-keywords: [mongodb, 概述, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 MongoDB
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 MongoDB 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/mongodb)查看 YAML 示例。
-
-* [集群管理](./../kubeblocks-for-mongodb/cluster-management/create-and-connect-to-a-mongodb-cluster.md)
-* [配置](./../kubeblocks-for-mongodb/configuration/configure-cluster-parameters.md)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/_category_.yml
deleted file mode 100644
index 338008c60..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 12
-label: 用 KubeBlocks 管理 MySQL 社区版
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/_category_.yml
deleted file mode 100644
index adead6e31..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md
deleted file mode 100644
index 9552012f5..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/create-and-connect-a-mysql-cluster.md
+++ /dev/null
@@ -1,291 +0,0 @@
----
-title: 创建并连接 MySQL 集群
-description: 如何创建并连接到 MySQL 集群
-keywords: [mysql, 创建 mysql 集群, 连接 mysql 集群]
-sidebar_position: 1
-sidebar_label: 创建并连接
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建并连接 MySQL 集群
-
-本文档展示如何创建并连接到一个 MySQL 集群。
-
-## 创建 MySQL 集群
-
-### 开始之前
-
-* 如果您想通过 `kbcli` 创建并连接 MySQL 集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 MySQL 引擎已启用。KubeBlocks 默认已安装 MySQL，如果您在安装 KubeBlocks 关闭/卸载了该引擎，可参考相关文档，再次[启用/安装该引擎](./../../installation/install-addons.md)。
-  
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io mysql
-  >
-  NAME    TYPE   VERSION   PROVIDER   STATUS    AGE
-  mysql   Helm                        Enabled   27h
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                           VERSION         PROVIDER    STATUS     AUTO-INSTALL
-  ...
-  mysql                          0.9.1           community   Enabled    true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 查看可用于创建集群的数据库类型和版本。
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  确保 `mysql` cluster definition 已安装。
-
-  ```bash
-  kubectl get clusterdefinition mysql
-  >
-  NAME             TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  mysql                                       Available   85m
-  ```
-
-  查看可用的集群版本。
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=mysql
-  >
-  NAME           CLUSTER-DEFINITION   STATUS      AGE
-  mysql-5.7.44   mysql                Available   27h
-  mysql-8.0.33   mysql                Available   27h
-  mysql-8.4.2    mysql                Available   27h
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 为保持隔离，本教程中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-### 创建集群
-
-KubeBlocks 支持创建两种类型的 MySQL 集群：单机版（Standalone）和主备版（Replication）。单机版仅支持一个副本，适用于对可用性要求较低的场景。主备版包含两个副本，适用于对高可用性要求较高的场景。为了确保高可用性，所有的副本都默认分布在不同的节点上。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 MySQL 集群。
-
-   KubeBlocks 通过 `Cluster` 定义集群。以下是创建 MySQL 主备版的示例。
-
-   如果您只有一个节点可用于部署主备版集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     componentSpecs:
-       - name: mysql
-         componentDef: "mysql-8.0" 
-         serviceVersion: 8.0.35
-         disableExporter: false
-         replicas: 2
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-mysql-cluster.md#终止策略)。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.componentDef` | 指定了定义 component 特性和行为的 ComponentDefinition 自定义资源(CR)。支持三种不同的 ComponentDefinition 指定方式：正则表达式（推荐）、完整名称（推荐）和名称前缀。 |
-   | `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。有效值为[8.0.30,8.0.31,8.0.32,8.0.33,8.0.34,8.0.35,8.0.36,8.0.37,8.0.38,8.0.39]。 |
-   | `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   执行以下命令，查看已创建的 MySQL 集群：
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    AGE
-   mycluster   mysql                mysql-8.0.30      Delete               Running   6m53s
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建 MySQL 集群。
-
-   创建单机版。
-
-   ```bash
-   kbcli cluster create mysql mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create mysql --help
-   kbcli cluster create mysql -h
-   ```
-
-   如果您只有一个节点用于部署主备版集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create mysql mycluster \
-       --mode='replication' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        mysql                mysql-8.0.30      Delete               Running   Jul 05,2024 18:46 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-使用 `kubectl exec` 命令进入 Pod 并连接到数据库。
-
-KubeBlocks operator 会创建一个名为 `mycluster-conn-credential` 的新的 Secret 来存储 MySQL 集群的连接凭证。该 Secret 包含以下 key：
-
-* `username`：集群的根用户名。
-* `password`：根用户的密码。
-* `port`：集群的端口。
-* `host`：集群的主机。
-* `endpoint`：集群的终端节点，与 `host:port` 相同。
-
-1. 获取用于 `kubectl exec` 命令的 `username` 和 `password`。
-
-   ```bash
-   kubectl get secrets mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   root
-   ```
-
-   ```bash
-   kubectl get secrets mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   b8wvrwlm
-   ```
-
-2. 使用用户名和密码，进入 Pod `mycluster-mysql-0` 并连接到数据库。
-
-   ```bash
-   kubectl exec -ti mycluster-mysql-0 -n demo -- bash
-
-   mysql -u root -p b8wvrwlm
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-还可以使用端口转发在本地计算机上连接数据库。
-
-1. 通过端口转发服务。
-
-   ```bash
-   kubectl port-forward svc/mycluster-mysql 3306:3306 -n demo
-   ```
-
-2. 在新的终端窗口中执行以下命令，连接到数据库。
-
-   ```bash
-   mysql -uroot -pb8wvrwlm
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster --namespace demo
-```
-
-</TabItem>
-
-</Tabs>
-
-有关详细的数据库连接指南，请参考[连接数据库](./../../connect-databases/overview-on-connect-databases.md)。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/delete-mysql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/delete-mysql-cluster.md
deleted file mode 100644
index 66c3b5f9f..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/delete-mysql-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [mysql, 删除集群]
-sidebar_position: 7
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除集群
-
-## 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看当前集群的终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.30   Delete               Running   67m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/expand-volume.md
deleted file mode 100644
index 8a3f10d53..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,192 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-sidebar_position: 3
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 存储磁盘扩容。
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   4d18h
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: mysql
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. 验证磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: mysql
-     clusterVersionRef: mysql-8.0.33
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改磁盘容量
-     terminationPolicy: Delete
-   ```
-
-2. 查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    ```bash
-    kbcli cluster volume-expand mycluster -n demo --components="mysql" --volume-claim-templates="data" --storage="40Gi"
-    ```
-
-    - `--components` 表示需扩容的组件名称。
-    - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-    - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-   - 查看 OpsRequest 进度。
-
-      执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-      ```
-
-   - 查看集群状态。
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-      mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-      ```
-
-     * STATUS=Updating 表示扩容正在进行中。
-     * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/restart-mysql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/restart-mysql-cluster.md
deleted file mode 100644
index 7d8cd9e69..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/restart-mysql-cluster.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [mysql, 重启, 集群重启]
-sidebar_position: 4
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-集群重启后，主节点可能会发生变化。
-
-:::
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: mysql
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                READY   STATUS           RESTARTS   AGE
-   mycluster-mysql-0   4/4     Running          0          5m32s
-   mycluster-mysql-1   3/4     Terminating      0          6m36s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，执行以下命令来重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="mysql" \
-     --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 检查集群状态，验证重启操作是否成功。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     CREATED-TIME
-   mycluster   default     mysql                mysql-8.0.33   Delete               Updating   Jul 05,2024 19:01 UTC+0800
-   ```
-
-   - STATUS=Updating 表示集群正在重启中。
-   - STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/scale-for-mysql.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/scale-for-mysql.md
deleted file mode 100644
index 6a6d5d1f1..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/scale-for-mysql.md
+++ /dev/null
@@ -1,410 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [mysql, 水平扩缩容, 垂直扩缩容]
-sidebar_position: 2
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# MySQL 集群扩缩容
-
-KubeBlocks 支持对 MySQL 集群进行垂直扩缩容和水平扩缩容。
-
-:::note
-
-集群垂直或水平扩缩容后，KubeBlocks 会根据新的规格自动匹配合适的配置模板。这是因为 KubeBlocks 在 v0.9.0 中引入了动态配置功能。该功能简化了配置参数的过程，节省了时间和精力，并减少了由于配置错误引起的性能问题。有关详细说明，请参阅[配置](./../configuration/configuration.md)。
-
-:::
-
-## 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   18m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: mysql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: mysql
-     clusterVersionRef: mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 2
-       resources: # 修改资源参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后。查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-    ```bash
-    kbcli cluster vscale mycluster -n demo \
-      --components="mysql" \
-      --memory="4Gi" --cpu="2" \
-    ```
-
-    - `--components` 表示可进行垂直扩容的组件名称。
-    - `--memory` 表示组件请求和限制的内存大小。
-    - `--cpu` 表示组件请求和限制的 CPU 大小。
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-        执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-    - 查看集群状态。
-
-        ```bash
-        kbcli cluster list mycluster -n demo
-        >
-        NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     CREATED-TIME
-        mycluster   demo        mysql                mysql-8.0.33   Delete               Updating   Jul 05,2024 19:11 UTC+0800
-        ```
-
-        - STATUS=Updating 表示正在进行垂直扩容。
-        - STATUS=Running 表示垂直扩容已完成。
-        - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-          > 你可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，你可以应用水平扩容将 Pod 的数量从三个增加到五个。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [API 文档](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   18m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        mysql                mysql-8.0.33   Delete               Running   Jul 05,2024 18:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-  
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: mysql
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: mysql
-     clusterVersionRef: mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 1 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-    ```bash
-    kbcli cluster hscale mycluster -n demo \
-      --components="mysql" --replicas=3
-    ```
-
-    - `--components` 表示准备进行水平扩容的组件名称。
-    - `--replicas` 表示指定组件的副本数。可按需修改该参数值，对应执行扩缩容操作。
-
-2. 通过以下任意一种方式验证水平扩容是否成功。
-
-   - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-g67k9 -n demo
-       ```
-
-   - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示正在进行水平扩容。
-       - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2024-07-05T04:20:26Z"
-    message: VolumeSnapshot/mycluster-mysql-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. 删除错误的备份和 volumesnapshot 资源。
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-    ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/stop-start-a-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/stop-start-a-cluster.md
deleted file mode 100644
index d7829abad..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/stop-start-a-cluster.md
+++ /dev/null
@@ -1,172 +0,0 @@
----
-title: 停止/启动集群
-description: 如何停止/启动集群
-keywords: [mysql, 停止集群, 启动集群]
-sidebar_position: 5
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 设为 0，删除 Pods。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: mysql
-      clusterVersionRef: mysql-8.0.33
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true  
-        replicas: 0 #修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 数值调整为停止集群前的数量，再次启动集群。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: mysql
-      clusterVersionRef: mysql-8.0.33
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: mysql
-        componentDefRef: mysql
-        disableExporter: true  
-        replicas: 2 #修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否再次启动。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/switchover.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/switchover.md
deleted file mode 100644
index ba5ee1293..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/cluster-management/switchover.md
+++ /dev/null
@@ -1,123 +0,0 @@
----
-title: 切换 MySQL 集群
-description: 如何切换 MySQL 集群
-keywords: [mysql, 切换集群, switchover]
-sidebar_position: 6
-sidebar_label: 切换
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 切换 MySQL 集群
-
-数据库 switchover 是指在数据库集群中将主数据库的角色切换到备用数据库的过程，使备用数据库成为新的主数据库实例。通常在主数据库故障、维护或升级时执行 switchover 操作，以确保数据库服务的高可用性和连续性。可使用 kbcli 命令对 MySQL 集群版执行切换，KubeBlocks 将切换实例角色。
-
-## 开始之前
-
-* 确保集群正常运行。
-* 检查以下角色探针参数是否存在，确认是否已启用探针。
-
-   ```bash
-   kubectl get cd apecloud-mysql -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 2
-       periodSeconds: 1
-       timeoutSeconds: 1
-   ```
-
-## 切换集群
-
-将 MySQL 主备版集群的一个备节点切换为主节点，并将原主节点实例切换为备节点。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-`instanceName` 字段的值定义了本次切换是否指定了新的主节点实例。
-
-* 不指定主节点实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-demo
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mysql
-      instanceName: '*'
-  >>
-  ```
-
-* 指定一个新的主节点实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover-demo
-    namespace: demo
-  spec:
-    clusterRef: mycluster
-    type: Switchover
-    switchover:
-    - componentName: mysql
-      instanceName: 'mycluster-mysql-1'
-  >>
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* 不指定主节点实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-1' -n demo
-    ```
-
-* 如果有多个组件，可以使用 `--components` 参数指定一个组件。
-
-    ```bash
-    kbcli cluster promote mycluster --instance='mycluster-mysql-1' --components='apecloud-mysql' -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 验证集群切换
-
-查看实例状态，验证切换是否成功。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get pods -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 处理异常情况
-
-如果报错，请参考[异常处理](./../../handle-an-exception/handle-a-cluster-exception.md)排查问题。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/configuration/_category_.yml
deleted file mode 100644
index 885d2c2be..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/configuration/configuration.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/configuration/configuration.md
deleted file mode 100644
index eb3f2d40f..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/configuration/configuration.md
+++ /dev/null
@@ -1,448 +0,0 @@
----
-title: Configure cluster parameters
-description: Configure cluster parameters
-keywords: [mysql, parameter, configuration, reconfiguration]
-sidebar_position: 1
-sidebar_label: Configuration
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-本文档将说明如何配置集群参数。
-
-从 v0.9.0 开始，KubeBlocks 支持数据库参数配置动态渲染。当数据库实例的规格发生变化时（例如，用户进行了实例的升降配），KubeBlocks 会根据新的规格自动匹配适用的参数模板。这是因为不同规格的数据库实例可能需要不同的最佳参数配置以优化性能和资源利用率。当用户选择不同的数据库实例规格时，KubeBlocks 会自动检测并确定适用于新规格的最佳数据库参数配置，以确保数据库在新规格下具有最优的性能和配置。
-
-配置动态渲染功能简化了数据库规格调整的过程。用户无需手动更改数据库参数，KubeBlocks 会自动处理参数的更新和配置，以适应新的规格。这样可以节省时间和精力，并减少由于参数设置不正确而导致的性能问题。
-
-需要注意的是，配置动态渲染功能并不适用于所有参数。有些参数可能需要手动进行调整和配置。此外，如果你对数据库参数进行了手动修改，KubeBlocks 在更新数据库参数模板时可能会覆盖手动修改。因此，在使用动态调整功能时，建议先备份和记录自定义的参数设置，以便在需要时进行恢复。
-
-<Tabs>
-
-<TabItem value="编辑配置文件" label="编辑配置文件" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl get configurations.apps.kubeblocks.io -n demo
-
-   kubectl edit configurations.apps.kubeblocks.io mycluster-mysql -n demo
-   ```
-
-2. 按需配置参数。以下实例中添加了 `spec.configFileParams`，用于配置 `max_connections` 参数。
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: mysql
-     configItemDetails:
-     - configFileParams:
-         my.cnf:
-           parameters:
-             max_connections: "600"
-       configSpec:
-         constraintRef: oracle-mysql8.0-config-constraints
-         name: mysql-replication-config
-         namespace: kb-system
-         templateRef: oracle-mysql8.0-config-template
-         volumeName: mysql-config
-       name: mysql-replication-config
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`max_connections` 参数修改为 `600`。
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: mysql
-       configurations:
-       - keys:
-         - key: my.cnf
-           parameters:
-           - key: max_connections
-             value: "600"
-         name: mysql-replication-configuration
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   EOF
-   ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 Opsrequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了该集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml -n demo
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-mysql-0 -- bash
-
-      mysql -uroot -p2gvztbvz
-      >
-      mysql> show variables like 'max_connections';
-      +-----------------+-------+
-      | Variable_name   | Value |
-      +-----------------+-------+
-      | max_connections | 600   |
-      +-----------------+-------+
-      1 row in set (0.00 sec)
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-查看集群的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-从元信息中可以看到，集群 `mycluster` 有一个名为 `my.cnf` 的配置文件。
-
-你也可以查看此配置文件和参数的详细信息。
-
-* 查看当前配置文件的详细信息。
-
-   ```bash
-   kbcli cluster describe-config mycluster --show-detail -n demo
-   ```
-
-* 查看参数描述。
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* 查看指定参数的使用文档。
-  
-  ```bash
-  kbcli cluster explain-config mycluster --param=innodb_buffer_pool_size --config-specs=mysql-replication-config -n demo
-  ```
-
-  MySQL 目前支持多个模板，可通过 `--config-specs` 来指定一个配置模板。执行 `kbcli cluster describe-config mycluster -n demo` 查看所有模板的名称。
-
-  <details>
-
-  <summary>输出</summary>
-
-  ```bash
-  component: mysql
-  template meta:
-    ConfigSpec: mysql-replication-config	ComponentName: mysql	ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     innodb_buffer_pool_size
-    Allowed Values:     [5242880-18446744073709552000]
-    Scope:              Global
-    Dynamic:            true
-    Type:               integer
-    Description:        The size in bytes of the memory buffer innodb uses to cache data and indexes of its tables 
-  ```
-  
-  </details>
-
-  * Allowed Values：定义了参数的有效值范围。
-  * Dynamic: 决定了参数配置的生效方式。根据被修改参数的生效类型，有**动态**和**静态**两种不同的配置策略。
-    * `Dynamic` 为 `true` 时，参数**动态**生效，可在线配置。
-    * `Dynamic` 为 `false` 时，参数**静态**生效，需要重新启动 Pod 才能生效。
-  * Description：描述了参数的定义。
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-以下示例以配置 `max_connections` 和 `innodb_buffer_pool_size` 为例。
-
-1. 查看 `max_connections` 和 `innodb_buffer_pool_size` 的当前值。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 167   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 134217728 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-2. 调整 `max_connections` 和 `innodb_buffer_pool_size` 的值。
-
-   ```bash
-   kbcli cluster configure mycluster --set=max_connections=600,innodb_buffer_pool_size=512M -n demo
-   ```
-
-   :::note
-
-   确保设置的值在该参数的 Allowed Values 范围内。如果设置的值不符合取值范围，系统会提示错误。例如：
-
-   ```bash
-   kbcli cluster configure mycluster  --set=max_connections=200,innodb_buffer_pool_size=2097152 -n demo
-   error: failed to validate updated config: [failed to cue template render configure: [mysqld.innodb_buffer_pool_size: invalid value 2097152 (out of bound >=5242880):
-    343:34
-   ]
-   ]
-   ```
-
-   :::
-
-3. 查看参数配置状态。
-
-   `Status.Progress` 展示参数配置的整体状态，而 `Conditions` 展示详细信息。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-pxs46 -n demo
-   ```
-
-   <details>
-
-   <summary>输出</summary>
-
-   ```bash
-   Spec:
-   Name: mycluster-reconfiguring-pxs46	NameSpace: demo	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster --components=mysql --config-specs=mysql-replication-config --config-file=my.cnf --set innodb_buffer_pool_size=512M --set max_connections=600 --namespace=demo
-
-   Status:
-     Start Time:         Jul 05,2024 19:00 UTC+0800
-     Completion Time:    Jul 05,2024 19:00 UTC+0800
-     Duration:           2s
-     Status:             Succeed
-     Progress:           2/2
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                            STATUS   MESSAGE
-   Jul 05,2024 19:00 UTC+0800   WaitForProgressing   WaitForProgressing                True     wait for the controller to process the OpsRequest: mycluster-reconfiguring-pxs46 in Cluster: mycluster
-   Jul 05,2024 19:00 UTC+0800   Validated            ValidateOpsRequestPassed          True     OpsRequest: mycluster-reconfiguring-pxs46 is validated
-   Jul 05,2024 19:00 UTC+0800   Reconfigure          ReconfigureStarted                True     Start to reconfigure in Cluster: mycluster, Component: mysql
-   Jul 05,2024 19:00 UTC+0800   Succeed              OpsRequestProcessedSuccessfully   True     Successfully processed the OpsRequest: mycluster-reconfiguring-pxs46 in Cluster: mycluster
-
-   Warning Events: <none>
-   ```
-
-   </details>
-
-4. 连接到数据库，验证参数是否按预期配置。
-
-   配置生效过程约需要 30 秒，这是由于 kubelet 需要一定时间才能将对 ConfigMap 的修改同步到 Pod 的卷。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   mysql> show variables like '%max_connections%';
-   >
-   +-----------------+-------+
-   | Variable_name   | Value |
-   +-----------------+-------+
-   | max_connections | 600   |
-   +-----------------+-------+
-   1 row in set (0.04 sec)
-   ```
-  
-   ```bash
-   mysql> show variables like '%innodb_buffer_pool_size%';
-   >
-   +-------------------------+-----------+
-   | Variable_name           | Value     |
-   +-------------------------+-----------+
-   | innodb_buffer_pool_size | 536870912 |
-   +-------------------------+-----------+
-   1 row in set (0.00 sec)
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，帮助以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster --config-spec=mysql-replication-config -n demo
-   ```
-
-   :::note
-
-   * MySQL 目前支持多个模板，需通过 `--config-spec` 指定一个配置模板。执行 `kbcli cluster describe-config mysql-cluster` 查看所有模板的名称。
-   * 如果集群中有多个组件，请使用 `--components` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-bbh86 -n demo
-   ```
-
-3. 连接到数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2.  KubeBlocks 未来将支持删除参数。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，你可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
->
-component: mysql
-
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME           FILE                              ENABLED   TEMPLATE                          CONSTRAINT                           RENDERED                                   COMPONENT   CLUSTER
-mysql-replication-config   my.cnf                            true      oracle-mysql8.0-config-template   oracle-mysql8.0-config-constraints   mycluster-mysql-mysql-replication-config   mysql       mycluster
-agamotto-configuration     agamotto-config.yaml              false     mysql-agamotto-configuration                                           mycluster-mysql-agamotto-configuration     mysql       mycluster
-agamotto-configuration     agamotto-config-with-proxy.yaml   false     mysql-agamotto-configuration                                           mycluster-mysql-agamotto-configuration     mysql       mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME           FILE     STATUS    POLICY              PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-pxs46   mycluster   mysql       mysql-replication-config   my.cnf   Succeed   syncDynamicReload   2/2        Jul 05,2024 19:00 UTC+0800   {"my.cnf":"{\"mysqld\":{\"innodb_buffer_pool_size\":\"512M\",\"max_connections\":\"600\"}}"}
-mycluster-reconfiguring-x52fb   mycluster   mysql       mysql-replication-config   my.cnf   Succeed   syncDynamicReload   2/2        Jul 05,2024 19:04 UTC+0800   {"my.cnf":"{\"mysqld\":{\"max_connections\":\"1000\"}}"}                    
-```
-
-从上面可以看到，有三个参数被修改过。
-
-比较这些改动，查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-pxs46 mycluster-reconfiguring-x9zsf -n demo
->
-DIFF-CONFIGURE RESULT:
-  ConfigFile: my.cnf    TemplateName: mysql-replication-config ComponentName: mysql    ClusterName: mycluster       UpdateType: update      
-
-PARAMETERNAME             mycluster-reconfiguring-pxs46   mycluster-reconfiguring-x9zsf   
-max_connections           600                             2000                                      
-innodb_buffer_pool_size   512M                            1G 
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/high-availability/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/high-availability/_category_.yml
deleted file mode 100644
index 4c2f09021..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 高可用
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/high-availability/high-availability.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/high-availability/high-availability.md
deleted file mode 100644
index 2a2d7a224..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/high-availability/high-availability.md
+++ /dev/null
@@ -1,248 +0,0 @@
----
-title: 故障模拟与自动恢复
-description: 集群自动恢复
-keywords: [mysql, 高可用, 故障模拟, 自动恢复]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 故障模拟与自动恢复
-
-作为一个开源数据管理平台，KubeBlocks 目前支持三十多种数据库引擎，并且持续扩展中。由于这些数据库本身的高可用能力是参差不齐的，因此 KubeBlocks 设计实现了一套高可用系统用于保障数据库实例的高可用能力。KubeBlocks 高可用系统采用了统一的HA框架设计，实现对数据库的高可用支持，使得不同的数据库在 KubeBlocks 上可以获得类似的高可用能力和体验。
-
-下面以 MySQL 社区版为例，演示它的故障模拟和恢复能力。
-
-## 故障恢复
-
-:::note
-
-下面通过删除 Pod 来模拟故障。在资源充足的情况下，也可以通过机器宕机或删除容器来模拟故障，其自动恢复过程与本文描述的相同。
-
-:::
-
-### 开始之前
-
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 创建 MySQL 主备版集群，详情可参考 [创建 MySQL 集群](./../cluster-management/create-and-connect-a-mysql-cluster.md)。
-* 执行 `kubectl get cd mysql -o yaml` 检查 MySQL 集群版是否已启用 _rolechangedprobe_（默认情况下是启用的）。如果出现以下配置信息，则表明已启用：
-
-  ```bash
-  probes:
-    roleProbe:
-      failureThreshold: 2
-      periodSeconds: 1
-      timeoutSeconds: 1
-  ```
-
-### 主节点异常
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 MySQL 主备版 pod 角色。在本示例中，主节点为 `mycluster-mysql-0`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_pod](./../../../img/api-mysql-ha-grep-role.png)
-2. 删除主节点 `mycluster-mysql-0`，模拟节点故障。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 -n demo
-    ```
-
-    ![delete_pod](./../../../img/api-mysql-ha-delete-primary-pod.png)
-3. 检查 pod 状态和集群连接。
-
-    此处示例显示 pod 角色发生变化。原主节点删除后，系统选出新的主节点为 `mycluster-mysql-1`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster_after](./../../../img/api-mysql-ha-delete-primary-pod-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看集群信息。可在 `Topology` 中查看主节点的名称，在如下例子中，主节点为 `mycluster-mysql-0`。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster](./../../../img/ha-mysql-describe-cluster.png)
-2. 删除主节点 `mycluster-mysql-0`，模拟节点故障。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0
-    ```
-
-    ![delete_pod](./../../../img/ha-mysql-delete-primary-pod.png)
-3. 执行命令，查看 pod 状态和集群连接。
-
-    ***Results***
-
-    此处示例显示 pod 角色发生变化。原主节点删除后，系统选出新的主节点为 `mycluster-mysql-1`。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster_after](./../../../img/ha-mysql-primary-pod-describe-after.png)
-
-    MySQL 主备版集群可在几秒钟连接。
-
-</TabItem>
-
-</Tabs>
-
-***自动恢复机制***
-
-主节点删除后，MySQL 主备版会自行选主。上述示例中，选出新的主节点为 `mycluster-mysql-1`，KubeBlocks 探测到主节点角色发生变化，会发出通知，更新访问链路。原先异常节点会自动重建，恢复正常集群版状态。从异常开始到恢复完成，整体耗时正常在 30s 之内。
-
-### 备节点异常
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 pod 角色，如下示例中备节点为 `mycluster-mysql-0`。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-mysql-ha-grep-role-secondary-pod.png)
-2. 删除备节点 `mycluster-mysql-0`。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 -n demo
-    ```
-
-    ![delete_secondary_pod](./../../../img/api-ysql-ha-delete-secondary-pod.png)
-3. 打开一个新的终端窗口，查看 pod 状态。可以发现备节点 `mycluster-mysql-0` 处于 `Terminating` 状态。
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![view_cluster_secondary_status](./../../../img/api-mysql-ha-secondary-pod-status.png)
-
-    再次查看 pod 角色。
-
-    ![describe_cluster_secondary](./../../../img/api-mysql-ha-secondary-pod-grep-role-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看集群信息。可在 `Topology` 中查看备节点的名称，在如下例子中，备节点为 `mycluster-mysql-0`。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster](./../../../img/ha-mysql-primary-pod-describe-after.png)
-2. 删除备节点 `mycluster-mysql-0`。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0
-    ```
-
-    ![delete_secondary_pod](./../../../img/ha-mysql-delete-secondary.png)
-3. 查看集群状态，可在 `Component.Instance` 看到备节点处于终止状态。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster_secondary](./../../../img/ha-mysql-delete-secondary-after.png)
-
-</TabItem>
-
-</Tabs>
-
-***自动恢复机制***
-
-单个备节点异常不会触发角色重新选主，也不会切换访问链路，所以集群读写不受影响，备节点异常后会自动触发重建，恢复正常，整体耗时正常 30s 之内。
-
-### 两个节点异常
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 pod 角色。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-mysql-ha-both-pods-grep-role.png)
-2. 删除所有 pod。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-0 mycluster-mysql-1 -n demo
-    ```
-
-    ![delete_both_pods](./../../../img/api-mysql-ha-delete-both-pods.png)
-3. 打开一个新的终端窗口，查看 pod 状态，发现所有 pod 均处于 `Terminating` 状态。
-
-    ```bash
-    kubectl get pod -n demo
-    ```
-
-    ![describe_both_clusters](./../../../img/api-mysql-ha-both-pods-status.png)
-4. 再次查看节点角色，发现已选举产生新的主节点。
-
-    ```bash
-    kubectl get pods --show-labels -n demo | grep role
-    ```
-
-    ![describe_cluster](./../../../img/api-mysql-ha-both-pods-grep-role-after.png)
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看集群信息，在 `Topology` 中查看节点名称。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_cluster](./../../../img/ha-mysql-delete-secondary-after.png)
-2. 删除所有节点。
-
-    ```bash
-    kubectl delete pod mycluster-mysql-1 mycluster-mysql-0
-    ```
-
-    ![delete_three_pods](./../../../img/ha-mysql-delete-both-pods.png)
-3. 查看删除任务进展，发现所有节点都处于 pending 状态，几秒后恢复正常。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-    ![describe_three_clusters](./../../../img/ha-mysql-delete-both-pods-after.png)
-
-</TabItem>
-
-</Tabs>
-
-***自动恢复机制***
-
-这是因为节点删除后，都会自动触发重建，然后 MySQL 会自动完成集群恢复及选主。选主完成后，KubeBlocks 会探测新的主节点，并更新访问链路，恢复可用。整体耗时在 30 秒内。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/kubeblocks-for-mysql-community-edition.md b/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/kubeblocks-for-mysql-community-edition.md
deleted file mode 100644
index 98e7e7ac7..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-mysql-community-edition/kubeblocks-for-mysql-community-edition.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: 用 KubeBlocks 管理 MySQL 社区版
-description: MySQL 社区版功能列表
-keywords: [mysql, 简介, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 MySQL 社区版
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 MySQL 社区版集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/mysql)查看 YAML 示例。
-
-* [集群管理](./cluster-management/create-and-connect-a-mysql-cluster.md)
-* [配置](./configuration/configuration.md)
-* [高可用](./high-availability/high-availability.md)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/_category_.yml
deleted file mode 100644
index 59c1bf031..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 13
-label: 用 KubeBlocks 管理 PostgreSQL
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/_category_.yml
deleted file mode 100644
index e337e232a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md
deleted file mode 100644
index 48fe8fec0..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/create-and-connect-a-postgresql-cluster.md
+++ /dev/null
@@ -1,309 +0,0 @@
----
-title: 创建并连接到 PostgreSQL 集群
-description: 如何创建并连接到 PostgreSQL 集群
-keywords: [postgresql, 创建 PostgreSQL 集群, 连接到 PostgreSQL 集群]
-sidebar_position: 1
-sidebar_label: 创建并连接
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建并连接 PostgreSQL 集群
-
-本文档展示如何创建并连接到一个 PostgreSQL 集群。
-
-## 创建 PostgreSQL 集群
-
-### 开始之前
-
-* 如果您想通过 `kbcli` 创建并连接 PostgreSQL 集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 PostgreSQL 引擎已启用。KubeBlocks 默认已安装 PostreSQL，如果您在安装 KubeBlocks 时关闭/卸载了该引擎，可参考相关文档，再次[启用/安装该引擎](./../../installation/install-addons.md)。
-  
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io postgresql
-  >
-  NAME         TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  postgresql                              Available   30m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                       TYPE   STATUS     EXTRAS         AUTO-INSTALL   
-  ...
-  postgresql                 Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 查看可用于创建集群的数据库类型和版本。
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  确认 `postgresql` cluster definition 是否已安装。
-  
-  ```bash
-  kubectl get clusterdefinition postgresql
-  >
-  NAME         TOPOLOGIES   SERVICEREFS   STATUS      AGE
-  postgresql                              Available   30m
-  ```
-
-  查看可用于创建集群的版本。
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=postgresql
-  >
-  NAME                 CLUSTER-DEFINITION   STATUS      AGE
-  postgresql-12.14.0   postgresql           Available   30m
-  postgresql-12.14.1   postgresql           Available   30m
-  postgresql-12.15.0   postgresql           Available   30m
-  postgresql-14.7.2    postgresql           Available   30m
-  postgresql-14.8.0    postgresql           Available   30m
-  postgresql-15.7.0    postgresql           Available   30m
-  postgresql-16.4.0    postgresql           Available   30m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 为了保持隔离，本文档中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  ```
-
-### 创建集群
-
-KubeBlocks 支持创建两种 PostgreSQL 集群：单机版（Standalone）和主备版（Replication）。单机版仅支持一个副本，适用于对可用性要求较低的场景。 对于高可用性要求较高的场景，建议创建集群版，以支持自动故障切换。为了确保高可用性，所有的副本都默认分布在不同的节点上。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 PostgreSQL 集群。
-
-   KubeBlocks 通过 `Cluster` 定义集群。以下是创建 PostgreSQL 主备版的示例。如果您只有一个节点可用于部署主备版集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: postgresql
-     topology: replication
-     componentSpecs:
-       - name: postgresql
-         serviceVersion: "14.7.2"
-         disableExporter: false
-         labels:
-           # Note: DO NOT REMOVE THIS LABEL
-           apps.kubeblocks.postgres.patroni/scope: mycluster-postgresql
-         replicas: 2
-         resources:
-           limits:
-             cpu: "0.5"
-             memory: "0.5Gi"
-           requests:
-             cpu: "0.5"
-             memory: "0.5Gi"
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-a-postgresql-cluster.md#终止策略)。 |
-   | `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 PostgreSQL 集群时，该值必须为 `postgresql`。 |
-   | `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。建议值为 [replication]。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。有效值为 [12.14.0,12.14.1,12.15.0,14.7.2,14.8.0,15.7.0,16.4.0] |
-   | `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-   | `spec.componentSpecs.labels` | 指定了要覆盖或添加的标签，这些标签将应用于 component 所拥有的底层 Pod、PVC、账号和 TLS 密钥以及服务。 |
-   | `spec.componentSpecs.labels.apps.kubeblocks.postgres.patroni/scope` | PostgreSQL 的 `ComponentDefinition` 指定了环境变量 `KUBERNETES_SCOPE_LABEL=apps.kubeblocks.postgres.patroni/scope`。该变量定义了 Patroni 用于标记 Kubernetes 资源的标签键，帮助 Patroni 识别哪些资源属于指定的范围（或集群）。**注意**：**不要删除此标签**。该值必须遵循 `<cluster.metadata.name>-postgresql` 格式。例如，如果你的集群名称是 `mycluster`，则该值应为 `mycluster-postgresql`。可按需将 `mycluster` 替换为你的实际集群名称。  |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-   KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   执行以下命令，查看已创建的 PostgreSQL 集群：
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   >
-   NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-   mycluster   postgresql           postgresql-14.8.0   Delete               Running   9m21s
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建 PostgreSQL 集群。
-
-   以下为创建单机版的示例。
-
-   ```bash
-   kbcli cluster create postgresql mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create postgresql --help
-
-   kbcli cluster create postgresql -h
-   ```
-
-   例如，您可以使用 `--replicas` 指定副本数，创建主备版集群。
-
-   ```bash
-   kbcli cluster create postgresql mycluster --replicas=2 -n demo
-   ```
-
-   如果您只有一个节点用于部署主备版集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create postgresql mycluster \
-       --mode='replication' \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接到 PostgreSQL 集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-使用 `kubectl exec` 命令进入 Pod 并连接到数据库。
-
-KubeBlocks operator 会创建一个名为 `mycluster-conn-credential` 的新的 Secret 来存储集群的连接凭证。该 Secret 包含以下 key：
-
-* `username`：PostgreSQL 集群的根用户名。
-* `password`：根用户的密码。
-* `port`：PostgreSQL集群的端口。
-* `host`：PostgreSQL 集群的主机。
-* `endpoint`：PostgreSQL 集群的终端节点，与 `host:port` 相同。
-
-1. 获取用于 `kubectl exec` 命令的 `username` 和 `password`。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   postgres
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   h62rg2kl
-   ```
-
-2. 使用用户名和密码，进入 Pod `mycluster-postgresql-0` 并连接到数据库。
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-postgresql-0 -- bash
-
-   root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-   Password: h62rg2kl
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-还可以使用端口转发在本地计算机上连接数据库。
-
-1. 通过端口转发服务。
-
-   ```bash
-   kubectl port-forward -n demo svc/mycluster-postgresql 5432:5432 
-   ```
-
-2. 在新的终端窗口中执行以下命令，连接到数据库。
-
-   ```bash
-   root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-   Password: h62rg2kl
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster  --namespace demo
-```
-
-</TabItem>
-
-</Tabs>
-
-有关详细的数据库连接指南，请参考[连接数据库](./../../connect-databases/overview-on-connect-databases.md)。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/delete-a-postgresql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/delete-a-postgresql-cluster.md
deleted file mode 100644
index b5fc09cc5..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/delete-a-postgresql-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [postgresql, 删除集群]
-sidebar_position: 7
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除 PostgreSQL 集群
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-## 终止策略
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/expand-volume.md
deleted file mode 100644
index a3ba69c51..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,198 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-keywords: [postgresql, 磁盘扩容]
-sidebar_position: 3
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 存储磁盘扩容。
-
-:::note
-
-磁盘扩容将触发 Pod 重启。重启后，主节点可能会发生变化。
-
-:::
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则后续操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: postgresql
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. 验证磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     componentSpecs:
-     - name: postgresql
-       componentDefRef: postgresql
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改该参数值
-     terminationPolicy: Delete
-   ```
-
-2. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    ```bash
-    kbcli cluster volume-expand mycluster --components="postgresql" -n demo \
-      --volume-claim-templates="data" --storage="40Gi"
-    ```
-
-    - `--components` 表示需扩容的组件名称。
-    - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-    - `--storage` 表示磁盘需扩容至的大小。
-
-2. 验证扩容操作是否成功。
-
-    - 查看 OpsRequest 进度。
-
-       执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-8257f -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME             NAMESPACE     CLUSTER-DEFINITION        VERSION                  TERMINATION-POLICY        STATUS          CREATED-TIME
-       mycluster        demo          postgresql                postgresql-14.8.0        Delete                    Updating        Sep 28,2024 16:47 UTC+0800
-       ```
-
-       * STATUS=Updating 表示扩容正在进行中。
-       * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/restart-a-postgresql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/restart-a-postgresql-cluster.md
deleted file mode 100644
index 73cf0e541..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/restart-a-postgresql-cluster.md
+++ /dev/null
@@ -1,99 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [postgresql, 重启]
-sidebar_position: 4
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-重启后，主节点可能会发生变化。
-
-:::
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: postgresql
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                     READY   STATUS            RESTARTS   AGE
-   mycluster-postgresql-0   3/4     Terminating       0          5m32s
-   mycluster-postgresql-1   4/4     Running           0          6m36s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `--components` 和 `--ttlSecondsAfterSucceed` 的值，重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster --components="postgresql" -n demo \
-     --ttlSecondsAfterSucceed=30
-   ```
-
-   - `--components` 表示需要重启的组件名称。
-   - `--ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启操作。
-
-   执行以下命令检查集群状态，并验证重启操作。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME       NAMESPACE   CLUSTER-DEFINITION          VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo       postgresql                  postgresql-14.8.0   Delete               Running   Sep 28,2024 16:57 UTC+0800
-   ```
-
-   * STATUS=Updating 表示集群正在重启中。
-   * STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/scale-for-a-postgresql-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/scale-for-a-postgresql-cluster.md
deleted file mode 100644
index 6c5cb8774..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/scale-for-a-postgresql-cluster.md
+++ /dev/null
@@ -1,451 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [postgresql, 垂直扩缩容]
-sidebar_position: 2
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# PostgreSQL 集群扩缩容
-
-KubeBlocks 支持对 PostgreSQL 集群进行垂直扩缩容。
-
-:::note
-
-集群垂直或水平扩缩容后，KubeBlocks 会根据新的规格自动匹配合适的配置模板。这因为 KubeBlocks 在 v0.9.0 中引入了动态配置功能。该功能简化了配置参数的过程，节省了时间和精力，并减少了由于配置错误引起的性能问题。有关详细说明，请参阅[配置](./../configuration/configuration.md)。
-
-:::
-
-## 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: postgresql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  postgresql
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      postgresql
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     componentSpecs:
-     - componentDefRef: postgresql
-       enabledLogs:
-       - running
-       disableExporter: true
-       name: postgresql
-       replicas: 2
-       resources: # 修改参数值
-         limits:
-           cpu: "2"
-           memory: 4Gi
-         requests:
-           cpu: "1"
-           memory: 2Gi
-   ...
-   ```
-
-2. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  postgresql
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      postgresql
-    Replicas:  2
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-   ```bash
-   kbcli cluster vscale mycluster -n demo --components="postgresql" --memory="1Gi" --cpu="1"
-   ```
-
-   - `--components` 表示可进行垂直扩容的组件名称。
-   - `--memory` 表示组件请求和限制的内存大小。
-   - `--cpu` 表示组件请求和限制的 CPU 大小。
-
-2. 可通过以下任意一种方式验证垂直扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME             NAMESPACE        CLUSTER-DEFINITION         VERSION                TERMINATION-POLICY   STATUS    CREATED-TIME
-     mycluster        demo             postgresql                 postgresql-14.8.0      Delete               Running   Sep 28,2024 16:47 UTC+0800
-     ```
-
-     - STATUS=VerticalScaling 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-       > 你可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源是否已经发生更改。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，你可以应用水平扩容将 Pod 的数量从三个增加到五个。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [水平扩缩容相关文档](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    AGE
-mycluster   postgresql           postgresql-14.8.0   Delete               Running   29m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        postgresql           postgresql-14.8.0   Delete               Running   Sep 28,2024 16:47 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: postgresql
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: postgresql
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     componentSpecs:
-     - name: postgresql
-       componentDefRef: postgresql
-       replicas: 1 # 修改该参数值
-   ...
-   ```
-
-2. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-    ```bash
-    kbcli cluster hscale mycluster -n demo --components="postgresql" --replicas=2
-    ```
-
-   - `--components` 表示准备进行水平扩容的组件名称。
-   - `--replicas` 表示指定组件的副本数。可按需修改该参数值，对应执行扩缩容操作。
-
-2. 验证水平扩容。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-   - STATUS=Updating 表示正在进行水平扩容。
-   - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-04-08T04:20:26Z"
-    message: VolumeSnapshot/pg-cluster-postgresql-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-    ```bash
-    kubectl create -f - <<EOF
-    apiVersion: snapshot.storage.k8s.io/v1
-    kind: VolumeSnapshotClass
-    metadata:
-      name: csi-aws-vsc
-      annotations:
-        snapshot.storage.kubernetes.io/is-default-class: "true"
-    driver: ebs.csi.aws.com
-    deletionPolicy: Delete
-    EOF
-    ```
-
-2. 删除错误的备份和 volumesnapshot 资源。
-
-    ```bash
-    kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-    kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-    ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/start-stop-a-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/start-stop-a-cluster.md
deleted file mode 100644
index 55badca7c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/start-stop-a-cluster.md
+++ /dev/null
@@ -1,172 +0,0 @@
----
-title: 停止/启动集群
-description: 如何停止/启动集群
-keywords: [postgresql, 停止集群, 启动集群]
-sidebar_position: 5
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-stop
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Stop
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   将 replicas 设为 0，删除 Pods。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: postgresql
-       componentDefRef: postgresql
-       disableExporter: true  
-       replicas: 0 # 修改该参数值
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster stop mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-## 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest">
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF 
-   ```
-
-   </TabItem>
-  
-   <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   将 replicas 数值调整为停止集群前的数量，再次启动集群。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: postgresql
-     clusterVersionRef: postgresql-14.8.0
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       disableExporter: true
-       replicas: 1 # 修改该参数值
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否再次启动。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/switchover.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/switchover.md
deleted file mode 100644
index 1004459fc..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/cluster-management/switchover.md
+++ /dev/null
@@ -1,131 +0,0 @@
----
-title: 切换 PostgreSQL 集群
-description: 如何切换 PostgreSQL 集群
-keywords: [postgresql, 切换集群, switchover]
-sidebar_position: 6
-sidebar_label: 切换
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 切换 PostgreSQL 集群
-
-您可以通过执行命令切换 PostgreSQL 主备版。切换后，KubeBlocks 将修改实例角色。
-
-## 开始之前
-
-* 确保集群正常运行。
-* 检查以下角色探针参数是否存在，确认是否已启用探针。
-
-   ```bash
-   kubectl get cd postgresql -o yaml
-   >
-   probes:
-     roleProbe:
-       failureThreshold: 2
-       periodSeconds: 1
-       timeoutSeconds: 1
-   ```
-
-## 切换集群
-
-将 PostgreSQL 主备版的从节点切换为主节点，原来的主节点实例将被切换为从节点实例。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-`instanceName` 字段的值定义了本次切换是否指定了新的主节点实例。
-
-* 不指定主节点实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: postgresql
-      instanceName: '*'
-  >>
-  ```
-
-* 指定一个新的主节点实例进行切换。
-
-  ```yaml
-  kubectl apply -f -<<EOF
-  apiVersion: apps.kubeblocks.io/v1alpha1
-  kind: OpsRequest
-  metadata:
-    name: mycluster-switchover
-    namespace: demo
-  spec:
-    clusterName: mycluster
-    type: Switchover
-    switchover:
-    - componentName: postgresql
-      instanceName: 'mycluster-postgresql-2'
-  >>
-  ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-* 不指定主节点实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster -n demo
-    ```
-
-* 指定一个新的主节点实例进行切换。
-
-    ```bash
-    kbcli cluster promote mycluster -n demo --instance='mycluster-postgresql-2'
-    ```
-
-* 如果有多个组件，可以使用 `--components` 参数指定一个组件。
-
-    ```bash
-    kbcli cluster promote mycluster -n demo --instance='mycluster-postgresql-2' --components='postgresql'
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 验证集群切换
-
-检查实例状态，验证切换是否成功。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
-
-kubectl -n demo get po -L kubeblocks.io/role 
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list-instances -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 处理异常情况
-
-如果报错，请参考[异常处理](./../../handle-an-exception/handle-a-cluster-exception.md)排查问题。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/configuration/_category_.yml
deleted file mode 100644
index f7f240b8d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/configuration/configuration.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/configuration/configuration.md
deleted file mode 100644
index 9c342020a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/configuration/configuration.md
+++ /dev/null
@@ -1,426 +0,0 @@
----
-title: 配置集群参数
-description: 如何配置集群参数
-keywords: [postgresql, 参数, 配置]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-本文档将说明如何配置集群参数。
-
-从 v0.9.0 开始，KubeBlocks 支持数据库参数配置动态渲染。当数据库实例的规格发生变化时（例如，用户进行了实例的升降配），KubeBlocks 会根据新的规格自动匹配适用的参数模板。这是因为不同规格的数据库实例可能需要不同的最佳参数配置以优化性能和资源利用率。当用户选择不同的数据库实例规格时，KubeBlocks 会自动检测并确定适用于新规格的最佳数据库参数配置，以确保数据库在新规格下具有最优的性能和配置。
-
-配置动态渲染功能简化了数据库规格调整的过程。用户无需手动更改数据库参数，KubeBlocks 会自动处理参数的更新和配置，以适应新的规格。这样可以节省时间和精力，并减少由于参数设置不正确而导致的性能问题。
-
-需要注意的是，配置动态渲染功能并不适用于所有参数。有些参数可能需要手动进行调整和配置。此外，如果您对数据库参数进行了手动修改，KubeBlocks 在更新数据库参数模板时可能会覆盖手动修改。因此，在使用动态调整功能时，建议先备份和记录自定义的参数设置，以便在需要时进行恢复。
-
-<Tabs>
-
-<TabItem value="修改配置文件" label="修改配置文件" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-postgresql -n demo
-   ```
-
-2. 按需配置参数。以下实例中添加了 `spec.configFileParams`，用于配置 `max_connections` 参数。
-
-   ```yaml
-   spec:
-     clusterRef: mycluster
-     componentName: postgresql
-     configItemDetails:
-     - configFileParams:
-         my.cnf:
-           parameters:
-             max_connections: "600"
-       configSpec:
-         constraintRef: postgresql14-cc
-         defaultMode: 292
-         keys:
-         - postgresql.conf
-         name: postgresql-configuration
-         namespace: kb-system
-         templateRef: postgresql-configuration
-         volumeName: postgresql-config
-       name: postgresql-configuration
-     - configSpec:
-         defaultMode: 292
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      root
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      2gvztbvz
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-postgresql-0 -- bash
-
-      root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-      Password: tf8fhsv2
-      >
-      postgres=# show max_connections;
-      max_connections
-      -----------------
-      600
-      (1 row)
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`max_connections` 参数修改为 `600`。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: postgresql
-       configurations:
-       - keys:
-         - key: postgresql.conf
-           parameters:
-           - key: max_connections
-             value: "600"
-         name: postgresql-configuration
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 Opsrequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了该集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      postgres
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      tf8fhsv2
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-postgresql-0 -- bash
-
-      root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-      Password: tf8fhsv2
-      >
-      postgres=# show max_connections;
-      max_connections
-      -----------------
-      600
-      (1 row)
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-查看集群的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-从元数据中可以找到 PostgreSQL 集群的配置文件。
-
-你也可以查看此配置文件和参数的详细信息。
-
-* 查看当前配置文件的详细信息。
-
-   ```bash
-   kbcli cluster describe-config mycluster -n demo --show-detail
-   ```
-
-* 查看参数描述。
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-* 查看指定参数的使用文档。
-  
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --param=max_connections
-  ```
-  
-  <details>
-
-  <summary>输出</summary>
-  
-  ```bash
-  template meta:
-    ConfigSpec: postgresql-configuration ComponentName: postgresql ClusterName: mycluster
-
-  Configure Constraint:
-    Parameter Name:     max_connections
-    Allowed Values:     [6-8388607]
-    Scope:              Global
-    Dynamic:            true
-    Type:               integer
-    Description:        Sets the maximum number of concurrent connections.
-  ```
-
-  </details>
-
-  * Allowed Values：定义了参数的有效值范围。
-  * Dynamic：决定了参数配置的生效方式。根据被修改参数的生效类型，有**动态**和**静态**两种不同的配置策略。
-    * `Dynamic` 为 `true` 时，参数的生效类型是**动态**的，可以在线配置。
-    * `Dynamic` 为 `false` 时，参数的生效类型是**静态**的，需要重新启动 Pod 才能生效。
-  * Description：描述了参数的定义。
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-下面以配置 `max_connections` 为例。
-
-1. 查看当前 `max_connections` 的值。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   postgres=# show max_connections;
-    max_connections
-   -----------------
-    100
-   (1 row)
-   ```
-
-2. 调整 `max_connections` 的值。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --set=max_connections=200
-   ```
-
-   :::note
-
-   确保设置的值在该参数的 Allowed Values 范围内。如果设置的值不符合取值范围，系统会提示错误。例如：
-
-   ```bash
-   kbcli cluster configure mycluster -n demo  --set=max_connections=5
-   >
-   error: failed to validate updated config: [failed to cue template render configure: [pg.acllog-max-len: invalid value 5 (out of bound 6-8388607):
-   343:34
-   ]
-   ]
-   ```
-
-   :::
-
-3. 查看参数配置状态。
-
-   `Status.Progress` 和 `Status.Status` 展示参数配置的整体状态，而 `Conditions` 展示详细信息。
-
-   当 `Status.Status` 为 `Succeed` 时，配置完成。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-fq6q7 -n demo
-   ```
-
-   <details>
-
-   <summary>输出</summary>
-
-   ```bash
-   Spec:
-     Name: mycluster-reconfiguring-fq6q7 NameSpace: demo Cluster: mycluster Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=postgresql --config-specs=postgresql-configuration --config-file=postgresql.conf --set max_connections=100 --namespace=demo
-
-   Status:
-     Start Time:         Mar 17,2023 19:25 UTC+0800
-     Completion Time:    Mar 17,2023 19:25 UTC+0800
-     Duration:           2s
-     Status:             Succeed
-     Progress:           1/1
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                            STATUS   MESSAGE
-   Mar 17,2023 19:25 UTC+0800   Progressing          OpsRequestProgressingStarted      True     Start to process the OpsRequest: mycluster-reconfiguring-fq6q7 in Cluster: mycluster
-   Mar 17,2023 19:25 UTC+0800   Validated            ValidateOpsRequestPassed          True     OpsRequest: mycluster-reconfiguring-fq6q7 is validated
-   Mar 17,2023 19:25 UTC+0800   Reconfigure          ReconfigureStarted                True     Start to reconfigure in Cluster: mycluster, Component: postgresql
-   Mar 17,2023 19:25 UTC+0800   ReconfigureMerged    ReconfigureMerged                 True     Reconfiguring in Cluster: mycluster, Component: postgresql, ConfigSpec: postgresql-configuration, info: updated: map[postgresql.conf:{"max_connections":"200"}], added: map[], deleted:map[]
-   Mar 17,2023 19:25 UTC+0800   ReconfigureSucceed   ReconfigureSucceed                True     Reconfiguring in Cluster: mycluster, Component: postgresql, ConfigSpec: postgresql-configuration, info: updated policy: <operatorSyncUpdate>, updated: map[postgresql.conf:{"max_connections":"100"}], added: map[], deleted:map[]
-   Mar 17,2023 19:25 UTC+0800   Succeed              OpsRequestProcessedSuccessfully   True     Successfully processed the OpsRequest: mycluster-reconfiguring-fq6q7 in Cluster: mycluster
-   ```
-
-   </details>
-
-4. 连接至数据库，验证参数是否按预期配置。
-
-   配置生效过程约需要 30 秒，这是由于 kubelet 需要一定时间才能将对 ConfigMap 的修改同步到 Pod 的卷。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   postgres=# show max_connections;
-    max_connections
-   -----------------
-    200
-   (1 row)
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，帮助以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   如果集群中有多个组件，请使用 `--components` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-njk23 -n demo
-   ```
-
-3. 连接至数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2. KubeBlocks 将在后续版本支持参数删除。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，你可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-<details>
-
-<summary>输出</summary>
-
-```bash
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME            FILE                  ENABLED   TEMPLATE                    CONSTRAINT        RENDERED                                         COMPONENT    CLUSTER
-postgresql-configuration    kb_restore.conf       false     postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-configuration    pg_hba.conf           false     postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-configuration    postgresql.conf       true      postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-configuration    kb_pitr.conf          false     postgresql-configuration    postgresql14-cc   mycluster-postgresql-postgresql-configuration    postgresql   mycluster
-postgresql-custom-metrics   custom-metrics.yaml   false     postgresql-custom-metrics                     mycluster-postgresql-postgresql-custom-metrics   postgresql   mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT    CONFIG-SPEC-NAME           FILE              STATUS    POLICY    PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-fq6q7   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed             1/1        Mar 17,2023 19:25 UTC+0800   {"postgresql.conf":"{\"max_connections\":\"100\"}"}
-mycluster-reconfiguring-bm84z   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed             1/1        Mar 17,2023 19:27 UTC+0800   {"postgresql.conf":"{\"max_connections\":\"200\"}"}
-mycluster-reconfiguring-cbqxd   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed             1/1        Mar 17,2023 19:35 UTC+0800   {"postgresql.conf":"{\"max_connections\":\"500\"}"}
-mycluster-reconfiguring-rcnzb   mycluster   postgresql   postgresql-configuration   postgresql.conf   Succeed   restart   1/1        Mar 17,2023 19:38 UTC+0800   {"postgresql.conf":"{\"shared_buffers\":\"512MB\"}"}
-```
-
-</details>
-
-从上面可以看到，有三个参数被修改过。
-
-通过比较这些改动，可以查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-bm84z mycluster-reconfiguring-rcnzb -n demo
->
-DIFF-CONFIG RESULT:
-  ConfigFile: postgresql.conf TemplateName: postgresql-configuration ComponentName: postgresql ClusterName: mycluster UpdateType: update
-
-PARAMETERNAME     MYCLUSTER-RECONFIGURING-BM84Z    MYCLUSTER-RECONFIGURING-RCNZB
-max_connections   200                              500
-shared_buffers    256MB                            512MB
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/high-availability/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/high-availability/_category_.yml
deleted file mode 100644
index 06086f1e3..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: 高可用
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/high-availability/high-availability.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/high-availability/high-availability.md
deleted file mode 100644
index 2e4f54b71..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/high-availability/high-availability.md
+++ /dev/null
@@ -1,218 +0,0 @@
----
-title: 高可用
-description: PostgreSQL 高可用
-keywords: [postgresql, 高可用]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 高可用
-
-KubeBlocks 集成[开源的 Patroni 方案](https://patroni.readthedocs.io/en/latest/)以实现高可用性，主要采用 Noop 切换策略。
-
-## 开始之前
-
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* [创建 PostgreSQL 主备版](./../cluster-management/create-and-connect-a-postgresql-cluster.md)。
-* 检查切换策略和角色探测参数。
-  * 检查切换策略是否为 `Noop`。
-
-    ```bash
-    kubectl get cluster mycluster -o yaml
-    >
-    spec:
-      componentSpecs:
-      - name: postgresql
-        componentDefRef: postgresql
-        switchPolicy:
-          type: Noop
-    ```
-
-  * 检查角色探测参数，验证角色探测是否已启用。
-
-    ```bash
-    kubectl get cd postgresql -o yaml
-    >
-    probes:
-      roleProbe:
-        failureThreshold: 2
-        periodSeconds: 1
-        timeoutSeconds: 1
-    ```
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 PostgreSQL 集群的初始状态。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl -n demo get pod -L kubeblocks.io/role
-   ```
-
-   ![PostgreSQL 集群原始状态](./../../../img/api-ha-pg-original-status.png)
-
-   当前 `mycluster-postgresql-0` 是主节点，`mycluster-postgresql-1` 是从节点。
-
-2. 模拟主节点异常。
-
-   ```bash
-   # 进入主节点
-   kubectl exec -it mycluster-postgresql-0 -n demo -- bash
-
-   # 删除 PostgreSQL 的数据目录，模拟异常
-   root@mycluster-postgresql-0:/home/postgres# rm -fr /home/postgres/pgdata/pgroot/data
-   ```
-
-3. 查看日志，检查发生异常情况时节点角色的切换情况。
-
-   ```bash
-   # 查看主节点日志
-   kubectl logs mycluster-postgresql-0 -n demo
-   ```
-
-   在日志中可以看到，主节点释放了 Leader 锁并进行了高可用切换。
-
-   ```bash
-   2024-05-17 02:41:23,523 INFO: Lock owner: mycluster-postgresql-0; I am mycluster-postgresql-0
-   2024-05-17 02:41:23,702 INFO: Leader key released
-   2024-05-17 02:41:23,904 INFO: released leader key voluntarily as data dir empty and currently leader
-   2024-05-17 02:41:23,905 INFO: Lock owner: mycluster-postgresql-1; I am mycluster-postgresql-0
-   2024-05-17 02:41:23,906 INFO: trying to bootstrap from leader 'mycluster-postgresql-1'
-   ```
-
-   ```bash
-   # 查看从节点日志
-   kubectl logs mycluster-postgresql-1 -n demo
-   ```
-
-   原来的从节点获取了锁并成为了新的主节点。
-
-   ```bash
-   2024-05-17 02:41:35,806 INFO: no action. I am (mycluster-postgresql-1), the leader with the lock
-   2024-05-17 02:41:45,804 INFO: no action. I am (mycluster-postgresql-1), the leader with the lock
-   ```
-
-4. 连接到 PostgreSQL 集群，查看集群信息。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   postgres
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   shgkz4z9
-
-   kubectl exec -ti -n demo mycluster-postgresql-1 -- bash
-
-   root@mycluster-postgresql-0:/home/postgres# psql -U postgres -W
-   Password: shgkz4z9
-   ```
-
-   ```bash
-   postgres=# select * from pg_stat_replication;
-   ```
-
-   ![PostgreSQL 集群信息](./../../../img/api-ha-pg-replication-info.png)
-
-   从输出可以看到，`mycluster-postgresql-0` 被指定为从节点。
-
-5. 查看集群，检查实例角色。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-
-   kubectl -n demo get pod -L kubeblocks.io/role
-   ```
-
-   ![PostgreSQL 高可用切换后集群状态](./../../../img/api-ha-pg-after.png)
-
-   故障切换后，`mycluster-postgresql-0` 变成了从节点，`mycluster-postgresql-1` 变成了主节点。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 PostgreSQL 集群的初始状态。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-   ![PostgreSQL 集群原始状态](./../../../img/pgsql-ha-before.png)
-
-   当前 `mycluster-postgresql-1` 是主节点，`mycluster-postgresql-0` 是从节点。
-
-2. 模拟主节点异常。
-
-   ```bash
-   # 进入主节点
-   kubectl exec -it mycluster-postgresql-1  -n demo -- bash
-
-   # 删除 PostgreSQL 的数据目录，模拟异常
-   root@mycluster-postgresql-0:/home/postgres# rm -fr /home/postgres/pgdata/pgroot/data
-   ```
-
-3. 查看日志，检查发生异常情况时节点角色的切换情况。
-
-   ```bash
-   # 查看主节点日志
-   kubectl logs mycluster-postgresql-1 -n demo
-   ```
-
-   在日志中可以看到，主节点释放了 Leader 锁并进行了高可用切换。
-
-   ```bash
-   2024-09-28 09:54:15,199 INFO: Lock owner: mycluster-postgresql-1; I am mycluster-postgresql-1
-   2024-09-28 09:54:15,419 INFO: Leader key released
-   2024-09-28 09:54:15,632 INFO: released leader key voluntarily as data dir empty and currently leader
-   2024-09-28 09:54:15,634 INFO: Lock owner: mycluster-postgresql-0; I am mycluster-postgresql-1
-   2024-09-28 09:54:15,635 INFO: trying to bootstrap from leader 'mycluster-postgresql-0'
-   ```
-
-   ```bash
-   # 查看从节点日志
-   kubectl logs mycluster-postgresql-0 -n demo
-   ```
-
-   原来的从节点获取了锁并成为了新的主节点。
-
-   ```bash
-   2024-09-28 09:54:17,117 INFO: no action. I am (mycluster-postgresql-0), the leader with the lock
-   2024-09-28 09:54:17,516 INFO: no action. I am (mycluster-postgresql-0), the leader with the lock
-   ```
-
-4. 连接到 PostgreSQL 集群，查看集群信息。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   postgres=# select * from pg_stat_replication;
-   ```
-
-   ![PostgreSQL 集群信息](./../../../img/pgsql-ha-pg_stat_replication.png)
-
-   从输出可以看到，`mycluster-postgresql-1` 被指定为从节点。
-
-5. 查看集群，检查实例角色。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-   ![PostgreSQL 高可用切换后集群状态](../../../img/pgsql-ha-after.png)
-
-   故障切换后，`mycluster-postgresql-1` 变成了从节点，`mycluster-postgresql-0` 变成了主节点。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/introduction/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/introduction/_category_.yml
deleted file mode 100644
index decc838c5..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/introduction/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 概述
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/introduction/introduction.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/introduction/introduction.md
deleted file mode 100644
index 94e36b79c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/introduction/introduction.md
+++ /dev/null
@@ -1,21 +0,0 @@
----
-title: PostgreSQL 简介
-description: PostgreSQL 简介
-keywords: [postgresql, 简介]
-sidebar_position: 1
----
-
-# PostgreSQL 简介
-
-PostgreSQL 是一个强大、安全、可扩展、可定制的开源关系型数据库，适用于各种应用和环境。除了 PostgreSQL 的核心功能外，KubeBlocks PostgreSQL 集群还支持多个插件，用户可以自行添加。
-
-* PostGIS：PostGIS 是一个开源的空间数据库插件，为 PostgreSQL 数据库添加了地理信息系统（GIS）功能。它提供了一组可用于存储、查询和分析地理空间数据的空间函数和类型，允许使用 SQL 运行位置查询。
-* pgvector：pgvector 是一个支持向量数据类型和向量操作的 PostgreSQL 插件。它可以高效存储和查询向量数据，支持各种向量操作，如相似性搜索、聚类、分类和推荐系统。Pgvector 可用于存储 AI 模型的嵌入向量，为 AI 添加持久性内存。
-* pg_trgm：pg_trgm 提供了基于 trigram 匹配的字母数字文本相似度计算的函数和操作符，以及支持快速搜索类似字符串的索引运算符类。
-* postgres_fdw：postgres_fdw 插件可以将远程数据库的表映射到 PostgreSQL 中的本地表，允许用户通过本地数据库查询和操作数据。
-
-**参考资料**
-
-* [PostgreSQL features](https://www.postgresql.org/about/featurematrix/)
-* [PostGIS](https://postgis.net/)
-* [pgvector](https://github.com/pgvector/pgvector)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/kubeblocks-for-postgresql.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/kubeblocks-for-postgresql.md
deleted file mode 100644
index 8051a640a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/kubeblocks-for-postgresql.md
+++ /dev/null
@@ -1,16 +0,0 @@
----
-title: 用 KubeBlocks 管理 PostgreSQL
-description: KubeBlocks 中的 PostgreSQL 功能列表
-keywords: [postgresql, 简介, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 PostgreSQL
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 PostgreSQL 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/postgresql)查看 YAML 示例。
-
-* [简介](./introduction/introduction.md)
-* [集群管理](./cluster-management/create-and-connect-a-postgresql-cluster.md)
-* [配置](./configuration/configuration.md)
-* [高可用](./high-availability/high-availability.md)
-* [PostgreSQL 连接池](./postgresql-connection-pool/postgresql-connection-pool.md)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/postgresql-connection-pool/_category_.yaml b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/postgresql-connection-pool/_category_.yaml
deleted file mode 100644
index 9430b9a9e..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/postgresql-connection-pool/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: PostgreSQL 连接池
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/postgresql-connection-pool/postgresql-connection-pool.md b/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/postgresql-connection-pool/postgresql-connection-pool.md
deleted file mode 100644
index c80d8d406..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-postgresql/postgresql-connection-pool/postgresql-connection-pool.md
+++ /dev/null
@@ -1,181 +0,0 @@
----
-title: PostgreSQL 连接池
-description: 通过连接 PgBouncer，减少过多的 PostgreSQL 连接，提高数据库的吞吐量和稳定性。
-keywords: [postgresql, 连接池, pgbouncer]
-sidebar_position: 1
-sidebar_label: 连接池
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# PostgreSQL 连接池
-
-PostgreSQL 是多进程架构，它会为每个用户连接创建一个单独的后端进程，当用户连接数较多时，会占用大量内存，降低数据库的吞吐量和稳定性。为解决 PostgreSQL 连接过多而导致的问题，KubeBlocks 为 PostgreSQL 集群引入了连接池，PgBouncer。
-
-使用 KubeBlocks 创建 PostgreSQL 集群时，会默认安装 PgBouncer。
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 PostgreSQL 集群的状态，确保为 `Running`。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-2. 查看 PostgreSQL 集群详细信息，其中会包含两条连接信息。
-
-    其中 `5432` 端口用于直接连接数据库主节点，`6432` 端口用于连接 PgBouncer。
-
-    ```bash
-    kubectl get services mycluster-postgresql -n demo
-    >
-    NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
-    mycluster-postgresql   ClusterIP   10.97.123.178   <none>        5432/TCP,6432/TCP   39m       
-    ```
-
-3. 获取 `kubectl exec` 命令所需的 `username` 和 `password`。
-
-    ```bash
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-    >
-    postgres
-
-    kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-    >
-    shgkz4z9
-   ```
-
-4. 通过 PgBouncer 连接集群。
-
-   该命令会展示访问集群的方式，默认使用 `5432` 端口访问集群，可以将端口替换为 `6432` 通过 PgBouncer 访问集群。
-
-    ```bash
-    kubectl -n demo port-forward service/mycluster-postgresql 6432:6432
-    ```
-
-5. 打开一个新的终端窗口，执行 `psql` 命令进行连接。
-
-    将第 3 步中获取的密码填充到 `PGPASSWORD` 中。
-
-    ```bash
-    PGPASSWORD=shgkz4z9 psql -h127.0.0.1 -p 6432 -U postgres postgres
-    ```
-
-6. 在 `psql` 中执行如下命令进行验证。
-
-   如果可以连接至 `pgbouncer` 库并正确执行 `show help` 命令，说明已经成功连接 PgBouncer。
-
-   ```bash
-   postgres=# \c pgbouncer
-   ```
-
-   ```bash
-   pgbouncer=# show help;
-   >
-   NOTICE:  Console usage
-   DETAIL:  
-           SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
-           SHOW PEERS|PEER_POOLS
-           SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM|STATE
-           SHOW DNS_HOSTS|DNS_ZONES
-           SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
-           SET key = arg
-           RELOAD
-           PAUSE [<db>]
-           RESUME [<db>]
-           DISABLE <db>
-           ENABLE <db>
-           RECONNECT [<db>]
-           KILL <db>
-           SUSPEND
-           SHUTDOWN
-           WAIT_CLOSE [<db>]
-   SHOW
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 PostgreSQL 集群的状态，确保为 `Running`。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   ```
-
-2. 查看 PostgreSQL 集群详细信息，其中会包含两条连接信息。
-
-    其中 `5432` 端口用于直接连接数据库主节点，`6432` 端口用于连接 PgBouncer。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    >
-    Endpoints:
-    COMPONENT    MODE        INTERNAL                                              EXTERNAL   
-    postgresql   ReadWrite   mycluster-postgresql.default.svc.cluster.local:5432   <none>     
-                             mycluster-postgresql.default.svc.cluster.local:6432         
-    ```
-
-3. 通过 PgBouncer 连接集群。
-
-   该命令会展示访问集群的方式，默认使用 `5432` 端口访问集群，可以将端口替换为 `6432` 通过 PgBouncer 访问集群。
-
-    ```bash
-    kbcli cluster connect --client=cli --show-example mycluster -n demo
-    >
-    kubectl port-forward service/mycluster-postgresql 6432:6432
-    PGPASSWORD=***** psql -h127.0.0.1 -p 6432 -U postgres postgres
-    ```
-
-4. 执行 `port-forward` 命令。
-
-   ```bash
-   kubectl port-forward service/mycluster-postgresql 6432:6432
-   ```
-
-5. 在另一个终端窗口中执行 `psql` 命令进行连接。
-
-   ```bash
-   PGPASSWORD=***** psql -h127.0.0.1 -p 6432 -U postgres postgres
-   ```
-
-6. 在 `psql` 中执行如下命令进行验证。
-
-   如果可以连接至 `pgbouncer` 库并正确执行 `show help` 命令，说明已经成功连接 PgBouncer。
-
-   ```bash
-   postgres=# \c pgbouncer
-   ```
-
-   ```bash
-   pgbouncer=# show help;
-   >
-   NOTICE:  Console usage
-   DETAIL:  
-           SHOW HELP|CONFIG|DATABASES|POOLS|CLIENTS|SERVERS|USERS|VERSION
-           SHOW PEERS|PEER_POOLS
-           SHOW FDS|SOCKETS|ACTIVE_SOCKETS|LISTS|MEM|STATE
-           SHOW DNS_HOSTS|DNS_ZONES
-           SHOW STATS|STATS_TOTALS|STATS_AVERAGES|TOTALS
-           SET key = arg
-           RELOAD
-           PAUSE [<db>]
-           RESUME [<db>]
-           DISABLE <db>
-           ENABLE <db>
-           RECONNECT [<db>]
-           KILL <db>
-           SUSPEND
-           SHUTDOWN
-           WAIT_CLOSE [<db>]
-   SHOW
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/_category_.yml
deleted file mode 100644
index 66a7a8b25..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 18
-label: 用 KubeBlocks 管理 Pulsar
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/_category_.yml
deleted file mode 100644
index e337e232a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kb.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kb.md
deleted file mode 100644
index 00ce785f5..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/create-pulsar-cluster-on-kb.md
+++ /dev/null
@@ -1,204 +0,0 @@
----
-title: 创建 Pulsar 集群
-description: 如何创建 Pulsar 集群
-keywords: [pulsar, 创建集群]
-sidebar_position: 1
-sidebar_label: 创建
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-## 概述
-
-KubeBlocks 可以通过良好的抽象快速集成新引擎，并支持 Pulsar 集群的创建和删除、集群组件的垂直扩缩容和水平扩缩容、存储扩容、重启和配置更改等。
-
-本系列文档重点展示 KubeBlocks 对 Pulsar 日常运维能力的支持，包括集群创建、删除、重启等基本生命周期操作，以及水平扩容、垂直扩容、存储扩容、配置变更等高阶操作。
-
-## 环境推荐
-
-关于各组件的规格（如内存、CPU 和存储容量等），请参考 [Pulsar 官方文档](https://pulsar.apache.org/docs/3.1.x/)。
-
-|      组件        |                                 所需副本数                                  |
-| :--------------------  | :------------------------------------------------------------------------ |
-|       zookeeper        |   测试环境 1 个，生产环境 3 个           |
-|        bookies         |  测试环境至少 3 个，生产环境至少 4 个   |
-|        broker          |      至少 1 个，生产环境建议 3 个       |
-| recovery (可选)    | 至少 1 个；如果 bookie 未启用 autoRecovery 功能，则至少需要 3 个 |
-|   proxy (可选)     |         至少 1 个；生产环境需要 3 个           |
-
-### 开始之前
-
-* 如果您想通过 `kbcli` 创建和管理集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 Pulsar 引擎已启用。如果引擎未启用，可参考相关文档，[启用该引擎](./../../installation/install-addons.md)。
-
-* 查看可用于创建集群的数据库类型和版本。
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get clusterdefinition pulsar
-  >
-  NAME    TOPOLOGIES                                        SERVICEREFS    STATUS      AGE
-  pulsar  pulsar-basic-cluster,pulsar-enhanced-cluster                     Available   16m
-  ```
-
-  查看可用版本。
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=pulsar
-  >
-  NAME            CLUSTER-DEFINITION   STATUS      AGE
-  pulsar-2.11.2   pulsar               Available   16m
-  pulsar-3.0.2    pulsar               Available   16m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  kbcli clusterversion list
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 为了保持隔离，本文档中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-## 创建 Pulsar 集群
-
-1. 创建基础模式的 Pulsar 集群。如需创建其他集群模式，您可查看 [GitHub 仓库中的示例](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/pulsar)。
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: pulsar
-     topology: pulsar-basic-cluster
-     services:
-       - name: broker-bootstrap
-         serviceName: broker-bootstrap
-         componentSelector: broker
-         spec:
-           type: ClusterIP
-           ports:
-             - name: pulsar
-               port: 6650
-               targetPort: 6650
-             - name: http
-               port: 80
-               targetPort: 8080
-             - name: kafka-client
-               port: 9092
-               targetPort: 9092
-       - name: zookeeper
-         serviceName: zookeeper
-         componentSelector: zookeeper
-         spec:
-           type: ClusterIP
-           ports:
-             - name: client
-               port: 2181
-               targetPort: 2181
-     componentSpecs:
-       - name: broker
-         serviceVersion: 3.0.2
-         replicas: 1
-         env:
-           - name: KB_PULSAR_BROKER_NODEPORT
-             value: "false"
-         resources:
-           limits:
-             cpu: "1"
-             memory: "512Mi"
-           requests:
-             cpu: "200m"
-             memory: "512Mi"
-       - name: bookies
-         serviceVersion: 3.0.2
-         replicas: 4
-         resources:
-           limits:
-             cpu: "1"
-             memory: "512Mi"
-           requests:
-             cpu: "200m"
-             memory: "512Mi"
-         volumeClaimTemplates:
-           - name: ledgers
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 8Gi
-           - name: journal
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 8Gi
-       - name: zookeeper
-         serviceVersion: 3.0.2
-         replicas: 1
-         resources:
-           limits:
-             cpu: "1"
-             memory: "512Mi"
-           requests:
-             cpu: "100m"
-             memory: "512Mi"
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 8Gi
-   EOF
-   ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-pulsar-cluster.md#终止策略)。 |
-   | `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 Pulsar 集群时，该值必须为 `pulsar`。 |
-   | `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。 |
-   | `spec.services` | 定义了集群暴露的额外服务列表。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。有效值为 [2.11.2,3.0.2]。 |
-   | `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-2. 验证已创建的集群。
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    当状态显示为 `Running` 时，表示集群已成功创建。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/delete-pulsar-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/delete-pulsar-cluster.md
deleted file mode 100644
index 9c7369aac..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/delete-pulsar-cluster.md
+++ /dev/null
@@ -1,80 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [pulsar, 删除集群, 删除保护]
-sidebar_position: 7
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除集群
-
-## 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式，可在创建集群时进行设置。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl"  default>
-
-```bash
-kubectl get cluster mycluster -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/expand-volume.md
deleted file mode 100644
index d9393ff89..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,177 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-sidebar_position: 3
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 存储磁盘扩容。
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expand
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: bookies
-       volumeClaimTemplates:
-       - name: ledgers
-         storage: "200Gi"
-       - name: journal
-         storage: "40Gi"
-   EOF
-   ```
-
-2. 验证磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。`spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-3.0.2
-     componentSpecs:
-     - name: pulsar
-       componentDefRef: pulsar
-       replicas: 1
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改磁盘容量
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    :::note
-
-    请先扩展 `journal` 卷，然后再扩展 `Ledger` 卷。
-
-    :::
-
-      - 扩展 `journal` 卷。
-
-        ```bash
-        kbcli cluster volume-expand mycluster --storage=40Gi --components=bookies -t journal -n demo
-        ```
-
-        - `--components` 表示需扩容的组件名称。
-        - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-        - `--storage` 表示磁盘需扩容至的大小。
-
-      - 扩展 `ledger` 卷。
-
-        ```bash
-        kbcli cluster volume-expand mycluster --storage=200Gi --components=bookies -t ledgers -n demo
-        ```
-
-2. 验证扩容操作是否成功。
-
-   - 查看 OpsRequest 进度。
-
-     执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-volumeexpansion-njd9n -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-     * STATUS=Updating 表示扩容正在进行中。
-     * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/restart-a-pulsar-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/restart-a-pulsar-cluster.md
deleted file mode 100644
index 0a0f5181c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/restart-a-pulsar-cluster.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [pulsar, 重启]
-sidebar_position: 4
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-重启后，主节点可能会发生变化。
-
-:::
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterRef: mycluster
-     type: Restart 
-     restart:
-     - componentName: bookies
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster -n demo --components="pulsar" --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启操作。
-
-   执行以下命令检查集群状态，并验证重启操作。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME           CLUSTER-DEFINITION   VERSION          TERMINATION-POLICY   STATUS     AGE
-   mycluster      pulsar               pulsar-3.0.2     Delete               Running    19m
-   ```
-
-   * STATUS=Updating 表示集群正在重启中。
-   * STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/scale-for-a-pulsar-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/scale-for-a-pulsar-cluster.md
deleted file mode 100644
index 8fdf81728..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/scale-for-a-pulsar-cluster.md
+++ /dev/null
@@ -1,425 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [pulsar, 水平扩缩容, 垂直扩缩容]
-sidebar_position: 2
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Pulsar 集群扩缩容
-
-KubeBlocks 支持对 Pulsar 集群进行垂直扩缩容和水平扩缩容。
-
-## 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl"  default>
-
-```bash
-kubectl get cluster mycluster -n demo
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl create -f -<< EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vscale
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: pulsar-broker
-       requests:
-         memory: "10Gi"
-         cpu: 3
-       limits:
-         memory: "10Gi"
-         cpu: 3
-     - componentName: bookies
-       requests:
-         memory: "10Gi"
-         cpu: 3
-       limits:
-         memory: "10Gi"
-         cpu: 3      
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-       - kubernetes.io/hostname
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-3.0.2
-     componentSpecs:
-     - componentDefRef: pulsar
-       enabledLogs:
-       - running
-       disableExporter: true
-       name: pulsar
-       replicas: 1
-       resources: # 修改该参数值
-         limits:
-           cpu: "2"
-           memory: 4Gi
-         requests:
-           cpu: "1"
-           memory: 2Gi
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Component Specs:
-    Component Def Ref:  pulsar
-    Enabled Logs:
-      running
-    DisableExporter:   true
-    Name:      pulsar
-    Replicas:  1
-    Resources:
-      Limits:
-        Cpu:     2
-        Memory:  4Gi
-      Requests:
-        Cpu:     1
-        Memory:  2Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-   ```bash
-   kbcli cluster vscale mycluster --cpu=3 --memory=10Gi --components=broker,bookies -n demo
-   ```
-
-   - `--components` 表示可进行垂直扩容的组件名称。
-   - `--memory` 表示组件请求和限制的内存大小。
-   - `--cpu` 表示组件请求和限制的 CPU 大小。
-
-2. 验证垂直扩缩容。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-g67k9 -n demo
-       ```
-
-    - 查看集群状态。
-
-       - STATUS=VerticalScaling 表示正在进行垂直扩容。
-       - STATUS=Running 表示垂直扩容已完成。
-       - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-          > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-    :::note
-
-    垂直扩容不会同步与 CPU 和内存相关的参数，需要手动调用配置的 OpsRequest 来进行更改。详情请参考[配置](../configuration/configuration.md)。
-
-    :::
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源是否已经发生更改。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，你可以应用水平扩容将 Pod 的数量从三个增加到五个。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [水平扩缩容文档](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-- Zookeeper 建议固定 3 节点，无需扩缩容，其他可以针对多个或单个组件进行水平扩缩容。
-- 谨慎扩缩容 Bookies 节点。其数据复制与 EnsembleSize、Write Quorum 和 Ack Quorum 配置有关，扩缩容可能导致数据丢失。详细信息请查阅 [Pulsar 官方文档](https://pulsar.apahe.org/docs/3.0.x/administration-zk-bk/#decommission-bookies-cleanly)。
-- 确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl"  default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-    ```bash
-    kubectl create -f -<< EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-horizontalscaling
-      namespace: demo
-    spec:
-      clusterRef: mycluster
-      type: HorizontalScaling  
-      horizontalScaling:
-      - componentName: pulsar-proxy
-        scaleOut:
-          replicaChanges: 2
-    EOF
-    ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-    ```bash
-    kubectl create -f -<< EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-horizontalscaling
-      namespace: demo
-    spec:
-      clusterRef: mycluster
-      type: HorizontalScaling  
-      horizontalScaling:
-      - componentName: pulsar-proxy
-        scaleIn:
-          replicaChanges: 2
-    EOF
-    ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: pulsar
-     clusterVersionRef: pulsar-3.0.2
-     componentSpecs:
-     - name: pulsar
-       componentDefRef: pulsar-proxy
-       replicas: 2 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-   ```bash
-   kbcli cluster hscale mycluster --replicas=5 --components=broker,bookies -n demo 
-   ```
-
-   - `--components` 表示准备进行水平扩容的组件名称。
-   - `--replicas` 表示指定组件的副本数。
-  
-2. 验证水平扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-ffp9p -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示正在进行水平扩容。
-       - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/pulsar-pulsar-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. 删除错误的备份（volumesnapshot 由备份生成）和 volumesnapshot 资源。
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=pulsar
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=pulsar
-   ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到运行状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/stop-start-a-pulsar-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/stop-start-a-pulsar-cluster.md
deleted file mode 100644
index f9a6ed19a..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/cluster-management/stop-start-a-pulsar-cluster.md
+++ /dev/null
@@ -1,172 +0,0 @@
----
-title: 停止/启动集群
-description: 如何停止/启动集群
-keywords: [pulsar, 停止集群, 启动集群]
-sidebar_position: 5
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 设为 0，删除 pods。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: pulsar
-      clusterVersionRef: pulsar-3.0.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: pulsar
-        componentDefRef: pulsar
-        disableExporter: true 
-        replicas: 0 # 修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 启动集群
-  
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 数值改为停止集群前的数值，再次启动集群。
-
-    ```yaml
-    ...
-    spec:
-      clusterDefinitionRef: pulsar
-      clusterVersionRef: pulsar-3.0.2
-      terminationPolicy: Delete
-      componentSpecs:
-      - name: pulsar
-        componentDefRef: pulsar
-        disableExporter: true  
-        replicas: 1 # 修改该参数值
-    ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否再次启动。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/configuration/_category_.yml
deleted file mode 100644
index f7f240b8d..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/configuration/configuration.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/configuration/configuration.md
deleted file mode 100644
index f6961bf17..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/configuration/configuration.md
+++ /dev/null
@@ -1,305 +0,0 @@
----
-title: 配置集群参数
-description: 如何配置集群参数
-keywords: [pulsar, 参数, 配置, 再配置]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-从 v0.6.0 版本开始，KubeBlocks 支持使用 `kbcli cluster configure` 和 `kbcli cluster edit-config` 两种方式来配置参数。它们的区别在于，`kbcli cluster configure ` 可以自动配置参数，而 `kbcli cluster edit-config` 则允许以可视化的方式直接编辑参数。
-
-一共有 3 类参数：
-
-1. 环境参数，比如 GC 相关的参数，`PULSAR_MEM` 和 `PULSAR_GC`。参数变更对每个组件都适用。
-2. 配置参数，比如 `zookeeper` 或 `bookies.conf` 配置文件。可以通过 `env` 的方式做变更，变更会重启 pod。
-3. 动态参数，比如 `brokers.conf` 中的配置文件。Pulsar 的 `broker` 支持两种变更模式：
-     1. 一种是需要重启的参数变更，比如 `zookeeperSessionExpiredPolicy`。
-     2. 另外一种是支持 dynamic 的参数，可以通过 `pulsar-admin brokers list-dynamic-config` 获取所有的动态参数列表。
-
-:::note
-
-`pulsar-admin `是 Pulsar 集群自带的管理工具，可以通过 `kubectl exec -it <pod-name> -- bash` 登录到对应的 Pod 中（pod-name 可通过 `kubectl get pods` 获取，选择名字中带有 `broker` 字样的 Pod 即可）。在 Pod 中的 `/pulsar/bin path` 路径下有对应的命令。关于 pulsar-admin 的更多信息，可参考[官方文档](https://pulsar.apache.org/docs/3.0.x/admin-api-tools/)。
-
-:::
-
-<Tabs>
-
-<TabItem value="编辑配置文件" label="编辑配置文件">
-
-1. 编辑 Pulsar 集群的 `broker.conf` 文件。本文实例修改了名为 `pulsar-broker-broker-config` 的文件。
-
-   ```bash
-   kubectl edit cm pulsar-broker-broker-config -n demo
-   ```
-
-2. 按需配置参数。
-
-3. 查看配置是否生效。
-
-   ```bash
-   kubectl get pod -l app.kubernetes.io/name=pulsar-broker
-   ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以使用 `kbcli` 查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`lostBookieRecoveryDelay` 参数修改为 `1000`。
-
-   ```bash
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-configuring-demo
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     reconfigure:
-       componentName: bookies
-       configurations:
-       - keys:
-         - key: bookkeeper.conf
-           parameters:
-           - key: lostBookieRecoveryDelay
-             value: "1000"
-         name: bookies-config
-     preConditionDeadlineSeconds: 0
-     type: Reconfiguring
-   EOF
-   ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 OpsRequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了改集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml -n demo
-   ```
-
-3. 确认配置是否生效。
-
-   1. 查看配置进度。
-
-      ```bash
-      kubectl get ops -n demo
-      ```
-
-   2. 查看配置是否生效。
-
-      ```bash
-      kubectl get pod -l app.kubernetes.io/name=pulsar -n demo
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以使用 `kbcli` 查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-* 查看集群的当前配置文件。
-
-  ```bash
-  kbcli cluster describe-config mycluster -n demo 
-  ```
-
-* 查看当前配置文件的详细信息。
-
-  ```bash
-  kbcli cluster describe-config mycluster -n demo --show-detail
-  ```
-
-* 查看参数描述。
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo | head -n 20
-  ```
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-#### 配置环境参数
-
-***步骤：***
-
-1. 获取 Pulsar 集群组件名称，配置参数。
-
-   ```bash
-   kbcli cluster list-components mycluster -n demo 
-   >
-   NAME               NAMESPACE   CLUSTER      TYPE               IMAGE
-   proxy              demo        mycluster    pulsar-proxy       docker.io/apecloud/pulsar:2.11.2
-   broker             demo        mycluster    pulsar-broker      docker.io/apecloud/pulsar:2.11.2
-   bookies-recovery   demo        mycluster    bookies-recovery   docker.io/apecloud/pulsar:2.11.2
-   bookies            demo        mycluster    bookies            docker.io/apecloud/pulsar:2.11.2
-   zookeeper          demo        mycluster    zookeeper          docker.io/apecloud/pulsar:2.11.2
-   ```
-
-2. 配置参数。
-
-   下面以 `zookeeper` 为例。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components=zookeeper --set PULSAR_MEM="-XX:MinRAMPercentage=50 -XX:MaxRAMPercentage=70"  
-   ```
-
-3. 验证配置。
-
-   a. 检查配置进度。
-
-   ```bash
-   kubectl get ops -n demo
-   ```
-
-   b. 检查配置是否完成。
-
-   ```bash
-   kubectl get pod -l app.kubernetes.io/name=pulsar -n demo
-   ```
-
-#### 配置其他参数
-
-下面以配置动态参数 `brokerShutdownTimeoutMs` 为例。
-
-***步骤：***
-
-1. 获取配置信息。
-
-   ```bash
-   kbcli cluster desc-config mycluster -n demo --components=broker
-   >
-   ConfigSpecs Meta:
-   CONFIG-SPEC-NAME         FILE                   ENABLED   TEMPLATE                   CONSTRAINT                   RENDERED                                  COMPONENT   CLUSTER
-   agamotto-configuration   agamotto-config.yaml   false     pulsar-agamotto-conf-tpl                                mycluster-broker-agamotto-configuration   broker      mycluster
-   broker-env               conf                   true      pulsar-broker-env-tpl      pulsar-env-constraints       mycluster-broker-broker-env               broker      mycluster
-   broker-config            broker.conf            true      pulsar-broker-config-tpl   brokers-config-constraints   mycluster-broker-broker-config            broker      mycluster
-   ```
-
-2. 配置参数。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components=broker --config-specs=broker-config --set brokerShutdownTimeoutMs=66600
-   >
-   Will updated configure file meta:
-     ConfigSpec: broker-config          ConfigFile: broker.conf        ComponentName: broker        ClusterName: mycluster
-   OpsRequest mycluster-reconfiguring-qxw8s created successfully, you can view the progress:
-           kbcli cluster describe-ops mycluster-reconfiguring-qxw8s -n demo
-   ```
-
-3. 检查配置进度。
-
-   使用上述命令打印的 ops name 进行检查。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-qxw8s -n demo
-   >
-   Spec:
-     Name: mycluster-reconfiguring-qxw8s        NameSpace: demo        Cluster: mycluster        Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster --components=broker --config-specs=broker-config --config-file=broker.conf --set brokerShutdownTimeoutMs=66600 --namespace=demo
-
-   Status:
-     Start Time:         Jul 20,2023 09:53 UTC+0800
-     Completion Time:    Jul 20,2023 09:53 UTC+0800
-     Duration:           1s
-     Status:             Succeed
-     Progress:           2/2
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，帮助以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   如果集群中有多个组件，请使用 `--components` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-nqxw8s -n demo
-   ```
-
-3. 连接到数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2. KubeBlocks 未来将支持删除参数。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，你可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo --components=zookeeper               
-```
-
-从上面可以看到，有三个参数被修改过。
-
-比较这些改动，查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-qxw8s mycluster-reconfiguring-mwbnw
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/kubeblocks-for-pulsar.md b/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/kubeblocks-for-pulsar.md
deleted file mode 100644
index d30f0f523..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-pulsar/kubeblocks-for-pulsar.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: 用 KubeBlocks 管理 Pulsar
-description: KubeBlocks 中的 Pulsar 功能列表
-keywords: [pulsar, 简介, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 Pulsar
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 Pulsar 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/pulsar)查看 YAML 示例。
-
-* [集群管理](./cluster-management/create-pulsar-cluster-on-kb.md)
-* [配置](./configuration/configuration.md)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-qdrant/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-qdrant/_category_.yml
deleted file mode 100644
index ab9fdc3d6..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-qdrant/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 19
-label: 用 KubeBlocks 管理 Qdrant
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-qdrant/manage-qdrant.md b/i18n/zh-cn/user-docs/kubeblocks-for-qdrant/manage-qdrant.md
deleted file mode 100644
index 7967361c0..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-qdrant/manage-qdrant.md
+++ /dev/null
@@ -1,1008 +0,0 @@
----
-title: 用 KubeBlocks 管理 Qdrant
-description: 如何用 KubeBlocks 管理 Qdrant
-keywords: [qdrant, 向量数据库]
-sidebar_position: 1
-sidebar_label: 用 KubeBlocks 管理 Qdrant
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 用 KubeBlocks 管理 Qdrant
-
-生成式人工智能的爆火引发了人们对向量数据库的关注。
-
-Qdrant（读作：quadrant）是向量相似性搜索引擎和向量数据库。它提供了生产可用的服务和便捷的 API，用于存储、搜索和管理点（即带有额外负载的向量）。Qdrant 专门针对扩展过滤功能进行了优化，使其在各种神经网络或基于语义的匹配、分面搜索以及其他应用中充分发挥作用。
-
-目前，KubeBlocks 支持 Qdrant 的管理和运维。本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 Qdrant 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/qdrant)查看 YAML 示例。
-
-## 开始之前
-
-- 如果您想通过 `kbcli` 创建和管理集群，请先[安装 kbcli](./../installation/install-kbcli.md)。
-- [安装 KubeBlocks](./../installation/install-kubeblocks.md)。
-- [安装并启用 qdrant 引擎](./../installation/install-addons.md)。
-- 为了保持隔离，本文档中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-## 创建集群
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-KubeBlocks 通过 `Cluster` 定义集群。以下是创建 Qdrant 集群的示例。Pod 默认分布在不同节点。如果您只有一个节点可用于部署多副本集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  clusterDef: qdrant
-  topology: cluster
-  componentSpecs:
-    - name: qdrant
-      serviceVersion: 1.10.0
-      replicas: 3
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-EOF
-```
-
-| 字段                                   | 定义  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](#终止策略)。 |
-| `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 Qdrant 集群时，该值必须为 `qdrant`。 |
-| `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。 |
-| `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-| `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。可选值为 [1.10.0,1.5.0,1.7.3,1.8.1,1.8.4]。 |
-| `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-| `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。推荐值为 [3,5,7]。|
-| `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-| `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-| `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-执行以下命令，查看已创建的 Qdrant 集群：
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建一个 Qdrant 集群。
-
-   ```bash
-   kbcli cluster create qdrant mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create qdrant --help
-   kbcli cluster create qdrant -h
-   ```
-
-   如果您只有一个节点用于部署多副本集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create qdrant mycluster \
-       --replicas=3
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 检查集群是否已创建。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        qdrant                              Delete               Running   Aug 15,2023 23:03 UTC+0800
-   ```
-
-3. 查看集群信息。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   >
-   Name: mycluster         Created Time: Aug 15,2023 23:03 UTC+0800
-   NAMESPACE   CLUSTER-DEFINITION   VERSION        STATUS    TERMINATION-POLICY
-   demo        qdrant                              Running   Delete
-
-   Endpoints:
-   COMPONENT   MODE        INTERNAL                                                 EXTERNAL
-   qdrant      ReadWrite   mycluster-qdrant-qdrant.default.svc.cluster.local:6333   <none>
-                           mycluster-qdrant-qdrant.default.svc.cluster.local:6334
-
-   Topology:
-   COMPONENT   INSTANCE             ROLE     STATUS    AZ       NODE                   CREATED-TIME
-   qdrant      mycluster-qdrant-0   <none>   Running   <none>   x-worker3/172.20.0.3   Aug 15,2023 23:03 UTC+0800
-   qdrant      mycluster-qdrant-1   <none>   Running   <none>   x-worker2/172.20.0.5   Aug 15,2023 23:03 UTC+0800
-   qdrant      mycluster-qdrant-2   <none>   Running   <none>   x-worker/172.20.0.2    Aug 15,2023 23:04 UTC+0800
-
-   Resources Allocation:
-   COMPONENT   DEDICATED   CPU(REQUEST/LIMIT)   MEMORY(REQUEST/LIMIT)   STORAGE-SIZE   STORAGE-CLASS
-   qdrant      false       1 / 1                1Gi / 1Gi               data:20Gi      standard
-
-   Images:
-   COMPONENT   TYPE     IMAGE
-   qdrant      qdrant   docker.io/qdrant/qdrant:latest
-
-   Data Protection:
-   AUTO-BACKUP   BACKUP-SCHEDULE   TYPE     BACKUP-TTL   LAST-SCHEDULE   RECOVERABLE-TIME
-   Disabled      <none>            <none>   7d           <none>          <none>
-
-   Show cluster events: kbcli cluster list-events -n demo mycluster
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接到 Qdrant 集群
-
-Qdrant 提供两种客户端访问协议：HTTP 和 gRPC，它们分别使用端口 6333 和 6334 进行通信。根据客户端所在的位置，你可以使用不同的方法连接到 Qdrant 集群。
-
-:::note
-
-如果你的集群在 AWS 上，请先安装 AWS 负载均衡控制器。
-
-:::
-
-- 如果客户端在 K8s 集群内部，执行 `kbcli cluster describe qdrant` 命令获取集群的 ClusterIP 地址或相应的 K8s 集群域名。
-- 如果客户端在 K8s 集群外部但在同一 VPC 内，执行 `kbcli cluster expose qdrant --enable=true --type=vpc` 命令获取数据库集群的 VPC 负载均衡器地址。
-- 如果客户端在 VPC 外部，执行 `kbcli cluster expose qdrant --enable=true --type=internet` 命令打开数据库集群的公共网络可达地址。
-
-## 扩缩容
-
-### 水平扩缩容
-
-水平扩缩容改变 Pod 的数量。例如，您可以将副本从三个扩展到五个。
-
-从 v0.9.0 开始，KubeBlocks 还支持了指定实例扩缩容。可通过 [水平扩缩容文档](./../maintenance/scale/horizontal-scale.md) 文档了解更多细节和示例。
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                         Delete               Running   Aug 15,2023 23:03 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: qdrant
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: qdrant
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       replicas: 2 # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-    ```bash
-    kbcli cluster hscale qdrant --replicas=5 --components=qdrant
-    ```
-
-2. 验证水平扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kubectl get ops mycluster-horizontalscaling-xpdwz -n demo
-       >
-       NAME                                TYPE                CLUSTER      STATUS    PROGRESS   AGE
-       mycluster-horizontalscaling-xpdwz   HorizontalScaling   mycluster    Running   0/2        16s
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       >
-       NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-       mycluster   demo        qdrant                         Delete               Running   Jul 24,2023 11:38 UTC+0800
-       ```
-
-       - STATUS=Updating 表示正在进行水平扩容。
-       - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查相关资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl"  default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                         Delete               Running   Aug 15,2023 23:03 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: qdrant
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       replicas: 1
-       resources: # 修改资源参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 1Gi
-     terminationPolicy: Delete
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-   ```bash
-   kbcli cluster vscale mycluster --cpu=0.5 --memory=512Mi --components=qdrant -n demo
-   ```
-
-2. 验证垂直扩缩容。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kubectl get ops qdrant-verticalscaling-rpw2l -n demo
-     >
-     NAME                              TYPE              CLUSTER      STATUS    PROGRESS   AGE
-     mycluster-verticalscaling-rpw2l   VerticalScaling   mycluster    Running   1/5        44s
-     ```
-
-   - 查看集群状态。
-
-     - STATUS=VerticalScaling 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-       > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看扩缩容是否已经完成。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 磁盘扩容
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl"  default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster   qdrant                              Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        qdrant                         Delete               Running   Aug 15,2023 23:03 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-***步骤：***
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: qdrant
-        volumeClaimTemplates:
-        - name: data
-          storage: "40Gi"
-    EOF
-    ```
-
-2. 验证磁盘扩容操作是否成功。
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 查看对应的集群资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改该参数值
-     terminationPolicy: Delete
-   ...
-   ```
-
-2. 查看对应的集群资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-   ```bash
-   kbcli cluster volume-expand mycluster --storage=40Gi --components=qdrant -t data -n demo
-   ```
-
-2. 验证扩容操作是否成功。
-
-   - 查看 OpsRequest 进度。
-
-     执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kubectl get ops mycluster-volumeexpansion-5pbd2 -n demo
-     >
-     NAME                              TYPE              CLUSTER      STATUS   PROGRESS   AGE
-     mycluster-volumeexpansion-5pbd2   VolumeExpansion   mycluster    Succeed  1/1        67s
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     ```
-
-     * STATUS=Updating 表示扩容正在进行中。
-     * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 重启
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: qdrant
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-   kubectl get ops ops-restart -n demo
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `--components` 和 `--ttlSecondsAfterSucceed` 的值，重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster --components="qdrant" -n demo \
-   --ttlSecondsAfterSucceed=30
-   ```
-
-   - `--components` 表示需要重启的组件名称。
-   - `--ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启操作。
-
-   执行以下命令检查集群状态，并验证重启操作。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME       NAMESPACE   CLUSTER-DEFINITION     VERSION         TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster  demo        qdrant                 qdrant-1.8.1    Delete               Running   Aug 15,2023 23:03 UTC+0800
-   ```
-
-   * STATUS=Updating 表示集群正在重启中。
-   * STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
-
-## 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-### 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-stop
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Stop
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   将 replicas 设为 0，删除 pods。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       disableExporter: true  
-       replicas: 0 # 修改该参数值
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster stop mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-   <Tabs>
-
-   <TabItem value="kubectl" label="kubectl" default>
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-### 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF 
-   ```
-
-   </TabItem>
-
-   <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   将 replicas 修改为停止集群前的数量，再次启动集群。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: qdrant
-     clusterVersionRef: qdrant-1.8.1
-     terminationPolicy: Delete
-     componentSpecs:
-     - name: qdrant
-       componentDefRef: qdrant
-       disableExporter: true  
-       replicas: 1
-   ...
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli cluster start mycluster -n demo
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否已再次运行。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 删除集群
-
-### 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式，可在创建集群时进行设置。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      kafka                kafka-3.3.2    Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        kafka                kafka-3.3.2   Delete               Running   Sep 27,2024 15:15 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete -n demo cluster mycluster
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-rabbitmq/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-rabbitmq/_category_.yml
deleted file mode 100644
index 1a274c7af..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-rabbitmq/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 22
-label: 用 KubeBlocks 管理 RabbitMQ
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-rabbitmq/manage-rabbitmq.md b/i18n/zh-cn/user-docs/kubeblocks-for-rabbitmq/manage-rabbitmq.md
deleted file mode 100644
index 030ed7b18..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-rabbitmq/manage-rabbitmq.md
+++ /dev/null
@@ -1,654 +0,0 @@
----
-title: 用 KubeBlocks 管理 RabbitMQ
-description: 如何使用 KubeBlocks 管理 RabbitMQ
-keywords: [rabbitmq, 消息队列, streaming, broker]
-sidebar_position: 1
-sidebar_label: 用 KubeBlocks 管理 RabbitMQ
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 用 KubeBlocks 管理 RabbitMQ
-
-RabbitMQ 是可靠且成熟的消息和流处理中间件，支持在云环境、本地数据中心或个人计算机上部署。
-
-本文档展示了如何通过 kbcli、kubectl 等方式创建和管理 RabbitMQ 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/rabbitmq)查看 YAML 示例。
-
-:::note
-
-当前，KubeBlocks 仅支持通过 `kubectl` 管理 RabbitMQ 集群.
-
-:::
-
-## 开始之前
-
-- 安装 KubeBlocks，可通过 [kbcli](./../installation/install-with-kbcli/install-kubeblocks-with-kbcli.md) 或 [Helm](./../installation/install-with-helm/install-kubeblocks.md) 安装.
-- 安装并启用 rabbitmq 引擎，可通过 [kbcli](./../installation/install-with-kbcli/install-addons.md) 或 [Helm](./../installation/install-with-helm/install-addons.md)操作.
-
-## 创建集群
-
-KubeBlocks 通过 `Cluster` 定义集群。以下是创建 RabbitMQ 集群的示例。Pod 默认分布在不同节点。如果您只有一个节点可用于部署多副本集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-    - name: rabbitmq
-      componentDef: rabbitmq
-      serviceVersion: 3.13.7
-      serviceAccountName: kb-rabbitmq-cluster
-      replicas: 3
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: Role
-metadata:
-  name: rabbitmq-cluster-peer-discovery
-  namespace: demo
-rules:
-- apiGroups:
-  - ""
-  resources:
-  - endpoints
-  verbs:
-  - get
-- apiGroups:
-  - ""
-  resources:
-  - events
-  verbs:
-  - create
----
-apiVersion: v1
-kind: ServiceAccount
-metadata:
-  name: kb-rabbitmq-cluster
-  namespace: demo
----
-apiVersion: rbac.authorization.k8s.io/v1
-kind: RoleBinding
-metadata:
-  name: kb-rabbitmq-cluster
-roleRef:
-  apiGroup: rbac.authorization.k8s.io
-  kind: Role
-  name: rabbitmq-cluster-peer-discovery
-subjects:
-  - kind: ServiceAccount
-    name: kb-rabbitmq-cluster
-    namespace: demo
-EOF
-```
-
-| 字段                                   | 定义  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](#终止策略)。 |
-| `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-| `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。可选值为 [3.10.25,3.11.28,3.12.14,3.13.2,3.13.7,3.8.14,3.9.29]。  |
-| `spec.componentSpecs.serviceAccountName` | 指定了运行 component 所需的 ServiceAccount 名称。RabbitMQ 需要 peer-discovery 角色来创建事件和获取端点。这对于发现其他 RabbitMQ 节点并形成集群至关重要。  |
-| `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。RabbitMQ 建议配置奇数，如 [3,5,7]。所有数据/状态都会在所有副本之间进行复制。 |
-| `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-| `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-| `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-执行以下命令，查看已创建的 RabbitMQ 集群。
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-## 连接集群
-
-可使用 [RabbitMQ tools](https://www.rabbitmq.com/docs/cli) 连接并管理 RabbitMQ 集群。
-
-## 扩缩容
-
-### 垂直扩缩容
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: rabbitmq
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的值。
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: rabbitmq
-       componentDefRef: rabbitmq
-       replicas: 3
-       resources: # 修改 resources 中的参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-### 水平伸缩
-
-水平扩展改变 Pod 的数量。例如，您可以将副本从三个扩展到五个。
-
-从 v0.9.0 开始，KubeBlocks 还支持了指定实例扩缩容。可通过 [水平扩缩容文档](./../maintenance/scale/horizontal-scale.md) 文档了解更多细节和示例。
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: rabbitmq
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`，并修改 `replicaChanges` 的参数值。
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   2/2        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的值。
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: rabbitmq
-       componentDefRef: rabbitmq
-       replicas: 1 # 修改参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 磁盘扩容
-
-### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: rabbitmq
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. 查看磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   ops-volume-expansion   VolumeExpansion   mycluster   Succeed   1/1        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 存储资源信息，修改该数值将触发集群磁盘扩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   ```yaml
-   ...
-   spec:
-     componentSpecs:
-     - name: rabbitmq
-       componentDefRef: rabbitmq
-       replicas: 2
-       volumeClaimTemplates:
-       - name: data
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改该参数值
-     terminationPolicy: Delete
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。当集群停止时，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-### 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-stop
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Stop
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-   将 replicas 的值修改为 0，删除 pod。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-         - kubernetes.io/hostname
-     componentSpecs:
-       - name: rabbitmq
-         componentDef: rabbitmq
-         serviceVersion: 3.13.2
-         replicas: 0
-         serviceAccountName: kb-mycluster
-         resources:
-           limits:
-             cpu: "0.5"
-             memory: "0.5Gi"
-           requests:
-             cpu: "0.5"
-             memory: "0.5Gi"
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-         services:
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-### 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-   <Tabs>
-
-   <TabItem value="OpsRequest" label="OpsRequest" default>
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-start
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Start
-   EOF 
-   ```
-
-   </TabItem>
-
-   <TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-   将 replicas 数值修改为初始值，启动集群。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     affinity:
-       podAntiAffinity: Preferred
-       topologyKeys:
-         - kubernetes.io/hostname
-     componentSpecs:
-       - name: rabbitmq
-         componentDef: rabbitmq
-         serviceVersion: 3.13.2
-         replicas: 3
-         serviceAccountName: kb-mycluster
-         resources:
-           limits:
-             cpu: "0.5"
-             memory: "0.5Gi"
-           requests:
-             cpu: "0.5"
-             memory: "0.5Gi"
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-         services:
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-2. 查看集群状态，确认集群是否已再次运行。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-## 重启集群
-
-1. 执行以下命令，重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: rabbitmq
-   EOF
-   ```
-
-2. 查看 pod 和运维操作状态，验证重启操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops -n demo
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-## 删除集群
-
-### 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Halt`                | `Halt` 删除集群资源（如 Pods、Services 等），但保留 PVC。停止其他运维操作的同时，保留了数据。但 `Halt` 策略在 v0.9.1 中已删除，设置为 `Halt` 的效果与 `DoNotTerminate` 相同。  |
-| `Delete`              | `Delete` 在 `Halt` 的基础上，删除 PVC 及所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION        TERMINATION-POLICY     STATUS    AGE
-mycluster                                        Delete                 Running   47m
-```
-
-### 步骤
-
-执行以下命令，删除集群。
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-redis/_category_.yml
deleted file mode 100644
index ac3f5e184..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 15
-label: 用 KubeBlocks 管理 Redis
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/_category_.yml
deleted file mode 100644
index adead6e31..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 集群管理
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/create-and-connect-to-a-redis-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/create-and-connect-to-a-redis-cluster.md
deleted file mode 100644
index 55f33b21c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/create-and-connect-to-a-redis-cluster.md
+++ /dev/null
@@ -1,309 +0,0 @@
----
-title: 创建并连接到 Redis 集群
-description: 如何创建并连接到 Redis 集群
-keywords: [redis, 创建 Redis 集群, 连接到 Redis 集群, 集群, redis sentinel]
-sidebar_position: 1
-sidebar_label: 创建并连接
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 创建并连接到 Redis 集群
-
-本文档展示如何创建并连接到一个 Redis 集群。
-
-## 创建 Redis 集群
-
-### 开始之前
-
-* 如果您想通过 `kbcli` 创建并连接 MongoDB 集群，请先[安装 kbcli](./../../installation/install-kbcli.md)。
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* 确保 Redis 引擎已启用。如果未启用，请先[启用该引擎](./../../installation/install-addons.md)。
-  
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get addons.extensions.kubeblocks.io redis
-  >
-  NAME      TYPE   VERSION   PROVIDER   STATUS    AGE
-  redis     Helm                        Enabled   61m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli addon list
-  >
-  NAME                      TYPE   STATUS     EXTRAS         AUTO-INSTALL   
-  ...
-  redis                     Helm   Enabled                   true
-  ...
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 查看可用于创建集群的数据库类型和版本。
-
-  <Tabs>
-
-  <TabItem value="kubectl" label="kubectl" default>
-
-  ```bash
-  kubectl get clusterdefinition redis
-  >
-  NAME    TOPOLOGIES                                              SERVICEREFS   STATUS      AGE
-  redis   replication,replication-twemproxy,standalone                          Available   16m
-  ```
-
-  ```bash
-  kubectl get clusterversions -l clusterdefinition.kubeblocks.io/name=redis
-  >
-  NAME          CLUSTER-DEFINITION   STATUS      AGE
-  redis-7.0.6   redis                Available   16m
-  redis-7.2.4   redis                Available   16m
-  ```
-
-  </TabItem>
-
-  <TabItem value="kbcli" label="kbcli">
-
-  ```bash
-  kbcli clusterdefinition list
-  >
-  NAME               TOPOLOGIES                                              SERVICEREFS   STATUS      AGE
-  redis              replication,replication-twemproxy,standalone                          Available   16m
-
-  kbcli clusterversion list
-  >
-  NAME                 CLUSTER-DEFINITION   STATUS      IS-DEFAULT   CREATED-TIME
-  redis-7.0.6          redis                Available   false        Sep 27,2024 11:36 UTC+0800
-  redis-7.2.4          redis                Available   false        Sep 27,2024 11:36 UTC+0800
-  ```
-
-  </TabItem>
-
-  </Tabs>
-
-* 为了保持隔离，本文档中创建一个名为 `demo` 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-### 创建集群
-
-KubeBlocks 支持创建两种 Redis 集群：单机版（Standalone）和主备版（Replication）。Redis 单机版仅支持一个副本，适用于对可用性要求较低的场景。 对于高可用性要求较高的场景，建议创建主备版集群，以支持自动故障切换。为了确保高可用性，所有的副本都默认分布在不同的节点上。如果您只有一个节点可用于部署多副本集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 Redis 集群。
-
-   KubeBlocks 通过 `Cluster` 定义集群。以下是创建 Redis 集群的示例。
-
-   ```yaml
-   cat <<EOF | kubectl apply -f -
-   apiVersion: apps.kubeblocks.io/v1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     terminationPolicy: Delete
-     clusterDef: redis
-     topology: replication
-     componentSpecs:
-       - name: redis
-         serviceVersion: "7.2.4"
-         disableExporter: false
-         replicas: 2
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-       - name: redis-sentinel
-         replicas: 3
-         resources:
-           limits:
-             cpu: '0.5'
-             memory: 0.5Gi
-           requests:
-             cpu: '0.5'
-             memory: 0.5Gi
-         volumeClaimTemplates:
-           - name: data
-             spec:
-               storageClassName: ""
-               accessModes:
-                 - ReadWriteOnce
-               resources:
-                 requests:
-                   storage: 20Gi
-   EOF
-   ```
-
-   | 字段                                   | 定义  |
-   |---------------------------------------|--------------------------------------|
-   | `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](./delete-a-redis-cluster.md#终止策略)。 |
-   | `spec.clusterDef` | 指定了创建集群时要使用的 ClusterDefinition 的名称。**注意**：**请勿更新此字段**。创建 Redis 集群时，该值必须为 `redis`。 |
-   | `spec.topology` | 指定了在创建集群时要使用的 ClusterTopology 的名称。 |
-   | `spec.componentSpecs`                 | 集群 component 列表，定义了集群 components。该字段支持自定义配置集群中每个 component。  |
-   | `spec.componentSpecs.serviceVersion`  | 定义了 component 部署的服务版本。有效值为 [7.0.6,7.2.4]。 |
-   | `spec.componentSpecs.disableExporter` | 定义了是否在 component 无头服务（headless service）上标注指标 exporter 信息，是否开启监控 exporter。有效值为 [true, false]。 |
-   | `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-   | `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-   | `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-   | `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-   | `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-   您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-   监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-   ```bash
-   kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-   执行以下命令，查看已创建 Redis 集群的 YAML 文件。
-
-   ```bash
-   kubectl get cluster mycluster -n demo -o yaml
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kubectl get cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 创建 Redis 集群。
-
-   ```bash
-   kbcli cluster create redis mycluster -n demo
-   ```
-
-   如果您需要自定义集群规格，kbcli 也提供了诸多参数，如支持设置引擎版本、终止策略、CPU、内存规格。您可通过在命令结尾添加 `--help` 或 `-h` 来查看具体说明。比如，
-
-   ```bash
-   kbcli cluster create redis --help
-
-   kbcli cluster create redis -h
-   ```
-
-   如果您只有一个节点用于部署多副本集群，可在创建集群时配置集群亲和性，配置 `--pod-anti-affinity`, `--tolerations` 和 `--topology-keys`。但需要注意的是，生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。例如，
-
-   ```bash
-   kbcli cluster create redis mycluster \
-       --pod-anti-affinity='Preferred' \
-       --tolerations='node-role.kubeblocks.io/data-plane:NoSchedule' \
-       --topology-keys='null' \
-       --namespace demo
-   ```
-
-2. 验证集群是否创建成功。
-
-   ```bash
-   kbcli cluster list -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS     CREATED-TIME
-   mycluster   demo        redis                          Delete               Running    Sep 29,2024 09:46 UTC+0800
-   ```
-
-</TabItem>
-
-</Tabs>
-
-## 连接到 Redis 集群
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-使用 `kubectl exec` 命令进入 Pod 并连接到数据库。
-
-KubeBlocks operator 会创建一个名为 `mycluster-conn-credential` 的新的 Secret 来存储 MySQL 集群的连接凭证。该 Secret 包含以下 key：
-
-* `username`：Redis 集群的根用户名。
-* `password`：根用户的密码。
-* `port`：Redis 集群的端口。
-* `host`：Redis 集群的主机。
-* `endpoint`：Redis 集群的终端节点，与 `host:port` 相同。
-
-1. 获取用于 `kubectl exec` 命令的 `username` 和 `password`。
-
-   ```bash
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-   >
-   default
-
-   kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-   >
-   5bv7czc4
-   ```
-
-2. 使用用户名和密码，进入 Pod `mycluster-redis-0` 并连接到数据库。
-
-   ```bash
-   kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-   root@mycluster-redis-0:/# redis-cli -a 5bv7czc4  --user default
-   ```
-
-</TabItem>
-
-<TabItem value="port-forward" label="port-forward">
-
-还可以使用端口转发在本地计算机上连接数据库。
-
-1. 通过端口转发服务。
-  
-   ```bash
-   kubectl port-forward -n demo svc/mycluster-redis 6379:6379
-   ```
-
-2. 在新的终端窗口中执行以下命令，连接到数据库。
-
-   ```bash
-   redis-cli -a 5bv7czc4  --user default
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster connect mycluster  --namespace demo
-```
-
-</TabItem>
-
-</Tabs>
-
-有关详细的数据库连接指南，请参考[连接数据库](./../../connect-databases/overview-on-connect-databases.md)。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/delete-a-redis-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/delete-a-redis-cluster.md
deleted file mode 100644
index 06923df1c..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/delete-a-redis-cluster.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 删除集群
-description: 如何删除集群
-keywords: [redis, 删除集群, 删除保护]
-sidebar_position: 6
-sidebar_label: 删除保护
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 删除集群
-
-## 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION       TERMINATION-POLICY   STATUS    AGE
-mycluster   redis                              Delete               Running   10m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS     CREATED-TIME
-mycluster   demo        redis                          Delete               Running    Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/expand-volume.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/expand-volume.md
deleted file mode 100644
index 2ccf64bb2..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/expand-volume.md
+++ /dev/null
@@ -1,205 +0,0 @@
----
-title: 磁盘扩容
-description: 如何调整集群所使用的磁盘大小
-keywords: [redis, 磁盘扩容]
-sidebar_position: 3
-sidebar_label: 磁盘扩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 磁盘扩容
-
-KubeBlocks 支持 Pod 磁盘存储扩容。
-
-:::note
-
-磁盘扩容将触发 Pod 重启。重启后，主节点可能会发生变化。
-
-:::
-
-## 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      redis                               Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-volume-expansion
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VolumeExpansion
-     volumeExpansion:
-     - componentName: redis
-       volumeClaimTemplates:
-       - name: data
-         storage: "40Gi"
-   EOF
-   ```
-
-2. 验证磁盘扩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-   ```
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 更改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 的存储资源信息，更改此值会触发磁盘扩容。
-
-    ```yaml
-    spec:
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      clusterDefinitionRef: redis
-      clusterVersionRef: redis-7.0.6
-      componentSpecs:
-      - componentDefRef: redis
-        enabledLogs:
-        - running
-        disableExporter: true
-        name: redis
-        replicas: 1
-        resources:
-          limits:
-            cpu: "0.5"
-            memory: 0.5Gi
-          requests:
-            cpu: "0.5"
-            memory: 0.5Gi
-        serviceAccountName: kb-redis
-        volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-            - ReadWriteOnce
-            resources:
-              requests:
-                storage: 40Gi # 修改该参数值
-    ```
-
-2. 当集群状态再次回到 `Running` 后，查看对应的集群资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   >
-   ...
-   Volume Claim Templates:
-      Name:  data
-      Spec:
-        Access Modes:
-          ReadWriteOnce
-        Resources:
-          Requests:
-            Storage:   40Gi
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-   ```bash
-   kbcli cluster volume-expand mycluster -n demo --components="redis" --volume-claim-templates="data" --storage="40Gi"
-   ```
-
-   - `--components` 表示需扩容的组件名称。
-   - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-   - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-volumeexpansion-ih2r4 -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示扩容正在进行中。
-       - STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-   ```bash
-   kbcli cluster describe mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/restart-a-redis-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/restart-a-redis-cluster.md
deleted file mode 100644
index 6d2ad0bcc..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/restart-a-redis-cluster.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: 重启集群
-description: 如何重启集群
-keywords: [redis, 集群重启]
-sidebar_position: 4
-sidebar_label: 重启
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-重启后，主节点可能会发生变化。
-
-:::
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 创建 OpsRequest 重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: redis
-   EOF
-   ```
-
-2. 查看 Pod 和重启操作的状态，验证该操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-   >
-   NAME                READY   STATUS            RESTARTS   AGE
-   mycluster-redis-0   3/4     Terminating       0          5m32s
-
-   kubectl get ops ops-restart -n demo
-   >
-   NAME          TYPE      CLUSTER     STATUS    PROGRESS   AGE
-   ops-restart   Restart   mycluster   Succeed   1/1        3m26s
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster --components="redis" -n demo \
-   --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启操作。
-
-   执行以下命令检查集群状态，并验证重启操作。
-
-   ```bash
-   kbcli cluster list mycluster -n demo
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-   ```
-
-   - STATUS=Updating 表示集群正在重启中。
-   - STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/scale-for-a-redis-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/scale-for-a-redis-cluster.md
deleted file mode 100644
index 92b73f830..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/scale-for-a-redis-cluster.md
+++ /dev/null
@@ -1,420 +0,0 @@
----
-title: 集群扩缩容
-description: 如何对集群进行扩缩容操作？
-keywords: [redis, 水平扩缩容, 垂直扩缩容, 扩缩容]
-sidebar_position: 2
-sidebar_label: 扩缩容
----
-
-import Tabs from '@theme/Tabs'; 
-import TabItem from '@theme/TabItem';
-
-# Redis 集群扩缩容
-
-KubeBlocks 支持对 Redis 集群进行垂直扩缩容和水平扩缩容。
-
-## 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      redis                               Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling 
-     verticalScaling:
-     - componentName: redis
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: redis
-     clusterVersionRef: redis-7.0.6
-     componentSpecs:
-     - name: redis
-       componentDefRef: redis
-       replicas: 1
-       resources: # 修改 resources 中的参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-   ```bash
-   kbcli cluster vscale mycluster -n demo \
-   --components="redis" \
-   --memory="4Gi" --cpu="2" \
-   ```
-
-   - `--components` 表示可进行垂直扩容的组件名称。
-   - `--memory` 表示组件请求和限制的内存大小。
-   - `--cpu` 表示组件请求和限制的CPU大小。
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-verticalscaling-enbr9 -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-     mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-     ```
-
-     - STATUS=VerticalScaling 表示正在进行垂直扩容。
-     - STATUS=Running 表示垂直扩容已完成。
-     - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-       > 你可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者你也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-    :::note
-
-    垂直扩容不会同步与 CPU 和内存相关的参数，需要手动调用配置的 OpsRequest 来进行更改。详情请参考[配置](./../configuration/configure-cluster-parameters.md)。
-
-    :::
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 水平扩缩容
-
-水平扩缩容会改变 Pod 的数量。例如，你可以应用水平扩容将 Pod 的数量从三个增加到五个。扩容过程包括数据的备份和恢复。
-
-从 v0.9.0 开始，KubeBlocks 支持指定实例水平扩缩容，可参考 [水平扩缩容文档](./../../maintenance/scale/horizontal-scale.md)，查看详细介绍及示例。
-
-### 开始之前
-
-确保集群处于 `Running` 状态，否则以下操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl -n demo get cluster mycluster
->
-NAME           CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS     AGE
-mycluster      redis                               Delete               Running    19m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list mycluster -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: redis
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: redis
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                     TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: redis
-     clusterVersionRef: redis-7.0.6
-     componentSpecs:
-     - name: redis
-       componentDefRef: redis
-       replicas: 2 # 修改该参数值
-   ...
-   ```
-
-2. 查看相关资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-   配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-   ***示例***
-
-   ```bash
-   kbcli cluster hscale mycluster -n demo \
-   --components="redis" --replicas=2
-   ```
-
-   - `--components` 表示准备进行水平扩容的组件名称。
-   - `--replicas` 表示指定组件的副本数。
-
-2. 通过以下任意一种方式验证水平扩容是否完成。
-
-   - 查看 OpsRequest 进度。
-
-     执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-     ```bash
-     kbcli cluster describe-ops mycluster-horizontalscaling-we2r3 -n demo
-     ```
-
-   - 查看集群状态。
-
-     ```bash
-     kbcli cluster list mycluster -n demo
-     >
-     NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION   TERMINATION-POLICY   STATUS    CREATED-TIME
-     mycluster   demo        redis                          Delete               Running   Sep 29,2024 09:46 UTC+0800
-     ```
-
-    - STATUS=Updating 表示正在进行水平扩容。
-    - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-04-10T18:20:26Z"
-    message: VolumeSnapshot/redis-cluster-redis-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. 删除错误的备份（volumesnapshot 由备份生成）和 volumesnapshot 资源。
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=mycluster -n demo
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=mycluster -n demo
-   ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/stop-start-a-redis-cluster.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/stop-start-a-redis-cluster.md
deleted file mode 100644
index 79f3ff859..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/cluster-management/stop-start-a-redis-cluster.md
+++ /dev/null
@@ -1,188 +0,0 @@
----
-title: 停止/启动集群
-description: 如何停止/启动集群
-keywords: [redis, 停止集群, 启动集群]
-sidebar_position: 5
-sidebar_label: 停止/启动
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。停止集群后，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 设为 0，删除 Pods。
-
-    ```yaml
-    ...
-    spec:
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      clusterDefinitionDef: redis
-      componentSpecs:
-      - componentDef: redis-7
-        enabledLogs:
-        - running
-        disableExporter: true
-        name: redis
-        replicas: 0 # 修改该参数值
-        ...
-      - componentDef: redis-sentinel-7
-        name: redis-sentinel
-        replicas: 0 # 修改该参数值
-        ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。  
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: ops-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-    ```bash
-    kubectl edit cluster mycluster -n demo
-    ```
-
-    将 replicas 数值调整为停止集群前的数量，再次启动集群。
-
-    ```yaml
-    ...
-    spec:
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      clusterDefinitionDef: redis
-      componentSpecs:
-      - componentDef: redis-7
-        enabledLogs:
-        - running
-        disableExporter: true
-        name: redis
-        replicas: 3 # 修改该参数值
-        ...
-      - componentDef: redis-sentinel-7
-        name: redis-sentinel
-        replicas: 3 # 修改该参数值
-        ...
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/configuration/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-redis/configuration/_category_.yml
deleted file mode 100644
index 885d2c2be..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/configuration/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 配置
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/configuration/configure-cluster-parameters.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/configuration/configure-cluster-parameters.md
deleted file mode 100644
index 286db7121..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/configuration/configure-cluster-parameters.md
+++ /dev/null
@@ -1,400 +0,0 @@
----
-title: 配置集群参数
-description: 配置集群参数
-keywords: [redis, 参数, 配置, 再配置]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 配置集群参数
-
-KubeBlocks 提供了一套默认的配置生成策略，适用于在 KubeBlocks 上运行的所有数据库，此外还提供了统一的参数配置接口，便于管理参数配置、搜索参数用户指南和验证参数有效性等。
-
-从 v0.6.0 版本开始，KubeBlocks 支持使用 `kbcli cluster configure` 和 `kbcli cluster edit-config` 两种方式来配置参数。它们的区别在于，`kbcli cluster configure `可以自动配置参数，而 `kbcli cluster edit-config` 则允许以可视化的方式直接编辑参数。
-
-<Tabs>
-
-<TabItem value="编辑配置文件" label="编辑配置文件" default>
-
-1. 获取集群的配置文件。
-
-   ```bash
-   kubectl edit configurations.apps.kubeblocks.io mycluster-redis -n demo
-   ```
-
-2. 按需配置参数。以下实例中添加了 `spec.configFileParams`，用于配置 `acllog-max-len` 参数。
-
-    ```yaml
-    spec:
-      clusterRef: mycluster
-      componentName: redis
-      configItemDetails:
-      - configSpec:
-          constraintRef: redis7-config-constraints
-          name: redis-replication-config
-          namespace: kb-system
-          reRenderResourceTypes:
-          - vscale
-          templateRef: redis7-config-template
-          volumeName: redis-config
-      - configFileParams:
-          redis.conf:
-            parameters:
-              acllog-max-len: "256"
-        name: mycluster-redis-redis-replication-config
-    ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      default
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      kpz77mcs
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-      root@mycluster-redis-0:/# redis-cli -a kpz77mcs  --user default
-
-      127.0.0.1:6379> config get parameter acllog-max-len
-      1) "acllog-max-len"
-      2) "256"
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-1. 在名为 `mycluster-configuring-demo.yaml` 的 YAML 文件中定义 OpsRequest，并修改参数。如下示例中，`acllog-max-len` 参数修改为 `256`。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-configuring-demo
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      reconfigure:
-        componentName: redis
-        configurations:
-        - keys:
-          - key: redis.conf
-            parameters:
-            - key: acllog-max-len
-              value: "256"
-          name: redis-replication-config
-      preConditionDeadlineSeconds: 0
-      type: Reconfiguring
-    ```
-
-   | 字段                                                    | 定义     |
-   |--------------------------------------------------------|--------------------------------|
-   | `metadata.name`                                        | 定义了 Opsrequest 的名称。 |
-   | `metadata.namespace`                                   | 定义了集群所在的 namespace。 |
-   | `spec.clusterName`                                     | 定义了本次运维操作指向的集群名称。 |
-   | `spec.reconfigure`                                     | 定义了需配置的 component 及相关配置更新内容。 |
-   | `spec.reconfigure.componentName`                       | 定义了改集群的 component 名称。  |
-   | `spec.configurations`                                  | 包含一系列 ConfigurationItem 对象，定义了 component 的配置模板名称、更新策略、参数键值对。 |
-   | `spec.reconfigure.configurations.keys.key`             | 定义了 configuration map。 |
-   | `spec.reconfigure.configurations.keys.parameters`      | 定义了单个参数文件的键值对列表。 |
-   | `spec.reconfigure.configurations.keys.parameter.key`   | 代表您需要编辑的参数名称。|
-   | `spec.reconfigure.configurations.keys.parameter.value` | 代表了将要更新的参数值。如果设置为 nil，Key 字段定义的参数将会被移出配置文件。  |
-   | `spec.reconfigure.configurations.name`                 | 定义了配置模板名称。  |
-   | `preConditionDeadlineSeconds`                          | 定义了本次 OpsRequest 中止之前，满足其启动条件的最长等待时间（单位为秒）。如果设置为 0（默认），则必须立即满足启动条件，OpsRequest 才能继续。|
-
-2. 应用配置 OpsRequest。
-
-   ```bash
-   kubectl apply -f mycluster-configuring-demo.yaml
-   ```
-
-3. 连接集群，确认配置是否生效。
-
-   1. 获取用户名和密码。
-
-      ```bash
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.username}' | base64 -d
-      >
-      default
-
-      kubectl get secrets -n demo mycluster-conn-credential -o jsonpath='{.data.password}' | base64 -d
-      >
-      kpz77mcs
-      ```
-
-   2. 连接集群，验证参数是否按预期配置。
-
-      ```bash
-      kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-      root@mycluster-redis-0:/# redis-cli -a kpz77mcs  --user default
-      
-      127.0.0.1:6379> config get parameter acllog-max-len
-      1) "acllog-max-len"
-      2) "256"
-      ```
-
-:::note
-
-如果您无法找到集群的配置文件，您可以切换到 `kbcli` 页签，使用相关命令查看集群当前的配置文件。
-
-```bash
-kbcli cluster describe-config mycluster -n demo
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-## 查看参数信息
-
-查看集群的当前配置文件。
-
-```bash
-kbcli cluster describe-config mycluster --components=redis -n demo
-```
-
-从元信息中可以看到，集群 `mycluster` 有一个名为 `redis.cnf` 的配置文件。
-
-你也可以查看此配置文件和参数的详细信息。
-
-* 查看当前配置文件的详细信息。
-
-  ```bash
-  kbcli cluster describe-config mycluster -n demo --components=redis --show-detail
-  ```
-
-* 查看参数描述。
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --components=redis |head -n 20
-  ```
-
-* 查看指定参数的用户指南。
-
-  ```bash
-  kbcli cluster explain-config mycluster -n demo --components=redis --param=acllog-max-len
-  ```
-
-  <details>
-  <summary>输出</summary>
-
-  ```bash
-  template meta:
-    ConfigSpec: redis-replication-config	ComponentName: redis	ClusterName: mycluster -n demo
-
-  Configure Constraint:
-    Parameter Name:     acllog-max-len
-    Allowed Values:     [1-10000]
-    Scope:              Global
-    Dynamic:            true
-    Type:               integer
-    Description: 
-  ```
-
-  </details>
-
-  * Allowed Values: 定义了参数的有效值范围。
-  * Dynamic: 决定了参数配置的生效方式。根据被修改参数的生效类型，有**动态**和**静态**两种不同的配置策略。
-    * 当 `Dynamic` 为 `true` 时，参数的生效类型是**动态**的，可以在线配置。
-    * 当 `Dynamic` 为 `false` 时，参数的生效类型是**静态**的，需要重新启动 Pod 才能生效。
-  * Description: 描述了参数的定义。
-
-## 配置参数
-
-### 使用 configure 命令配置参数
-
-下面以配置 `acllog-max-len` 为例。
-
-1. 查看 `acllog-max-len` 的值。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   127.0.0.1:6379> config get parameter acllog-max-len
-   1) "acllog-max-len"
-   2) "128"
-   ```
-
-2. 调整 `acllog-max-len` 的值。
-
-   ```bash
-   kbcli cluster configure mycluster -n demo --components=redis --set=acllog-max-len=256
-   ```
-
-   :::note
-
-   确保设置的值在该参数的 Allowed Values 范围内。如果设置的值不符合取值范围，系统会提示错误。例如：
-
-   ```bash
-   kbcli cluster configure mycluster -n demo  --set=acllog-max-len=1000000
-   >
-   error: failed to validate updated config: [failed to cue template render configure: [configuration."acllog-max-len": 2 errors in empty disjunction:
-   configuration."acllog-max-len": conflicting values 128 and 1000000:
-       20:43
-       155:16
-   configuration."acllog-max-len": invalid value 1000000 (out of bound <=10000):
-       20:32
-   ]
-   ]
-   ```
-
-   :::
-
-3. 查看参数配置状态。
-
-   `Status.Progress` 和 `Status.Status` 展示参数配置的整体状态，而 `Conditions` 展示详细信息。
-
-   当 `Status.Status` 为 `Succeed` 时，配置完成。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-zjztm -n demo
-   ```
-
-   <details>
-   <summary>输出</summary>
-
-   ```bash
-   Spec:
-     Name: mycluster-reconfiguring-zjztm	NameSpace: demo	Cluster: mycluster	Type: Reconfiguring
-
-   Command:
-     kbcli cluster configure mycluster -n demo --components=redis --config-specs=redis-replication-config --config-file=redis.conf --set acllog-max-len=256 --namespace=demo
-
-   Status:
-     Start Time:         Sep 29,2024 10:46 UTC+0800
-     Duration:           10s
-     Status:             Running
-     Progress:           1/2
-                         OBJECT-KEY   STATUS   DURATION   MESSAGE
-
-   Conditions:
-   LAST-TRANSITION-TIME         TYPE                 REASON                         STATUS   MESSAGE
-   Sep 29,2024 10:46 UTC+0800   Progressing          Progressing                    True     wait for the controller to process the OpsRequest: mycluster-reconfiguring-zjztm in Cluster: mycluster
-   Sep 29,2024 10:46 UTC+0800   Validated            ValidateOpsRequestPassed       True     OpsRequest: mycluster-reconfiguring-zjztm is validated
-   Sep 29,2024 10:46 UTC+0800   Reconfigure          ReconfigureStarted             True     Start to reconfigure in Cluster: mycluster, Component: redis
-   ```
-
-   </details>
-
-4. 连接到数据库，验证参数是否按预期配置。
-
-   配置生效过程约需要 30 秒，这是由于 kubelet 需要一定时间才能将对 ConfigMap 的修改同步到 Pod 的卷。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   ```bash
-   127.0.0.1:6379> config get parameter acllog-max-len
-   1) "acllog-max-len"
-   2) "256"
-   ```
-
-### 使用 edit-config 命令配置参数
-
-KubeBlocks 提供了一个名为 `edit-config` 的工具，帮助以可视化的方式配置参数。
-
-Linux 和 macOS 系统可以使用 vi 编辑器编辑配置文件，Windows 系统可以使用 notepad。
-
-1. 编辑配置文件。
-
-   ```bash
-   kbcli cluster edit-config mycluster -n demo
-   ```
-
-   :::note
-
-   如果集群中有多个组件，请使用 `--components` 参数指定一个组件。
-
-   :::
-
-2. 查看参数配置状态。
-
-   ```bash
-   kbcli cluster describe-ops mycluster-reconfiguring-nflq8 -n demo
-   ```
-
-3. 连接到数据库，验证参数是否按预期配置。
-
-   ```bash
-   kbcli cluster connect mycluster -n demo
-   ```
-
-   :::note
-
-   1. `edit-config` 不能同时编辑静态参数和动态参数。
-   2. KubeBlocks 未来将支持删除参数。
-
-   :::
-
-## 查看历史记录并比较参数差异
-
-配置完成后，您可以搜索历史配置并比较参数差异。
-
-查看参数配置历史记录。
-
-```bash
-kbcli cluster describe-config mycluster -n demo --components=redis
-```
-
-<details>
-<summary>输出</summary>
-
-```bash
-ConfigSpecs Meta:
-CONFIG-SPEC-NAME           FILE         ENABLED   TEMPLATE                 CONSTRAINT                  RENDERED                                       COMPONENT   CLUSTER
-redis-replication-config   redis.conf   true      redis7-config-template   redis7-config-constraints   mycluster-redis-redis-replication-config   redis       mycluster
-
-History modifications:
-OPS-NAME                        CLUSTER     COMPONENT   CONFIG-SPEC-NAME           FILE         STATUS    POLICY    PROGRESS   CREATED-TIME                 VALID-UPDATED
-mycluster-reconfiguring-zjztm   mycluster   redis       redis-replication-config   redis.conf   Succeed   restart   1/1        Sep 29,2024 10:46 UTC+0800
-mycluster-reconfiguring-zrkq7   mycluster   redis       redis-replication-config   redis.conf   Succeed   restart   1/1        Sep 29,2024 11:08 UTC+0800   {"redis.conf":"{\"databases\":\"32\",\"maxclients\":\"20000\"}"}
-mycluster-reconfiguring-mwbnw   mycluster   redis       redis-replication-config   redis.conf   Succeed   restart   1/1        Sep 29,2024 11:20 UTC+0800   {"redis.conf":"{\"maxclients\":\"40000\"}"}
-```
-
-</details>
-
-从上面可以看到，有三个参数被修改过。
-
-比较这些改动，查看不同版本中配置的参数和参数值。
-
-```bash
-kbcli cluster diff-config mycluster-reconfiguring-zrkq7 mycluster-reconfiguring-mwbnw
->
-DIFF-CONFIG RESULT:
-  ConfigFile: redis.conf	TemplateName: redis-replication-config	ComponentName: redis	ClusterName: mycluster	UpdateType: update
-
-PARAMETERNAME   MYCLUSTER-RECONFIGURING-ZRKQ7   MYCLUSTER-RECONFIGURING-MWBNW
-maxclients      20000                           40000
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/high-availability/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-redis/high-availability/_category_.yml
deleted file mode 100644
index 4c2f09021..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/high-availability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 高可用
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/high-availability/high-availability.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/high-availability/high-availability.md
deleted file mode 100644
index 75557c155..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/high-availability/high-availability.md
+++ /dev/null
@@ -1,187 +0,0 @@
----
-title: Redis 集群的高可用性
-description: Redis 集群的高可用性
-keywords: [redis, 高可用]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 高可用
-
-KubeBlocks 集成 [Redis Sentinel 官方解决方案](https://redis.io/docs/management/sentinel/)以实现高可用性，并采用 Noop 作为切换策略。
-
-Redis Sentinel 是 Redis 官方推荐的主备集群高可用性解决方案，在社区中备受欢迎。
-
-在 KubeBlocks 提供的 Redis 主备集群中，Sentinel 是一个独立的组件。
-
-## 开始之前
-
-* [安装 KubeBlocks](./../../installation/install-kubeblocks.md)。
-* [创建 Redis 主备版集群](./../../kubeblocks-for-redis/cluster-management/create-and-connect-to-a-redis-cluster.md#创建集群)。
-* 检查切换策略和角色探测参数。
-  * 检查切换策略是否为 `Noop`。
-
-    ```bash
-    kubectl get cluster redis-cluster -o yaml
-    >
-    spec:
-      componentSpecs:
-      - name: redis
-        componentDefRef: redis
-        switchPolicy:
-          type: Noop
-    ```
-
-  * 检查角色探测参数，验证角色探测是否已启用。
-
-    ```bash
-    kubectl get cd redis -o yaml
-    >
-    probes:
-      roleProbe:
-        failureThreshold: 2
-        periodSeconds: 2
-        timeoutSeconds:1
-    ```
-
-## 步骤
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 查看 Redis 集群的初始状态。
-
-    ```bash
-    kubectl get pods -l kubeblocks.io/role=primary -n demo
-    >
-    NAME                READY   STATUS    RESTARTS   AGE
-    mycluster-redis-0   3/3     Running   0          24m
-
-    kubectl get pods -l kubeblocks.io/role=secondary -n demo
-    >
-    NAME                READY   STATUS    RESTARTS      AGE
-    mycluster-redis-1   3/3     Running   1 (24m ago)   24m
-    ```
-
-   当前 `mycluster-redis-0` 是主节点，`mycluster-redis-1` 是从节点。
-
-   :::note
-
-   如需更完整的输出，您可使用 `-o` 参数。
-
-   ```bash
-   kubectl get pods  -o custom-columns=NAME:.metadata.name,ROLE_LABEL:.metadata.labels."kubeblocks\.io/role"
-   ```
-
-   :::
-
-2. 模拟主节点异常。
-
-   ```bash
-   # 进入主节点
-   kubectl exec -ti -n demo mycluster-redis-0 -- bash
-
-   # 执行 debug sleep 命令，模拟主节点异常
-   root@mycluster-redis-0:/# redis-cli debug sleep 30
-   ```
-
-3. 打开 Redis Sentinel 日志，查看故障切换情况。
-
-   ```bash
-   kubectl logs mycluster-redis-sentinel-0 -n demo
-   ```
-
-   在日志中可以看到高可用切换发生的时间。
-
-   ```bash
-   1:X 18 Apr 2023 06:13:17.072 # +switch-master mycluster-redis-sentinel mycluster-redis-0.mycluster-redis-headless.default.svc 6379 mycluster-redis-1.mycluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.074 * +slave slave mycluster-redis-0.mycluster-redis-headless.default.svc:6379 mycluster-redis-0.mycluster-redis-headless.default.svc 6379 @ mycluster-redis-sentinel mycluster-redis-1.mycluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.077 * Sentinel new configuration saved on disk
-   ```
-
-4. 连接到 Redis 集群，查看异常发生后的主节点信息。
-
-    ```bash
-    127.0.0.1:6379> info replication
-    ```
-
-   从输出可以看到，`mycluster-redis-1` 是主节点。
-
-5. 查看集群，检查实例角色。
-
-   ```bash
-   kubectl get pods -l kubeblocks.io/role=primary -n demo
-   kubectl get pods -l kubeblocks.io/role=secondary -n demo
-   ```
-
-   故障切换后，`mycluster-redis-0` 变成了从节点，`mycluster-redis-1` 变成了主节点。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 查看 Redis 集群的初始状态。
-
-   ```bash
-   kbcli cluster describe redis-cluster
-   ```
-
-   ![Redis cluster original status](./../../../img/redis-high-availability-initial-status.png)
-
-   当前 `redis-cluster-redis-0` 是主节点，`redis-cluster-redis-1` 是从节点。
-
-2. 模拟主节点异常。
-
-   ```bash
-   # 进入主节点
-   kubectl exec -it redis-cluster-redis-0  -- bash
-
-   # 执行 debug sleep 命令，模拟主节点异常
-   root@redis-redis-0:/# redis-cli debug sleep 30
-   ```
-
-3. 打开 Redis Sentinel 日志，查看故障切换情况。
-
-   ```bash
-   kubectl logs redis-cluster-redis-sentinel-0
-   ```
-
-   在日志中可以看到高可用性切换发生的时间。
-
-   ```bash
-   1:X 18 Apr 2023 06:13:17.072 # +switch-master redis-cluster-redis-sentinel redis-cluster-redis-0.redis-cluster-redis-headless.default.svc 6379 redis-cluster-redis-1.redis-cluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.074 * +slave slave redis-cluster-redis-0.redis-cluster-redis-headless.default.svc:6379 redis-cluster-redis-0.redis-cluster-redis-headless.default.svc 6379 @ redis-cluster-redis-sentinel redis-cluster-redis-1.redis-cluster-redis-headless.default.svc 6379
-   1:X 18 Apr 2023 06:13:17.077 * Sentinel new configuration saved on disk
-   ```
-
-4. 连接到 Redis 集群，查看异常发生后的主节点信息。
-
-   ```bash
-   kbcli cluster connect redis-cluster
-   ```
-
-   ```bash
-   # 查看当前的主节点
-   127.0.0.1:6379> info replication
-   ```
-
-   ![Redis info replication](./../../../img/redis-high-availability-status-after-exception.png)
-
-   从输出可以看到，`redis-cluster-redis-1` 是主节点。
-
-5. 查看集群，检查实例角色。
-
-   ```bash
-   kbcli cluster describe redis-cluster
-   ```
-
-   ![Redis cluster status after HA](./../../../img/redis-high-availability-role.png)
-
-   故障切换后，`redis-cluster-redis-0` 变成了从节点，`redis-cluster-redis-1` 变成了主节点。
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/kubeblocks-for-redis.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/kubeblocks-for-redis.md
deleted file mode 100644
index 9908bdfac..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/kubeblocks-for-redis.md
+++ /dev/null
@@ -1,14 +0,0 @@
----
-title: 用 KubeBlocks 管理 Redis
-description: KubeBlocks 中的 Redis 功能列表
-keywords: [redis, 概述, 功能]
-sidebar_position: 1
----
-
-# 用 KubeBlocks 管理 Redis
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 Redis 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/redis)查看 YAML 示例。
-
-* [集群管理](./../kubeblocks-for-redis/cluster-management/create-and-connect-to-a-redis-cluster.md)
-* [配置](./../kubeblocks-for-redis/configuration/configure-cluster-parameters.md)
-* [高可用](./../kubeblocks-for-redis/high-availability/high-availability.md)
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-redis/redis-cluster-mode.md b/i18n/zh-cn/user-docs/kubeblocks-for-redis/redis-cluster-mode.md
deleted file mode 100644
index 921377ac1..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-redis/redis-cluster-mode.md
+++ /dev/null
@@ -1,440 +0,0 @@
----
-title: Redis Cluster 模式
-description: Redis Cluster 模式概览及基本操作
-keywords: [redis, redis cluster, 功能]
-sidebar_position: 7
-sidebar_label: Redis Cluster 模式
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# Redis Cluster 模式
-
-虽然 Redis Sentinel 集群提供了出色的故障转移支持，但其本身不提供数据分片，所有数据仍然驻留在单个 Redis 实例上，并受到该实例的内存和性能限制，因此可能会影响系统在处理大型数据集和高读/写操作时的水平扩展能力。
-
-KubeBlocks 现已支持 Redis Cluster 模式。该模式不仅允许更大的内存分布，还支持并行处理，从而显著地提高了数据密集型操作的性能。本文档将简要介绍 Redis Cluster 模式及其基本操作。
-
-## 什么是 Redis Cluster 模式
-
-Redis Cluster 是 Redis 数据库的一种分布式部署模式，用于在多个节点上水平扩展数据存储和提高系统的可用性。
-
-在 Redis Cluster 中，集群通过分片（sharding）模式来对数据进行管理，并具备分片间数据复制、故障转移和流量调度的能力。这种分片机制允许将大量数据分散存储在不同的节点上，从而实现数据的横向扩展和负载均衡。
-
-Redis Cluster 采用主从复制的方式保证数据的高可用性。每个主节点可以有一个或多个从节点，从节点复制主节点的数据并提供读取服务。当主节点发生故障时，从节点可以自动接管主节点的功能，并继续提供服务，从而实现故障转移和容错性。
-
-Redis Cluster 还提供集群的节点间通信和数据迁移机制。当集群中的节点发生变更（如新增节点、节点故障、节点移除）时，Redis Cluster 会自动进行数据迁移和重新分片，以保持数据的平衡和可用性。
-
-## 基本运维操作
-
-下面简单介绍 Redis Cluster 的基本运维操作。
-
-### 开始之前
-
-* 安装 KubeBlocks，可通过 [kbcli](./../installation/install-with-kbcli/install-kubeblocks-with-kbcli.md) 或 [Helm](./../installation/install-with-helm/install-kubeblocks.md) 安装。
-   - KubeBlocks 及 Addon 的版本都需要 0.9 版本以上。
-* 确保 Redis 引擎已启用。
-* 查看可用于创建集群的数据库类型和版本。
-
-  查看 redis 组件定义是否可用。组件定义用于描述和定义数据库集群的组件，通常呈现诸如名称、类型、版本、状态等基本信息。
-
-  ```bash
-  kubectl get componentdefinition redis-cluster-7.0
-  >
-  NAME                SERVICE         SERVICE-VERSION   STATUS      AGE
-  redis-cluster-7.0   redis-cluster   7.0.6             Available   33m
-  ```
-
-* 为了保持隔离，本文档中创建一个名为 demo 的独立命名空间。
-
-  ```bash
-  kubectl create namespace demo
-  >
-  namespace/demo created
-  ```
-
-### 创建集群
-
-因为 Redis Cluster 是基于最新的 ShardingSpec API 创建的，目前只支持通过 helm 或者 kubectl apply yaml 创建。
-
-:::note
-
-Redis Cluster 至少需要三个分片，所以分片数量不能小于 3。
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-```bash
-# 示例一：生产一个具有三个分片，每个分片一个副本（一主一备）的 Redis Cluster 集群
-helm install redisc xxxxx(chart remote address) --set mode=cluster --set redisCluster.shardCount=3 --set replicas=2 -n demo
-
-# 示例二：生产一个具有三个分片，每个分片一个副本（一主一备）， 并开启 NodePort 访问的 Redis cluster 集群
-helm install redisc xxxxx(chart remote address) --set mode=cluster --set nodePortEnabled=true --set redisCluster.shardCount=3 --set replicas=2 -n demo
-```
-
-</TabItem>
-
-<TabItem value="YAML" label="YAML">
-
-```bash
-kubectl apply -f redis-cluster-example.yaml
-```
-
-**示例 1: 未开启 NodePort 的 Redis Cluster**
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: redisc
-  namespace: demo
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-  clusterVersionRef: redis-7.0.6
-  shardingSpecs:
-  - name: shard
-    # 指定分片数量，不能小于3
-    shards: 3
-    template:
-      componentDef: redis-cluster-7
-      name: redis
-      replicas: 2
-      # 指定单个分片的资源
-      resources:
-        limits:
-          cpu: 500m
-          memory: 512Mi
-        requests:
-          cpu: 500m
-          memory: 512Mi
-      serviceVersion: 7.0.6
-      volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-          - ReadWriteOnce
-          resources:
-            requests:
-              storage: 20Gi
-  terminationPolicy: Delete
-```
-
-**示例 2: 开启 NodePort 的 Redis Cluster**
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: redisc
-  namespace: demo
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-  clusterVersionRef: redis-7.0.6
-  shardingSpecs:
-  - name: shard
-    # 指定分片数量，不能小于 3
-    shards: 3
-    template:
-      componentDef: redis-cluster-7.0
-      name: redis
-      replicas: 2
-      # 指定单个分片的资源
-      resources:
-        limits:
-          cpu: 500m
-          memory: 512Mi
-        requests:
-          cpu: 500m
-          memory: 512Mi
-      serviceVersion: 7.0.6
-      # 指定开启 NodePort
-      services:
-      - name: redis-advertised
-        podService: true
-        serviceType: NodePort
-      volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-          - ReadWriteOnce
-          resources:
-            requests:
-              storage: 20Gi
-  terminationPolicy: Delete
-```
-
-</TabItem>
-
-</Tabs>
-
-创建后，观察集群状态变成 `running` 后，并通过 `kubectl get component -n demo | grep redisc-shard` 命令看到对应的角色。
-
-```bash
-kubectl get component -n demo | grep redisc-shard
->
-redisc-shard-5hn            redis-cluster          Running   79m
-redisc-shard-7zk            redis-cluster          Running   79m
-redisc-shard-5tw            redis-cluster          Running   79m
-```
-
-### 连接集群
-
-<Tabs>
-
-<TabItem value="SDK" label="SDK" default>
-
-Redis Cluster 需要使用特定的客户端 SDK 进行连接，目前不同的主流编程语言都有对应的 Redis Cluster 客户端 SDK 实现，可以根据实际需求选择。例如 Java 的 Jedis 或者 Lettuce，Golang 的 go-redis 等，这部分可以参考对应 SDK 的文档。
-
-需要注意的是，在使用 SDK 时需要在 SDK 中配置 Redis Cluster 各个节点的地址，根据上述创建集群时是否开启 NodePort 的不同，分为两种情况：
-
-**示例 1: 未开启 Nodeport**
-
-配置每个 Shard 对应 Pod 对应的 headless 地址。
-
-```bash
-redisc-shard-qst-0.redisc-shard-qst-headless:6379
-redisc-shard-qst-1.redisc-shard-qst-headless:6379
-redisc-shard-kr2-0.redisc-shard-kr2-headless:6379
-redisc-shard-kr2-1.redisc-shard-kr2-headless:6379
-redisc-shard-mv6-0.redisc-shard-mv6-headless:6379
-redisc-shard-mv6-1.redisc-shard-mv6-headless:6379
-```
-
-**示例 2: 开启 NodePort**
-
-Configure each Pod's HostIP and the corresponding NodePort.
-
-```bash
-# 例如 172.18.0.3 是 redisc-shard-qst-0 所在节点的主机 ip，32269 是 redis 6379 服务端口映射的 NodePort
-172.18.0.3:32269
-172.18.0.4:32051
-172.18.0.5:32650
-172.18.0.6:30151
-172.18.0.7:31603
-172.18.0.8:31718
-```
-
-</TabItem>
-
-<TabItem value="直连特定节点" label="直连特定节点">
-
-:::note
-
-直连特定节点仅用于测试。
-
-:::
-
-简单验证连通性时，可以通过 `kubectl` 命令，登录到集群中的某个 Pod，查看集群状态。
-
-```bash
-# 登录到 Pod 中
-➜  ~ kubectl exec -it redisc-shard-qst-0 -c redis-cluster -- bash
-root@redisc-shard-qst-0:/#
-
-# 查看集群拓扑信息
-root@redisc-shard-qst-0:/# redis-cli -a $REDIS_DEFAULT_PASSWORD cluster nodes
-Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
-f2f729eb9074d42dc58ba544f35be0b6652134c2 172.18.0.3:32650@31171,redisc-shard-mv6-1.redisc-shard-mv6-headless.default.svc slave 04e309001ce12857558ab721b47ce802e15b84f4 0 1713927855356 3 connected
-04e309001ce12857558ab721b47ce802e15b84f4 172.18.0.3:32051@32632,redisc-shard-mv6-0.redisc-shard-mv6-headless.default.svc master - 0 1713927854000 3 connected 12288-16383
-11da6bb8875ed4b3787888fec56bf9212e664246 172.18.0.3:32663@32115,redisc-shard-qst-1.redisc-shard-qst-headless.default.svc slave 7f062b0b5fdd0d09ea70920a5ad3612a9d217c9d 0 1713927853848 2 connected
-7f062b0b5fdd0d09ea70920a5ad3612a9d217c9d 172.18.0.3:30649@30003,redisc-shard-qst-0.redisc-shard-qst-headless.default.svc myself,master - 0 1713927853000 2 connected 6827-10922
-a04da6edbf99faff53b2b94d0fc64f378d27b4aa 172.18.0.3:30151@31667,redisc-shard-kr2-0.redisc-shard-kr2-headless.default.svc master - 0 1713927853000 1 connected 1365-5460
-d392d129e27ced8603681cd666f705bfad7ae91a 172.18.0.3:31718@30646,redisc-shard-fm6-1.redisc-shard-fm6-headless.default.svc slave 568bb6ced7f186caddb2b2b7ab560e61ff95438c 0 1713927853036 4 connected
-b695dbac46efd9ec24ea608358f92dfd749e8e71 172.18.0.3:31603@30000,redisc-shard-kr2-1.redisc-shard-kr2-headless.default.svc slave a04da6edbf99faff53b2b94d0fc64f378d27b4aa 0 1713927854350 1 connected
-568bb6ced7f186caddb2b2b7ab560e61ff95438c 172.18.0.3:32269@31457,redisc-shard-fm6-0.redisc-shard-fm6-headless.default.svc master - 0 1713927853340 4 connected 0-1364 5461-6826 10923-12287
-```
-
-</TabItem>
-
-</Tabs>
-
-### 分片扩缩容
-
-:::note
-
-1. 目前仅支持一次性扩容或者缩容一个分片节点，如需要扩缩多个分片，需要串行操作，后续版本会进行优化。
-
-2. 暂不支持通过 OpsRequest 操作对分片进行扩缩容，后续版本会支持。
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl patch" label="kubectl patch" default>
-
-使用 kubectl patch 更新 shards 字段，对分片进行扩缩容。
-
-```bash
-# 扩容成 4 分片
-kubectl patch cluster redisc --type='json' -p='[{"op": "replace", "path": "/spec/shardingSpecs/0/shards", "value":4}]' -n demo
-
-# 重新缩容成 3 分片
-kubectl patch cluster redisc --type='json' -p='[{"op": "replace", "path": "/spec/shardingSpecs/0/shards", "value":3}]' -n demo
-```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-使用 `kubectl edit` 直接编辑集群 YAML 文件，修改 `spec.ShardingSpecs[0].shards` 字段的值。
-
-```bash
-kubectl edit cluster redisc
-```
-
-</TabItem>
-
-</Tabs>
-
-### 分片副本扩缩容
-
-分片副本数量对所有分片生效。
-
-<Tabs>
-
-<TabItem value="kubectl patch" label="kubectl patch" default>
-
-使用 `kubectl patch` 更新 `replicas` 字段，对分片副本进行扩缩容。
-
-```bash
-# 扩容至 3 副本（每个分片中含有一主两备）
-kubectl patch cluster redisc --type='json' -p='[{"op": "replace", "path": "/spec/shardingSpecs/0/template/replicas", "value": 3}]' -n default
-```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-使用 `kubectl edit` 直接编辑集群 YAML 文件，修改 `spec.ShardingSpecs[0].template.replicas` 字段的值。
-
-```bash
-kubectl edit cluster redisc
-```
-
-</TabItem>
-
-<TabItem value="OpsRequest" label="OpsRequest">
-
-应用 OpsRequest 进行分片副本扩缩容。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: horizontal-scaling-redisc
-spec:
-  clusterName: redisc
-  horizontalScaling:
-  - componentName: shard
-    replicas: 3
-  type: HorizontalScaling
-```
-
-</TabItem>
-
-</Tabs>
-
-### 资源变配
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: vertical-scaling-redisc
-spec:
-  clusterName: redisc
-  verticalScaling:
-  - componentName: shard
-    limits:
-      cpu: 2
-      memory: 4Gi
-    requests:
-      cpu: 2
-      memory: 4Gi
-  type: VerticalScaling
-```
-
-### 磁盘扩容
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: volume-expand-redisc
-spec:
-  clusterName: redisc
-  volumeExpansion:
-  - componentName: shard
-    volumeClaimTemplates:
-    - name: data
-      storage: 200Gi
-  type: VolumeExpansion
-```
-
-### 重启
-
-当前暂不支持重启 Redis Cluster。
-
-### 停止/启动
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: stop-redisc
-spec:
-  clusterName: redisc
-  type: Stop
-```
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: start-redisc
-spec:
-  clusterName: redisc
-  type: Start
-```
-
-### 备份恢复
-
-备份集群：
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: backup-redisc-1
-spec:
-  clusterName: redisc
-  type: Backup
-  backup:
-    backupMethod: datafile
-    backupName: backup-redisc-1
-    backupPolicyName: redisc-redis-backup-policy
-    deletionPolicy: Delete
-```
-
-恢复集群：
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  name: restore-redisc-backup
-spec:
-  clusterName: restore-redisc
-  type: Backup
-  restore:
-    backupName: backup-redisc-1
-```
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-starrocks/_category_.yml b/i18n/zh-cn/user-docs/kubeblocks-for-starrocks/_category_.yml
deleted file mode 100644
index 7a7819cab..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-starrocks/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 21
-label: 用 KubeBlocks 管理 StarRocks
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/kubeblocks-for-starrocks/manage-starrocks.md b/i18n/zh-cn/user-docs/kubeblocks-for-starrocks/manage-starrocks.md
deleted file mode 100644
index f2dfe2f3b..000000000
--- a/i18n/zh-cn/user-docs/kubeblocks-for-starrocks/manage-starrocks.md
+++ /dev/null
@@ -1,924 +0,0 @@
----
-title: 用 KubeBlocks 管理 StarRocks
-description: 如何使用 KubeBlocks 管理 StarRocks
-keywords: [starrocks, 分析型数据库, data warehouse]
-sidebar_position: 1
-sidebar_label: 用 KubeBlocks 管理 StarRocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 用 KubeBlocks 管理 StarRocks
-
-StarRocks 是一款高性能分析型数据仓库，使用向量化、MPP 架构、CBO、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。
-
-本文档展示了如何通过 kbcli、kubectl 或 YAML 文件等当时创建和管理 StarRocks 集群。您可以在 [GitHub 仓库](https://github.com/apecloud/kubeblocks-addons/tree/main/examples/starrocks)查看 YAML 示例。
-
-## 开始之前
-
-- 如果您想通过 `kbcli` 创建并连接 StarRocks 集群，请先[安装 kbcli](./../installation/install-kbcli.md)。
-- [安装 KubeBlocks](./../installation/install-kubeblocks.md)。
-- [安装并启用 starrocks 引擎](./../installation/install-addons.md)。
-
-## 创建集群
-
-***步骤：***
-
-KubeBlocks 通过 `Cluster` 定义集群。以下是创建 StarRocks 集群的示例。Pod 默认分布在不同节点。如果您只有一个节点可用于部署多副本集群，可设置 `spec.schedulingPolicy` 或 `spec.componentSpecs.schedulingPolicy`，具体可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster#apps.kubeblocks.io/v1.SchedulingPolicy)。但生产环境中，不建议将所有副本部署在同一个节点上，因为这可能会降低集群的可用性。
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: fe
-    componentDef: starrocks-ce-fe
-    serviceAccountName: kb-starrocks-cluster
-    replicas: 1
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-  - name: be
-    componentDef: starrocks-ce-be
-    replicas: 2
-    resources:
-      limits:
-        cpu: '1'
-        memory: 1Gi
-      requests:
-        cpu: '1'
-        memory: 1Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 20Gi
-EOF
-```
-
-| 字段                                   | 定义  |
-|---------------------------------------|--------------------------------------|
-| `spec.terminationPolicy`              | 集群终止策略，有效值为 `DoNotTerminate`、`Delete` 和 `WipeOut`。具体定义可参考 [终止策略](#终止策略)。 |
-| `spec.componentSpecs`                 | ClusterComponentSpec 对象的列表，定义组成集群 components。该字段支持自定义配置集群中每个 component。注意：`shardingSpecs` 和 `componentSpecs` 不能同时为空；必须至少定义一个才能配置集群。ClusterComponentSpec 定义集群中组件的规格。 |
-| `spec.componentSpecs.replicas`        | 定义了 component 中 replicas 的数量。 |
-| `spec.componentSpecs.resources`       | 定义了 component 的资源要求。  |
-| `spec.componentSpecs.volumeClaimTemplates` | PersistentVolumeClaim 模板列表，定义 component 的存储需求。 |
-| `spec.componentSpecs.volumeClaimTemplates.name` | 引用了在 `componentDefinition.spec.runtime.containers[*].volumeMounts` 中定义的 volumeMount 名称。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.storageClassName` | 定义了 StorageClass 的名称。如果未指定，系统将默认使用带有 `storageclass.kubernetes.io/is-default-class=true` 注释的 StorageClass。  |
-| `spec.componentSpecs.volumeClaimTemplates.spec.resources.storage` | 可按需配置存储容量。 |
-
-您可参考 [API 文档](https://kubeblocks.io/docs/preview/developer_docs/api-reference/cluster)，查看更多 API 字段及说明。
-
-KubeBlocks operator 监控 `Cluster` CRD 并创建集群和全部依赖资源。您可执行以下命令获取集群创建的所有资源信息。
-
-```bash
-kubectl get all,secret,rolebinding,serviceaccount -l app.kubernetes.io/instance=mycluster -n demo
-```
-
-执行以下命令，查看已创建的 StarRocks 集群。
-
-```bash
-kubectl get cluster mycluster -n demo -o yaml
-```
-
-## 扩缩容
-
-### 垂直扩缩容
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION              TERMINATION-POLICY     STATUS    AGE
-mycluster   starrocks             starrocks-ce-3.1.1   Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running    Jul 17,2024 19:06 UTC+0800  
-```
-
-</TabItem>
-
-</Tabs>
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: fe
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证垂直扩缩容操作是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                         TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        mycluster-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```yaml
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: Cluster
-   metadata:
-     name: mycluster
-     namespace: demo
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     componentSpecs:
-     - name: fe
-       componentDefRef: fe
-       replicas: 2
-       resources: # 修改 resources 下的参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--memory` 和 `--cpu`，并执行以下命令。
-
-    ```bash
-    kbcli cluster vscale mycluster --cpu=2 --memory=20Gi --components=be -n demo
-    ```
-
-2. 通过以下任意一种方式验证垂直扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 Succeed 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-verticalscaling-smx8b -n demo
-       ```
-
-    - 查看集群状态。
-
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示正在进行垂直扩容。
-       - STATUS=Running 表示垂直扩容已完成。
-       - STATUS=Abnormal 表示垂直扩容异常。原因可能是正常实例的数量少于总实例数，或者 Leader 实例正常运行而其他实例异常。
-          > 您可以手动检查是否由于资源不足而导致报错。如果 Kubernetes 集群支持 AutoScaling，系统在资源充足的情况下会执行自动恢复。或者您也可以创建足够的资源，并使用 `kubectl describe` 命令进行故障排除。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-### 水平扩缩容
-
-水平扩展改变 Pod 的数量。例如，您可以将副本从三个扩展到五个。
-
-从 v0.9.0 开始，KubeBlocks 还支持了指定实例扩缩容。可通过 [水平扩缩容文档](./../maintenance/scale/horizontal-scale.md) 文档了解更多细节和示例。
-
-#### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION              TERMINATION-POLICY     STATUS    AGE
-mycluster   starrocks             starrocks-ce-3.1.1   Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running    Jul 17,2024 19:06 UTC+0800  
-```
-
-</TabItem>
-
-</Tabs>
-
-#### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定的集群应用 OpsRequest，可根据您的需求配置参数。
-
-   以下示例演示了增加 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: fe
-       scaleOut:
-         replicaChanges: 2
-   EOF
-   ```
-
-   如果您想要缩容，可将 `scaleOut` 替换为 `scaleIn`。
-
-   以下示例演示了删除 2 个副本。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-horizontal-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: HorizontalScaling
-     horizontalScaling:
-     - componentName: fe
-       scaleIn:
-         replicaChanges: 2
-   EOF
-   ```
-
-2. 查看运维操作状态，验证水平扩缩容是否成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                           TYPE                CLUSTER     STATUS    PROGRESS   AGE
-   demo        mycluster-horizontal-scaling   HorizontalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-  
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.replicas` 的配置。`spec.componentSpecs.replicas` 定义了 pod 数量，修改该参数将触发集群水平扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.replicas` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     componentSpecs:
-     - name: fe
-       componentDefRef: fe
-       replicas: 2 # 修改参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相关资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components` 和 `--replicas`，并执行以下命令。
-
-    ```bash
-    kbcli cluster hscale mycluster --replicas=3 --components=be -n demo
-    ```
-
-    - `--components` 表示准备进行水平扩容的组件名称。
-    - `--replicas` 表示指定组件的副本数。 根据需要设定数值，进行扩缩容。
-
-2. 通过以下任意一种方式验证水平扩容是否完成。
-
-    - 查看 OpsRequest 进度。
-
-       执行命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、Pod 状态等。当 OpsRequest 的状态为 Succeed 时，表明这一任务已完成。
-
-       ```bash
-       kbcli cluster describe-ops mycluster-horizontalscaling-smx8b -n demo
-       ```
-
-    - 查看集群状态。
-  
-       ```bash
-       kbcli cluster list mycluster -n demo
-       ```
-
-       - STATUS=Updating 表示正在进行水平扩容。
-       - STATUS=Running 表示水平扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 磁盘扩容
-
-### 开始之前
-
-确认集群状态是否为 `Running`。否则，后续相关操作可能会失败。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION              TERMINATION-POLICY     STATUS    AGE
-mycluster   starrocks             starrocks-ce-3.1.1   Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running    Jul 17,2024 19:06 UTC+0800  
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 应用 OpsRequest。根据需求更改 storage 的值，并执行以下命令来更改集群的存储容量。
-
-    ```yaml
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-volume-expansion
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: VolumeExpansion
-      volumeExpansion:
-      - componentName: be
-        volumeClaimTemplates:
-        - name: be-storage
-          storage: "40Gi"
-    EOF
-    ```
-
-2. 查看磁盘扩容操作是否成功。
-
-    ```bash
-    kubectl get ops -n demo
-    >
-    NAMESPACE   NAME                         TYPE              CLUSTER     STATUS    PROGRESS   AGE
-    demo        mycluster-volume-expansion   VolumeExpansion   mycluster   Succeed   3/3        6m
-    ```
-
-    如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改集群 YAML 文件中 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的值。
-
-   `spec.componentSpecs.volumeClaimTemplates.spec.resources` 定义了 Pod 存储资源信息，修改该数值将触发集群磁盘扩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.volumeClaimTemplates.spec.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: starrocks-ce
-     clusterVersionRef: starrocks-ce-3.1.1
-     componentSpecs:
-     - name: be
-       componentDefRef: be
-       volumeClaimTemplates:
-       - name: be-storage
-         spec:
-           accessModes:
-             - ReadWriteOnce
-           resources:
-             requests:
-               storage: 40Gi # 修改该参数值
-   ...
-   ```
-
-2. 当集群状态再次回到 `Running` 后，查看相应资源是否变更。
-
-    ```bash
-    kubectl describe cluster mycluster -n demo
-    ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 更改配置。
-
-    配置参数 `--components`、`--volume-claim-templates` 和 `--storage`，并执行以下命令。
-
-    ```bash
-    kbcli cluster volume-expand mycluster --storage=40Gi --components=be -n demo
-    ```
-
-    - `--components` 表示需扩容的组件名称。
-    - `--volume-claim-templates` 表示组件中的 VolumeClaimTemplate 名称。
-    - `--storage` 表示磁盘需扩容至的大小。
-
-2. 可通过以下任意一种方式验证扩容操作是否完成。
-
-   - 查看 OpsRequest 进度。
-
-      执行磁盘扩容命令后，KubeBlocks 会自动输出查看 OpsRequest 进度的命令，可通过该命令查看 OpsRequest 进度的细节，包括 OpsRequest 的状态、PVC 状态等。当 OpsRequest 的状态为 `Succeed` 时，表明这一任务已完成。
-
-      ```bash
-      kbcli cluster describe-ops mycluster-volumeexpansion-smx8b -n default
-      ```
-
-   - 查看集群状态。
-
-      ```bash
-      kbcli cluster list mycluster -n demo
-      >
-      NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS      CREATED-TIME
-      mycluster   demo        starrocks            starrocks-3.1.1   Delete               Updating    Jul 17,2024 19:06 UTC+0800  
-      ```
-
-     * STATUS=Updating 表示扩容正在进行中。
-     * STATUS=Running 表示扩容已完成。
-
-3. 当 OpsRequest 状态为 `Succeed` 或集群状态再次回到 `Running` 后，检查资源规格是否已按要求变更。
-
-    ```bash
-    kbcli cluster describe mycluster -n demo
-    ```
-
-</TabItem>
-
-</Tabs>
-
-## 停止/启动集群
-
-您可以停止/启动集群以释放计算资源。当集群停止时，其计算资源将被释放，也就是说 Kubernetes 的 Pod 将被释放，但其存储资源仍将被保留。您也可以重新启动该集群，使其恢复到停止集群前的状态。
-
-## 停止集群
-
-1. 配置集群名称，并执行以下命令来停止该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-stop
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Stop
-    EOF
-    ```
-
-    </TabItem>
-
-    <TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-    将 replicas 的值修改为 0，删除 pod。
-
-    ```yaml
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: Cluster
-    metadata:
-      name: mycluster
-      namespace: demo
-    spec:
-      clusterDefinitionRef: starrocks-ce
-      clusterVersionRef: starrocks-ce-3.1.1
-      terminationPolicy: Delete
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      tolerations:
-        - key: kb-data
-          operator: Equal
-          value: 'true'
-          effect: NoSchedule
-      componentSpecs:
-      - name: fe
-        componentDefRef: fe
-        serviceAccountName: kb-starrocks-cluster
-        replicas: 0
-      - name: be
-        componentDefRef: be
-        replicas: 0
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster stop mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已停止。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-### 启动集群
-
-1. 配置集群名称，并执行以下命令来启动该集群。
-
-    <Tabs>
-
-    <TabItem value="OpsRequest" label="OpsRequest" default>
-
-    ```bash
-    kubectl apply -f - <<EOF
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-      name: mycluster-start
-      namespace: demo
-    spec:
-      clusterName: mycluster
-      type: Start
-    EOF 
-    ```
-
-    </TabItem>
-
-    <TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-    将 replicas 数值修改为初始值，启动集群。
-
-    ```yaml
-    spec:
-      clusterDefinitionRef: starrocks-ce
-      clusterVersionRef: starrocks-ce-3.1.1
-      terminationPolicy: Delete
-      affinity:
-        podAntiAffinity: Preferred
-        topologyKeys:
-        - kubernetes.io/hostname
-      tolerations:
-        - key: kb-data
-          operator: Equal
-          value: 'true'
-          effect: NoSchedule
-      componentSpecs:
-      - name: fe
-        componentDefRef: fe
-        serviceAccountName: kb-starrocks-cluster
-        replicas: 1
-      - name: be
-        componentDefRef: be
-        replicas: 2
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster start mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 查看集群状态，确认集群是否已再次运行。
-
-    <Tabs>
-
-    <TabItem value="kubectl" label="kubectl" default>
-
-    ```bash
-    kubectl get cluster mycluster -n demo
-    ```
-
-    </TabItem>
-
-    <TabItem value="kbcli" label="kbcli">
-
-    ```bash
-    kbcli cluster list mycluster -n demo
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-## 重启集群
-
-KubeBlocks 支持重启集群中的所有 Pod。当数据库出现异常时，也可以尝试重启集群。
-
-:::note
-
-集群重启后，主节点可能会发生变化。
-
-:::
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-1. 执行以下命令，重启集群。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: mycluster-restart
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: Restart 
-     restart:
-     - componentName: be
-   EOF
-   ```
-
-2. 查看 pod 和运维操作状态，验证重启操作是否成功。
-
-   ```bash
-   kubectl get pod -n demo
-
-   kubectl get ops ops-restart -n demo
-   ```
-
-   重启过程中，Pod 有如下两种状态：
-
-   - STATUS=Terminating：表示集群正在重启。
-   - STATUS=Running：表示集群已重启。
-
-   如果操作过程中出现报错，可通过 `kubectl describe ops -n demo` 查看该操作的事件，协助排障。
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 执行以下命令，重启集群。
-
-   配置 `components` 和 `ttlSecondsAfterSucceed` 的值，执行以下命令来重启指定集群。
-
-   ```bash
-   kbcli cluster restart mycluster --components="starrocks" \
-   --ttlSecondsAfterSucceed=30
-   ```
-
-   - `components` 表示需要重启的组件名称。
-   - `ttlSecondsAfterSucceed` 表示重启成功后 OpsRequest 作业的生存时间。
-
-2. 验证重启是否成功。
-
-   检查集群状态，验证重启操作是否成功。
-
-   ```bash
-   kbcli cluster list mycluster
-   >
-   NAME        NAMESPACE   CLUSTER-DEFINITION     VERSION             TERMINATION-POLICY   STATUS    CREATED-TIME
-   mycluster   default     starrocks              starrocks-3.1.1    Delete               Running   Jul 17,2024 19:06 UTC+0800
-   ```
-
-   - STATUS=Updating 表示集群正在重启中。
-   - STATUS=Running 表示集群已重启。
-
-</TabItem>
-
-</Tabs>
-
-## 删除集群
-
-### 终止策略
-
-:::note
-
-终止策略决定了删除集群的方式。
-
-:::
-
-| **终止策略** | **删除操作**                                                                     |
-|:----------------------|:-------------------------------------------------------------------------------------------|
-| `DoNotTerminate`      | `DoNotTerminate` 禁止删除操作。                                                  |
-| `Delete`              | `Delete` 删除 Pod、服务、PVC 等集群资源，删除所有持久数据。                              |
-| `WipeOut`             | `WipeOut`  删除所有集群资源，包括外部存储中的卷快照和备份。使用该策略将会删除全部数据，特别是在非生产环境，该策略将会带来不可逆的数据丢失。请谨慎使用。   |
-
-执行以下命令查看终止策略。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl get cluster mycluster -n demo
->
-NAME        CLUSTER-DEFINITION    VERSION              TERMINATION-POLICY     STATUS    AGE
-mycluster   starrocks             starrocks-ce-3.1.1   Delete                 Running   47m
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster list -n demo
->
-NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS     CREATED-TIME
-mycluster   demo        starrocks            starrocks-3.1.1   Delete               Running    Jul 17,2024 19:06 UTC+0800  
-```
-
-</TabItem>
-
-</Tabs>
-
-### 步骤
-
-执行以下命令，删除集群。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl" default>
-
-```bash
-kubectl delete cluster mycluster -n demo
-```
-
-如果想删除集群和所有相关资源，可以将终止策略修改为 `WipeOut`，然后再删除该集群。
-
-```bash
-kubectl patch -n demo cluster mycluster -p '{"spec":{"terminationPolicy":"WipeOut"}}' --type="merge"
-
-kubectl delete -n demo cluster mycluster
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-kbcli cluster delete mycluster -n demo
-```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/maintenance/_category_.yml b/i18n/zh-cn/user-docs/maintenance/_category_.yml
deleted file mode 100644
index c4a1a2717..000000000
--- a/i18n/zh-cn/user-docs/maintenance/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 7
-label: 集群维护
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/_category_.yml b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/_category_.yml
deleted file mode 100644
index b57b8031e..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 备份恢复
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/_category_.yml b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/_category_.yml
deleted file mode 100644
index 8301e3cb8..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 备份
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/backup-repo.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/backup-repo.md
deleted file mode 100644
index 029005682..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/backup-repo.md
+++ /dev/null
@@ -1,644 +0,0 @@
----
-title: BackupRepo
-description: 如何配置 BackupRepo
-keywords: [introduction, 备份, 恢复]
-sidebar_position: 1
-sidebar_label: BackupRepo
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# BackupRepo
-
-## 概述
-
-BackupRepo 是备份数据的存储仓库，支持配置 OSS（阿里云对象存储），S3（亚马逊对象存储），COS（腾讯云对象存储），GCS（谷歌云对象存储），OBS（华为云对象存储），MinIO 等兼容 S3 协议的对象存储作为备份仓库。
-
-用户可以创建多个 BackupRepo 以适应不同的场景。例如，根据不同的业务需求，可以把业务 A 的数据存储在 A 仓库，把业务 B 的数据存储在 B 仓库，或者可以按地区配置多个仓库以实现异地容灾。在创建备份时，你需要指定备份仓库。你也可以创建一个默认的备份仓库，如果在创建备份时未指定具体的仓库，KubeBlocks 将使用此默认仓库来存储备份数据。
-
-## 开始之前
-
-请确保你已经：
-
-* [安装 kbcli](./../../../installation/install-kbcli.md)。
-* [安装 kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)。
-* [安装 Helm](https://helm.sh/docs/intro/install/)。
-* [安装 KubeBlocks](./../../../installation/install-kubeblocks.md)。
-
-## 安装 MinIO
-
-如果你没有使用云厂商的对象存储，可在 Kubernetes 中部署开源服务 MinIO，用它来配置 BackupRepo。如果你正在使用云厂商提供的对象存储服务，可以直接跳转至[配置 BackupRepo](#配置-backuprepo)。
-
-***步骤：***
-
-1. 在 `kb-system` 命名空间中安装 MinIO。
-
-   ```bash
-   helm install minio oci://registry-1.docker.io/bitnamicharts/minio --namespace kb-system --create-namespace --set "extraEnvVars[0].name=MINIO_BROWSER_LOGIN_ANIMATION" --set "extraEnvVars[0].value=off"
-   ```
-
-   如果上述仓库地址网络无法连接，可使用以下命令安装。
-
-   ```bash
-   helm repo add kubeblocks-apps https://jihulab.com/api/v4/projects/152630/packages/helm/stable
-   helm install minio kubeblocks-apps/minio --namespace kb-system --create-namespace --set "extraEnvVars[0].name=MINIO_BROWSER_LOGIN_ANIMATION" --set "extraEnvVars[0].value=off"
-   ```
-
-2. 获取初始的用户名和密码.
-
-   ```bash
-   # 初始 username
-   echo $(kubectl get secret --namespace kb-system minio -o jsonpath="{.data.root-user}" | base64 -d)
-
-   # 初始 password
-   echo $(kubectl get secret --namespace kb-system minio -o jsonpath="{.data.root-password}" | base64 -d)
-   ```
-
-3. 生成连接凭证。
-
-   执行 `kubectl port-forward --namespace kb-system svc/minio 9001:9001`，然后访问 `127.0.0.1:9001` 进入登录页面。
-
-   登录到仪表盘后，生成 `access key` 和 `secret key`。
-
-   ![backup-and-restore-backup-repo-1](./../../../../img/backup-and-restore-backup-repo-1.png)
-
-4. 创建 bucket。
-
-   在 MinIO 仪表盘上创建一个名为 `test-minio` 的存储桶。
-
-   ![backup-and-restore-backup-repo-2](./../../../../img/backup-and-restore-backup-repo-2.png)
-   ![backup-and-restore-backup-repo3](./../../../../img/backup-and-restore-backup-repo-3.png)
-
-  :::note
-
-  安装的 MinIO 的访问地址（端口）为 `http://minio.kb-system.svc.cluster.local:9000`，用于配置 BackupRepo。在本例中，`kb-system` 是安装 MinIO 的命名空间的名称。
-
-  :::
-
-## 配置 BackupRepo
-
-准备好对象存储服务后，就可以配置 BackupRepo 了。KubeBlocks 提供两种配置方式：
-
-* 按需手动配置 BackupRepo。
-* 安装 KubeBlocks 时自动配置 BackupRepo。
-  
-### 访问 BackupRepo
-
-备份和恢复任务在运行时，有两种访问远端对象存储的方式：
-
-* 使用命令行工具，通过网络直接访问远端存储。
-* 通过 CSI Driver 将远端存储映射到本地，工作进程可以像访问本地文件一样访问远端存储。
-
-我们将这两种访问方式分别命名为 “Tool” 和 “Mount” 。用户在创建 BackupRepo 时可以通过 `accessMethod` 字段指定其访问方式，创建之后不能修改。
-  
-一般来说，推荐使用 “Tool”，因为相比 “Mount”，它不必安装额外的 CSI Driver，减少了一层依赖。
-
-不过，由于备份和恢复任务需要运行在数据库集群所在的 namespace 下，在 “Tool” 方式下，我们会自动将访问远端存储所需的密钥以 secret 资源的形式同步到这些 namespace 中，以供我们的数据传输工具使用。在多租户隔离的情况下，如果你认为这种同步 secret 的做法会带来安全隐患，可以选择使用 “Mount”。
-
-### 手动配置 BackupRepo
-
-如果在安装 KubeBlocks 时没有配置 BackupRepo 信息，你可以按照以下说明进行手动配置。
-
-<Tabs>
-
-<TabItem value="kubectl" label="kubectl">
-
-1. 安装 S3 CSI driver （仅访问方式为 “Mount” 时需要安装）。
-
-    ```bash
-    helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
-    helm install csi-s3 kubeblocks/csi-s3 --version=0.7.0 -n kb-system
-    ```
-
-    您也可以自定义安装 S3 CSI driver。例如，`csi-s3` 默认在所有节点上安装一个 daemonSet Pod，您可以通过配置容忍，实现仅在指定节点上安装。
-
-    ```bash
-    helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable
-    helm install csi-s3 kubeblocks/csi-s3 --version=0.7.0 -n kb-system --set-json tolerations='[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"taintValue"}]' --set-json daemonsetTolerations='[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"taintValue"}]'
-    ```
-
-2. 创建 BackupRepo。
-
-      <Tabs>
-
-      <TabItem value="S3" label="S3" default>
-
-      ```bash
-      # 创建密码，用于存储 S3 连接密钥
-      kubectl create secret generic s3-credential-for-backuprepo \
-        -n kb-system \
-        --from-literal=accessKeyId=<ACCESS KEY> \
-        --from-literal=secretAccessKey=<SECRET KEY>
-
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: s3
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          endpoint: ""
-          mountOptions: --memory-limit 1000 --dir-mode 0777 --file-mode 0666
-          region: cn-northwest-1
-        credential:
-          name: s3-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      <TabItem value="OSS" label="OSS">
-
-      ```bash
-      # 创建密码，用于存储 OSS 连接密钥
-      kubectl create secret generic oss-credential-for-backuprepo \
-        -n kb-system \
-        --from-literal=accessKeyId=<ACCESS KEY> \
-        --from-literal=secretAccessKey=<SECRET KEY>
-
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: oss
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          mountOptions: ""
-          endpoint: ""
-          region: cn-zhangjiakou
-        credential:
-          name: oss-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      <TabItem value="OBS" label="OBS">
-
-      ```bash
-      # 创建密码，用于存储 OBS 连接密钥
-      kubectl create secret generic obs-credential-for-backuprepo \
-      -n kb-system \
-      --from-literal=accessKeyId=<ACCESS KEY> \
-      --from-literal=secretAccessKey=<SECRET KEY>
-
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: obs
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          mountOptions: ""
-          endpoint: ""
-          region: cn-north-4
-        credential:
-          name: obs-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      <TabItem value="COS" label="COS">
-
-      ```bash
-      # 创建密码，用于存储 COS 连接密钥
-      kubectl create secret generic cos-credential-for-backuprepo \
-        -n kb-system \
-        --from-literal=accessKeyId=<ACCESS KEY> \
-        --from-literal=secretAccessKey=<SECRET KEY>
-
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: cos
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          mountOptions: ""
-          endpoint: ""
-          region: ap-guangzhou
-        credential:
-          name: cos-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      <TabItem value="GCS" label="GCS">
-
-      ```bash
-      # 创建密码，用于存储 GCS 连接密钥
-      kubectl create secret generic gcs-credential-for-backuprepo \
-        -n kb-system \
-        --from-literal=accessKeyId=<ACCESS KEY> \
-        --from-literal=secretAccessKey=<SECRET KEY>
-
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: gcs-s3comp
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          mountOptions: ""
-          endpoint: ""
-          region: auto
-        credential:
-          name: gcs-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      <TabItem value="MinIO" label="MinIO">
-
-      ```bash
-      # 创建密码，用于存储 MinIO 连接密钥
-      kubectl create secret generic minio-credential-for-backuprepo \
-        -n kb-system \
-        --from-literal=accessKeyId=<ACCESS KEY> \
-        --from-literal=secretAccessKey=<SECRET KEY>
-
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: minio
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          mountOptions: ""
-          endpoint: <ip:port>
-        credential:
-          name: minio-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      <TabItem value="S3-compatible" label="S3-compatible">
-
-      ```bash
-      # 创建 secret，用于保存 S3-compatible 存储的访问密钥
-      kubectl create secret generic s3-comp-credential-for-backuprepo \
-        -n kb-system \
-        --from-literal=accessKeyId=<ACCESS KEY> \
-        --from-literal=secretAccessKey=<SECRET KEY>
-   
-      # 创建 BackupRepo 资源
-      kubectl apply -f - <<-'EOF'
-      apiVersion: dataprotection.kubeblocks.io/v1alpha1
-      kind: BackupRepo
-      metadata:
-        name: my-repo
-        annotations:
-          dataprotection.kubeblocks.io/is-default-repo: "true"
-      spec:
-        storageProviderRef: s3-compatible
-        accessMethod: Tool
-        pvReclaimPolicy: Retain
-        volumeCapacity: 100Gi
-        config:
-          bucket: test-kb-backup
-          endpoint: <endpoint>
-          forcePathStyle: true
-        credential:
-          name: s3-comp-credential-for-backuprepo
-          namespace: kb-system
-      EOF
-      ```
-
-      </TabItem>
-
-      </Tabs>
-
-3. 查看 BackupRepo 及其状态。 如果 STATUS 为 `Ready`，说明 BackupRepo 已经准备就绪。
-
-   ```bash
-   kubectl get backuprepo
-   ```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-1. 安装 S3 CSI driver（仅访问方式为 “Mount” 时需要安装）。
-
-    ```bash
-    # 启用 CSI-S3 引擎
-    kbcli addon enable csi-s3
-
-    # 如需控制 addon 的安装，则添加其他参数
-    # 默认 csi-s3 会在所有 node 安装 daemonSet pod，可以配置 tolerations，安装在指定 node
-    kbcli addon enable csi-s3 \
-      --tolerations '[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"true"}]' \
-      --tolerations 'daemonset:[{"key":"taintkey","operator":"Equal","effect":"NoSchedule","value":"true"}]'
-
-    # 查看 CSI-S3 状态，确保其状态为 enabled  
-    kbcli addon list csi-s3
-    ```
-
-2. 创建 BackupRepo。
-
-   <Tabs>
-
-   <TabItem value="S3" label="S3" default>
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider s3 \
-     --region cn-northwest-1 \
-     --bucket test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \ 
-     --default
-   ```
-
-   你也可将 `--access-method` 配置为 `Mount`。
-
-   </TabItem>
-
-   <TabItem value="OSS" label="OSS">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider oss \
-     --region cn-zhangjiakou \
-     --bucket  test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \ 
-     --default
-   ```
-
-   你还可以使用 `--endpoint` 显示指定 OSS endpoint，示例如下：
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider oss \
-     --region cn-zhangjiakou \
-     --bucket  test-kb-backup \
-     --endpoint https://oss-cn-zhangjiakou-internal.aliyuncs.com \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \ 
-     --default
-   ```
-
-   </TabItem>
-
-   <TabItem value="OBS" label="OBS">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider obs \
-     --region cn-north-4 \
-     --bucket  test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   </TabItem>
-
-   <TabItem value="COS" label="COS">
-
-    腾讯云中存储桶的命名格式为 `<BucketName-APPID>`，APPID 为腾讯云自动生成。设置 `--bucket` 时，请先通过腾讯云的控制台创建 bucket，获取存储桶名称。
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider cos \
-     --region ap-guangzhou \
-     --bucket  test-kb-backup \ 
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   </TabItem>
-
-   <TabItem value="GCS" label="GCS">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider gcs-s3comp \
-     --region auto \
-     --bucket  test-kb-backup \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-    KubeBlocks 目前支持的 GCS 为谷歌云的 S3 兼容版。
-
-   </TabItem>
-
-   <TabItem value="MinIO" label="MinIO">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider minio \
-     --endpoint <ip:port> \   
-     --bucket test-minio \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --default
-   ```
-
-   以上部署的 MinIO 的访问地址为 http://minio.kb-system.svc.cluster.local:9000
-
-   </TabItem>
-
-   <TabItem value="S3-compatible" label="S3-compatible">
-
-   ```bash
-   kbcli backuprepo create my-repo \
-     --provider s3-compatible \
-     --endpoint <endpoint> \
-     --bucket test-minio \
-     --access-key-id <ACCESS KEY> \
-     --secret-access-key <SECRET KEY> \
-     --access-method Tool \
-     --force-path-style=true \
-     --default
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-   以上命令创建了一个名为 `my-repo` 的默认备份仓库。
-
-   * `my-repo` 为仓库名，可以留空不填，此时 kbcli 会使用形如 `backuprepo-xxxxx` 的随机名字。
-   * `--default` 表示该仓库是默认仓库。全局只能有一个默认仓库，如果系统中存在多个默认仓库，KubeBlocks 无法选出应该使用哪个仓库（这个行为跟 K8s 的 default StorageClass 类似），会导致备份失败。使用 kbcli 创建 BackupRepo 能避免出现这种情况，因为 kbcli 在创建时会确保当前没有第二个默认仓库。
-   * `--provider` 参数对应后端存储类型，即 `storageProvider`，可选值为 `s3`、`cos`、`gcs-s3comp`、`obs`、`oss`、`minio`、`s3-compatible`、`ftp`、`nfs`。不同存储所需的命令行参数不同，可以通过 `kbcli backuprepo create --provider STORAGE-PROVIDER-NAME -h` 命令查看参数信息（注意 `--provider` 参数是必需的）。
-
-     `kbcli backuprepo create` 命令执行成功后，就会在系统中创建一个类型为 BackupRepo 的 K8s 资源，可以通过修改该资源的 annotation 来调整默认仓库。
-
-     ```bash
-     # 取消默认仓库
-     kubectl annotate backuprepo old-default-repo \
-       --overwrite=true \
-       dataprotection.kubeblocks.io/is-default-repo=false
-     ```
-
-     ```bash
-     # 设置新的默认仓库
-     kubectl annotate backuprepo backuprepo-4qms6 \
-       --overwrite=true \
-       dataprotection.kubeblocks.io/is-default-repo=true
-     ```
-
-3. 查看 BackupRepo 及其状态。
-
-   如果 STATUS 为 `Ready`，说明 BackupRepo 已经准备就绪。
-
-   ```bash
-   kbcli backuprepo list
-   ```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-如果 BackupRepo 状态显示 Failed，或者长时间处于 PreChecking 状态，可执行 `kubectl describe backuprepo my-repo` 或 `kbcli backuprepo describe my-repo` 命令，根据 `status.conditions` 中的信息，查找异常原因。
-
-建议从以下方面进行排查：
-
-* 检查配置内容是否正确，如 `endpoint`，`accessKeyId` 和 `secretAccessKey` 等参数是否正确填写。
-* 对于其他自建的对象存储，如 Ceph Object Storage ，可尝试使用 `s3-compatible` StorageProvider。由于 `s3` StorageProvider 默认使用 virtual hosting 风格的 URL 访问服务端，自建对象存储很可能不支持这种访问方式。
-* 如提示 `InvalidLocationConstraint` 错误，请先检查 `region` 参数是否正确填写。如果仍有 `InvalidLocationConstraint` 报错，可尝试将 `region` 参数留空不填。
-* 如果长时间处于 `PreChecking` 状态，很可能是网络问题。请确保在 K8s 集群内能正常访问存储服务，例如可运行一个 Pod，在 Pod 里面通过对应的客户端尝试连接存储服务。
-* KubeBlocks 内部使用 [rclone](https://rclone.org/) 传输数据，请确保能通过 rclone 正常访问当前所使用的存储服务。
-
-:::
-
-### 自动配置 BackupRepo
-
-安装 KubeBlocks 时，可以通过配置文件指定 BackupRepo 相关信息，KubeBlocks 会根据配置信息创建 BackupRepo。
-
-1. 准备配置文件。
-
-   以 AWS 的 S3 为例，配置文件 `backuprepo.yaml` 如下：
-
-    ```yaml
-    backupRepo:
-      create: true
-      storageProvider: s3
-      config:
-        region: cn-northwest-1
-        bucket: test-kb-backup
-      secrets:
-        accessKeyId: <ACCESS KEY>
-        secretAccessKey: <SECRET KEY>
-    ```
-
-    * `region` 表示 S3 所在区域。
-    * `bucket` 表示 S3 的桶名称。
-    * `accessKeyId` 表示 AWS 的 Access Key。
-    * `secretAccessKey` 表示 AWS 的 Secret Key。
-    * `storageProvider` 表示对象存储提供者，该示例中为 s3。
-
-:::note
-
-* KubeBlocks 中，`storageProvider` 目前可选 `s3`、`cos`、`gcs-s3comp`、`obs`、`oss`、`minio`、`s3-compatible`、`ftp`、`nfs`。
-* 不同 `storageProvider` 所需的配置信息并不统一，上面展示的 `config` 和 `secrets` 适用于 S3。
-* 执行 `kubectl get storageproviders.dataprotection.kubeblocks.io` 命令可以查看支持的 `storageProvider`。
-
-:::
-
-2. 安装 KubeBlocks 时指定配置文件。
-
-   <Tabs>
-
-   <TabItem value="kbcli" label="kbcli" default>
-
-   ```bash
-   kbcli kubeblocks install -f backuprepo.yaml
-   ```
-
-   安装完成后，可以执行命令查看 BackupRepo。
-
-   ```bash
-   kbcli backuprepo list
-   ```
-
-   </TabItem>
-
-   <TabItem value="kubectl" label="kubectl">
-
-   ```bash
-   kubectl create -f backuprepo.yaml
-   ```
-
-   安装完成后，可以执行命令查看 BackupRepo。
-
-   ```bash
-   kubectl get backuprepo
-   ```
-
-   </TabItem>
-
-   </Tabs>
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/configure-backup-policy.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/configure-backup-policy.md
deleted file mode 100644
index a6c34fc99..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/configure-backup-policy.md
+++ /dev/null
@@ -1,190 +0,0 @@
----
-title: BackupPolicy
-description: 如何配置 BackupPolicy
-keywords: [备份, 备份策略]
-sidebar_position: 2
-sidebar_label: BackupPolicy
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# BackupPolicy
-
-## 配置加密密钥
-
-为了确保恢复的集群能够正常访问，KubeBlocks 在备份集群时会将集群的连接密码加密，并将其安全地存储在 Backup 对象的 Annotation 中。因此，为了保障您的数据安全，强烈建议谨慎分配备份对象的 Get/List 权限，并在安装或升级 KubeBlocks 时，务必指定加密密钥。这些措施将有助于确保你的数据得到妥善保护。
-
-KubeBlocks v0.9.0 版本集成了 datasafed 的数据加密功能，目前已支持 `AES-128-CFB`、`AES-192-CFB` 和 `AES-256-CFB` 等加密算法。在写入存储之前，备份数据会被加密。您的加密密钥不仅可以用于加密连接密码，还可以备份数据。用户可以根据实际需要，直接引用已有的 secret 对象，或给数据库集群创建不同的密钥，从而进行备份加密。
-
-### 引用已有的 key
-
-如果 Secret 对象已存在，您可以选择直接引用，而无需设置 `dataProtection.encryptionKey`。KubeBlocks 提供了快速引用已有 `encryptionKey` 进行加密的方式。
-
-举个例子，如果已经有一个名为 `dp-encryption-key` 的 Secret，其中包含一个名为 `encryptionKey` 的密钥。例如，通过以下命令创建了一个密钥：
-
-```bash
-kubectl create secret generic dp-encryption-key \
-    --from-literal=encryptionKey='S!B\*d$zDsb='
-```
-
-您可以在安装或升级 KubeBlocks 时引用该密钥。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli kubeblocks install \
-    --set dataProtection.encryptionKeySecretKeyRef.name="dp-encryption-key" \
-    --set dataProtection.encryptionKeySecretKeyRef.key="encryptionKey"
-# The above command is equivalent to:
-# kbcli kubeblocks install --set dataProtection.encryptionKey='S!B\*d$zDsb='
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-```bash
-helm install kubeblocks kubeblocks/kubeblocks --namespace kb-system --create-namespace --set dataProtection.encryptionKeySecretKeyRef.name="dp-encryption-key" \
-    --set dataProtection.encryptionKeySecretKeyRef.key="encryptionKey"
-```
-
-</TabItem>
-
-</Tabs>
-
-### 创建新的 key
-
-如果无需默认开启备份加密，或者需要使用独立的 encryptionKey，您可以按照以下步骤创建一个 Secret 对象，手动开启备份加密。
-
-1. 创建 Secret，存储加密密钥。
-
-   ```bash
-   kubectl create secret generic backup-encryption \
-     --from-literal=secretKey='your secret key'
-   ```
-
-2. 修改 BackupPolicy，开启备份加密。
-
-   在这里需要引用之前创建的密钥：
-
-   ```bash
-   kubectl --type merge patch backuppolicy mysqlcluster-mysql-backup-policy \
-     -p '{"spec":{"encryptionConfig":{"algorithm":"AES-256-CFB","passPhraseSecretKeyRef":{"name":"backup-encryption","key":"secretKey"}}}}'
-   ```
-
-:::note
-
-您也可以使用 `kbcli` 创建，操作更简单。
-
-```bash
-# 启用加密
-kbcli cluster edit-backup-policy <backup-policy-name> --set encryption.algorithm=AES-256-CFB --set encryption.passPhrase="SECRET!"
-      
-# 禁用加密
-kbcli cluster edit-backup-policy <backup-policy-name> --set encryption.disabled=true
-```
-
-:::
-
-配置完成。然后就可以照常执行备份和恢复操作了。
-
-:::warning
-
-请不要修改或删除在第一步创建的 Secret，否则将来可能无法解密备份。
-
-:::
-
-默认情况下，`encryptionKey` 仅用于加密连接密码。如果您想用它加密备份数据，请在上述命令中添加 `--set dataProtection.enableBackupEncryption=true`。然后，所有新建的 DB cluster 都会默认开启备份加密。
-
-## 创建集群
-
-创建测试集群，用于后续备份教程使用。
-
-```shell
-# 创建 MySQL 集群
-kbcli cluster create mysql mysql-cluster
-
-# 查看 backupPolicy
-kbcli cluster list-backup-policy mysql-cluster
->
-NAME                                       DEFAULT   CLUSTER         CREATE-TIME                  STATUS      
-mysql-cluster-mysql-backup-policy          true      mysql-cluster   May 23,2023 19:53 UTC+0800   Available   
-mysql-cluster-mysql-backup-policy-hscale   false     mysql-cluster   May 23,2023 19:53 UTC+0800   Available
-```
-
-如无特殊设置，所有备份都会保存在全局默认仓库中，可以执行如下命令查看所有 BackupRepo，其中 `DEFAULT` 字段为 `true`，表示该 BackupRepo 为默认 BackupRepo。
-
-```bash
-# 查看 BackupRepo
-kbcli backuprepo list
-```
-
-## 查看 BackupPolicy
-
-使用 KubeBlocks 创建数据库集群后，对于支持备份的数据库，会自动为其创建一个备份策略（BackupPolicy），可以执行如下命令查看集群的备份策略：
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster list-backup-policy mysql-cluster
->
-NAME                                       NAMESPACE   DEFAULT   CLUSTER         CREATE-TIME                  STATUS
-mysql-cluster-mysql-backup-policy          default     true      mysql-cluster   Oct 30,2023 14:34 UTC+0800   Available
-mysql-cluster-mysql-backup-policy-hscale   default     false     mysql-cluster   Oct 30,2023 14:34 UTC+0800   Available
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-```bash
-kubectl get backuppolicy | grep mycluster
->
-mycluster-mysql-backup-policy                            Available   35m
-mycluster-mysql-backup-policy-hscale                     Available   35m
-```
-
-</TabItem>
-
-</Tabs>
-
-备份策略中包含了该集群支持的备份方法，执行以下命令进行查看备份方法：
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster describe-backup-policy mysql-cluster
-> 
-kbcli cluster describe-backup-policy mysql-cluster
-Summary:
-  Name:               mysql-cluster-mysql-backup-policy
-  Cluster:            mysql-cluster
-  Namespace:          default
-  Default:            true
-
-Backup Methods:
-NAME              ACTIONSET                           SNAPSHOT-VOLUMES
-xtrabackup        xtrabackup-for-apecloud-mysql       false
-volume-snapshot   volumesnapshot-for-apecloud-mysql   true
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-```bash
-kubectl get backuppolicy mycluster-mysql-backup-policy -o yaml
-```
-
-</TabItem>
-
-</Tabs>
-
-对于 MySQL 集群而言，默认支持两种备份方法：`xtrabackup` 和 `volume-snapshot`，前者使用备份工具 `xtrabackup` 将 MySQL 数据备份至对象存储中；后者则使用云存储的卷快照能力，通过快照方式对数据进行备份。创建备份时，可以指定要使用哪种备份方法进行备份。
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/on-demand-backup.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/on-demand-backup.md
deleted file mode 100644
index 4b246b8e5..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/on-demand-backup.md
+++ /dev/null
@@ -1,133 +0,0 @@
----
-title: 按需备份
-description: 如何进行按需备份
-keywords: [备份, 按需备份, 快照备份, 备份工具]
-sidebar_position: 4
-sidebar_label: 按需备份
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 按需备份
-
-KubeBlocks 支持按需备份。你可以通过指定 `--method` 来自定义备份方法。本文档以使用备份工具和卷快照为例。
-
-## 备份工具
-
-下面使用 `xtrabackup` 备份方法，创建名为 `mybackup` 的备份。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-# 创建备份
-kbcli cluster backup mysql-cluster --name mybackup --method xtrabackup
->
-Backup mybackup created successfully, you can view the progress:
-        kbcli cluster list-backups --name=mybackup -n default
-        
-# 查看备份
-kbcli cluster list-backups --name=mybackup -n default
->
-NAME       NAMESPACE   SOURCE-CLUSTER   METHOD       STATUS      TOTAL-SIZE   DURATION   CREATE-TIME                  COMPLETION-TIME              EXPIRATION
-mybackup   default     mysql-cluster    xtrabackup   Completed   4426858      2m8s       Oct 30,2023 15:19 UTC+0800   Oct 30,2023 15:21 UTC+0800
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-```bash
-# 创建备份
-kubectl apply -f - <<-'EOF'
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: Backup
-metadata:
-  name: mybackup
-  namespace: default
-  annotations:
-    dataprotection.kubeblocks.io/connection-password: Bw1cR15mzfldc9hzGuK4m1BZQOzha6aBb1i9nlvoBdoE9to4
-spec:
-  backupMethod: xtrabackup
-  backupPolicyName: mysql-cluster-mysql-backup-policy
-EOF
-
-# 查看备份
-kubectl get backup mybackup
->
-NAME       POLICY                              METHOD       REPO      STATUS      TOTAL-SIZE   DURATION   CREATION-TIME          COMPLETION-TIME        EXPIRATION-TIME
-mybackup   mysql-cluster-mysql-backup-policy   xtrabackup   my-repo   Completed   4426858      2m8s       2023-10-30T07:19:21Z   2023-10-30T07:21:28Z
-
-```
-
-:::note
-
-annotations 中的 `dataprotection.kubeblocks.io/connection-password` 使用原集群的密码。
-
-:::
-
-</TabItem>
-
-</Tabs>
-
-## 卷快照备份
-
-使用云盘快照创建备份的方式与以上命令类似，只需将对应 YAML 中的 `backupMethod` 或者 kbcli 命令中的 `--method` 参数设置为 `volume-snapshot` 即可。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-# 创建备份
-kbcli cluster backup mysql-cluster --name mybackup --method volume-snapshot
->
-Backup mybackup created successfully, you can view the progress:
-        kbcli cluster list-backups --name=mybackup -n default
-        
-# 查看备份
-kbcli cluster list-backups --name=mybackup -n default
->
-NAME       NAMESPACE   SOURCE-CLUSTER   METHOD            STATUS      TOTAL-SIZE   DURATION   CREATE-TIME                  COMPLETION-TIME              EXPIRATION
-mybackup   default     mysql-cluster    volume-snapshot   Completed   4426858      2m8s       Oct 30,2023 15:19 UTC+0800   Oct 30,2023 15:21 UTC+0800
-```
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-将对应 YAML 中的 `backupMethod` 参数设置为 `volume-snapshot`。
-
-```bash
-# 创建备份
-kubectl apply -f - <<-'EOF'
-apiVersion: dataprotection.kubeblocks.io/v1alpha1
-kind: Backup
-metadata:
-  name: mybackup
-  namespace: default
-spec:
-  backupMethod: volume-snapshot
-  backupPolicyName: mycluster-mysql-backup-policy
-EOF
-
-# 查看备份
-kubectl get backup mybackup
->
-NAME       POLICY                              METHOD            REPO      STATUS      TOTAL-SIZE   DURATION   CREATION-TIME          COMPLETION-TIME        EXPIRATION-TIME
-mybackup   mycluster-mysql-backup-policy       volume-snapshot   my-repo   Completed   4426858      2m8s       2023-10-30T07:19:21Z   2023-10-30T07:21:28Z
-```
-
-</TabItem>
-
-</Tabs>
-
-:::warning
-
-1. 使用云盘快照创建备份时，请确保使用的存储支持快照功能，否则会导致备份失败。
-
-2. 通过 `kbcli` 手动创建的备份，不会自动删除，需要用户手动删除。
-
-:::
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/scheduled-backup.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/scheduled-backup.md
deleted file mode 100644
index e2c9ea19c..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/scheduled-backup.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-title: 定时备份
-description: 如何进行定时备份
-keywords: [备份恢复, 定时, 自动备份, 定时备份]
-sidebar_position: 3
-sidebar_label: 定时备份
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 定时备份
-
-KubeBlocks 支持为集群配置自动备份。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster update mysql-cluster --backup-enabled=true \
-  --backup-method=xtrabackup --backup-repo-name=my-repo \
-  --backup-retention-period=7d --backup-cron-expression="0 18 * * *"
-```
-
-- `--backup-enabled` 表示是否开启自动备份。
-- `--backup-method` 指定备份方法。支持的备份方法可以执行 `kbcli cluster describe-backup-policy mysql-cluster` 命令查看。
-- `--backup-repo-name` 指定备份仓库的名称。
-- `--backup-retention-period` 指定备份保留时长。以上示例中为 7 天。
-- `--backup-cron-expression` 指定自动备份的备份周期。表达式格式与 linux 系统中的定时任务保持一致，时区为 UTC，参考 [Cron](https://en.wikipedia.org/wiki/Cron)。 
-
-</TabItem>
-
-<TabItem value="kubectl" label="kubectl">
-
-用 kubectl 命令修改 Cluster 中的 backup 字段，命令如下：
-
-```bash
-kubectl edit cluster -n default mycluster
-```
-
-修改 backup 相关字段的参数值。
-
-```yaml
-spec:
-  ...
-  backup:
-    # 开启自动备份
-    enabled: true
-    # UTC 时区, 下面示例是每周一凌晨 2 点
-    cronExpression: 0 18 * * *
-    # 使用 xtrabackup 进行备份，如果存储支持快照，可以指定为 volume-snapshot
-    method: xtrabackup
-    # 是否开启 PITR
-    pitrEnabled: false
-    # 备份集保留时长
-    retentionPeriod: 7d
-    # BackupRepo
-    repoName: my-repo
-```
-
-您可在以上 YAML 文件中按需设置是否开启自动备份和 PITR，也可以指定备份方式、仓库名称、保留时长等。
-
-</TabItem>
-
-</Tabs>
-
-开启自动备份后，可以执行如下命令查看是否有 CronJob 对象被创建：
-
-```bash
-kubectl get cronjob
->
-NAME                                        SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
-96523399-mycluster-default-xtrabackup       0 18 * * *   False     0        <none>          57m
-```
-
-也可以执行如下命令，查看集群信息，其中 `Data Protection:` 部分会显示自动备份的配置信息。
-
-```bash
-kbcli cluster describe mysql-cluster
->
-...
-Data Protection:
-BACKUP-REPO   AUTO-BACKUP   BACKUP-SCHEDULE   BACKUP-METHOD   BACKUP-RETENTION
-my-repo       Enabled       0 18 * * *        xtrabackup      7d
-```
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/overview.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/overview.md
deleted file mode 100644
index 0b6ad2095..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/overview.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: 简介
-description: KubeBlocks 备份恢复功能简介
-keywords: [简介, 备份, 恢复]
-sidebar_position: 1
-sidebar_label: 简介
----
-
-# 简介
-
-KubeBlocks 提供备份恢复功能，以确保数据的安全性和可靠性。KubeBlocks 的备份恢复功能依赖于 BackupRepo，在使用完整的备份恢复功能之前，首先需要配置 [BackupRepo](../backup-and-restore/backup/backup-repo.md)。
-
-KubeBlocks 采用物理备份的方式，将数据库中的物理文件作为备份对象。你可以根据实际需求，选择对应的方式按需或定时备份集群数据。
-
-- [按需备份](../backup-and-restore/backup/on-demand-backup.md)：根据不同的备份选项，按需备份可以进一步分为备份工具备份和快照备份两种。
-  - 备份工具备份：可使用数据库产品的备份工具，如 MySQL XtraBackup 和 PostgreSQL pg_basebackup。KubeBlocks 支持为不同的数据产品配置备份工具。
-  - 快照备份：如果你的数据存储在支持快照的云盘中，你可以通过快照创建数据备份。快照备份通常比备份工具备份更快，因此推荐使用。
-- [定时备份](../backup-and-restore/backup/scheduled-backup.md)：可指定保留时间、备份方法、时间等参数来自定义备份设置。
-
-KubeBlocks 支持从备份集中恢复数据。
-
-- 恢复
-
-  - [从备份集中恢复数据](../backup-and-restore/restore/restore-data-from-backup-set.md)
-
-可按照以下顺序对数据库集群进行备份和恢复操作。
-
-1. [配置 BackupRepo](./backup/backup-repo.md)。
-2. [配置 BackupPolicy](./backup/configure-backup-policy.md)。
-3. [定时备份](./backup/scheduled-backup.md)或者[按需备份](./backup/on-demand-backup.md)集群数据。
-4. 从备份集中[恢复集群数据](./restore/restore-data-from-backup-set.md)。MySQL 和 PostgreSQL 可[按时间点恢复](./restore/pitr.md)。
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/_category_.yml b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/_category_.yml
deleted file mode 100644
index 95619acc9..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 恢复
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/pitr.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/pitr.md
deleted file mode 100644
index bce84b5bb..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/pitr.md
+++ /dev/null
@@ -1,118 +0,0 @@
----
-title: PITR
-description: PITR
-keywords: [备份恢复, 恢复, PITR, 按时间点恢复]
-sidebar_position: 2
-sidebar_label: PITR
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# PITR
-
-### PITR 是什么？
-
-PITR（Point-in-Time Recovery，时间点恢复）是一种数据库备份恢复技术，通常用于关系型数据库管理系统（RDBMS）。它可以恢复特定时间点开始的数据更改，将数据库回退到特定时间点之前的状态。在 PITR 中，数据库系统会定期创建全量备份，并记录备份点之后所有的事务日志，包括插入、更新和删除操作等。当恢复时，系统会首先还原最近的全量备份，然后应用备份之后的事务日志，将数据库恢复到所需的状态。
-
-KubeBlocks 已支持对 MySQL 和 PostgreSQL 等数据库的 PITR 功能。
-
-## 如何进行 PITR？
-
-1. 查看可以将集群恢复到的时间戳。
-
-    <Tabs>
-
-    <TabItem value="kbcli" label="kbcli" default>
-
-    ```bash
-    kbcli cluster describe pg-cluster
-    ...
-    Data Protection:
-    BACKUP-REPO   AUTO-BACKUP   BACKUP-SCHEDULE   BACKUP-METHOD   BACKUP-RETENTION   RECOVERABLE-TIME                                                
-    minio         Enabled       */5 * * * *       archive-wal     8d                 May 07,2024 15:29:46 UTC+0800 ~ May 07,2024 15:48:47 UTC+080
-    ```
-
-    </TabItem>
-
-    <TabItem value="kubectl" label="kubectl">
-
-    ```bash
-    # 1. 获取当前集群的全部备份对象（backup objects）
-    kubectl get backup -l app.kubernetes.io/instance=pg-cluster
-    
-    # 2. 获取持续备份的备份实践范围
-    kubectl get backup -l app.kubernetes.io/instance=pg-cluster -l dataprotection.kubeblocks.io/backup-type=Continuous -o yaml
-    ...
-    status:
-        timeRange:
-        end: "2024-05-07T10:47:14Z"
-        start: "2024-05-07T10:07:45Z"
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-    `RECOVERABLE-TIME` 表示可以将恢复集群到的时间范围。
-
-    可以看到当前持续日志备份的时间范围是 `May 07,2024 15:29:46 UTC+0800 ~ May 07,2024 15:48:47 UTC+0800`。但是还得需要一个基础全量备份才能恢复数据，并且这个全部备份完成时间需要落在日志备份的时间范围内才是有效的基础备份。
-
-2. 将集群恢复到指定的时间点。
-
-    <Tabs>
-
-    <TabItem value="kbcli" label="kbcli" default>
-
-    ```bash
-    kbcli cluster restore pg-cluster-pitr --restore-to-time 'May 07,2024 15:48:47 UTC+080' --backup <continuousBackupName>
-    ```
-
-    </TabItem>
-
-    <TabItem value="kubectl" label="kubectl">
-
-    ```bash
-    apiVersion: apps.kubeblocks.io/v1alpha1
-    kind: OpsRequest
-    metadata:
-    name:  pg-cluster-pitr
-    spec:
-    clusterName:  pg-cluster-pitr
-    restore:
-        backupName: 818aa0e0-pg-kubeblocks-cloud-n-archive-wal
-        restorePointInTime: "2024-05-07T10:07:45Z"
-        volumeRestorePolicy: Parallel
-    type: Restore
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-3. 查看新集群的状态。
-
-    集群状态为 `Running` 时，表示恢复成功。
-
-    <Tabs>
-
-    <TabItem value="kbcli" label="kbcli" default>
-
-    ```bash
-    kbcli cluster list pg-cluster-pitr
-    >
-    NAME                 NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-    pg-cluster-pitr      default     apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Jul 25,2023 19:42 UTC+0800
-    ```
-
-    </TabItem>
-
-    <TabItem value="kubectl" label="kubectl">
-
-    ```bash
-    kubectl get cluster pg-cluster-pitr
-    ```
-
-    </TabItem>
-
-    </Tabs>
diff --git a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/restore-data-from-backup-set.md b/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/restore-data-from-backup-set.md
deleted file mode 100644
index fcf9e332e..000000000
--- a/i18n/zh-cn/user-docs/maintenance/backup-and-restore/restore/restore-data-from-backup-set.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-title: 从备份集中恢复数据
-description: 如何从备份集中恢复数据
-keywords: [备份恢复, 恢复, 备份集]
-sidebar_position: 1
-sidebar_label: 从备份集中恢复数据
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 从备份集中恢复数据
-
-KubeBlocks 支持从备份集中恢复数据。
-
-1. 查看备份。
-
-    <Tabs>
-
-    <TabItem value="kbcli" label="kbcli" default>
-
-    对已有的集群，执行：
-
-    ```shell
-    kbcli cluster list-backups mysql-cluster
-    ```
-
-    如果集群已经被删除，执行：
-
-    ```bash
-    kbcli dataprotection list-backups
-    ```
-
-    </TabItem>
-
-    <TabItem value="kubectl" label="kubectl">
-
-    ```bash
-    kubectl get backups
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-2. 从特定的备份中恢复集群。
-
-    <Tabs>
-
-    <TabItem value="kbcli" label="kbcli" default>
-
-    ```bash
-    # 恢复集群
-    kbcli cluster restore myrestore --backup mybackup
-    >
-    Cluster myrestore created
-
-    # 查看被恢复集群的状态
-    kbcli cluster list myrestore
-    NAME        NAMESPACE   CLUSTER-DEFINITION   VERSION           TERMINATION-POLICY   STATUS    CREATED-TIME
-    myrestore   default     apecloud-mysql       ac-mysql-8.0.30   Delete               Running   Oct 30,2023 16:26 UTC+0800
-    ```
-
-    </TabItem>
-
-    <TabItem value="kubectl" label="kubectl">
-
-    可使用原集群的 connection password 作为恢复的集群的 `connectionPassword.annotations` 值。可从备份 YAML 文件中的 `dataprotection.kubeblocks.io/connection-password` annotation 中获取原集群的 connection password。
-
-    ```bash
-    kubectl apply -f - <<-'EOF'
-    apiVersion: apps.kubeblocks.io/v1
-    kind: Cluster
-    metadata:
-      name: myrestore
-      namespace: default
-      annotations:
-        kubeblocks.io/restore-from-backup: '{"mysql":{"name":"mybackup","namespace":"default","connectionPassword": "Bw1cR15mzfldc9hzGuK4m1BZQOzha6aBb1i9nlvoBdoE9to4"}}'
-    spec:
-      clusterDefinitionRef: apecloud-mysql
-      clusterVersionRef: ac-mysql-8.0.30
-      terminationPolicy: WipeOut
-      componentSpecs:
-        - name: mysql
-          componentDefRef: mysql
-          replicas: 1
-          volumeClaimTemplates:
-            - name: data
-              spec:
-                accessModes:
-                  - ReadWriteOnce
-                resources:
-                  requests:
-                    storage: 20Gi
-    EOF
-    ```
-
-    </TabItem>
-
-    </Tabs>
-
-3. 连接被恢复集群，进行验证。
-
-    当集群状态为 `Running` 后，[连接集群](./../../../kubeblocks-for-apecloud-mysql/cluster-management/create-and-connect-a-mysql-cluster.md#连接集群)进行验证。
diff --git a/i18n/zh-cn/user-docs/maintenance/cross-k8s-deployment/_category_.yaml b/i18n/zh-cn/user-docs/maintenance/cross-k8s-deployment/_category_.yaml
deleted file mode 100644
index 58d2c4722..000000000
--- a/i18n/zh-cn/user-docs/maintenance/cross-k8s-deployment/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 5
-label: 多 K8s 部署
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/maintenance/cross-k8s-deployment/cross-k8s-deployment.md b/i18n/zh-cn/user-docs/maintenance/cross-k8s-deployment/cross-k8s-deployment.md
deleted file mode 100644
index 10a79c5df..000000000
--- a/i18n/zh-cn/user-docs/maintenance/cross-k8s-deployment/cross-k8s-deployment.md
+++ /dev/null
@@ -1,354 +0,0 @@
----
-title: 多 K8s 部署
-description: 如何使用 KubeBlocks 实现多 K8s 部署
-keywords: [cross k8s deployment]
-sidebar_position: 1
-sidebar_label: 使用 KubeBlocks 实现多 K8s 部署
----
-
-# 使用 KubeBlocks 实现多 K8s 部署
-
-KubeBlocks 支持管理多个 Kubernetes 集群，为用户在实例容灾、K8s 集群管理等方面提供新的选项。为支持多 K8s 管理，KubeBlocks 引入了控制面（control plane ）和数据面（data plane）。
-
-* 控制面：一个独立的 K8s 集群，KubeBlocks operator 运行在该集群当中，KubeBlocks 定义的相关对象大都存放在这个集群（比如 Definition、Cluster、Backup、Ops 等）。用户通过跟这个集群的 API 进行交互来实现对多集群实例的管理。
-* 数据面：用于运行最终工作负载的 K8s 集群，数量可以是一到多个。这些集群当中会 hosting 实例相关的计算、存储、网络等资源，如 Pod、PVC、Service、SA、CM、Secret、Jobs 等，而 KubeBlocks operator 目前（v0.9.0）不会在这些集群中运行。
-
-实际物理部署上，控制面可以选择部署在单个 AZ，简单灵活；也可以选择部署在多个不同 AZ，提供更高的可用性保证；也可以复用某个数据面集群，以更低成本的方式运行。
-
-## 环境准备
-
-准备 K8s 集群，并准备部署 KubeBlocks 所需的配置信息。本文示例准备了三个数据面集群，context 分别命名为：`k8s-1`、`k8s-2`、`k8s-3`。
-
-* 准备 K8s 集群：1 个设定为控制面，其他几个设定为数据面，确保这些数据面集群的 API server 在控制面集群中可以联通。这里的联通包含两个层面：一是网络连通，二是访问配置。
-* 准备 KubeBlocks 访问数据面所需的配置信息，以 secret 形式放置在控制面集群当中，部署 KubeBlocks 时需要传入。其中，secret key 要求为 “kubeconfig”，value 为标准 kubeconfig 内容格式。示例如下：
-
-   ```yaml
-   apiVersion: v1
-   kind: Secret
-   metadata:
-     namespace: kb-system
-     name: <your-secret-name> 
-   type: kubernetes.kubeconfig
-   stringData:
-     kubeconfig: |
-       apiVersion: v1
-       clusters:
-         ...
-       contexts:
-         ...
-       kind: Config
-       users:
-         ...
-   ```
-
-## 部署多 K8s 集群
-
-### 部署 Kubeblocks
-
-在控制面安装 KubeBlocks。
-
-1. 安装 KubeBlocks。
-
-   ```bash
-   # multiCluster.kubeConfig 指定存放数据面 k8s kubeconfig 信息的 secret
-   # multiCluster.contexts 指定数据面 K8s contexts
-   kbcli kubeblocks install --version=0.9.0 --set multiCluster.kubeConfig=<secret-name> --set multiCluster.contexts=<contexts>
-   ```
-
-2. 查看安装状态，确保 KubeBlocks 安装完成。
-
-   ```bash
-   kbcli kubeblocks status
-   >
-   KubeBlocks is deployed in namespace: kb-system,version: 0.9.0
-
-   KubeBlocks Workloads:
-   NAMESPACE   KIND          NAME                                    READY PODS   CPU(CORES)   MEMORY(BYTES)   CREATED-AT
-   kb-system   Deployment    kb-addon-snapshot-controller            1/1          N/A          N/A             Oct 25,2024 15:18 UTC+0800
-   kb-system   Deployment    kubeblocks                              1/1          N/A          N/A             Oct 25,2024 15:18 UTC+0800
-   kb-system   Deployment    kubeblocks-dataprotection               1/1          N/A          N/A             Oct 25,2024 15:18 UTC+0800
-   ```
-
-### RBAC
-
-实例工作负载在数据面中运行时，需要特定的 RBAC 资源进行管理动作，因此需要预先在各数据面集群单独安装 KubeBlocks 所需的 RBAC 资源。
-
-```bash
-# 1. 从控制面 dump 所需的 clusterrole 资源：kubeblocks-cluster-pod-role
-kubectl get clusterrole kubeblocks-cluster-pod-role -o yaml > /tmp/kubeblocks-cluster-pod-role.yaml
-
-# 2. 编辑文件内容，去除不必要的 meta 信息（比如 UID、resource version），保留其他内容
-
-# 3. 将文件内容应用到其他数据面集群
-kubectl apply -f /tmp/kubeblocks-cluster-pod-role.yaml --context=k8s-1
-kubectl apply -f /tmp/kubeblocks-cluster-pod-role.yaml --context=k8s-2
-kubectl apply -f /tmp/kubeblocks-cluster-pod-role.yaml --context=k8s-3
-```
-
-### 网络
-
-KubeBlocks 基于 K8s service 抽象来提供内外部的服务访问。对于 service 的抽象，集群内的访问 K8s 一般会有默认的实现，对于来自集群外的流量通常需要用户自己提供方案。而在多 K8s 形态下，无论是实例间的复制流量、还是客户端的访问流量，基本都属于“集群外流量”。因此为了让跨集群实例能够正常工作，网络部分一般需要进行一些额外的处理。
-
-这里会以一组可选的方案为例，用来完整描述整个流程。实际使用中，用户可以根据自身集群和网络环境，选择适合的方案进行部署。
-
-#### 东西向流量
-
-##### 云上方案
-
-云厂商提供的 K8s 服务一般都提供了内/外网 load balancer service 可供使用，这样可以直接基于 LB service 来构建副本之间的互访，简单易用。
-
-##### 自建方案
-
-东西向互访的自建方案以 Cilium Cluster Mesh 为例来进行说明，Cilium 的部署选择 overlay 模式，各数据面集群配置如下：
-
-| 集群     | Context | 名称  | ID | CIDR        |
-|:-------:|:-------:|:-----:|:--:|:-----------:|
-| 1       | k8s-1   | k8s-1 | 1  | 10.1.0.0/16 |
-| 2       | k8s-2   | k8s-2 | 2  | 10.2.0.0/16 |
-| 3       | k8s-3   | k8s-3 | 3  | 10.3.0.0/16 |
-
-:::note
-
-这里的 CIDR 是 Cilium Overlay 网络的地址，具体设置时要跟主机网络地址段区分开。
-
-:::
-
-***步骤：***
-
-下述操作步骤相关命令，可以在各个集群分别执行（不需要指定 `--context` 参数），也可以在有三个 context 信息的环境里统一执行（分别指定 `--context` 参数）。
-
-1. 安装 Cilium，指定集群 ID/名称和 Pool Pod CIDR。可参考官方文档：[指定集群名称和 ID](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#specify-the-cluster-name-and-id)。
-
-   ```bash
-   cilium install --set cluster.name=k8s-1 --set cluster.id=1 --set ipam.operator.clusterPoolIPv4PodCIDRList=10.1.0.0/16 —context k8s-1
-   cilium install --set cluster.name=k8s-2 --set cluster.id=2 --set ipam.operator.clusterPoolIPv4PodCIDRList=10.2.0.0/16 —context k8s-2
-   cilium install --set cluster.name=k8s-3 --set cluster.id=3 --set ipam.operator.clusterPoolIPv4PodCIDRList=10.3.0.0/16 —context k8s-3
-   ```
-
-2. 开启 Cilium Cluster Mesh，并等待其状态为 `ready`。这里以 NodePort 方式提供对 Cluster Mesh 控制面的访问，其他可选方式及具体信息请参考官方文档：[启用 Cluster Mesh](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#enable-cluster-mesh)。
-
-   ```bash
-   cilium clustermesh enable --service-type NodePort —context k8s-1
-   cilium clustermesh enable --service-type NodePort —context k8s-2
-   cilium clustermesh enable --service-type NodePort —context k8s-3
-   cilium clustermesh status —wait —context k8s-1
-   cilium clustermesh status —wait —context k8s-2
-   cilium clustermesh status —wait —context k8s-3
-   ```
-
-3. 打通各集群，并等待集群状态为 `ready`。具体可参考官方文档：[连接集群](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#connect-clusters)。
-
-   ```bash
-   cilium clustermesh connect --context k8s-1 --destination-context k8s-2
-   cilium clustermesh connect --context k8s-1 --destination-context k8s-3
-   cilium clustermesh connect --context k8s-2 --destination-context k8s-3
-   cilium clustermesh status —wait —context k8s-1
-   cilium clustermesh status —wait —context k8s-2
-   cilium clustermesh status —wait —context k8s-3
-   ```
-
-4. （可选）可以通过 cilium-dbg 工具检查跨集群的 tunnel 情况。具体可参考官方文档：[cilium dbg](https://docs.cilium.io/en/stable/cmdref/cilium-dbg/)。
-
-   ```bash
-   cilium-dbg bpf tunnel list
-   ```
-
-5. （可选）集群连通性测试，可参考官方文档：[测试集群间 Pod 连通性](https://docs.cilium.io/en/stable/network/clustermesh/clustermesh/#test-pod-connectivity-between-clusters)。
-
-#### 南北向流量
-
-南北向流量为客户端提供服务，需要每个数据面的 Pod 都有对外的连接地址，这个地址的实现可以是 NodePort、LoadBalancer 或者其他方案，我们以 NodePort 和 LoadBalancer 为例介绍。
-
-如果客户端不具备读写路由能力，那在 Pod 地址之上，还需要提供读写分离地址，实现上可以用七层的 Proxy，四层的 SDN VIP，或者纯粹的 DNS。为了简化问题，此处先假设客户端具备读写路由能力，可以直接配置所有 Pod 连接地址。
-
-##### NodePort
-
-为每个数据面集群的 Pod 创建 NodePort Service，客户端使用用主机网络 IP 和 NodePort 即可连接。
-
-##### LoadBalancer
-
-此处以 MetalLB 提供 LoadBalancer Service 为例。
-
-1. 准备数据面的 LB 网段，该网段需要跟客户端路由可达，并且不同 K8s 集群要错开。
-
-   | 集群    | Context | 名称  | ID | CIDR        |
-   |:-------:|:-------:|:-----:|:--:|:-----------:|
-   | 1       | k8s-1   | k8s-1 | 1  | 10.4.0.0/16 |
-   | 2       | k8s-2   | k8s-2 | 2  | 10.5.0.0/16 |
-   | 3       | k8s-3   | k8s-3 | 3  | 10.6.0.0/16 |
-
-2. 在所有数据面部署 MetalLB。
-
-   ```bash
-   helm repo add metallb https://metallb.github.io/metallb
-   helm install metallb metallb/metallb
-   ```
-
-3. 等待相关 Pod 状态变为 `ready`。
-
-   ```bash
-   kubectl wait --namespace metallb-system --for=condition=ready pod --selector=app=metallb --timeout=90s
-   ```
-
-4. 在三个 K8s 集群执行以下 YAML 文件，请注意替换 `spec.addresses` 为对应 K8s 集群的 LB 网段。
-
-   ```yaml
-   apiVersion: metallb.io/v1beta1
-   kind: IPAddressPool
-   metadata:
-     name: example
-     namespace: metallb-system
-   spec:
-     addresses:
-     - x.x.x.x/x
-   ---
-   apiVersion: metallb.io/v1beta1
-   kind: L2Advertisement
-   metadata:
-     name: empty
-     namespace: metallb-system
-   ```
-
-5. 为每个数据面集群的 Pod 创建 LoadBalancer Service，拿到所有 VIP，即可供客户端连接。
-
-## 验证
-
-多集群实例的运行，各个副本之间的访问地址不能直接简单使用原 domain 内的地址（比如 Pod FQDN），需要显式的创建并配置使用跨集群的服务地址来进行通信，因此需要对引擎进行适配。
-
-这里以社区版 etcd 为例来进行演示，相关适配的结果可以参考 [etcd 引擎](https://github.com/apecloud/kubeblocks-addons/blob/release-0.9/addons/etcd/templates/componentdefinition.yaml)。
-
-### 创建实例
-
-由于不同网络要求的配置不同，这里分别以云上和自建两种方式为例说明如果创建一个三副本的跨集群 etcd 实例。
-
-#### 云上方案
-
-这里以阿里云为例，其他厂商的配置可以参考官方文档。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  namespace: default
-  generateName: etcd
-  annotations:
-    # 可选：可以用该 annotation 显式指定当前实例要求分布的集群
-    apps.kubeblocks.io/multi-cluster-placement: "k8s-1,k8s-2,k8s-3"
-spec:
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - componentDef: etcd-0.9.0
-      name: etcd
-      replicas: 3
-      resources:
-        limits:
-          cpu: 100m
-          memory: 100M
-        requests:
-          cpu: 100m
-          memory: 100M
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi # 云上 provisioning 要求的最小 size
-        - name: peer
-          serviceType: LoadBalancer
-          annotations:
-            # 如果运行在基于 LoadBalancer service 提供的互访方案上，这个 annotation key 为必填项
-            apps.kubeblocks.io/multi-cluster-service-placement: unique
-            # ACK LoadBalancer service 要求的 annotation key
-            service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: intranet
-          podService: true
-```
-
-如下示例展示了如何跨云厂商部署。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  namespace: default
-  generateName: etcd
-  annotations:
-    # 可选：可以用该 annotation 显式指定当前实例要求分布的集群
-    apps.kubeblocks.io/multi-cluster-placement: "k8s-1,k8s-2,k8s-3"
-spec:
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - componentDef: etcd-0.9.0
-      name: etcd
-      replicas: 3
-      resources:
-        limits:
-          cpu: 100m
-          memory: 100M
-        requests:
-          cpu: 100m
-          memory: 100M
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi # 云上 provisioning 要求的最小 size
-      services:
-        - name: peer
-          serviceType: LoadBalancer
-          annotations:
-            # 如果运行在基于 LoadBalancer service 提供的互访方案上，这个 annotation key 为必填项
-            apps.kubeblocks.io/multi-cluster-service-placement: unique
-            # ACK LoadBalancer service 要求的 annotation key。因为要跨云访问，因此需要配置为公网类型
-            service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: internet
-            # VKE LoadBalancer service 要求的 annotation keys。因为要跨云访问，因此需要配置为公网类型
-            service.beta.kubernetes.io/volcengine-loadbalancer-subnet-id: <subnet-id>
-            service.beta.kubernetes.io/volcengine-loadbalancer-address-type: "PUBLIC"
-          podService: true
-```
-
-#### 自建方案
-
-该示例展示了如何在自建环境创建实例。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  namespace: default
-  generateName: etcd
-  annotations:
-    # 可选：可以用该 annotation 显式指定当前实例要求分布的集群
-    apps.kubeblocks.io/multi-cluster-placement: "k8s-1,k8s-2,k8s-3"
-spec:
-  terminationPolicy: WipeOut
-  componentSpecs:
-    - componentDef: etcd-0.9.0
-      name: etcd
-      replicas: 3
-      resources:
-        limits:
-          cpu: 100m
-          memory: 100M
-        requests:
-          cpu: 100m
-          memory: 100M
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 1Gi
-      services:
-        - name: peer
-          serviceType: ClusterIP
-          annotations:
-            service.cilium.io/global: "true" # cilium clustermesh global service
-          podService: true
-```
diff --git a/i18n/zh-cn/user-docs/maintenance/in-place-update/_category_.yaml b/i18n/zh-cn/user-docs/maintenance/in-place-update/_category_.yaml
deleted file mode 100644
index fe179cec8..000000000
--- a/i18n/zh-cn/user-docs/maintenance/in-place-update/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 3
-label: 原地更新
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/maintenance/in-place-update/ignore-vertical-scale.md b/i18n/zh-cn/user-docs/maintenance/in-place-update/ignore-vertical-scale.md
deleted file mode 100644
index 76586b1fe..000000000
--- a/i18n/zh-cn/user-docs/maintenance/in-place-update/ignore-vertical-scale.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: 启用原地更新
-description: 如何启用原地更新
-keywords: [原地更新]
-sidebar_position: 2
-sidebar_label: 启用原地更新
----
-
-# 启用原地更新
-
-Resources 的原地更新一直以来有比较强的需求，在低于 1.27 版本的 Kubernetes 中，我们可以看到很多 Kubernetes 的发行版中支持了 Resources 的原地更新能力，不同的发行版可能采用了不同的方案去实现这一特性。
-
-为了兼容这些 Kubernetes 发行版，KubeBlocks 中增加了 `IgnorePodVerticalScaling` 特性开关。当该特性打开后，KubeBlocks 在做实例更新时，会忽略 Resources 中 CPU 和 Memory 的更新，从而使得最终渲染的 Pod 的 Resources 跟当前在运行 Pod 的 Resources 配置保持一致。
diff --git a/i18n/zh-cn/user-docs/maintenance/in-place-update/overview.md b/i18n/zh-cn/user-docs/maintenance/in-place-update/overview.md
deleted file mode 100644
index ee22bee3a..000000000
--- a/i18n/zh-cn/user-docs/maintenance/in-place-update/overview.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-title: 概述
-description: 原地更新概述
-keywords: [原地更新, 概述]
-sidebar_position: 1
-sidebar_label: 概述
----
-
-# 概述
-
-早期的版本中，KubeBlocks 最终生成的 Workload 是 StatefulSet。StatefulSet 通过 PodTemplate 渲染最终的 Pod，当 PodTemplate 中有任何字段发生了改变，都会导致所有 Pod 被更新，而 StatefulSet 采用的更新方式是 `Recreate`，即首先删除现有的 Pod，然后再新建一个 Pod。对于数据库等对可用性要求很高的系统，这样的方式显然不是最佳选择。
-
-为了解决这个问题，KubeBlocks 从 v0.9 开始，新增实例原地更新特性，降低实例更新时对系统可用性的影响。
-
-## 实例（Instance）哪些字段支持原地更新
-
-从原理上来讲，KubeBlocks 实例原地更新复用了 [Kubernetes Pod API 原地更新能力](https://kubernetes.io/docs/concepts/workloads/pods/#pod-update-and-replacement)。所以具体支持的字段如下：
-
-* `annotations`
-* `labels`
-* `spec.activeDeadlineSeconds`
-* `spec.initContainers[*].image`
-* `spec.containers[*].image`
-* `spec.tolerations (only supports adding Toleration)`
-
-Kubernetes 从 1.27 版本开始，通过 `InPlacePodVerticalScaling` 特性开关可进一步开启对 CPU 和 Memory 的原地更新支持。KubeBlocks 同样增加了 `InPlacePodVerticalScaling` 特性开关，以便进一步支持如下能力：
-
-对于大于等于 1.27 且 InPlacePodVerticalScaling 已开启的 Kubernetes，支持如下字段的原地更新：
-
-* `spec.containers[*].resources.requests["cpu"]`
-* `spec.containers[*].resources.requests["memory"]`
-* `spec.containers[*].resources.limits["cpu"]`
-* `spec.containers[*].resources.limits["memory"]`
-
-需要注意的是，当 resource resize 成功后，有的应用可能需要重启才能感知到新的资源配置，此时需要在 ClusterDefinition 或 ComponentDefinition 中进一步配置 container `restartPolicy`。
-
-对于 PVC，KubeBlocks 同样复用 PVC API 的能力，仅支持 Volume 的扩容，当因为某些原因扩容失败时，支持缩容回原来的容量值。而 StatefulSet 中的 VolumeClaimTemplate 一经声明，便不能修改，目前官方正在[开发相关能力](https://github.com/kubernetes/enhancements/pull/4651)，但至少需要等到 K8s 1.32 版本了。
-
-## 从上层 API 视角，哪些字段更新后使用的是原地更新
-
-KubeBlocks 跟实例相关的上层 API 包括 Cluster、ClusterDefinition、ClusterVersion、ComponentDefinition 和 ComponentVersion。这些 API 中有若干字段最终会直接或间接用来渲染实例对象，从而可能会触发实例原地更新。
-
-这些字段非常多，这里对这些字段进行罗列和简单描述。
-
-:::note
-
-API 中标记为 deprecated 的字段不在列表内，immutable 的字段不在列表内。
-
-:::
-
-| API |   字段名称    |   描述  |
-|:-----|:-------|:-----------|
-|Cluster| `annotations`, <p>`labels`, </p><p>`spec.tolerations`, </p><p>`spec.componentSpecs[*].serviceVersion`, </p><p>`spec.componentSpecs[*].tolerations`, </p><p>`spec.componentSpecs[*].resources`, </p><p>`spec.componentSpecs[*].volumeClaimTemplates`, </p><p>`spec.componentSpecs[*].instances[*].annotations`, </p><p>`spec.componentSpecs[*].instances[*].labels`, </p><p>`spec.componentSpecs[*].instances[*].image`, </p><p>`spec.componentSpecs[*].instances[*].tolerations`, </p><p>`spec.componentSpecs[*].instances[*].resources`, </p><p>`spec.componentSpecs[*].instances[*].volumeClaimTemplates`, </p><p>`spec.shardingSpecs[*].template.serviceVersion`, </p><p>`spec.shardingSpecs[*].template.tolerations`, </p><p>`spec.shardingSpecs[*].template.resources`, </p><p>`spec.shardingSpecs[*].template.volumeClaimTemplates`</p> | Resources 相关字段都指的是：<p>`requests["cpu"]`,</p><p>`requests["memory"]`,</p><p>`limits["cpu"]`,</p>`limits["memory"]` |
-|   ComponentVersion  | `spec.releases[*].images`   | 是否会触发实例原地更新取决于最终匹配的 Image 是否有变化。           |
-| KubeBlocks Built-in |  `annotations`, `labels` |    |
diff --git a/i18n/zh-cn/user-docs/maintenance/instance-template/_category_.yml b/i18n/zh-cn/user-docs/maintenance/instance-template/_category_.yml
deleted file mode 100644
index f9bb125ec..000000000
--- a/i18n/zh-cn/user-docs/maintenance/instance-template/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 6
-label: 实例模板
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/maintenance/instance-template/how-to-use-instance-template.md b/i18n/zh-cn/user-docs/maintenance/instance-template/how-to-use-instance-template.md
deleted file mode 100644
index 5bbc7db29..000000000
--- a/i18n/zh-cn/user-docs/maintenance/instance-template/how-to-use-instance-template.md
+++ /dev/null
@@ -1,218 +0,0 @@
----
-title: 应用实例模板
-description: 应用实例模板
-keywords: [应用实例模板, 实例模板]
-sidebar_position: 2
-sidebar_label: 应用实例模板
----
-
-# 应用实例模板
-
-实例模板可用于多种场景。本章节以 RisingWave 为实例。
-
-KubeBlocks 中支持管理 RisingWave 集群，RisingWave 引擎由 RisingWave 官方贡献。RisingWave 需要一个外部存储来作为自己的存储后端（state backend），这个外部存储可以是 AWS S3、阿里云 OSS 等。RisingWave 集群在创建时需要配置外部存储的 Credential 等信息，以便能够正常工作，而这些信息对每个集群来说可能都不同。
-
-在 RisingWave 的官方镜像中，这些信息可以通过环境变量（Env）方式注入，所以在 KubeBlocks v0.9 中，我们可以通过在实例模板中配置相应的环境变量，在每次创建集群时设置这些环境变量的值，以便将 Credential 等信息注入到 RisingWave 的容器中。
-
-## 示例
-
-在 RisingWave 引擎的默认模板中，[环境变量相关配置](https://github.com/apecloud/kubeblocks-addons/blob/main/addons/risingwave/templates/cmpd-compute.yaml#L26)如下：
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: ComponentDefinition
-metadata:
-  name: risingwave
-# ...
-spec:
-#...
-  runtime:
-    containers:
-      - name: compute
-        securityContext:
-          allowPrivilegeEscalation: false
-          capabilities:
-            drop:
-            - ALL
-          privileged: false
-        command:
-        - /risingwave/bin/risingwave
-        - compute-node
-        env:
-        - name: RUST_BACKTRACE
-          value: "1"
-        - name: RW_CONFIG_PATH
-          value: /risingwave/config/risingwave.toml
-        - name: RW_LISTEN_ADDR
-          value: 0.0.0.0:5688
-        - name: RW_ADVERTISE_ADDR
-          value: $(KB_POD_FQDN):5688
-        - name: RW_META_ADDR
-          value: load-balance+http://$(metaSvc)-headless:5690
-        - name: RW_METRICS_LEVEL
-          value: "1"
-        - name: RW_CONNECTOR_RPC_ENDPOINT
-          value: $(connectorSvc):50051
-        - name: RW_PROMETHEUS_LISTENER_ADDR
-          value: 0.0.0.0:1222
-# ...
-```
-
-在 [Cluster 资源](https://github.com/apecloud/kubeblocks-addons/blob/main/addons-cluster/risingwave/templates/cluster.yaml)中添加实例模板后如下：
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: {{ include "risingwave-cluster.name" . }}
-  namespace: {{ .Release.Namespace }}
-# ...
-spec:
-  componentSpecs:
-  - componentDef: compute
-    name: compute
-    replicas: {{ .Values.risingwave.compute.replicas }}
-    instances:
-    - name: instance
-      replicas: {{ .Values.risingwave.compute.replicas }}
-      env:
-      - name: RW_STATE_STORE
-        value: "hummock+s3://{{ .Values.risingwave.stateStore.s3.bucket }}"
-      - name: AWS_REGION
-        value: "{{ .Values.risingwave.stateStore.s3.region }}"
-      {{- if eq .Values.risingwave.stateStore.s3.authentication.serviceAccountName "" }}
-      - name: AWS_ACCESS_KEY_ID
-        value: "{{ .Values.risingwave.stateStore.s3.authentication.accessKey }}"
-      - name: AWS_SECRET_ACCESS_KEY
-        value: "{{ .Values.risingwave.stateStore.s3.authentication.secretAccessKey }}"
-      {{- end }}
-      - name: RW_DATA_DIRECTORY
-        value: "{{ .Values.risingwave.stateStore.dataDirectory }}"
-      {{- if .Values.risingwave.stateStore.s3.endpoint }}
-      - name: RW_S3_ENDPOINT
-        value: "{{ .Values.risingwave.stateStore.s3.endpoint }}"
-      {{- end }}
-      {{- if .Values.risingwave.metaStore.etcd.authentication.enabled }}
-      - name: RW_ETCD_USERNAME
-        value: "{{ .Values.risingwave.metaStore.etcd.authentication.username }}"
-      - name: RW_ETCD_PASSWORD
-        value: "{{ .Values.risingwave.metaStore.etcd.authentication.password }}"
-      {{- end }}
-      - name: RW_ETCD_ENDPOINTS
-        value: "{{ .Values.risingwave.metaStore.etcd.endpoints }}"
-      - name: RW_ETCD_AUTH
-        value: "{{ .Values.risingwave.metaStore.etcd.authentication.enabled}}"
-# ...
-```
-
-在上面的例子中，我们通过 `instances` 字段新增了一个实例模板，该实例模板的名字为 `instance`。模板中定义了 `RW_STATE_STORE`、`AWS_REGION` 等若干环境变量，这些环境变量会被 KubeBlocks append 到默认模板中定义的环境变量列表后面，最终渲染的实例中将包含默认模板和在该实例模板中定义的所有环境变量。
-
-另外，实例模板中 `replicas` 与 `componentSpec` 中相同（都为 `{{ .Values.risingwave.compute.replicas }}`），意味着在覆盖默认模板后，该实例模板将用来渲染该 Component 中的所有实例。
-
-## 实例模板详细说明
-
-- `Name` 字段：每个 Component 中可以定义多个实例模板。每个模板都需要通过 `Name` 字段设置模板名称，同一个 Component 中的实例模板名字必须保持唯一。
-- `Replica` 字段：每个模板可以通过 `Replicas` 字段设置基于该模板渲染的实例数量，Replicas 默认为 1。同一个 Component 中的所有实例模板的 `Replicas` 相加后必须小于或等于 Component 的 `Replicas` 值。若基于实例模板渲染的实例数量小于 Component 需要的总的实例数量，剩余的实例将使用默认模板进行渲染。
-
-基于实例模板渲染的实例名称的模式（Pattern）为 `$(cluster name)-$(component name)-$(instance template name)-ordinal`。比如在上文 RisingWave 示例中， Cluster 名字为 `risingwave`，Component 名字为 `compute`，实例模板名称为 `instance`，实例数量 `Replicas` 为 3。那么最终渲染出的实例名称为：`risingwave-compute-instance-0`,`risingwave-compute-instance-1`,`risingwave-compute-instance-2`。
-
-实例模板在集群创建阶段可以使用，并可以在后续运维中对实例模板进行更新，具体包括添加实例模板、删除实例模板或更新实例模板。实例模板更新可能会引起实例的更新、删除或重建，在更新前建议仔细分析最终的变化是否符合预期。
-
-### Annotations
-
-实例模板中的 `annotations` 用于覆盖默认模板中的 `annotations` 字段，若实例模板 `annotations` 中的某个 Key 在默认模板中已存在，该 Key 对应的值（Value）将使用实例模板中的值；若该 Key 在默认模板中不存在，该 Key 和 Value 将被添加到最终的 `annotations` 中。
-
-***示例***
-
-默认模板中 `annotations` 为：
-
-```yaml
-annotations:
-  "foo0": "bar0"
-  "foo1": "bar"
-```
-
-实例模板中 `annotations` 为：
-
-```yaml
-annotations:
-  "foo1": "bar1"
-  "foo2": "bar2"
-```
-
-则最终被渲染出的实例的 `annotations` 为：
-
-```yaml
-annotations:
-  "foo0": "bar0"
-  "foo1": "bar1"
-  "foo2": "bar2"
-```
-
-:::note
-
-KubeBlocks 会添加一些系统 `annotations`，需要避免对这些 `annotations` 造成覆盖。
-
-:::
-
-### Labels
-
-您也可以通过实例模板设置 `Labels`。
-
-与 `Annotations` 类似，实例模板中的 `Labels` 采用相同的覆盖逻辑应用到已有的 `Labels` 上，并形成最终的 `Labels`。
-
-:::note
-
-KubeBlocks 添加了系统 `Labels`，请勿覆盖这些 `Labels`。
-
-:::
-
-### Image
-
-实例模板中的 `Image` 用于覆盖默认模板中第一个 Container 的 `Image` 字段。
-
-:::warning
-
-该字段需慎用：在数据库等有状态应用中，`Image` 改变通常涉及数据格式等的兼容性，使用该字段时请确认实例模板的镜像版本与默认模板中的完全兼容。
-
-:::
-
-同时 KubeBlocks 从 v0.9 开始，通过 `ComponentVersion` 对镜像版本进行了详细设计，建议通过 `ComponentVersion` 进行版本管理。
-
-### NodeName
-
-该字段用于覆盖默认模板中的 `NodeName` 字段。
-
-### NodeSelector
-
-该字段用于覆盖默认模板中的 `NodeSelector` 字段，覆盖逻辑与 `Annotations` 和 `Labels` 相同。
-
-### Tolerations
-
-该字段用于覆盖默认模板中的 `Tolerations` 字段。
-
-若实例模板中的 `Toleration` 与默认模板中的某个 `Toleration` 完全相同（`Key`、`Operator`、`Value`、`Effect` 和 `TolerationSeconds` 都相同），则该 `Toleration` 会被忽略；否则，追加到默认模板中的 `Tolerations` 列表中。
-
-### RuntimeClassName
-
-该字段用于覆盖默认模板中的 `RuntimeClassName` 字段。
-
-### Resources
-
-在实例模板中可以进一步覆盖 `Resources` 的值，其优先级高于 `Component`。
-
-### Env
-
-实例模板中定义的 `Env` 将覆盖除 KubeBlocks 系统默认 `Env` 外的其他 `Env`。覆盖逻辑与 `Annotations` 和 `Labels` 类似，即若 `Env Name` 相同，则用实例模板中的 `Value` 或 `ValueFrom`；不同，则添加为新的 `Env`。
-
-### Volumes
-
-用于覆盖默认模板第一个 Container 的 `Volumes` 字段。覆盖逻辑与 `Env` 类似，即若 `Volume Name` 相同，则用实例模板中的 `VolumeSource`；否则，添加为新的 `Volume`。
-
-### VolumeMounts
-
-用于覆盖默认模板第一个 Container 的 `VolumeMounts` 字段。覆盖逻辑与 `Volumes` 类似，即若 VolumeMount `Name` 相同，则用实例模板中的 `MountPath` 等值；否则，添加为新的 `VolumeMount`。
-
-### VolumeClaimTemplates
-
-用于覆盖 Component 中通过 `ClusterComponentVolumeClaimTemplate` 生成的 `VolumeClaimTemplates`。覆盖逻辑与 Volumes 类似，即若 `PersistentVolumeClaim Name` 相同，则用实例模板中的 `PersistentVolumeClaimSpec` 值；否则，添加为新的 `PersistentVolumeClaim`。
diff --git a/i18n/zh-cn/user-docs/maintenance/instance-template/introduction.md b/i18n/zh-cn/user-docs/maintenance/instance-template/introduction.md
deleted file mode 100644
index 0e4a37292..000000000
--- a/i18n/zh-cn/user-docs/maintenance/instance-template/introduction.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: 简介
-description: 实例模板简介
-keywords: [实例模板]
-sidebar_position: 1
-sidebar_label: 简介
----
-
-# 简介
-
-## 什么是实例模板
-
-***实例（Instance）***是 KubeBlocks 中的基本单元，它由一个 Pod 和若干其它辅助对象组成。为了容易理解，你可以先把它简化为一个 Pod，下文中将统一使用“实例”这个名字。
-
-从 0.9 开始，我们可以为一个 Cluster 中的某个 Component 设置若干实例模板（Instance Template），实例模板中包含 Name、Replicas、Annotations、Labels、Env、Tolerations、NodeSelector 等多个字段（Field），这些字段最终会覆盖（Override）默认模板（也就是在 ClusterDefinition 和 ComponentDefinition 中定义的 PodTemplate）中相应的字段，并生成最终的模板以便用来渲染实例。
-
-## 为什么采用实例模板
-
-在 KubeBlocks 中，一个 *Cluster* 由若干个 *Component* 组成，一个 *Component* 最终管理若干 *Pod* 和其它对象。
-
-在 0.9 版本之前，这些 Pod 是从同一个 PodTemplate 渲染出来的（该 PodTemplate 在 ClusterDefinition 或 ComponentDefinition 中定义）。这样的设计不能满足如下需求：
-
- - 对于从同一个引擎中渲染出来的 Cluster，为其设置单独的 *NodeName*、*NodeSelector* 或 *Tolerations* 等调度相关配置。
- - 对于从同一个引擎中渲染出来的 Component，为它所管理的 Pod 添加自定义 *Annotation*、*Label* 或 *ENV*
- - 对于被同一个 Component 管理的 Pod，为它们配置不同的 *CPU*、*Memory* 等 *Resources Requests* 和 *Limits*
-
-类似的需求还有很多，所以从 0.9 版本开始，Cluster API 中增加了实例模板特性，以满足上述需求。
diff --git a/i18n/zh-cn/user-docs/maintenance/resource-scheduling/_category_.yml b/i18n/zh-cn/user-docs/maintenance/resource-scheduling/_category_.yml
deleted file mode 100644
index 2c168d85f..000000000
--- a/i18n/zh-cn/user-docs/maintenance/resource-scheduling/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 8
-label: 资源调度
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/maintenance/resource-scheduling/resource-scheduling.md b/i18n/zh-cn/user-docs/maintenance/resource-scheduling/resource-scheduling.md
deleted file mode 100644
index 0d6a086d5..000000000
--- a/i18n/zh-cn/user-docs/maintenance/resource-scheduling/resource-scheduling.md
+++ /dev/null
@@ -1,281 +0,0 @@
----
-title: 为集群配置 Pod 亲和性
-description: 如何为集群配置 Pod 亲和性
-keywords: [pod 亲和性]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 为集群配置 Pod 亲和性
-
-亲和性控制了 Pod 在节点上的分配逻辑。合理地将 Kubernetes 的 Pod 分配到不同的节点上，可以提高业务的可用性、资源使用率和稳定性。
-
-可以通过 `kbcli` 件来设置亲和性和容忍度。`kbcli` 仅支持集群级别的配置，如需实现集群级别和组件级别的配置，可通过 CR YAML 文件配置。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-执行 `kbcli cluster create -h` 命令查看示例，并配置亲和性及容忍度的参数。
-
-```bash
-kbcli cluster create -h
->
-Create a cluster
-
-Examples:
-  ...
-  
-  # 创建一个强制分散在节点上的集群
-  kbcli cluster create --cluster-definition apecloud-mysql --topology-keys kubernetes.io/hostname --pod-anti-affinity
-Required
-  
-  # 在特定标签的节点上创建一个集群
-  kbcli cluster create --cluster-definition apecloud-mysql --node-labels
-'"topology.kubernetes.io/zone=us-east-1a","disktype=ssd,essd"'
-  
-  # 创建一个具有两个容忍度的集群
-  kbcli cluster create --cluster-definition apecloud-mysql --tolerations
-'"key=engineType,value=mongo,operator=Equal,effect=NoSchedule","key=diskType,value=ssd,operator=Equal,effect=NoSchedule"'
-  
-  # 创建一个集群，其中每个 Pod 在自己的专用节点上运行
-  kbcli cluster create --tenancy=DedicatedNode
-
-Options:
-    ...
-    --node-labels=[]:
-        Node label selector
-
-    --pod-anti-affinity='Preferred':
-        Pod anti-affinity type, one of: (Preferred, Required)
-        
-    --tenancy='SharedNode':
-        Tenancy options, one of: (SharedNode, DedicatedNode)
-
-    --tolerations=[]:
-        Tolerations for cluster, such as '"key=engineType,value=mongo,operator=Equal,effect=NoSchedule"'
-
-    --topology-keys=[]:
-        Topology keys for affinity
-...
-```
-
-</TabItem>
-
-<TabItem value="Edit YAML file" label="Edit YAML file">
-
-你可以在集群配置文件或组件配置文件中配置 Pod 亲和性和容忍度。
-
-集群级配置是所有组件的默认配置；如果组件中存在 Pod 亲和性配置，组件级配置将生效，并覆盖默认的集群级配置。
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-    nodeLabels:
-      topology.kubernetes.io/zone: us-east-1a
-  tolerations:
-  - key: EngineType
-    operator: Equal
-    value: mysql
-    effect: NoSchedule
-  componentSpecs:
-  - name: mysql
-    componentDefRef: mysql
-    affinity:
-      podAntiAffinity: Required
-      topologyKeys:
-        - kubernetes.io/hostname
-...
-```
-
-**YAML 文件中的参数**
-
-* 亲和性
-  
-   与 Pod 亲和性相关的参数位于集群的 CR YAML 文件的 `spec.affinity` 对象下。
-
-   Pod 亲和性配置可以应用于集群或组件，组件级配置将覆盖集群级配置。
-
-* 容忍度
-  
-   与容忍度相关的参数位于集群 CR YAML 文件的 `spec.tolerations` 对象下，使用 Kubernetes 的原生语义。有关容忍度参数配置，请参考 Kubernetes 官方文档[污点和容忍度](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/)。
-
-   与亲和性配置类似，容忍度也支持组件级和集群级配置。默认使用集群级配置，组件级别的配置会覆盖集群级别的配置。
-
-| **参数**         | **值**                                       | **描述**  |
-| :--             | :--                                          | :--              |
-| podAntiAffinity | - Required <br/> - Preferred (default)      | <p>表示当前组件下 Pod 的反亲和性级别。</p><p> - Required 表示 Pod 必须均匀分布在由 `topologyKeys` 指定的故障域中。</p><p>- Preferred 表示 Pod 最好能够均匀分布在由 `topologyKeys` 指定的故障域中。</p> |
-| topologyKeys    |                                              | <p>TopologyKey 是节点标签的 key。具有相同 key 值的节点属于相同的拓扑，即相同的故障域。</p><p>例如，如果 TopologyKey 是 `kubernetes.io/hostname`，每个节点都是该拓扑的一个域。如果 TopologyKey 是 `topology.kubernetes.io/zone`，每个可用的区域都是该拓扑的一个域。</p> |
-| nodeLabels      |                                              | NodeLabels 指定 Pod 只能被调度到具有指定节点标签的节点上。 |
-| tenancy         | <p>- SharedNode (default)</p><p>- DedicatedNode</p> | <p>表示 Pod 的租户类型：</p><p> - SharedNode 表示多个 Pod 共享一个节点。</p><p>- DedicatedNode 表示一个节点专用于一个 Pod。</p> |
-
-</TabItem>
-
-</Tabs>
-
-## 示例
-
-以下示例展示了如何进行 Pod 亲和性和容忍度配置。
-
-### 默认配置
-
-无需使用亲和性参数。
-
-### 尽量打散
-
-如果你希望集群的 Pod 部署在不同的拓扑域，但是不希望在节点资源充足的时候，因为不满足分布条件而部署失败，那么可以配置尽量打散，可以将 Pod 亲和性配置为 “Preferred”。
-
-下面的示例创建了一个尽可能跨节点的集群。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create --topology-keys kubernetes.io/hostname --pod-anti-affinity Preferred
-```
-
-</TabItem>
-
-<TabItem value="Edit YAML file" label="Edit YAML file">
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-```
-
-</TabItem>
-
-</Tabs>
-
-### 强制打散
-
-如果集群的 Pod 必须部署在不同的拓扑域，以确保集群能够跨拓扑域具备容灾能力，你可以将 Pod 亲和性配置为 “Required”。
-
-下面的示例创建了一个必须跨节点部署的集群。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create --topology-keys kubernetes.io/hostname --pod-anti-affinity Required
-```
-
-</TabItem>
-
-<TabItem value="Edit YAML file" label="Edit YAML file">
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Required
-```
-
-</TabItem>
-
-</Tabs>
-
-### 在指定节点上部署
-
-可以通过节点标签在指定的节点上部署集群。
-
-下面的示例创建了一个在带有拓扑标签 `topology.kubernetes.io/zone=us-east-1a` 的节点上部署的集群。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create --node-labels '"topology.kubernetes.io/zone=us-east-1a"'
-```
-
-</TabItem>
-
-<TabItem value="Edit YAML file" label="Edit YAML file">
-
-```yaml
-spec:
-  affinity:
-    nodeLabels:
-      topology.kubernetes.io/zone: us-east-1a
-```
-
-</TabItem>
-
-</Tabs>
-
-### 独享主机组
-
-如果想通过污点和节点标签来管理节点分组，并且需要将集群部署在独享的主机分组中，可以设置容忍度并指定一个节点标签。
-
-例如，如果有一个用于部署数据库集群的主机分组，并且该主机添加了一个名为 `database=true:NoSchedule` 的污点和一个名为 `database=true` 的标签，那么可以按照以下命令创建一个集群。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create --node-labels '"databa=true"' --tolerations '"key=database,value=true,operator=Equal,effect=NoSchedule"
-```
-
-</TabItem>
-
-<TabItem value="Edit YAML file" label="Edit YAML file">
-
-```yaml
-spec:
-  affinity:
-    podAntiAffinity: Preferred
-    topologyKeys:
-    - kubernetes.io/hostname
-    nodeLabels:
-      database: true
-  tolerations:
-  - key: database
-    operator: Equal
-    value: true
-    effect: NoSchedule
-```
-
-</TabItem>
-
-</Tabs>
-
-### 集群 Pod 独占一个节点
-
-如果需要一个仅用于线上核心业务的集群，并且需要确保该集群的每个 Pod 都有自己的节点以避免受到集群中其他 Pod 的影响，你可以将 `tenancy` 设置为 “DedicatedNode”。
-
-<Tabs>
-
-<TabItem value="kbcli" label="kbcli" default>
-
-```bash
-kbcli cluster create --tenancy=DedicatedNode
-```
-
-</TabItem>
-
-<TabItem value="Edit YAML file" label="Edit YAML file">
-
-```yaml
-spec:
-  affinity:
-    tenancy: DedicatedNode
-```
-
-</TabItem>
-
-</Tabs>
-
-:::note
-
-只有为这些节点添加污点之后，命令才能成功执行。否则，未由 KubeBlocks 托管的业务仍然可以部署在这些节点上。
-
-:::
diff --git a/i18n/zh-cn/user-docs/maintenance/scale/_category_.yaml b/i18n/zh-cn/user-docs/maintenance/scale/_category_.yaml
deleted file mode 100644
index 051d3c346..000000000
--- a/i18n/zh-cn/user-docs/maintenance/scale/_category_.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 扩缩容
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/maintenance/scale/horizontal-scale.md b/i18n/zh-cn/user-docs/maintenance/scale/horizontal-scale.md
deleted file mode 100644
index 2c613f7ba..000000000
--- a/i18n/zh-cn/user-docs/maintenance/scale/horizontal-scale.md
+++ /dev/null
@@ -1,389 +0,0 @@
----
-title: 水平扩缩容
-description: 如何对集群和实例进行水平扩缩容
-keywords: [水平扩缩容, 水平伸缩]
-sidebar_position: 2
-sidebar_label: 水平扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 水平扩缩容
-
-从 v0.9.0 开始，KubeBlocks 支持 ScaleIn 和 ScaleOut 两类操作，同时支持副本（replcia）和具体实例（instance）的扩缩容。
-
-- ScaleIn：支持水平缩容指定副本及指定实例下线。
-- ScaleOut: 支持水平扩容指定副本及指定实例重新上线。
-
-可通过声明式 API 或创建 OpsRequest 的方式执行水平扩缩容：
-
-- 以声明式 API 的方式修改集群
-
-    通过声明式 API 方式，可直接修改 Cluster YAML 文件来指定每个组件的副本数量和实例模板。如果新的副本数量大于当前 Pod 的数量，则表示扩展（scale-out）；相反，如果新的副本数量少于当前 Pod 的数量，则表示缩容（scale-in）。
-
-- 创建 OpsRequest
-
-    另一种方法是在 OpsRequest 中指定副本数量的增量。控制器（controller）将根据集群组件中当前 Pod 的数量和增量值计算所需的副本数量，并相应地执行扩缩容操作。
-
-:::note
-
-- 在并发修改的情况下，例如多个控制器同时修改 Pod 的数量，计算出的 Pod 数量可能会不准确。你可以在客户端确保操作顺序，或者设置 `KUBEBLOCKS_RECONCILE_WORKERS=1`。
-- 如果正在使用声明式 API 进行扩缩容操作，该操作将被终止。
-- 从 v0.9.0 开始，MySQL 和 PostgreSQL 集群在进行水平扩缩容后，KubeBlocks 会根据新的规格自动匹配合适的配置模板。这因为 KubeBlocks 在 v0.9.0 中引入了动态配置功能。该功能简化了配置参数的过程，节省了时间和精力，并减少了由于配置错误引起的性能问题。有关详细说明，请参阅[配置](./../../kubeblocks-for-apecloud-mysql/configuration/configuration.md)。
-
-:::
-
-## 为什么需要指定实例扩缩容
-
-早期版本中，KubeBlocks 最终生成的 Workload 是 *StatefulSet*，这是一把双刃剑。一方面，KubeBlocks 可以借助 *StatefulSet* 实现对数据库等有状态应用的管理，另一方面，这也导致 KubeBlocks 继承了其局限性。
-
-其中的局限性之一是，在水平缩容场景下，*StatefulSet* 会按照 *Ordinal* 顺序从大到小依次下线 Pod。当 *StatefulSet* 中运行的是数据库时，这个局限性会使得数据库的可用性降低。
-
-另一个问题是，我们仍以上面的场景为例。某一天，Pod 所在 Node 因为物理机故障，导致磁盘损坏，最终导致数据无法正常读写。按照数据库运维最佳实践，我们需要将受损的 Pod 下线，并在其它健康 Node 上搭建新的副本，但基于 *StatefulSet* 来做这样的运维操作并不容易。在 Kubernetes 社区中，我们也可以看到[类似场景的讨论](https://github.com/kubernetes/kubernetes/issues/83224)。
-
-为了解决上述局限性，KubeBlocks 从 0.9 版本开始使用 *InstanceSet* 替代 *StatefulSet*。*InstanceSet* 是一个通用 Workload API，负责管理一组实例。引入 *InstanceSet* 后，KubeBlocks 支持了“指定实例缩容”特性，以提升可用性。
-
-## 开始之前
-
-本文档以 Redis 为例进行演示，以下为原组件拓扑。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: redis
-  namespace: kubeblocks-cloud-ns
-spec:
-  componentSpecs:
-  - name: proxy
-    componentDef: redis-proxy
-    replicas: 10
-    instances:
-    - name: proxy-2c
-      replicas: 3
-      resources:
-        limits:
-          cpu: 2
-          memory: 4Gi
-    resources:
-      limits:
-        cpu: 4
-        memory: 8Gi
-    offlineInstances:
-    - redis-proxy-proxy-2c4g-0
-    - redis-proxy-proxy-2c4g-1     
-```
-
-查看集群状态是否为 `Running`，否则，后续操作可能失败。
-
-```bash
-kubectl get cluster redis
-```
-
-## 水平缩容
-
-### 示例 1
-
-本示例演示了如何应用 OpsRequest 将副本数缩容至 8。本示例将按照默认规则删除 pod，未指定任何实例。
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      replicaChanges: 2  
-EOF 
-```
-
-### 示例 2
-
-示例 2 演示了如何应用 OpsRequest 将副本数缩容至 8，并指定仅缩容 2 个 2C4G 的实例。
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      replicaChanges: 2
-      instances: 
-      - name: proxy-2c4g
-        replicaChanges: 2
-EOF
-```
-
-### 示例 3
-
-示例 3 演示了如何下线指定实例。本示例中，`replicas` 和 `instance replicas` 的数量都会减少 1。
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      onlineInstancesToOffline:
-      - redis-proxy-proxy-2c4g-2
-  ttlSecondsAfterSucceed: 0
-EOF
-```
-
-</TabItem>
-
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-您也可通过修改集群 YAML 文件指定实例下线。
-
-```yaml
-kubectl edit cluster redis
-```
-
-在编辑器中修改 `spec.componentSpecs.replicas` 及 `spec.componentSpecs.offlineInstances` 的参数值。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: redis
-spec:
-  componentSpecs:
-  - name: proxy
-    replicas: 9
-    offlineInstances: ["redis-proxy-proxy-2c4g-2"]
-...
-```
-
-</TabItem>
-</Tabs>
-
-## 水平扩容
-
-后续实例演示了如何对副本和实例进行水平扩容。如果您只想对副本进行扩容，仅需修改 `replicaChanges`，例如，
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut: 
-      replicaChanges: 6
-EOF
-```
-
-### 示例 1
-
-示例 1 演示了如何通过应用 OpsRequest 将副本数扩容至 16。
-
-新创建的实例如下：
-
-3 个 4C8G 的实例: `redis-proxy-7`, `redis-proxy-8`, `redis-proxy-9`
-3 个 2C4G 的实例: `redis-proxy-2c4g-5`, `redis-proxy-2c4g-6`, `redis-proxy-2c4g-7`
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut: 
-      replicaChanges: 6
-      instances: 
-      - name: proxy-2c4g
-        replicasChanges: 3
-EOF
-```
-
-### 示例 2
-
-示例 2 演示了如何通过应用 OpsRequest 将副本数扩容至 16，同时其中 3 个为 8C16G 的 proxy。
-
-新创建的实例如下：
-
-4C8G: `redis-proxy-7`, `redis-proxy-8`, `redis-proxy-9`
-8C16G: `redis-proxy-8c16g-0`, `redis-proxy-8c16g-1`, `redis-proxy-8c16g-2`
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut:
-      replicaChanges: 6 
-      newInstances:
-      - name: proxy-8c16g
-        replicas: 3
-        resources:
-          limits:
-            cpu: 8
-            memory: 16Gi  
-EOF
-```
-
-### 示例 3
-
-示例 3 演示了如何通过应用 OpsRequest 将已下线的实例重新添加到集群。该运维任务执行完成后，副本数为 12。
-
-本示例中添加的 pod 为  `redis-proxy-2c4g-0` 和 `redis-proxy-2c4g-1`。
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleOut:
-      offlineInstancesToOnline:
-      - redis-proxy-proxy-2c4g-0
-      - redis-proxy-proxy-2c4g-1     
-EOF   
-```
-
-## 水平扩缩容
-
-### 示例 1
-
-示例 1 演示了如何通过应用 OpsRequest 实现指定实例下线并创建新实例。
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      onlineInstancesToOffline:
-      - redis-proxy-proxy-2c4g-2  
-    scaleOut:
-      instances:
-      - name: 2c4g
-        replicaChanges: 1
-EOF
-```
-
-### 示例 2
-
-示例 2 演示了如何通过应用 OpsRequest 将副本数缩容至 8 并将已下线的实例重新加入到集群。
-
-```yaml
-kubectl apply -f - <<EOF
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: OpsRequest
-metadata:
-  generateName: ops-horizontalscaling
-spec:
-  type: HorizontalScaling
-  clusterName: redis
-  horizontalScaling:
-  - componentName: proxy
-    scaleIn:
-      replicaChanges: 4
-      instances:
-      - name: 2c4g
-        replicaChanges: 2
-    scaleOut: 
-      offlineInstancesToOnline:
-      - redis-proxy-proxy-2c4g-0
-      - redis-proxy-proxy-2c4g-1
-EOF
-```
-
-## 处理快照异常
-
-如果在水平扩容过程中出现 `STATUS=ConditionsError`，你可以从 `cluster.status.condition.message` 中找到原因并进行故障排除。如下所示，该例子中发生了快照异常。
-
-```bash
-Status:
-  conditions: 
-  - lastTransitionTime: "2023-02-08T04:20:26Z"
-    message: VolumeSnapshot/reids-redis-scaling-dbqgp: Failed to set default snapshot
-      class with error cannot find default snapshot class
-    reason: ApplyResourcesFailed
-    status: "False"
-    type: ApplyResources
-```
-
-***原因***
-
-此异常发生的原因是未配置 `VolumeSnapshotClass`。可以通过配置 `VolumeSnapshotClass` 解决问题。
-
-但此时，水平扩容仍然无法继续运行。这是因为错误的备份（volumesnapshot 由备份生成）和之前生成的 volumesnapshot 仍然存在。需删除这两个错误的资源，KubeBlocks 才能重新生成新的资源。
-
-***步骤：***
-
-1. 配置 VolumeSnapshotClass。
-
-   ```bash
-   kubectl create -f - <<EOF
-   apiVersion: snapshot.storage.k8s.io/v1
-   kind: VolumeSnapshotClass
-   metadata:
-     name: csi-aws-vsc
-     annotations:
-       snapshot.storage.kubernetes.io/is-default-class: "true"
-   driver: ebs.csi.aws.com
-   deletionPolicy: Delete
-   EOF
-   ```
-
-2. 删除错误的备份和 volumesnapshot 资源。
-
-   ```bash
-   kubectl delete backup -l app.kubernetes.io/instance=redis
-   
-   kubectl delete volumesnapshot -l app.kubernetes.io/instance=redis
-   ```
-
-***结果***
-
-删除备份和 volumesnapshot 后，水平扩容继续进行，集群恢复到 `Running` 状态。
diff --git a/i18n/zh-cn/user-docs/maintenance/scale/vertical-scale.md b/i18n/zh-cn/user-docs/maintenance/scale/vertical-scale.md
deleted file mode 100644
index 9c224e8c2..000000000
--- a/i18n/zh-cn/user-docs/maintenance/scale/vertical-scale.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: 垂直扩缩容
-description: 如何对集群进行垂直扩缩容
-keywords: [垂直扩缩容, 变配]
-sidebar_position: 2
-sidebar_label: 垂直扩缩容
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 垂直扩缩容
-
-你可以通过更改资源需求和限制（CPU 和存储）来垂直扩展集群。例如，可通过垂直扩容将资源类别从 1C2G 调整为 2C4G。
-
-本文档以 MySQL 为示例，演示如何对集群进行垂直扩缩容。
-
-:::note
-
-从 v0.9.0 开始，MySQL 和 PostgreSQL 集群在进行水平扩缩容后，KubeBlocks 会根据新的规格自动匹配合适的配置模板。这因为 KubeBlocks 在 v0.9.0 中引入了动态配置功能。该功能简化了配置参数的过程，节省了时间和精力，并减少了由于配置错误引起的性能问题。有关详细说明，请参阅[配置](./../../kubeblocks-for-apecloud-mysql/configuration/configuration.md)。
-
-:::
-
-## 开始之前
-
-查看集群状态是否为 `Running`，否则，后续操作可能失败。
-
-```bash
-kubectl get cluster mycluster
->
-NAME        CLUSTER-DEFINITION   VERSION        TERMINATION-POLICY   STATUS    AGE
-mycluster   mysql                mysql-8.0.33   Delete               Running   4d18h
-```
-
-## 步骤
-
-可通过以下两种方式进行垂直扩缩容。
-
-<Tabs>
-
-<TabItem value="OpsRequest" label="OpsRequest" default>
-
-1. 对指定集群应用 OpsRequest，可按需修改参数值。
-
-   ```bash
-   kubectl apply -f - <<EOF
-   apiVersion: apps.kubeblocks.io/v1alpha1
-   kind: OpsRequest
-   metadata:
-     name: ops-vertical-scaling
-     namespace: demo
-   spec:
-     clusterName: mycluster
-     type: VerticalScaling
-     verticalScaling:
-     - componentName: mysql
-       requests:
-         memory: "2Gi"
-         cpu: "1"
-       limits:
-         memory: "4Gi"
-         cpu: "2"
-   EOF
-   ```
-
-2. 查看运维任务状态，验证该任务是否执行成功。
-
-   ```bash
-   kubectl get ops -n demo
-   >
-   NAMESPACE   NAME                   TYPE              CLUSTER     STATUS    PROGRESS   AGE
-   demo        ops-vertical-scaling   VerticalScaling   mycluster   Succeed   3/3        6m
-   ```
-
-   如果有报错，可执行 `kubectl describe ops -n demo` 命令查看该运维操作的相关事件，协助排障。
-
-3. 查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-  
-<TabItem value="修改集群 YAML 文件" label="修改集群 YAML 文件">
-
-1. 修改 YAML 文件中 `spec.componentSpecs.resources` 的配置。`spec.componentSpecs.resources` 控制资源的请求值和限制值，修改参数值将触发垂直扩缩容。
-
-   ```bash
-   kubectl edit cluster mycluster -n demo
-   ```
-
-   在编辑器中修改 `spec.componentSpecs.resources` 的参数值。
-
-   ```yaml
-   ...
-   spec:
-     clusterDefinitionRef: apecloud-mysql
-     clusterVersionRef: ac-mysql-8.0.30
-     componentSpecs:
-     - name: mysql
-       componentDefRef: mysql
-       replicas: 3
-       resources: # 修改参数值
-         requests:
-           memory: "2Gi"
-           cpu: "1"
-         limits:
-           memory: "4Gi"
-           cpu: "2"
-   ...
-   ```
-
-2. 查看相应资源是否变更。
-
-   ```bash
-   kubectl describe cluster mycluster -n demo
-   ```
-
-</TabItem>
-
-</Tabs>
diff --git a/i18n/zh-cn/user-docs/observability/_category_.yml b/i18n/zh-cn/user-docs/observability/_category_.yml
deleted file mode 100644
index 7435e2e3f..000000000
--- a/i18n/zh-cn/user-docs/observability/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 8
-label: 可观测性
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/observability/configure-alert.md b/i18n/zh-cn/user-docs/observability/configure-alert.md
deleted file mode 100644
index 64dc592c7..000000000
--- a/i18n/zh-cn/user-docs/observability/configure-alert.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: 配置告警
-description: 如何配置告警
-keywords: [mysql, 告警, 告警信息, 邮件告警]
-sidebar_position: 2
----
-
-# 配置告警
-
-告警主要用于日常故障响应，以提高系统可用性。KubeBlocks 使用开源版本的 Prometheus 配置警报规则和多个通知渠道。KubeBlocks 的告警功能能够满足生产级在线集群的运维需求。
-
-:::note
-
-所有数据库的告警功能相同。
-
-:::
-
-## 告警规则
-
-KubeBlocks 使用开源版本的 Prometheus 来满足各种数据产品的需求。这些警报规则提供了集群运维的最佳实践，通过经验总结的平滑窗口、告警阈值、告警级别和告警指标，进一步提高了告警的准确性，降低了误报率和漏报率。
-
-以 PostgreSQL 为例，告警规则中内置了常见的异常事件，例如实例宕机、实例重启、慢查询、连接数、死锁和缓存命中率等。
-
-以下示例显示了 PostgreSQL 的告警规则（可参考 [Prometheus 的语法](https://prometheus.io/docs/prometheus/latest/querying/basics/)）。当活跃连接数超过阈值的 80% 并持续 2 分钟时，Prometheus 会触发 warning 警告，并将其发送到 AlertManager。
-
-```bash
-alert: PostgreSQLTooManyConnections
-  expr: |
-    sum by (namespace,app_kubernetes_io_instance,pod) (pg_stat_activity_count{datname!~"template.*|postgres"})
-    > on(namespace,app_kubernetes_io_instance,pod)
-    (pg_settings_max_connections - pg_settings_superuser_reserved_connections) * 0.8
-  for: 2m
-  labels:
-    severity: warning
-  annotations:
-    summary: "PostgreSQL too many connections (> 80%)"
-    description: "PostgreSQL has too many connections and the value is {{ $value }}. (instance: {{ $labels.pod }})"
-```
-
-您可按需配置告警规则，详情可参考 [Prometheus 告警规则文档](https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/#defining-alerting-rules)。
-
-## 通知
-
-KubeBlocks 的告警通知主要采用 AlertManager 的原生能力。在接收到 Prometheus 告警后，KubeBlocks 执行去重、分组、静默、抑制和路由等步骤，最终将告警发送到相应的通知渠道。
-
-可按需配置通知渠道，具体可参考 [Prometheus 告警配置](https://prometheus.io/docs/alerting/latest/configuration/)。
diff --git a/i18n/zh-cn/user-docs/observability/monitor-database.md b/i18n/zh-cn/user-docs/observability/monitor-database.md
deleted file mode 100644
index 72340793e..000000000
--- a/i18n/zh-cn/user-docs/observability/monitor-database.md
+++ /dev/null
@@ -1,412 +0,0 @@
----
-title: 监控
-description: 如何监控数据库集群
-keywords: [监控, 监控数据库集群]
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 监控数据库
-
-您可按需通过不同的监控工具监控集群状态，本教程使用 Prometheus 和 Grafana 作为监控工作，以配置 PostgreSQL 集群的监控功能为例进行说明。
-
-## 步骤 1. 安装 Prometheus Operator 和 Grafana
-
-安装 Prometheus Operator 和 Grafana, 监控数据库性能指标。如果您的环境中已有 Prometheus Operator，可跳过本节。
-
-1. 为监控 Operator 创建新的命名空间。
-
-   ```bash
-   kubectl create namespace monitoring
-   ```
-
-2. 添加 Prometheus Operator Helm 仓库。
-
-   ```bash
-   helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
-   ```
-
-3. 安装 Prometheus Operator。
-
-   ```bash
-   helm install prometheus-operator prometheus-community/kube-prometheus-stack --namespace monitoring
-   ```
-
-4. 验证 Prometheus Operator 是否安装成功。
-
-   ```bash
-   kubectl get pods -n monitoring
-   ```
-
-5. 连接 Prometheus 和 Grafana 大盘。
-
-   1. 查看 Prometheus 和 Grafana 的服务端口。
-
-       ```bash
-       kubectl get svc -n monitoring
-       ```
-
-   2. 使用 port forward 从本地连接 Prometheus 大盘。
-
-       ```bash
-       kubectl port-forward svc/prometheus-operator-kube-p-prometheus -n monitoring 9090:9090
-       ```
-
-       您也可通过在浏览器中打开 "http://localhost:9090" 地址，连接 Prometheus 大盘。
-
-   3. 从 secret 中获取 Grafana 的连接凭证。
-
-       ```bash
-       kubectl get secrets prometheus-operator-grafana -n monitoring -oyaml
-       ```
-
-   4. 使用 port forward 从本地连接 Grafana 大盘。
-
-       ```bash
-       kubectl port-forward svc/prometheus-operator-grafana -n monitoring 3000:80
-       ```
-
-       您也可通过在浏览器中打开 "http://localhost:3000" 地址，连接 Grafana 大盘。
-
-6. （可选）配置 `PodMonitor` 及 `ServiceMonitor` 选择器。
-
-   Prometheus Operator 使用 Prometheus CRD 创建实例，自定义配置 replica、PVC 等其他参数。
-
-   如需更新 `PodMonitor` 及 `ServiceMonitor` 的配置，您可按需更新 Prometheus CR 文件。
-
-   ```yaml
-   apiVersion: monitoring.coreos.com/v1
-   kind: Prometheus
-   metadata:
-   spec:
-     podMonitorNamespaceSelector: {} # 匹配 PodMonitor 的命名空间
-     # 选择用于目标发现的 PodMonitors。空的标签选择器
-     # 会匹配所有对象
-     podMonitorSelector:
-       matchLabels:
-         release: prometheus # 确保您的 PodMonitor CR 的标签与此选择器匹配
-     serviceMonitorNamespaceSelector: {} # 匹配 ServiceMonitor 的命名空间
-     # 选择用于目标发现的 ServiceMonitors。空的标签选择器
-     # 会匹配所有对象
-     serviceMonitorSelector:
-       matchLabels:
-         release: prometheus # 确保您的 ServiceMonitor CR 的标签与此选择器匹配
-   ```
-
-## 步骤 2. 监控数据库集群
-
-监控集群的方式多种多样，本文档中我们使用 Promethus 和 Grafana 演示如何监控集群。
-
-### 开启集群的监控 exporter
-
-#### 创建新集群并开启监控 exporter
-
-使用以下命令创建集群，并开启监控 exporter。
-
-:::Note
-
-创建集群时，请确保 `spec.componentSpecs.disableExporter` 设为 `false`。
-
-:::
-
-```yaml
-cat <<EOF | kubectl apply -f -
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: mycluster
-  namespace: demo
-spec:
-  terminationPolicy: Delete
-  clusterDef: postgresql
-  topology: replication
-  componentSpecs:
-    - name: postgresql
-      componentDef: postgresql
-      serviceVersion: "14.7.2"
-      disableExporter: false
-      labels:
-        apps.kubeblocks.postgres.patroni/scope: mycluster-postgresql
-      replicas: 2
-      resources:
-        limits:
-          cpu: "0.5"
-          memory: "0.5Gi"
-        requests:
-          cpu: "0.5"
-          memory: "0.5Gi"
-      volumeClaimTemplates:
-        - name: data
-          spec:
-            storageClassName: ""
-            accessModes:
-              - ReadWriteOnce
-            resources:
-              requests:
-                storage: 20Gi
-
-EOF
-```
-
-#### 开启已有集群的监控 exporter
-
-如果您的环境中已有集群，可执行以下命令查看监控 exporter 是否开启。
-
-```bash
-kubectl get cluster mycluster -o yaml
-```
-
-<details>
-
-<summary>输出</summary>
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-...
-spec:
-   ...
-   componentSpecs:
-   ...
-      disableExporter: false
-```
-
-</details>
-
-将 `disableExporter` 设置为 `false` 或使用隐式设置（使用默认值），即表示监控 exporter 已启用，这是监控功能正常运行的前提条件。如果输出结果显示 `disableExporter: true`，您需要将其修改为 `false`，开启监控 exporter。
-
-请注意更新 `disableExporter` 字段会导致集群中的所有 Pod 重启。
-
-<Tabs>
-
-<TabItem value="kubectl patch" label="kubectl patch" default>
-
-```bash
-kubectl patch cluster mycluster -n demo --type "json" -p '[{"op":"add","path":"/spec/componentSpecs/0/disableExporter","value":false}]'
-```
-
-</TabItem>
-
-<TabItem value="编辑集群 YAML 文件" label="编辑集群 YAML 文件">
-
-您也可通过编辑 `cluster.yaml` 文件开启监控功能。
-
-```bash
-kubectl edit cluster mycluster -n demo
-```
-
-修改 `disableExporter` 的参数值。
-
-```yaml
-...
-componentSpecs:
-...
-    disableExporter: true # 将参数值设为 `false`，开启 exporter
-```
-
-</TabItem>
-
-</Tabs>
-
-集群运行时，每个 Pod 都拥有一个名为 `exporter` 的 sidecar 容器，用于运行 postgres-exporter。
-
-### 创建 PodMonitor
-
-1. 获取 `scrapePath` 及 `scrapePort`。
-
-   您可从 Pod 的 exporter 容器中获取 `scrapePath` 及 `scrapePort`。
-
-   ```bash
-   kubectl get po mycluster-postgresql-0 -oyaml | yq '.spec.containers[] | select(.name=="exporter") | .ports '
-   ```
-
-   <details>
-
-   <summary>输出</summary>
-
-   ```bash
-   - containerPort: 9187
-     name: http-metrics
-     protocol: TCP
-   ```
-
-   </details>
-
-2. 创建 `PodMonitor`。
-
-   应用 `PodMonitor` 文件，监控集群。以下展示了不同引擎的创建示例，您可按需修改相关参数值。
-
-   <Tabs>
-
-   <TabItem value="ApeCloud MySQL" label="ApeCloud MySQL" default>
-
-   您也可以在 [KubeBlocks Addons 仓库](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/apecloud-mysql/pod-monitor.yaml)中查看最新版本示例 YAML 文件。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # 此处应匹配 `prometheus.spec.podMonitorNamespaceSelector` 中设置的值。
-     labels:               # 此处应匹配 `prometheus.spec.podMonitorSelector` 中设置的标签。
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # 定义了从关联的 Kubernetes `Pod` 对象
-     # 传递到采集指标上的标签
-     # 请按需设置标签
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - demo
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: mysql
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="MySQL 社区版" label="MySQL 社区版">
-
-   您也可以在 [KubeBlocks Addons 仓库](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/mysql/pod-monitor.yaml)中查看最新版本示例 YAML 文件。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # 此处应匹配 `prometheus.spec.podMonitorNamespaceSelector` 中设置的值。
-     labels:               # 此处应匹配 `prometheus.spec.podMonitorSelector` 中设置的标签。
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # 定义了从关联的 Kubernetes `Pod` 对象
-     # 传递到采集指标上的标签
-     # 请按需设置标签
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - demo
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: mysql
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="PostgreSQL" label="PostgreSQL">
-
-   您也可以在 [KubeBlocks Addons 仓库](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/postgresql/pod-monitor.yml)中查看最新版本示例 YAML 文件。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # 此处应匹配 `prometheus.spec.podMonitorNamespaceSelector` 中设置的值。
-     labels:               # 此处应匹配 `prometheus.spec.podMonitorSelector` 中设置的标签。
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # 定义了从关联的 Kubernetes `Pod` 对象
-     # 传递到采集指标上的标签
-     # 请按需设置标签
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - default
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: postgresql
-   EOF
-   ```
-
-   </TabItem>
-
-   <TabItem value="Redis" label="Redis">
-
-   您也可以在 [KubeBlocks Addons 仓库](https://github.com/apecloud/kubeblocks-addons/blob/main/examples/redis/pod-monitor.yaml)中查看最新版本示例 YAML 文件。
-
-   ```yaml
-   kubectl apply -f - <<EOF
-   apiVersion: monitoring.coreos.com/v1
-   kind: PodMonitor
-   metadata:
-     name: mycluster-pod-monitor
-     namespace: demo       # 此处应匹配 `prometheus.spec.podMonitorNamespaceSelector` 中设置的值。
-     labels:               # 此处应匹配 `prometheus.spec.podMonitorSelector` 中设置的标签。
-       release: prometheus
-   spec:
-     jobLabel: app.kubernetes.io/managed-by
-     # 定义了从关联的 Kubernetes `Pod` 对象
-     # 传递到采集指标上的标签
-     # 请按需设置标签
-     podTargetLabels:
-     - app.kubernetes.io/instance
-     - app.kubernetes.io/managed-by
-     - apps.kubeblocks.io/component-name
-     - apps.kubeblocks.io/pod-name
-     podMetricsEndpoints:
-       - path: /metrics
-         port: http-metrics
-         scheme: http
-     namespaceSelector:
-       matchNames:
-         - default
-     selector:
-       matchLabels:
-         app.kubernetes.io/instance: mycluster
-         apps.kubeblocks.io/component-name: redis
-   EOF
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-3. 连接 Grafana 大盘.
-
-    登录 Grafana 大盘，并导入大盘。
-
-    Grafana 大盘的 `APPS / PostgreSQL` 文件夹下有预设的大盘模板。您也可以在 [Grafana 大盘商店](https://grafana.com/grafana/dashboards/)获取更多大盘模板。
-
-:::note
-
-请确保 `PodMonitor` 文件中的标签（如 endpoint 中的 path 和 port 值）设置正确，与您使用的大盘匹配。
-
-:::
diff --git a/i18n/zh-cn/user-docs/overview/_category_.yml b/i18n/zh-cn/user-docs/overview/_category_.yml
deleted file mode 100644
index acd750f5f..000000000
--- a/i18n/zh-cn/user-docs/overview/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 1
-label: 简介
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/overview/about-this-manual.md b/i18n/zh-cn/user-docs/overview/about-this-manual.md
deleted file mode 100644
index 30f21062d..000000000
--- a/i18n/zh-cn/user-docs/overview/about-this-manual.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-title: 关于
-description: KubeBlocks, kbcli, how to
-keywords: [kubeblocks, 概述, 简介]
-sidebar_position: 1
----
-
-本文档介绍了如何通过 `kbcli` 使用 KubeBlocks。本文档还包括通过 helm 和 kubectl 使用 KubeBlocks 的命令，为您提供多种操作选择。
diff --git a/i18n/zh-cn/user-docs/overview/concept.md b/i18n/zh-cn/user-docs/overview/concept.md
deleted file mode 100644
index f734c59ef..000000000
--- a/i18n/zh-cn/user-docs/overview/concept.md
+++ /dev/null
@@ -1,166 +0,0 @@
----
-title: 概念
-description: KubeBlocks, CRD
-keywords: [kubeblocks, 概念]
-sidebar_position: 2
----
-
-# 概念
-
-["统一 API 如何降低学习曲线"](./introduction.md#统一的-api-如何降低学习门槛)一节介绍了使用统一 API 表达各种数据库的优势。如果仔细查看这些示例，您会发现示例 YAML 文件中包含两个关键概念：**Cluster（集群）** 和 **Component（组件）**。例如，`test-mysql` 是一个包含名为 `mysql` 组件的集群（组件定义为 `apecloud-mysql`）。`test-redis` 也是一个集群，包含两个组件：一个是 `redis`（组件定义为 `redis-7`），有两个副本；另一个是 `redis-sentinel`（组件定义为 `redis-sentinel`），有三个副本。
-
-本文档将解释这两个概念背后的原因，并简要介绍其背后的 API（即 CRD, Custom Resource Definition）。
-
-## KubeBlocks 分层 API 的设计动机
-
-在 KubeBlocks 中，为了通过统一 API 支持各种数据库的管理，我们需要抽象不同数据库的拓扑结构和特性。
-
-我们观察到，生产环境中部署的数据库系统通常采用由多个组件组成的拓扑结构。例如，一个生产环境中的 MySQL 集群可能包括多个代理节点（如 ProxySQL、MaxScale、Vitess、WeScale 等）和多个 MySQL 服务器节点（如 MySQL 社区版、Percona、MariaDB、ApeCloud MySQL 等），以实现高可用性和读写分离。类似地，Redis 部署通常由一个主节点和多个只读副本组成，并通过 Sentinel 管理以确保高可用性。一些用户甚至使用 twemproxy 进行水平分片，以实现更大的容量和吞吐量。
-
-这种模块化方法在分布式数据库系统中尤为常见，整个系统被划分为职责明确的独立组件，如数据存储、查询处理、事务管理、日志记录和元数据管理等。这些组件通过网络进行交互，确保系统能够像单节点数据库一样提供强一致性和事务保障，并实现负载均衡、分布式事务以及具备故障切换能力的灾难恢复等复杂操作。
-
-因此，KubeBlocks 采用了分层 API（即 CRD）的设计，由 **Cluster（集群）** 和 **Component（组件）** 组成，以适应数据库系统的多组件、高度可变的部署拓扑结构。这些抽象允许我们灵活地表达和管理部署在 Kubernetes 上的各种数据库系统拓扑，并根据所需拓扑轻松地将组件组装成集群。
-
-组件是组成集群的积木块。事实上，数据库引擎插件开发者可以在 ClusterDefinition 中定义如何将多个组件组装成不同的拓扑结构。如果您只是普通用户，则无需过度关注 ClusterDefinition 的细节；您只需要知道 KubeBlocks 的插件可以提供不同的拓扑结构选择。例如，Redis 引擎插件支持三种拓扑："standalone"（单机），"replication"（主从复制）和 "replication-twemproxy"（主从复制 + twemproxy）。您可以在创建集群时指定所需的拓扑。
-
-以下是通过 `clusterDefinitionRef` 和 `topology` 创建 Redis 集群的示例：
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: test-redis-use-topology
-  namespace: default
-spec:
-  clusterDefinitionRef: redis
-  topology: replication
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: redis
-    replicas: 2
-    disableExporter: true
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-  - name: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-            - ReadWriteOnce
-          resources:
-            requests:
-              storage: 10Gi
-```
-
-仔细看上面这个 YAML 文件，可以发现，通过在集群中指定 `clusterDefinitionRef` 和 `topology`，则无需再为每个组件指定 `componentDef`。
-
-借助 Component API，KubeBlocks 将数据库容器打包成标准化的积木块，这些积木块可以根据指定的拓扑组装成数据库集群，并运行在 Kubernetes 上。我们认为这个过程很像用乐高积木搭建东西，这也是 KubeBlocks 这一名字的来源。
-
-## 深入了解 KubeBlocks API
-
-下图展示了 KubeBlocks 的主要 CRD，这里特别强调了 API 的分层结构。其他重要的 API，如 OpsRequest、Backup 和 Restore，并未包含在此图中。下图重点关注分层结构，图表展示更加清晰。我们将在其他文档中解释其他重要的 API。
-
-![KubeBlocks API Layers](./../../img/kubeblocks-api-layers.png)
-
-KubeBlocks 的 CRD 可分为两大类：用户使用的 CRD 和 插件 CRD。
-
-**用户使用的 CRD**
-
-用户使用的 CRD 包括 Cluster、Component 和 InstanceSet。使用 KubeBlocks 创建数据库集群时，将生成以下 CR：
-
-- Cluster 对象：由用户创建。
-- Component 对象：KubeBlocks 集群控制器（Cluster Controller）在检测到 Cluster 对象时递归创建的子资源。
-- InstanceSet 对象：KubeBlocks 组件控制器（Component Controller）在检测到 Component 对象时递归创建的子资源。InstanceSet 控制器（InstanceSet Controller）随后递归创建 Pod 和 PVC 对象。
-
-**插件 CRD**
-
-插件使用的 CRD 包括 ClusterDefinition、ComponentDefinition 和 ComponentVersion。这些 CR 由数据库引擎插件开发者编写，并捆绑在插件的 Helm chart 中。
-
-:::note
-
-您无需编写 ClusterDefinition 和 ComponentDefinition 的 CR，但仍需要使用这些 CR。如前面创建 Redis Cluster 所示，创建集群时，可以选择在每个组件的 `componentDef` 中指定相应的 ComponentDefinition CR 名称，或者在 `clusterDefinitionRef` 中指定相应的 ClusterDefinition CR 名称，并选择所需的拓扑结构。
-
-:::
-
-### 用户使用的 KubeBlocks API
-
-#### Cluster
-
-Cluster 对象表示由 KubeBlocks 管理的整个数据库集群。一个集群可以包含多个 Component，用户在 Cluster API 中指定每个 Component 的配置，集群控制器将生成并调谐相应的 Component 对象。此外，集群控制器还管理在集群层暴露的所有服务地址。
-
-对于像 Redis Cluster 这种采用无共享架构的分布式数据库，集群对象支持管理多个分片（shard），每个分片由一个单独的 Component 管理。这种架构还支持动态分片（dynamic resharding）：如果需要扩展并添加新分片，只需添加一个新的 Component；反之，如果需要缩减分片数量，则移除相应的 Component。
-
-#### Component
-
-Component 是集群对象的基本模块。例如，一个 Redis 集群可以包含 redis、sentinel，也可能包含代理组件，如 twemproxy。
-
-Component 对象负责管理 Component 内所有副本的生命周期，支持多种操作，包括实例的创建、停止、重启、终止、升级、配置变更、垂直和水平扩展、故障切换、主备切换、调度配置、服务暴露、系统账号管理等。
-
-Component 是从用户提交的 Cluster 对象派生的内部子对象，主要供 KubeBlocks 控制器使用，不建议用户直接修改 Component 对象，应仅用于监控 Component 状态。
-
-#### InstanceSet
-
-从 KubeBlocks v0.9 开始，KubeBlocks 用 InstanceSet 替代 StatefulSet。
-
-一个数据库实例（或副本）由一个 Pod 和其他辅助对象（如 PVC、Service、ConfigMap、Secret）组成。InstanceSet 是一个负责管理实例组的工作负载 CRD。在 KubeBlocks 中，所有工作负载最终都由 InstanceSet 管理。与 Kubernetes 原生的工作负载 CRD（如 StatefulSet 和 Deployment）相比，InstanceSet 融入了更多针对数据库领域的设计和考量，例如每个副本的角色、高可用性需求，以及对特定节点进行下线等操作的支持。
-
-### KubeBlocks Addon API
-
-:::note
-
-只有引擎插件开发者需要了解 ClusterDefinition 和 ComponentDefinition API，普通用户可以跳过这部分内容。
-
-:::
-
-#### ClusterDefinition
-
-ClusterDefinition 是用于定义数据库集群所有可用拓扑的 API，提供了多种拓扑配置以满足不同的部署需求和场景。
-
-每个拓扑都包含一个组件列表，每个组件都关联到一个 ComponentDefinition，提升了复用性并减少了冗余。例如，常用组件如 etcd 和 ZooKeeper 的 ComponentDefinition 可以只定义一次，实现在多个 ClusterDefinition 中复用，从而简化新系统的设置。
-
-此外，ClusterDefinition 还指定了组件的启动、升级和关闭顺序，确保组件生命周期的可控管理。
-
-#### ComponentDefinition
-
-ComponentDefinition 是用于创建组件的可复用蓝图或模板，封装了组件描述、Pod 模板、配置文件模板、脚本、参数列表、环境变量及其来源、事件处理程序等必要的静态设置。ComponentDefinition 与 Component 的动态设置结合，在创建集群时实例化组件。
-
-ComponentDefinition 可以定义的关键内容包括：
-
-- PodSpec 模板：指定组件使用的 PodSpec 模板。
-- 配置模板：指定组件所需的配置文件模板。
-- 脚本：提供管理组件所需的脚本。
-- 存储卷：指定组件的存储卷及其配置。
-- Pod 角色：定义组件内 Pod 的各种角色及其能力。
-- 暴露的 Kubernetes 服务：指定组件需要暴露的服务。
-- 系统账户：定义组件所需的系统账户。
-
-ComponentDefinition 还支持定义组件对事件的响应行为，例如成员加入/离开、组件添加/删除、角色变更、切换等。这使得可以自动处理事件，从而封装组件的复杂行为。
-
-## 插件（Addon）是什么
-
-KubeBlocks 使用插件（Addon）机制来扩展对不同数据库引擎的支持。插件是某个特定数据库引擎的扩展，例如 MySQL Addon、PostgreSQL Addon、Redis Addon、MongoDB Addon 和 Kafka Addon。目前 KubeBlocks 提供了超过 30 种数据库引擎插件。
-
-一个引擎插件包含基于 ClusterDefinition、ComponentDefinition 和 ComponentVersion CRD 的自定义资源（CR），以及一些 ConfigMap（用作配置模板或脚本文件模板）、脚本文件、定义备份和恢复操作的自定义资源和 Grafana 仪表板 JSON 对象。
-
-KubeBlocks 的引擎插件将以 Helm chart 的形式打包和安装。用户安装某个数据库引擎插件后，可以在创建集群时引用该插件中包含的 ClusterDefinition CR 和 ComponentDefinition CR，从而创建相应数据库引擎的集群。
diff --git a/i18n/zh-cn/user-docs/overview/database-engines-supported.md b/i18n/zh-cn/user-docs/overview/database-engines-supported.md
deleted file mode 100644
index 9bf56298d..000000000
--- a/i18n/zh-cn/user-docs/overview/database-engines-supported.md
+++ /dev/null
@@ -1,208 +0,0 @@
----
-title: 支持的数据库类型
-description: KubeBlocks, kbcli, multicloud
-keywords: [kubeblocks, 简介, prometheus, s3, alertmanager]
-sidebar_position: 4
-sidebar_label: 支持的数据库类型
----
-
-# 支持的数据库类型
-
-KubeBlocks 是基于 Kubernetes 的云原生数据基础设施，可以帮助用户轻松构建关系型、NoSQL、流计算和向量型数据库服务。而这些数据库类型通常以插件（Addon）的形式添加到 KubeBlocks 中。除了支持数据库引擎外，KubeBlocks 还支持适配云环境的插件及其他应用。
-
-KubeBlocks 使用插件机制扩展对各种数据库引擎的支持，目前 KubeBlocks 存储库中提供了超过 30 个数据引擎插件，分类如下。
-
-KubeBlocks 默认安装并启用了部分引擎插件，对于其他未安装或未启用的引擎，您可参考[引擎安装文档](./../installation/install-addons.md)，安装或启用引擎。
-
-:::note
-
-- 以下表格中列出的版本可能不是最新版本，可通过 [KubeBlocks 引擎插件仓库](https://github.com/apecloud/kubeblocks-addons) 查看最新版本。
-- 升级功能是指 KubeBlocks 支持数据库内核小版本升级，例如，将 PostgreSQL 从 v12.14 升级至 v12.15。
-
-:::
-
-## 关系型数据库
-
-MySQL 和 PostgreSQL 是两大最受欢迎的开源关系型数据库，有诸多分支/变体。
-
-### MySQL 及其变体
-
-**引擎列表**
-
-| 引擎           | 简介                      |
-|:----------------|:---------------------------------|
-| mysql           | MySQL Addon 采用了 Oracle 官方发布的社区版 MySQL 镜像。 |
-| apecloud-mysql  | ApeCloud MySQL 是免费的、完全兼容的 MySQL Community Edition 替代，通过 RAFT 协议复制插件提供增强高可用性。该镜像由 ApeCloud 提供。ApeCloud MySQL 还包括名为 WeScale 的开源代理，提供读写分离和连接池等功能。 |
-| mariadb         | MariaDB 是高性能的开源关系型数据库管理系统，广泛用于 Web 和应用服务器。                    |
-
-**功能列表**
-
-| 引擎（v0.9.0）    |           已支持的版本           | 变配           | 水平伸缩          | 磁盘扩容 | 停止/启动集群   | 重启集群       | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:------------------:|:------------------------------:|:-------------:|:----------------:|:-------:|:-------------:|:------------:|:------:|:-------:|:----:|:------:|:---------------:|:------:|:------:|:----------:|
-| mysql              | <p>5.7.44</p><p>8.0.33</p><p>8.4.2</p> | ✔️     | ✔️                | ✔️       | ✔️             | ✔️            | ✔️      | ✔️       | ✔️    | ✔️      | N/A             | ✔️      | ✔️      | ✔️          |
-| apecloud-mysql     |             <p>8.0.30</p>              | ✔️     | ✔️                | ✔️       | ✔️             | ✔️            | ✔️      |✔️        | ✔️    | ✔️      | N/A             | ✔️      | ✔️      | ✔️          |
-| mariadb            |                10.6.15                 | ✔️     | N/A              | ✔️       | ✔️             | ✔️            | N/A    | N/A     | N/A  | N/A    | N/A             | N/A    | N/A    | N/A        |
-
-### PostgreSQL 及其变体
-
-**引擎列表**
-
-| 引擎          | 简介                                                                                                                                                                |
-|:----------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| postgresql      | PostgreSQL Addon 使用 Spilo 镜像和 Patroni 提供 PostgreSQL 服务，以实现高可用性（HA）。                                                                    |
-| apecloud-postgresql | ApeCloud PostgreSQL 是免费的、完全兼容的 PostgreSQL 替代，通过 RAFT 协议复制插件提供增强的高可用性。       |
-| vanilla-postgresql | 该 Addon 基于原版 PostgreSQL，为原生的PostgreSQL及variants提供高可用能力。|
-| oriolebd        | OrioleDB 是 PostgreSQL 的全新存储引擎，为该数据库平台带来了现代化的数据库容量、功能和性能。 |
-| neon            | Neon 是 Serverless 版的 Postgres。        |
-
-**功能列表**
-
-| 引擎（v0.9.0）    |           已支持的版本           | 变配           | 水平伸缩          | 磁盘扩容 | 停止/启动集群   | 重启集群       | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:----------------------------:|:-------------:|:-----------------:|:-------:|:-----------:|:----------------:|:------:|:-------:|:----:|:----:|:----------------:|:-------:|:------:|:----------:|
-| postgresql | <p>12.14.0</p><p>12.14.1</p><p>12.15.0</p><p>14.7.2</p><p>14.8.0</p><p>15.7.0</p>  | ✔️ | ✔️ | ✔️  | ✔️ | ✔️             | ✔️       | ✔️       | ✔️   | ✔️   | ✔️                   | ✔️      | ✔️       | ✔️         |
- apecloud-postgresql |     14.11.0                  | ✔️              | ✔️                | ✔️       | ✔️            | ✔️               | ✔️       | N/A     | N/A | N/A | N/A                | N/A     | N/A    | N/A        |
-| vanilla-postgresql |    <p>12.15.0</p><p>14.7.0</p><p>15.6.1138</p><p>15.7.0</p> | ✔️             | ✔️                | ✔️       | ✔️            | ✔️               | ✔️     | ✔️     | ✔️ | ✔️ | N/A                | ✔️     | ✔️      | ✔️      |
-| orioledb            |       14.7.2-beta1           | ✔️             | ✔️                | ✔️       | ✔️            | ✔️               | N/A     | N/A     | N/A | N/A | N/A                | N/A     | N/A      | N/A      |
-| neon | <p>neon-broker-1.0.0</p><p>neon-compute-1.0.0</p><p>neon-pageserver-1.0.0</p><p>neon-safekeeper-1.0.0</p> | ✔️ | N/A | N/A  | N/A  | N/A   | N/A    | N/A  | N/A  | N/A    | N/A     | N/A    | N/A  | N/A      |
-
-## NoSQL
-
-**引擎列表**
-
-| 引擎          | 简介                                |
-|:----------------|:-------------------------------------|
-| mongodb         | MongoDB 是面向文档的 NoSQL 数据库，用于存储大量数据。  |
-| redis           | Redis 是开源的、高性能的、键值对内存数据库。  |
-| etcd            | etcd 是高度一致的分布式键值存储，它提供了一种可靠的方式，存储需要由分布式系统或机器集群访问的数据。         |
-| zookeeper       | Apache ZooKeeper 是集中式服务，用于维护配置信息、命名、提供分布式同步以及提供组服务。                      |
-
-**功能列表**
-
-| 引擎（v0.9.0）    |           已支持的版本           | 变配           | 水平伸缩          | 磁盘扩容 | 停止/启动集群   | 重启集群       | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:----------------------------:|:-------------:|:-----------------:|:-------:|:-----------:|:----------------:|:------:|:-------:|:----:|:----:|:----------------:|:-------:|:------:|:----------:|
-| mongodb      |   <p>4.0.28</p><p>4.2.24</p><p>4.4.29</p><p>5.0.28</p><p>6.0.16</p><p>7.0.12</p>      | ✔️ | ✔️    | ✔️            | ✔️  | ✔️    | ✔️      | ✔️              | ✔️    | ✔️      | N/A   | N/A     | ✔️  | ✔️  |
-| redis  | <p>redis-7.0.6</p><p>redis-7.2.4</p><p>redis-cluster-7.0.6</p><p>redis-cluster-7.2.4</p><p>redis-sentinel-7.0.6</p><p>redis-sentinel-7.2.4</p><p>redis-twemproxy-0.5.0</p> | ✔️    | ✔️  | ✔️   | ✔️  | ✔️   | ✔️   | ✔️  | ✔️    | ✔️  | N/A  | ✔️  | ✔️   |✔️  |
-| etcd  |   <p>3.5.15</p><p>3.5.6</p>     | ✔️    | ✔️    | ✔️    | ✔️  | ✔️     | N/A    | N/A    | N/A  | N/A    | N/A    | N/A     | N/A      | N/A        |
-| zookeeper |    <p>3.4.14</p><p>3.6.4</p><p>3.7.2</p><p>3.8.4</p><p>3.9.2</p>   | ✔️  | ✔️   | ✔️     | ✔️    | ✔️  | N/A    | N/A     | ✔️    | ✔️      | N/A      | N/A     | N/A      | N/A        |
-
-## OLAP 系统
-
-**引擎列表**
-
-| 引擎             | 简介    |
-|:----------------|:-----------------------------------------|
-| elasticsearch   | Elasticsearch 是一个分布式、RESTful 风格的搜索引擎，专为生产规模的工作负载进行了速度和相关性能的优化。              |
-| starrocks-ce    | StarRocks 是一款高性能分析型数据仓库，支持多维、实时、高并发的数据分析。       |
-| clickhouse      | ClickHouse 是列式数据库，能够帮助用户使用 SQL 查询实时生成强大的分析功能。      |
-| opensearch      | opensearch 是一个开源、分布式、 RESTful 风格的搜索引擎。  |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| elasticsearch  |                       <p>7.10.1</p><p>7.7.1</p><p>7.8.1</p><p>8.1.3</p><p>8.8.2 </p>8.8.2                        | ✔️    | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-|  starrocks-ce  | <p>starrocks-ce-be-3.2.2</p><p>starrocks-ce-be-3.3.0</p><p>starrocks-ce-fe-3.2.2</p><p>starrocks-ce-fe-3.3.0</p> | ✔️      | ✔️   | ✔️  | ✔️    | ✔️        | N/A    | N/A       | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-|   clickhouse   |                                                      22.9.4                                                      | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| opensearch          |                                                      2.7.0                                                       | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## Distributed SQL Databases
-
-**引擎列表**
-
-| 引擎             | 简介                |
-|:----------------|:--------------------------------------------------|
-| tidb            | TiDB 是一个与 MySQL 兼容的分布式数据库，SQL 层采用 Go 语言开发，存储层基于 RocksDB，事务模型使用 Percolator。由 PingCap 提供。|
-| oceanbase-ce    | OceanBase 社区版是与 MySQL 兼容的分布式数据库，使用 C++ 开发。                           |
-| polardb-x       | PolarDB-X 社区版是与 MySQL 兼容的分布式数据库，支持基于 MySQL 的水平伸缩，由阿里云提供，是其开源版本。             |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| tidb   | <p>6.5.10</p><p>7.1.5</p><p>7.5.2</p><p>tidb-pd-6.5.10</p><p>tidb-pd-7.1.5</p><p>tidb-pd-7.5.2</p><p>tikv-6.5.10</p><p>tikv-7.1.5</p><p>tikv-7.5.2</p> | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| oceanbase           |                                                                         4.3.0                                                                          | N/A              | ✔️                | ✔️            | N/A              | N/A              |        | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| polardb-x           |                                                                          2.3                                                                           | ✔️                | ✔️                | N/A          | ✔️                | N/A              | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## 消息队列
-
-**引擎列表**
-
-| 引擎            | 简介                                                                                             |
-|:----------------|:---------------------------------------------------------------------------------------------|
-| kafka           | Apache Kafka 是开源的分布式事件流平台，广泛应用于高性能数据流水线、流式分析、数据集成和关键应用程序等场景，目前已经被数千家公司采用。 |
-| rabbitmq        | RabbitMQ 是可靠且成熟的消息和流处理代理。                          |
-| pulsar          | Apache Pulsar 是开源的、分布式消息流平台。                      |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| kafka               | <p>kafka-broker-3.3.2</p><p>kafka-combine-3.3.2</p><p>kafka-controller-3.3.2</p><p>kafka-exporter-1.6.0</p> | ✔️ | ✔️ | ✔️ | ✔️       | ✔️                | N/A    | N/A            | N/A  | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-| rabbitmq            | <p>3.13.2</p><p>3.12.14</p><p>3.11.28</p><p>3.10.25</p><p>3.9.29</p><p>3.8.14</p>    | ✔️   | ✔️  | ✔️            | ✔️                | ✔️                | ✔️      | N/A            | N/A  | N/A    | N/A                         |  由 RabbitMQ 管理系统管理     | ✔️      | ✔️        |
-| pulsar | <p>pulsar-bkrecovery-2.11.2</p><p>pulsar-bkrecovery-3.0.2</p><p>pulsar-bookkeeper-2.11.2</p><p>pulsar-bookkeeper-3.0.2</p><p>pulsar-broker-2.11.2</p><p>pulsar-broker-3.0.2</p><p>pulsar-proxy-2.11.2</p><p>pulsar-proxy-3.0.2</p><p>pulsar-zookeeper-2.11.2</p><p>pulsar-zookeeper-3.0.2</p>  | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-
-## 向量数据库
-
-**引擎列表**
-
-| 引擎             | 简介                                             |
-|:----------------|:------------------------------------------------|
-| qdrant          | Qdrant 是向量相似性搜索引擎和向量数据库。             |
-| weaviate        | Weaviate 是开源的向量数据库。                   |
-| milvus          | Milvus 是灵活、可靠且高性能的云原生开源向量数据库。 |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:---------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| qdrant  | <p>1.10.0</p><p>1.5.0</p><p>1.7.3</p><p>1.8.1</p><p>1.8.4</p>         | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | ✔️              | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| weaviate            | 1.23.1                                                    | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | ✔️      | N/A                         | N/A     | N/A      | N/A        |
-| milvus              | 2.3.2                                                     | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## 时序数据库
-
-**引擎列表**
-
-| 引擎             | 简介                                                                                         |
-|:----------------|:--------------------------------------------------------------------------------------------|
-| influxdb        | InfluxDB 作为专用的时序数据库，可执行实时分析，优化大型时序数据工作负载的处理和扩展。                    |
-| victoria-metrics  |  VictoriaMetrics 是快速、经济高效且可扩展的监控解决方案和时间序列数据库。                       |
-| greptimedb      | GreptimeDB 是云原生时间序列数据库，具有分布式、可扩展和高效的特性。                               |
-| tdengine        | TDengine™ 是专为工业物联网而搭建的工业大数据平台，结合了时序数据库和流处理、数据订阅和缓存等重要功能。 |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| influxdb            | 2.7.4                                                     | ✔️                | N/A              | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| victoria-metrics    | 1.0.0                                                     |                  |                  |              |                  |                  |        |                |      |        |                             |         |          |            |
-| greptimedb          | 0.3.2                                                     | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-| tdengine            | 3.0.5                                                     | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## 图数据库
-
-**引擎列表**
-
-| 引擎             | 简介                                                                          |
-|:----------------|:------------------------------------------------------------------------------|
-| nebula          | NebulaGraph 是开源的分布式图数据库，擅长处理具有千亿个顶点和万亿条边的超大规模数据集。 |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:-------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:----------------:|:----------------:|:------------:|:----------------:|:----------------:|:------:|:--------------:|:----:|:------:|:---------------------------:|:-------:|:--------:|:----------:|
-| nebula              | 3.5.0                                                     | ✔️                | ✔️                | ✔️            | ✔️                | ✔️                | N/A    | N/A            | N/A  | N/A    | N/A                         | N/A     | N/A      | N/A        |
-
-## 存储系统
-
-**引擎列表**
-
-| 引擎           | 简介    |
-|:----------------|:-------|
-| minio           | MinIO 是对象存储解决方案，它提供与 Amazon Web Services S3 兼容的 API 并支持 S3 所有核心功能。 |
-
-**功能列表**
-
-| 引擎（v0.9.0）     |                                                                             已支持的版本                                                                             | 变配           | 水平伸缩            | 磁盘扩容 | 停止/启动集群      | 重启集群         | 服务暴露 | 备份恢复 | 日志 | 配置 | 升级（数据库引擎版本） | 账号管理 | 故障恢复 | Switchover |
-|:------------------:|:------------------------------:|:-----:|:---------:|:------:|:-------------:|:--------:|:------:|:-------:|:----:|:------:|:------------------:|:-------:|:------:|:----------:|
-| minio              | RELEASE.2024-06-29T01-20-47Z   | ✔️     | N/A       | ✔️      | ✔️             | ✔️        | N/A    | N/A     | N/A  | N/A    | N/A                | N/A     | N/A    | N/A        |
diff --git a/i18n/zh-cn/user-docs/overview/introduction.md b/i18n/zh-cn/user-docs/overview/introduction.md
deleted file mode 100644
index 553a9692b..000000000
--- a/i18n/zh-cn/user-docs/overview/introduction.md
+++ /dev/null
@@ -1,241 +0,0 @@
----
-title: KubeBlocks 简介
-description: KubeBlocks, kbcli, multicloud
-keywords: [kubeblocks, 简介]
-sidebar_position: 2
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# KubeBlocks 简介
-
-## KubeBlocks 是什么？
-
-KubeBlocks 是一个开源的 Kubernetes 数据库 operator，能够帮助用户在 Kubernetes 上运行和管理多种类型的数据库。据我们所知，大多数数据库 operator 通常只能管理某种特定类型的数据库，例如：
-
-- CloudNativePG、Zalando、CrunchyData、StackGres operator 用于管理 PostgreSQL。
-- Strimzi 用于管理 Kafka。
-- Oracle 和 Percona MySQL operator 用于管理 MySQL。
-
-而 KubeBlocks 是一个通用的数据库 operator。这意味着在设计 KubeBlocks API 时，我们并没有将其与某种特定类型的数据库绑定。恰恰相反，我们抽象了各种数据库的通用特性，最终得到了一个通用的、与数据库引擎无关的 API。因此，围绕这个抽象 API 开发的 operator 实现也与具体的数据库引擎无关。
-
-![](./../../img/kubeblocks-general-purpose-arch.png)
-
-在上图中，Cluster、Component 和 InstanceSet 都是 KubeBlocks 提供的 CRD（自定义资源定义，Custom Resource Definition）。可参阅 [KubeBlocks 概念文档](./concept.md)，了解更多细节。
-
-KubeBlocks 提供了插件（Addon）API，支持集成各种数据库。例如，我们目前提供了以下 KubeBlocks 引擎插件，支持各类主流开源数据库引擎：
-
-- MySQL
-- PostgreSQL
-- Redis
-- MongoDB
-- Kafka
-- RabbitMQ
-- MinIO
-- Elasticsearch
-- StarRocks
-- Qdrant
-- Milvus
-- ZooKeeper
-- etcd
-- ...
-
-您可参阅 [KubeBlocks 支持的数据库引擎插件表格](./database-engines-supported.md)，查看支持的引擎及其功能的详细信息。
-
-凭借统一的 API，KubeBlocks 成为在 Kubernetes 上运行多种数据库的绝佳选择，可显著降低掌握多个 operator 所需的学习门槛。
-
-## 统一的 API 如何降低学习门槛
-
-以下是使用 KubeBlocks Cluster API 编写 YAML 文件并创建一个 MySQL 三副本集群的示例。
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1
-kind: Cluster
-metadata:
-  name: test-mysql
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: mysql
-    componentDef: apecloud-mysql
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-```
-
-然后，见证奇迹的时刻到了：只需对某些字段进行少量修改，就可以创建一个 PostgreSQL 两副本集群。同样的方法也适用于 MongoDB 和 Redis。Redis YAML 文件稍长一些，因为它创建了两个组件：redis-server 和 sentinel。而且这种方法可以适用于多种引擎。
-
-<Tabs>
-
-<TabItem value="PostgreSQL" label="PostgreSQL" default>
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: test-postgresql
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: postgresql
-    componentDef: postgresql
-    replicas: 2
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-```
-
-</TabItem>
-
-<TabItem value="MongoDB" label="MongoDB">
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: test-mongodb
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: mongodb
-    componentDef: mongodb
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-```
-
-</TabItem>
-
-<TabItem value="Redis" label="Redis">
-
-```yaml
-apiVersion: apps.kubeblocks.io/v1alpha1
-kind: Cluster
-metadata:
-  name: test-redis
-  namespace: default
-spec:
-  terminationPolicy: Delete
-  componentSpecs:
-  - name: redis
-    componentDef: redis-7
-    replicas: 2
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-    - name: data
-      spec:
-        accessModes:
-        - ReadWriteOnce
-        resources:
-          requests:
-            storage: 10Gi
-  - name: redis-sentinel
-    componentDef: redis-sentinel
-    replicas: 3
-    resources:
-      limits:
-        cpu: '0.5'
-        memory: 0.5Gi
-      requests:
-        cpu: '0.5'
-        memory: 0.5Gi
-    volumeClaimTemplates:
-      - name: data
-        spec:
-          accessModes:
-            - ReadWriteOnce
-          resources:
-            requests:
-              storage: 10Gi
-```
-
-</TabItem>
-
-</Tabs>
-
-统一的 API 意味着在 Kubernetes 上管理多种数据库变得简单、高效且标准化，这为您节省了大量原本需要花在查找手册和 API 参考文档上的时间。
-
-## 关键特性
-
-- 创建和销毁数据库集群。
-- 启动、停止和重启数据库集群。
-- 创建集群时，支持选择引擎插件提供的部署拓扑结构，例如，Redis 提供了基于 Sentinel 的读写分离或 Redis 集群拓扑；MySQL 提供了 Proxy 拓扑，可实现读写分离和高可用解决方案，如内置的 Raft 共识插件、外部 etcd 作为协调器，或 Orchestrator。
-- 支持在单个数据库集群中为多个副本分别配置不同的资源。例如，在一个 MySQL 集群中，主实例使用 8 个 CPU，而读副本使用 4 个 CPU。反观 Kubernetes 的 StatefulSet 则不支持这一能力。
-- 灵活的网络管理：
-  - 以动态的方式将数据库访问端点暴露为服务（ClusterIP、LoadBalancer、NodePort）。
-  - 支持 HostNetwork。
-  - 部分数据库支持通过 Smart Client 进行访问，该客户端会根据服务器返回的节点地址，将请求重新定向到其他节点或支持处理读写分离。Redis、MongoDB 及 Kafka 支持 Smart Client 访问模式。此外，部分数据库还支持实现副本间自动故障转移的客户端，如 etcd。对于这些数据库，KubeBlocks 还支持为每个 Pod （Pod Service）分配服务地址。
-- 支持丰富的 Day-2 运维操作：
-  - 水平伸缩（增加和减少副本数量）
-  - 变配（调整每个副本的 CPU 和内存资源）
-  - PVC 卷容量扩展
-  - 备份和恢复功能
-  - 配置变更（如果技术上存在可能，也支持热加载）
-  - 参数修改
-  - 主备切换
-  - 滚动升级
-  - 指定副本下线
-  - 小版本升级
-- 除了声明式 API 之外，KubeBlocks 还提供了 Ops API，用于在数据库集群上执行一次性运维任务。Ops API 还支持其他功能，如排队、并发控制、进度跟踪和操作回滚。
-- 可观测性：支持与 Prometheus 和 Grafana 集成。
-- KubeBlocks 提供了功能强大且直观的命令行工具 `kbcli`，使得在 Kubernetes 上操作 KubeBlocks CRs 更加简单，减少输入命令行的次数。对于熟悉 Kubernetes 的用户，也可以搭配 `kubectl` 使用 `kbcli`，用更简单的方式执行运维操作。
-
-## 部署架构
-
-下图展示了在云环境中部署 KubeBlocks 的典型架构图。
-
-Kubernetes 应部署在节点间可以通过网络相互通信的环境中（例如，在一个 VPC 内）。KubeBlocks operator 部署在专用的命名空间（kb-system）中，而数据库实例则部署在用户指定的命名空间中。
-
-在生产环境中，我们建议将 KubeBlocks operator 与数据库部署在不同的节点上（如果您也安装了Prometheus 和 Grafana，建议同样操作）。默认情况下，KubeBlocks 使用反亲和性规则调度数据库集群的多个副本，实现副本在不同节点上运行，以确保高可用性。用户还可以配置可用区（AZ）级别的反亲和性，以便将数据库副本分布在不同的可用区中，从而增强灾难恢复能力。
-
-每个数据库副本在各自的 Pod 中运行。除了运行数据库进程的容器外，Pod 还包括几个辅助容器：一个名为 `lorry` 的容器（从 KubeBlocks v1.0 开始将更名为 kbagent），用于执行 KubeBlocks 控制器（controller）的 Action 命令；另一个名为 `config-manager` 的容器（从 KubeBlocks v1.0 开始会合并到 kbagent 中），用于管理数据库配置文件并支持热更新。此外，数据库引擎插件也可能会有一个 exporter 容器，用于收集 Prometheus 监控所需的指标。
-
-![KubeBlocks 架构图](./../../img/kubeblocks-architecture-ha.png)
diff --git a/i18n/zh-cn/user-docs/overview/kubernetes_and_operator_101.md b/i18n/zh-cn/user-docs/overview/kubernetes_and_operator_101.md
deleted file mode 100644
index 2f1224573..000000000
--- a/i18n/zh-cn/user-docs/overview/kubernetes_and_operator_101.md
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: Kubernetes 及 Operator 入门
-description: K8s 入门知识 
-keywords: [K8s, operator, 概念]
-sidebar_position: 3
----
-
-# Kubernetes 及 Operator 入门
-
-# K8s
-
-什么是 Kubernetes？有人说它是一个容器编排系统，有人称它为分布式操作系统，有人认为它是一个多云的 PaaS（平台即服务）平台，还有人把它看作是构建 PaaS 解决方案的平台。
-
-本文将介绍 Kubernetes 的关键概念和构建模块。
-
-## K8s 控制平面（Control Plane）
-
-Kubernetes 控制平面是 Kubernetes 的大脑和心脏。它负责管理整个集群的运行，包括处理 API 请求、存储配置数据以及确保集群处于期望的状态。关键组件包括 API 服务器（API Server，负责通信）、etcd（存储所有集群数据）、控制器管理器（Controller Manager，确保集群处于期望的状态）、调度器（Scheduler，将工作负载分配给节点）以及云控制器管理器（Cloud Controller Manager，管理与云平台的集成，如负载均衡、存储和网络）。这些组件共同协调容器在集群中的部署、扩展和管理。
-
-## 节点（Node）
-
-有人将 Kubernetes 描述为一个分布式操作系统，能够管理多个节点。节点是集群中的物理或虚拟机器，作为集群中的工作单元。每个节点都运行一些核心服务，包括容器运行时（如 Docker 或 containerd）、kubelet 和 kube-proxy。kubelet 确保容器按 Pod 中的配置运行，而 Pod 是 Kubernetes 中最小的可部署单元。kube-proxy 处理网络路由，维护网络规则，并允许 Pod 和服务之间的通信。节点提供运行容器化应用所需的计算资源，并由 Kubernetes 主节点管理，主节点负责分配任务、监控节点健康状况并保持集群的期望状态。
-
-:::note
-
-在某些语境中，同时讨论 Kubernetes 和数据库时，“节点”一词可能会产生混淆。在 Kubernetes 中，“节点”指的是集群中作为工作单元的物理或虚拟机器，用于运行容器化应用。而在 Kubernetes 中运行数据库时，“数据库节点”一般是指承载数据库实例的 Pod。
-
-在 KubeBlocks 文档中，“节点”通常指的是数据库节点。如果我们指的是 Kubernetes 节点，我们将明确说明为“K8s 节点”以避免混淆。
-
-:::
-
-## kubelet
-
-kubelet 是 Kubernetes 控制平面用于管理集群中每个节点的代理。它确保 Pod 中的容器按 Kubernetes 控制平面定义的方式运行。kubelet 持续监控容器的状态，确保它们健康且按预期运行。如果容器失败，kubelet 会根据指定的策略尝试重启它。
-
-## Pod
-
-在 Kubernetes 中，Pod 在某种程度上类似于虚拟机，但更轻量和专用。它是 Kubernetes 中最小的可部署单元。
-
-Pod 代表一个或多个紧密耦合且需要协同工作的容器，以及共享存储（卷）、网络资源和运行容器的规范。这些容器可以使用本地地址（localhost）进行相互通信，并共享内存和存储等资源。
-
-Kubernetes 动态管理 Pods，确保它们按指定的方式运行，并在失败时自动重启或替换 Pods。Pods 可以分布在多个节点上以实现冗余，因此在 Kubernetes 中部署和管理容器化应用（包括数据库）时，Pods 是基础构件。
-
-## 存储类（Storage Class）
-
-在为 Pod 内的工作负载（例如数据库）创建磁盘时，您可能需要指定磁盘介质的类型，无论是 HDD 还是 SSD。在云环境中，通常会有更多的选项可供选择。例如，AWS EBS 提供多种卷类型，如通用 SSD（gp2/gp3）、预配置 IOPS SSD（io1/io2）和优化吞吐量的 HDD（st1）。在 Kubernetes 中，您可以通过存储类（StorageClass）选择所需的磁盘类型。
-
-## 持久卷声明（PVC）
-
-在 Kubernetes 中，持久卷声明（PVC，Persistent Volume Claim）是用户对存储的请求。PVC 本质上是请求具有特定特性的存储的一种方式，例如存储类、大小和访问模式（如读写或只读）。PVC 使 Pods 能够使用存储，而无需了解底层基础设施的详细信息。
-
-在 K8s 中，为了使用存储，用户会创建 PVC。创建 PVC 时，Kubernetes 会查找与请求匹配的 StorageClass。如果找到匹配的 StorageClass，Kubernetes 将根据定义的参数自动配置存储，无论是 SSD、HDD、EBS 还是 NAS。如果 PVC 未指定 StorageClass，Kubernetes 将使用默认的 StorageClass（如果已配置）来配置存储。
-
-## 容器存储接口（CSI）
-
-在 Kubernetes 中，通过容器存储接口（CSI，Container Storage Interface）提供各种存储类，CSI 负责为应用程序配置所需的底层存储“磁盘”。CSI 在 Kubernetes 中的功能类似于“磁盘驱动程序”，使平台能够适应并集成多种存储系统，如本地磁盘、AWS EBS 和 Ceph。这些存储类及其相关的存储资源由特定的 CSI 驱动程序提供，这些驱动程序处理与底层存储基础设施的交互。
-
-CSI 是标准 API，使 Kubernetes 能够以一致和可扩展的方式与各种存储系统进行交互。由存储供应商或 Kubernetes 社区创建的 CSI 驱动程序向 Kubernetes 暴露了动态配置、附加、挂载和快照等基本存储功能。
-
-当您在 Kubernetes 中定义一个 StorageClass 时，它通常会指定一个 CSI 驱动程序作为其配置器。这个驱动程序会根据 StorageClass 和相关持久卷声明（PVC）中的参数自动配置持久卷（PV），确保为您的应用程序提供适当类型和配置的存储，无论是 SSD、HDD 还是其他类型。
-
-## 持久卷（PV）
-
-在 Kubernetes 中，持久卷（PV，Persistent Volume）代表可以由多种系统（如本地磁盘、NFS 或基于云的存储，例如 AWS EBS、Google Cloud Persistent Disks）支持的存储资源，通常由不同的 CSI 驱动程序管理。
-
-PV 有自己独立于 Pod 的生命周期，由 Kubernetes 控制平面进行管理。即使关联的 Pod 被删除，PV 也允许数据持续存在。PV 与持久卷声明（PVC）绑定，PVC 请求特定的存储特性，如大小和访问模式，确保应用程序获得所需的存储。
-
-总之，PV 是实际的存储资源，而 PVC 是对存储的请求。通过 PVC 中的 StorageClass，PVC 可以绑定到由不同 CSI 驱动程序配置的 PV。
-
-## 服务（Service）
-
-在 Kubernetes 中，服务（Service）充当负载均衡器。它定义了一组逻辑上的 Pods，并提供了访问这些 Pods 的策略。由于 Pods 是短暂的，可能会动态创建和销毁，因此它们的 IP 地址并不稳定。服务通过提供一个稳定的网络端点（虚拟 IP 地址，称为 ClusterIP）解决了这个问题，该地址保持不变，使其他 Pods 或外部客户端能够与服务后面的 Pods 通信，而无需知道它们的具体 IP 地址。
-
-服务支持不同类型：ClusterIP（内部集群访问）、NodePort（通过 `<NodeIP>:<NodePort>` 进行外部访问）、LoadBalancer（使用云提供商的负载均衡器公开服务）、ExternalName（将服务映射到外部 DNS）。
-
-## ConfigMap
-
-ConfigMap 用于以键值对的形式存储配置信息，通过 ConfigMap，您能够将配置与应用程序代码解耦。通过这种方式，您可以单独管理应用程序设置，并在多个环境中复用它们。ConfigMaps 可用于将配置数据注入到 Pods 中，作为环境变量、命令行参数或配置文件。它们提供了一种灵活且方便的方式来管理应用程序配置，而无需将值直接硬编码到您的应用程序容器中。
-
-## Secret
-
-Secret 用于存储敏感数据，例如密码、令牌或加密密钥。Secrets 将机密信息与应用程序代码分开管理，避免在容器镜像中暴露敏感数据。Kubernetes Secrets 可以作为环境变量注入到 Pods 中，或作为文件挂载，确保以安全和受控的方式处理敏感信息。
-
-但 Secrets 默认情况下并不加密，它们只是进行 Base64 编码，并不能提供真正的加密。因此，仍需谨慎使用，确保适当的访问控制到位。
-
-## Custom Resource Definition (CRD)
-
-如果您希望使用 Kubernetes 管理数据库对象，则需要扩展 Kubernetes API，以描述您正在管理的数据库对象。这就是 CRD（Custom Resource Definition）机制的用途所在，CRD 支持定义特定用例的自定义资源，如数据库集群或备份，并以 K8s 原生的方式管理资源。
-
-## 自定义资源（CR）
-
-自定义资源（CR，Custom Resource）是 CRD 的实例。它表示扩展 Kubernetes API 的特定配置或对象。CR 允许您使用 Kubernetes 的原生工具定义和管理自定义资源，例如数据库或应用程序。一旦创建了 CR，Kubernetes 控制器或 Operator 会开始监控，并执行操作以保持所需状态。
-
-CRD 和 CR 是开发 Kubernetes Operator 的基础。CRDs 通常用于实现自定义控制器或 Operator，允许持续监视 CR 的变化（例如，表示数据库集群的 CR），并自动执行相应的操作。
-
-## 什么是 Kubernetes Operator?
-
-Kubernetes Operator 是一种软件，通常由一个或多个控制器组成，自动管理复杂应用程序，通过将对面向定义资源（CR）所做的更改转换为面向 Kubernetes 原生对象（如 Pods、Services、PVCs、ConfigMaps 和 Secrets）的操作。
-
-- 输入：用户修改 CR。
-- 输出：根据管理应用程序的要求，对应修改底层 Kubernetes 资源或与外部系统（例如，写入数据库或调用 API）。
-
-Operator 持续监视这些 Kubernetes 对象的状态。当发生变化（例如，Pod 崩溃）时，Operator 会自动采取纠正措施，例如重新创建 Pod 或调整流量（例如，更新 Service Endpoints）。
-
-本质上，Kubernetes Operator 将复杂的操作知识封装到软件中，自动化任务，如部署、扩展、升级和备份，确保应用程序在无需人工干预的情况下持续保持所需状态。
-
-## Helm 和 Helm Chart
-
-Helm 是流行的 Kubernetes 包管理工具，帮助管理和部署应用程序。Helm 将所有必要的 Kubernetes 资源打包到 Helm Chart 中，支持通过单个命令（helm install）安装应用程序。Helm 还支持处理配置管理和更新（helm upgrade），简化应用程序的生命周期管理。
-
-Helm Chart 的关键组件：
-
-- 模板（Templates）：包含占位符的 YAML 文件，定义 Kubernetes 资源（如 Pods、Services 和 ConfigMaps）。
-- values.yaml：用户可通过该 YAML 文件指定模板的默认值，用于自定义参数值。Helm 支持使用现有的 chart，通过 values.yaml 或命令行标志覆盖默认值，在不修改底层模板的情况下实现某种环境特定的配置。
-- Chart.yaml：chart 的元数据，包括名称、版本和描述。
-
-Helm 可与 CI/CD 工具（如 Jenkins、GitLab CI 和 GitHub Actions）集成。Helm 可以作为持续交付管道的一部分，用于自动化部署和回滚，确保应用程序在不同环境中部署的一致性。
diff --git a/i18n/zh-cn/user-docs/try-out-on-playground/_category_.yml b/i18n/zh-cn/user-docs/try-out-on-playground/_category_.yml
deleted file mode 100644
index d316d0182..000000000
--- a/i18n/zh-cn/user-docs/try-out-on-playground/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 2
-label: 试用 KubeBlocks
-collapsible: true 
-collapsed: true
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/try-out-on-playground/try-kubeblocks-on-cloud.md b/i18n/zh-cn/user-docs/try-out-on-playground/try-kubeblocks-on-cloud.md
deleted file mode 100644
index 1c7845ad8..000000000
--- a/i18n/zh-cn/user-docs/try-out-on-playground/try-kubeblocks-on-cloud.md
+++ /dev/null
@@ -1,463 +0,0 @@
----
-title: 在云上使用 KubeBlocks
-description: KubeBlocks, kbcli, multicloud
-keywords: [kubeblocks, 简介]
-sidebar_position: 1
-sidebar_label: 在云上使用 KubeBlocks
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 在云上使用 KubeBlocks
-
-本文档将引导你快速上手 KubeBlocks，并演示如何通过命令创建演示环境（Playground）。
-
-## 准备工作
-
-在云上部署需要使用 [Terraform 脚本](https://github.com/apecloud/cloud-provider)来初始化云资源。`kbcli` 会自动下载并保存该脚本，然后使用 Terraform 命令来创建一个完全托管的 Kubernetes 集群，并在该集群上部署 KubeBlocks。
-
-
-<Tabs>
-<TabItem value="AWS" label="AWS" default>
-
-### 开始之前
-
-请确保已经：
-
-- [安装 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。
-- [安装 kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)。
-- [安装 kbcli](./../installation/install-kbcli.md)。
-
-### 配置访问密钥
-
-**选项 1.** 使用 `aws configure`
-
-填写访问密钥，并执行以下命令进行身份验证。
-
-```bash
-aws configure
-AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
-AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
-```
-
-你可以参考[配置 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config) 获取详细信息。
-
-**选项 2.** 使用环境变量
-
-```bash
-export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY_ID"
-export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_ACCESS_KEY"
-```
-
-### 初始化 Playground
-
-```bash
-kbcli playground init --cloud-provider aws --region us-west-2
-```
-- `cloud-provider` 用于指定云服务商。
-- `region` 用于指定部署 Kubernetes 集群的地区。
-  你可以在[官方网站](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/?nc1=h_ls)上找到地区列表。
-
-在初始化过程中，`kbcli` 会将 [GitHub 仓库](https://github.com/apecloud/cloud-provider)克隆到 `~/.kbcli/playground` 目录，安装 KubeBlocks，并创建一个 MySQL 集群。执行 `kbcli playground init` 命令后，kbcli 会自动将 kubeconfig 的 context 切换到新的 Kubernetes 集群。
-
-执行以下命令以查看创建的集群。
-
-```bash
-# 查看 kbcli 版本
-kbcli version
-
-# 查看集群列表
-kbcli cluster list
-```
-
-:::note
-
-整个初始化过程大约需要 20 分钟。如果长时间未安装成功，建议检查网络环境。
-
-:::
-
-</TabItem>
-<TabItem value="GCP" label="GCP">
-
-###  开始之前
-
-请确保已经：
-- 拥有 Google Cloud 账户。
-- [安装 kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)。
-- [安装 kbcli](./../installation/install-kbcli.md)。
-
-### 配置 GCP 环境
-
-***步骤：***
-
-1. 安装 Google Cloud SDK。
-
-   ```bash
-   # macOS 安装 brew
-   brew install --cask google-cloud-sdk
-
-   # windows
-   choco install gcloudsdk
-   ```
-
-2. 初始化 GCP。
-
-   ```bash
-   gcloud init
-   ```
-
-3. 登录 GCP。
-
-   ```bash
-   gcloud auth application-default login
-   ```
-
-4. 配置 GOOGLE_PROJECT 环境变量，`kbcli playground` 会在该项目中创建 GKE 集群。
-
-   ```bash
-   export GOOGLE_PROJECT=<project-name>
-   ```
-
-### 初始化 Playground
-
-执行以下命令，在 GCP 的 `us-central1` 地区部署一个 GKE 服务，并安装 KubeBlocks。
-
-```bash
-kbcli playground init --cloud-provider gcp --region us-central1
-```
-
-* `cloud-provider` 用于指定云服务商。
-* `region` 用于指定部署 Kubernetes 集群的地区。
-
-在初始化过程中，`kbcli` 会将 [GitHub 仓库](https://github.com/apecloud/cloud-provider)克隆到目录 `~/.kbcli/playground`，安装 KubeBlocks，并创建一个 MySQL 集群。执行 kbcli playground init 命令后，kbcli 会自动将 kubeconfig 的 context 切换到新的 Kubernetes 集群。
-
-执行以下命令以查看创建的集群。
-
-```bash
-# 查看 kbcli 版本
-kbcli version
-
-# 查看集群列表 
-kbcli cluster list
-```
-
-:::note
-
-整个初始化过程大约需要 20 分钟。如果长时间未安装成功，建议检查网络环境。
-
-:::
-
-</TabItem> 
-<TabItem value="腾讯云" label="腾讯云">
-
-### 开始之前
-
-请确保已经：
-- 拥有腾讯云账户。
-- [安装 kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)。
-- [安装 kbcli](./../installation/install-kbcli.md)。
-
-### 配置 TKE 环境
-
-***步骤：***
-1. 登录腾讯云。
-2. 前往[容器服务控制台](https://console.cloud.tencent.com/tke2)授权资源操作权限。
-3. 前往[访问管理控制台](https://console.cloud.tencent.com/cam/overview)-> **访问密钥** -> **API 密钥管理**。点击**创建密钥**来生成一对 Secret ID 和 Secret Key。
-4. 将 Secret ID 和 Secret Key 添加到环境变量中。
-
-   ```bash
-   export TENCENTCLOUD_SECRET_ID=YOUR_SECRET_ID
-   export TENCENTCLOUD_SECRET_KEY=YOUR_SECRET_KEY
-   ```
-
-### 初始化 Playground
-
-在腾讯云的 `ap-chengdu` 可用区部署一个 Kubernetes 服务，并安装 KubeBlocks。
-
-```bash
-kbcli playground init --cloud-provider tencentcloud --region ap-chengdu
-```
-
-- `cloud-provider` 用于指定云服务商。
-- `region` 用于指定部署 Kubernetes 集群的地区。
-
-在初始化过程中，`kbcli` 会将 [GitHub 仓库](https://github.com/apecloud/cloud-provider)克隆到目录`~/.kbcli/playground`，安装 KubeBlocks，并创建一个 MySQL 集群。执行 `kbcli playground init` 命令后，kbcli 会自动将 kubeconfig 的 context 切换到新的 Kubernetes 集群。
-
-执行以下命令以查看创建的集群。
-
-```bash
-# 查看 kbcli 版本
-kbcli version
-
-# 查看集群列表
-kbcli cluster list
-```
-
-:::note
-
-整个初始化过程大约需要 20 分钟。如果长时间未安装成功，建议检查网络环境。
-
-:::
-
-</TabItem>
-<TabItem value="阿里云" label="阿里云">
-
-### 开始之前
-
-请确保已经：
-- 拥有阿里云账户。
-- [安装 kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)。
-- [安装 kbcli](./../installation/install-kbcli.md)。
-
-### 配置 ACK 环境
-
-***步骤：***
-1. 登录阿里云。
-2. 按照[首次使用容器服务 Kubernetes 版](https://www.alibabacloud.com/help/en/container-service-for-kubernetes/latest/quick-start-for-first-time-users)，检查是否已激活 ACK 并分配角色。
-
-   :::note
-
-   在中国大陆地区部署阿里云的用户，请参考[相应指南](https://help.aliyun.com/document_detail/161387.htm?spm=a2c4g.85903.0.0.478d2246FdHMGt#task-2470091)。
-
-   :::
-3. 点击 [AliyunOOSLifecycleHook4CSRole](https://ram.console.aliyun.com/role/authorize?spm=5176.2020520152.0.0.5b4716ddI6QevL&request=%7B%22ReturnUrl%22%3A%22https%3A%2F%2Fram.console.aliyun.com%22%2C%22Services%22%3A%5B%7B%22Roles%22%3A%5B%7B%22RoleName%22%3A%22AliyunOOSLifecycleHook4CSRole%22%2C%22TemplateId%22%3A%22AliyunOOSLifecycleHook4CSRole%22%7D%5D%2C%22Service%22%3A%22OOS%22%7D%5D%7D)，点击**同意授权**以创建一个 AliyunOOSLifecycleHook4CSRole 角色。
-
-   创建 ACK 集群时，需要创建和管理节点池，因此需要创建 AliyunOOSLifecycleHook4CSRole 角色，为 OOS 运维编排服务授权以访问其他云产品中的资源（详情请参考[官方文档](https://www.alibabacloud.com/help/zh/container-service-for-kubernetes/latest/scale-up-and-down-node-pools)）。
-4. 创建 AccessKey ID 和对应的 AccessKey 密钥。
-   
-   1. 进入[阿里云管理控制台](https://homenew.console.aliyun.com/home/dashboard/ProductAndService)。将鼠标悬停在账户中心处，点击 **AccessKey 管理**。
-       ![AccessKey Management](../../img/try-kb-on-cloud-accesskey-management.png)
-   2. 点击**创建 AccessKey**，创建 AccessKey ID 和对应的 AccessKey 密钥。
-   3. 将 AccessKey ID 和 AccessKey 密钥添加到环境变量中，以配置身份授权信息。
-
-      ```bash
-      export ALICLOUD_ACCESS_KEY="YOUR_ACCESS_KEY"
-      export ALICLOUD_SECRET_KEY="YOUR_SECRET_KEY"
-      ```
-
-   :::note
-
-   详情请参考[创建 AccessKey](https://www.alibabacloud.com/help/en/resource-access-management/latest/accesskey-pairs-create-an-accesskey-pair-for-a-ram-user)。
-
-   :::
-
-### 初始化 Playground
-
-执行以下命令，在阿里云的 cn-hangzhou 地区部署一个 ACK 集群，并安装 KubeBlocks。
-
-```bash
-kbcli playground init --cloud-provider alicloud --region cn-hangzhou
-```
-- `cloud-provider` 用于指定云服务商。
-- `region` 用于指定部署 Kubernetes 集群的地区。
-
-在初始化过程中，`kbcli` 会将 [GitHub 仓库](https://github.com/apecloud/cloud-provider)克隆到目录`~/.kbcli/playground`，安装 KubeBlocks，并创建一个 MySQL 集群。执行 `kbcli playground init` 命令后，kbcli 会自动将 kubeconfig 的当前 context 切换到新的 Kubernetes 集群。
-
-执行以下命令以查看创建的集群。
-
-```bash
-# 查看 kbcli 版本
-kbcli version
-
-# 查看集群列表
-kbcli cluster list
-```
-
-:::note
-
-整个初始化过程大约需要 20 分钟。如果长时间未安装成功，建议检查网络环境。
-
-:::
-
-</TabItem>
-</Tabs>
-
-## 在 Playground 中使用 KubeBlocks
-
-你可以根据以下说明，体验 KubeBlocks 的基本功能。
-
-### 查看 MySQL 集群
-
-***步骤：***
-
-1. 查看数据库集群列表。
-
-    ```bash
-    kbcli cluster list
-    ```
-
-2. 查看数据库集群的详细信息，比如 `STATUS`，`Endpoints`，`Topology`，`Images` 和 `Events`。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-### 访问 MySQL 集群
-
-**选项 1.** 通过容器网络连接数据库
-
-等待该集群的状态变为 `Running`，然后执行 `kbcli cluster connect` 来访问指定的数据库集群。例如:
-
-```bash
-kbcli cluster connect mycluster
-```
-
-**选项 2.** 远程连接数据库
-
-***步骤：***
-
-1. 获取连接凭证。
-
-   ```bash
-   kbcli cluster connect --show-example --show-password --client=cli mycluster
-   ```
-2. 执行 `port-forward`。
-
-   ```bash
-   kubectl port-forward service/mycluster-mysql 3306:3306
-   >
-   Forwarding from 127.0.0.1:3306 -> 3306
-   Forwarding from [::1]:3306 -> 3306
-   ```
-3. 打开一个新的终端，连接数据库集群。
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306 -u root -p"******"
-   >
-   ...
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql> show databases;
-   >
-   +--------------------+
-   | Database           |
-   +--------------------+
-   | information_schema |
-   | mydb               |
-   | mysql              |
-   | performance_schema |
-   | sys                |
-   +--------------------+
-   5 rows in set (0.02 sec)
-   ```
-
-### MySQL 的高可用性
-
-下面通过简单的故障模拟，展示 MySQL 的故障恢复能力。
-
-#### 删除 MySQL 单机版
-
-首先删除 MySQL 单机版。
-
-```bash
-kbcli cluster delete mycluster
-```
-
-#### 创建 MySQL 集群版
-
-使用 `kbcli` 创建一个 MySQL 集群版，下面使用默认配置创建：
-
-```bash
-kbcli cluster create --cluster-definition='apecloud-mysql' --set replicas=3
-```
-
-#### 模拟 Leader Pod 故障恢复
-
-下面通过删除 Leader Pod 来模拟故障。
-
-***步骤:***
-
-1. 确保新创建的集群状态为 `Running`。
-
-   ```bash
-   kbcli cluster list
-   ```
-
-2. 在 `Topology` 中找到 Leader Pod 的名称。在这个示例中，Leader Pod 的名称是 maple05-mysql-1。
-
-   ```bash
-   kbcli cluster describe maple05
-   >
-   Name: maple05         Created Time: Jan 27,2023 17:33 UTC+0800
-   NAMESPACE        CLUSTER-DEFINITION        VERSION                STATUS         TERMINATION-POLICY
-   default          apecloud-mysql            ac-mysql-8.0.30        Running        WipeOut
-
-   Endpoints:
-   COMPONENT        MODE             INTERNAL                EXTERNAL
-   mysql            ReadWrite        10.43.29.51:3306        <none>
-
-   Topology:
-   COMPONENT        INSTANCE               ROLE            STATUS         AZ            NODE                                                 CREATED-TIME
-   mysql            maple05-mysql-1        leader          Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-2        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-0        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-
-   Resources Allocation:
-   COMPONENT        DEDICATED        CPU(REQUEST/LIMIT)        MEMORY(REQUEST/LIMIT)        STORAGE-SIZE        STORAGE-CLASS
-   mysql            false            <none>                    <none>                       <none>              <none>
-
-   Images:
-   COMPONENT        TYPE         IMAGE
-   mysql            mysql        docker.io/apecloud/wesql-server:8.0.30-5.alpha2.20230105.gd6b8719
-
-   Events(last 5 warnings, see more:kbcli cluster list-events -n default mycluster):
-   TIME        TYPE        REASON        OBJECT        MESSAGE
-   ```
-
-3. 删除 Leader Pod。
-
-   ```bash
-   kubectl delete pod maple05-mysql-1
-   >
-   pod "maple05-mysql-1" deleted
-   ```
-
-4. 连接 MySQL 集群版，只需几秒就可成功。
-
-   ```bash
-   kbcli cluster connect maple05
-   >
-   Connect to instance maple05-mysql-2: out of maple05-mysql-2(leader), maple05-mysql-1(follower), maple05-mysql-0(follower)
-   Welcome to the MySQL monitor.  Commands end with ; or \g.
-   Your MySQL connection id is 33
-   Server version: 8.0.30 WeSQL Server - GPL, Release 5, Revision d6b8719
-
-   Copyright (c) 2000, 2022, Oracle and/or its affiliates.
-
-   Oracle is a registered trademark of Oracle Corporation and/or its
-   affiliates. Other names may be trademarks of their respective
-   owners.
-
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql>
-   ```
-
-## 销毁 Playground
-
-1. 在销毁 Playground 之前，建议删除 KubeBlocks 创建的数据库集群。
-
-   ```bash
-   # 查看所有集群
-   kbcli cluster list -A
-
-   # 删除一个集群
-   # 需要进行二次确认，或者可以添加 --auto-approve 自动确认
-   kbcli cluster delete <name>
-
-   # 卸载 KubeBlocks
-   # 需要进行二次确认，或者可以添加 --auto-approve 自动确认
-   kbcli kubeblocks uninstall --remove-pvcs --remove-pvs
-   ```
-
-2. 销毁 Playground。
-
-   ```bash
-   kbcli playground destroy 
-   ```
-
-:::caution
-
-`kbcli playground destroy` 会直接销毁云上的 Kubernetes 集群。但是云上可能还有一些残留资源，例如卷和快照等。请及时删除，避免不必要的费用。
-:::
diff --git a/i18n/zh-cn/user-docs/try-out-on-playground/try-kubeblocks-on-local-host.md b/i18n/zh-cn/user-docs/try-out-on-playground/try-kubeblocks-on-local-host.md
deleted file mode 100644
index 7f0de2fe3..000000000
--- a/i18n/zh-cn/user-docs/try-out-on-playground/try-kubeblocks-on-local-host.md
+++ /dev/null
@@ -1,291 +0,0 @@
----
-title: 在本地使用 KubeBlocks
-description: KubeBlocks, kbcli, multicloud
-keywords: [kubeblocks, 简介]
-sidebar_position: 2
-sidebar_label: 在本地使用 KubeBlocks
----
-
-# 在本地使用 KubeBlocks
-
-本文档将引导你快速入门 KubeBlocks，并演示如何通过命令创建演示环境（Playground）。
-
-## 准备工作
-
-在开始之前，请确保已经满足以下条件。
-
-* 系统最低要求：
-
-  * CPU：4 核，可使用 `sysctl hw.physicalcpu` 命令查看 CPU；
-  * RAM：4 GB，使用 `top -d` 命令查看内存。
-
-* 在电脑上已安装：
-  * [Docker](https://docs.docker.com/get-docker/)：v20.10.5（runc ≥ v1.0.0-rc93）或更高版本；
-  * [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)：用于与 Kubernetes 集群进行交互；
-  * [kbcli](./../installation/install-kbcli.md)：用于 Playground 和 KubeBlocks 之间的交互。
-
-## 初始化 Playground
-
-***步骤：***
-
-1. 安装 Playground。
-
-   ```bash
-   kbcli playground init
-   ```
-
-   该命令执行以下操作：
-   1. 在使用 [K3d](https://k3d.io/v5.4.6/) 的容器中创建一个 Kubernetes 集群。
-   2. 在 K3d 集群中部署 KubeBlocks。
-   3. 创建 MySQL 单机版集群。
-
-   :::note
-
-   * 如果之前执行过 `kbcli playground init` 但是失败了，再次执行该命令可能会导致报错。请先执行 `kbcli playground destroy` 清理环境，再执行 `kbcli playground init`。
-   * 如果在 Windows 上执行 Playground 并报以下错误，这是因为受到了 Windows 11 的安全策略的影响。你操作的 `kbcli.exe` 可能经过第三方篡改（或者是你在 Windows 上通过 source build 出的 kbcli）。
-   
-   ```bash
-   error: failed to set up k3d cluster: failed to create k3d cluster kb-playground: Failed Cluster Start: Failed to start server k3d-kb-playground-server-0: Node k3d-kb-playground-server-0 failed to get ready: error waiting for log line `k3s is up and running` from node 'k3d-kb-playground-server-0': stopped returning log lines
-   ```
-
-      解决方案：
-      1. 卸载或删除当前的 `kbcli.exe` 文件。
-      2. 使用 `winget` 下载最新的 kbcli，或者访问 KubeBlocks 的 [GitHub 发布页面](https://github.com/apecloud/kubeblocks/releases)重新下载 kbcli。
-   :::
-
-2. 反复检查 MySQL 集群，直到状态变为 `Running`。
-
-   ```bash
-   kbcli cluster list
-   ```
-
-   ***结果***
-
-   在默认命名空间中创建了一个名为 `mycluster` 的集群，你可以在安装成功的提示语下可以看到用户指南。执行 `kbcli playground init -h` 可以再次查看此指南。
-
-## 在 Playground 中使用 KubeBlocks
-
-现在就可以开启你的 KubeBlocks 之旅了。你可以尝试 KubeBlocks的基本功能，包括[查看 MySQL 集群](#查看-mysql-集群)、[访问 MySQL 集群](#访问-mysql-集群)、[观测 MySQL 集群](#观测-mysql-集群)和 [MySQL 的高可用性](#mysql-的高可用性)等等。
-
-### 查看 MySQL 集群
-
-***步骤：***
-
-1. 查看数据库集群列表。
-
-    ```bash
-    kbcli cluster list
-    ```
-
-2. 查看集群的详细信息，例如 `STATUS`、`Endpoints`、`Topology`、`Images` 和 `Events`。
-
-    ```bash
-    kbcli cluster describe mycluster
-    ```
-
-### 访问 MySQL 集群
-
-**选项 1.** 通过容器网络连接数据库
-
-等待该集群的状态变为 `Running`，然后执行 `kbcli cluster connect` 来访问指定的数据库集群。例如，
-
-```bash
-kbcli cluster connect mycluster
-```
-
-**选项 2.** 通过主机网络连接数据库
-
-***步骤：***
-
-1. 获取连接凭证。
-
-   ```bash
-   kbcli cluster connect --show-example --show-password --client=cli mycluster
-   ```
-
-2. 执行 `port-forward`。
-
-   ```bash
-   kubectl port-forward service/mycluster-mysql 3306:3306
-   >
-   Forwarding from 127.0.0.1:3306 -> 3306
-   Forwarding from [::1]:3306 -> 3306
-   ```
-
-3. 打开一个新的终端，连接数据库集群。
-
-   ```bash
-   mysql -h 127.0.0.1 -P 3306 -u root -paiImelyt
-   >
-   ...
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql> show databases;
-   >
-   +--------------------+
-   | Database           |
-   +--------------------+
-   | information_schema |
-   | mydb               |
-   | mysql              |
-   | performance_schema |
-   | sys                |
-   +--------------------+
-   5 rows in set (0.02 sec)
-   ```
-
-### MySQL 的高可用性
-
-下面通过简单的故障模拟，展示 MySQL 的故障恢复能力。
-
-#### 删除 MySQL 单机版
-
-首先删除 MySQL 单机版。
-
-```bash
-kbcli cluster delete mycluster
-```
-
-#### 创建 MySQL 集群版
-
-使用 `kbcli` 创建一个 MySQL 集群版，下面使用默认配置创建：
-
-```bash
-kbcli cluster create --cluster-definition='apecloud-mysql' --set replicas=3
-```
-
-#### 模拟 Leader Pod 故障恢复
-
-下面通过删除 Leader Pod 来模拟故障。
-
-***步骤：***
-
-1. 确保新创建的集群状态为 `Running`。
-
-   ```bash
-   kbcli cluster list
-   ```
-
-2. 在 `Topology` 中找到 Leader Pod 的名称。在这个示例中，Leader Pod 的名称是 maple05-mysql-1。
-
-   ```bash
-   kbcli cluster describe maple05
-   >
-   Name: maple05         Created Time: Jan 27,2023 17:33 UTC+0800
-   NAMESPACE        CLUSTER-DEFINITION        VERSION                STATUS         TERMINATION-POLICY
-   default          apecloud-mysql            ac-mysql-8.0.30        Running        WipeOut
-
-   Endpoints:
-   COMPONENT        MODE             INTERNAL                EXTERNAL
-   mysql            ReadWrite        10.43.29.51:3306        <none>
-
-   Topology:
-   COMPONENT        INSTANCE               ROLE            STATUS         AZ            NODE                                                 CREATED-TIME
-   mysql            maple05-mysql-1        leader          Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-2        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-   mysql            maple05-mysql-0        follower        Running        <none>        k3d-kubeblocks-playground-server-0/172.20.0.3        Jan 30,2023 17:33 UTC+0800
-
-   Resources Allocation:
-   COMPONENT        DEDICATED        CPU(REQUEST/LIMIT)        MEMORY(REQUEST/LIMIT)        STORAGE-SIZE        STORAGE-CLASS
-   mysql            false            <none>                    <none>                       <none>              <none>
-
-   Images:
-   COMPONENT        TYPE         IMAGE
-   mysql            mysql        docker.io/apecloud/wesql-server:8.0.30-5.alpha2.20230105.gd6b8719
-
-   Events(last 5 warnings, see more:kbcli cluster list-events -n default mycluster):
-   TIME        TYPE        REASON        OBJECT        MESSAGE
-   ```
-
-3. 删除 Leader Pod。
-
-   ```bash
-   kubectl delete pod maple05-mysql-1
-   >
-   pod "maple05-mysql-1" deleted
-   ```
-
-4. 连接 MySQL 集群版，只需几秒就可成功。
-
-   ```bash
-   kbcli cluster connect maple05
-   >
-   Connect to instance maple05-mysql-2: out of maple05-mysql-2(leader), maple05-mysql-1(follower), maple05-mysql-0(follower)
-   Welcome to the MySQL monitor.  Commands end with ; or \g.
-   Your MySQL connection id is 33
-   Server version: 8.0.30 WeSQL Server - GPL, Release 5, Revision d6b8719
-
-   Copyright (c) 2000, 2022, Oracle and/or its affiliates.
-
-   Oracle is a registered trademark of Oracle Corporation and/or its
-   affiliates. Other names may be trademarks of their respective
-   owners.
-
-   Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
-
-   mysql>
-   ```
-
-#### 用彩虹猫演示可用性故障
-
-上面的例子主要使用了 `kbcli cluster connect` 来测试可用性，但我们不容易看到实际发生的变化。
-
-下面用 NON-STOP NYAN CAT 来直观地进行展示。NON-STOP NYAN CAT 是一款 demo 应用程序，用来观察数据库集群异常对业务带来的影响。它提供动画和实时信息展示，可以直观表现数据库服务的可用性影响。
-
-***步骤：***
-
-1. 安装 NYAN CAT demo 程序。
-
-   ```bash
-   kbcli addon enable nyancat
-   ```
-
-   <details>
-
-   <summary>预期输出</summary>
-
-   ```bash
-   addon.extensions.kubeblocks.io/nyancat enabled
-   ```
-
-   </details>
-
-2. 检查 NYAN CAT 插件的状态，当状态为 `Enabled` 时，表示该应用程序已准备就绪。
-
-   ```bash
-   kbcli addon list | grep nyancat 
-   ```
-
-3. 打开网页。
-
-   ```bash
-   kbcli dashboard open kubeblocks-nyancat
-   ```
-
-4. 在另一个终端选项卡中删除 Leader Pod，然后通过 NYAN CAT 页面查看对集群的影响。
-
-   ```bash
-   kubectl delete pod maple05-mysql-1
-   ```
-
-   ![NYAN CAT](../../img/try-kb-on-local-nyancat.png)
-
-5. 卸载 NYAN CAT demo 程序。
-
-   ```bash
-   kbcli addon disable nyancat
-   ```
-
-## 销毁 Playground
-
-销毁 Playground 后，相关资源和数据将被清理：
-
-* 删除所有 KubeBlocks 数据库集群；
-* 卸载 KubeBlocks；
-* 删除由 K3d 创建的 Kubernetes 集群。
-
-销毁 Playground。
-
-```bash
-kbcli playground destroy
-```
diff --git a/i18n/zh-cn/user-docs/upgrade-kubeblocks/_category_.yml b/i18n/zh-cn/user-docs/upgrade-kubeblocks/_category_.yml
deleted file mode 100644
index a18ced527..000000000
--- a/i18n/zh-cn/user-docs/upgrade-kubeblocks/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 4
-label: 升级 KubeBlocks
-collapsible: true 
-collapsed: true 
\ No newline at end of file
diff --git a/i18n/zh-cn/user-docs/upgrade-kubeblocks/faq.md b/i18n/zh-cn/user-docs/upgrade-kubeblocks/faq.md
deleted file mode 100644
index e32dcb804..000000000
--- a/i18n/zh-cn/user-docs/upgrade-kubeblocks/faq.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-title: FAQ
-description: 升级, faq
-keywords: [升级, FAQ, KubeBlocks, 升级指南]
-sidebar_position: 4
-sidebar_label: FAQ
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# FAQ
-
-本文档罗列了 KubeBlocks 升级中常见的问题及解决方法。
-
-## 手动标记引擎
-
-KubeBlocks 早期版本在 Helm chart 中预装了一些引擎，但在新版本中，部分预装引擎可能被移除。此时，如果基于早期版本直接升级至最新版本，这些被移除引擎的 CR 也会被 Helm 移除，这些引擎创建的数据库集群也将受到影响。因此，升级 KubeBlocks 时，可通过为引擎添加 `"helm.sh/resource-policy": "keep"` 注解，确保相关引擎在升级过程中不会被移除。
-
-### 查看引擎注解
-
-执行以下命令，查看引擎注解。
-
-```bash
-kubectl get addon -o json | jq '.items[] | {name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-```
-
-### 手动为引擎添加注解
-
-可以将以下命令中的 `-l app.kubernetes.io/name=kubeblocks` 替换为所需的筛选项。
-
-```bash
-kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-```
-
-如果想为某个引擎单独添加注解，可执行以下命令，替换 `{addonName}` 为需要的引擎。
-
-```bash
-kubectl annotate addons.extensions.kubeblocks.io {addonName} helm.sh/resource-policy=keep
-```
-
-如果想查看某个引擎是否成功添加了注解，可以执行以下命令，将 `{addonName}` 替换为需要的引擎。
-
-```bash
-kubectl get addon {addonName} -o json | jq '{name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-```
-
-## 解决 "cannot patch 'kubeblocks-dataprotection' with kind Deployment" 问题
-
-升级到 KubeBlocks v0.8.x/v0.9.x时，可能会出现以下报错：
-
-```bash
-Error: UPGRADE FAILED: cannot patch "kubeblocks-dataprotection" with kind Deployment: Deployment.apps "kubeblocks-dataprotection" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/component":"dataprotection", "app.kubernetes.io/instance":"kubeblocks", "app.kubernetes.io/name":"kubeblocks"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable && cannot patch "kubeblocks" with kind Deployment: Deployment.apps "kubeblocks" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/component":"apps", "app.kubernetes.io/instance":"kubeblocks", "app.kubernetes.io/name":"kubeblocks"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable
-```
-
-这是因为 KubeBlocks v0.9 修改了 KubeBlocks 和 KubeBlocks-DataProtection 的标签。
-
-如果出现这种错误，可以先手动删除 `kubeblocks` 和 `kubeblocks-dataprotection` 这两个 deployment，然后再执行 `helm upgrade` 升级到 KubeBlocks v0.9.x。
-
-```bash
-# 水平缩容至 0 replica
-kubectl -n kb-system scale deployment kubeblocks --replicas 0
-kubectl -n kb-system scale deployment kubeblocks-dataprotection --replicas 0
-
-# 删除 deployments
-kubectl delete -n kb-system deployments.apps kubeblocks kubeblocks-dataprotection
-```
-
-## 升级时如何指定镜像仓库
-
-从 v0.9.0 开始，KubeBlocks 使用的镜像仓库中，有一个仓库地址发生了变化，该仓库的前缀从 `infracreate-registry` 更新为 `apecloud-registry`。其他镜像仓库不受影响。建议安装了 KubeBlocks v0.8.0 及之前版本的用户在升级到 v0.9.x 之前，先检查当前的镜像仓库配置，并在升级时指定新的镜像仓库地址。
-
-1. 检查 KubeBlocks 使用的镜像仓库。
-
-   ```bash
-   helm -n kb-system get values kubeblocks -a | yq .image.registry
-   ```
-
-   如果输出的镜像仓库是以 `infracreate-registry` 开头（如下所示），您需要在升级 KubeBlocks 时指定新的镜像仓库，将前缀改为 `apecloud-registry`。
-
-   <details>
-
-   <summary>Output</summary>
-
-   ```text
-   infracreate-registry.cn-xxx.xxx.com
-   ```
-
-   </details>
-
-2. 升级 KubeBlocks 时，可以通过以下参数指定修改默认镜像。
-
-   <Tabs>
-
-   <TabItem value="Helm" label="Helm" default>
-
-   ```bash
-   helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.2 \
-     --set admissionWebhooks.enabled=true \
-     --set admissionWebhooks.ignoreReplicasCheck=true \
-     --set image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set dataProtection.image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set addonChartsImage.registry=apecloud-registry.cn-xxx.xxx.com
-   ```
-
-   </TabItem>
-
-   <TabItem value="kbcli" label="kbcli">
-
-   ```bash
-   kbcli kb upgrade --version 0.9.2 \
-     --set admissionWebhooks.enabled=true \
-     --set admissionWebhooks.ignoreReplicasCheck=true \
-     --set image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set dataProtection.image.registry=apecloud-registry.cn-xxx.xxx.com \
-     --set addonChartsImage.registry=apecloud-registry.cn-xxx.xxx.com
-   ```
-
-   </TabItem>
-
-   </Tabs>
-
-   以下为上述命令的参数说明：
-
-   - `--set image.registry=apecloud-registry.cn-xxx.xxx.com` 设置 KubeBlocks 镜像仓库。
-   - `--set dataProtection.image.registry=apecloud-registry.cn-xxx.xxx.com` 设置 KubeBlocks-DataProtection 镜像仓库。
-   - `--set addonChartsImage.registry=apecloud-registry.cn-xxx.xxx.com` 设置 addon Charts 镜像仓库。
diff --git a/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.8.md b/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.8.md
deleted file mode 100644
index 64c01de1d..000000000
--- a/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.8.md
+++ /dev/null
@@ -1,117 +0,0 @@
----
-title: 升级至 v0.8.x
-description: 升级至 KubeBlocks v0.8, 升级操作
-keywords: [升级, 0.8]
-draft: true
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 升级到 KubeBlocks v0.8.x
-
-本文档介绍如何从低版本 KubeBlocks 升级至 KubeBlocks 0.8 版本。
-
-:::note
-
-在升级前，请先执行 `helm -n kb-system list | grep kubeblocks` 或者 `kbcli version` 查看正在使用的 KubeBlocks 版本，并根据不同版本，执行升级操作。
-
-:::
-
-## 从 v0.7 升级
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. 设置 keepAddons。
-
-    KubeBlocks v0.8 精简了默认安装的引擎，将引擎从 KubeBlocks operator 分离到了 KubeBlocks 引擎插件代码仓库中，例如 greptime，influxdb，neon，oracle-mysql，orioledb，tdengine，mariadb，nebula，risingwave，starrocks，tidb，zookeeper。为避免升级时将已经在使用的引擎资源删除，请先执行如下命令。
-
-    - 查看当前 KubeBlocks 版本。
-
-       ```bash
-       helm -n kb-system list | grep kubeblocks
-       ```
-
-    - 查看并添加引擎注解。
-
-        执行如下命令，查看引擎注解中是否添加了 `"helm.sh/resource-policy": "keep"`。
-
-        ```bash
-        kubectl get addon -o json | jq '.items[] | {name: .metadata.name, annotations: .metadata.annotations}'
-        ```
-
-        如果没有该注解，可以手动执行以下命令，为引擎添加注解。可以将 `-l app.kubernetes.io/name=kubeblocks` 替换为您所需的过滤条件。
-
-        ```bash
-        kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-        ```
-
-2. 安装 CRD。
-
-    为避免 KubeBlocks 的 Helm chart 过大，v0.8 版本将 CRD 从 Helm chart 中移除了，升级前需要先安装 CRD。
-
-    ```bash
-    kubectl replace -f https://github.com/apecloud/kubeblocks/releases/download/v0.8.1/kubeblocks_crds.yaml
-    ```
-
-3. 升级 KubeBlocks。
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.8.1 --set dataProtection.image.datasafed.tag=0.1.0
-    ```
-
-:::note
-
-为避免影响已有的数据库集群，升级 KubeBlocks 至 v0.8 时，默认不会升级已经安装的引擎版本。如果要将引擎升级至 KubeBlocks v0.8 内置引擎的版本，可以执行如下命令。注意，该操作可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-```bash
-helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.8.1 --set upgradeAddons=true
-```
-
-:::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 下载 kbcli v0.8 版本。
-
-    ```shell
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.8.1
-    ```
-
-2. 升级 KubeBlocks。
-
-    ```shell
-
-    kbcli kb upgrade --version 0.8.1 --set dataProtection.image.datasafed.tag=0.1.0
-
-    ```
-
-    kbcli 会默认为已有 addon 添加 annotation `"helm.sh/resource-policy": "keep"`，确保升级过程中已有的 addon 不会被删除。
-
-</TabItem>
-
-</Tabs>
-
-## 从 v0.6 版本升级
-
-如果当前使用的是 KubeBlocks v0.6 版本，请先将 KubeBlocks 升级至 v0.7.2 版本，操作如下：
-
-1. 下载 kbcli v0.7.2 版本。
-
-    ```shell
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.7.2
-    ```
-
-2. 升级至 KubeBlocks v0.7.2。
-
-    ```shell
-    kbcli kb upgrade --version 0.7.2
-    ```
-
-## FAQ
-
-可查看 [FAQ](./faq.md)，了解并解决升级 KubeBlocks 过程中的常见问题。如果您还遇到了其他问题，可以[提交 issue](https://github.com/apecloud/kubeblocks/issues/new/choose) 或者在 [GitHub 讨论区](https://github.com/apecloud/kubeblocks/discussions)提交您的问题。
diff --git a/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.9.0.md b/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.9.0.md
deleted file mode 100644
index baecb3e2e..000000000
--- a/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.9.0.md
+++ /dev/null
@@ -1,173 +0,0 @@
----
-title: 升级至 v0.9.0
-description: 升级至 KubeBlocks v0.9.0, 升级操作
-keywords: [升级, 0.9.0]
-draft: true
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 升级到 KubeBlocks v0.9.0
-
-本文档将介绍如何升级至 KubeBlocks v0.9.0。
-
-:::note
-
-在升级前，请先执行 `helm -n kb-system list | grep kubeblocks` 查看正在使用的 KubeBlocks 版本，并根据不同版本，执行升级操作。
-
-:::
-
-## 兼容性说明
-
-KubeBlocks 0.9.0 可以兼容 KubeBlocks 0.8 的 API，但不保证兼容 0.8 之前版本的 API，如果您正在使用 KubeBlocks 0.7 或者更老版本的引擎（版本号为 `0.7.x`, `0.6.x`），请务必参考 [0.8 升级文档](https://github.com/apecloud/kubeblocks/blob/main/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.8.md)将 KubeBlocks 升级至 0.8 并将所有引擎升级至 0.8，以确保升级至 0.9.0 版本后服务的可用性。
-
-## 从 v0.8 版本升级
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. 为引擎添加 `"helm.sh/resource-policy": "keep"` 注解。
-
-    KubeBlocks v0.8 对默认安装的引擎做了精简。添加 `"helm.sh/resource-policy": "keep"` 注解可以避免升级时删除已经在使用的引擎资源。
-
-    执行以下命令，为引擎添加 `"helm.sh/resource-policy": "keep"` 注解。可以将 `-l app.kubernetes.io/name=kubeblocks` 替换为您所需的过滤条件。
-
-    ```bash
-    kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-    ```
-
-    查看引擎中是否已包含 `"helm.sh/resource-policy": "keep"`。
-
-    ```bash
-    kubectl get addon -o json | jq '.items[] | {name: .metadata.name, annotations: .metadata.annotations}'
-    ```
-
-2. 删除不兼容的 OpsDefinition。
-
-   ```bash
-   kubectl delete opsdefinitions.apps.kubeblocks.io kafka-quota kafka-topic kafka-user-acl switchover
-   ```
-
-3. 安装 StorageProvider CRD。
-
-   如果网络较慢，建议先下载 CRD YAML 文件到本地，再执行操作。
-
-    ```shell
-    kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.0/dataprotection.kubeblocks.io_storageproviders.yaml
-    ```
-
-4. 升级 KubeBlocks。
-
-    ```shell
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.0
-    ```
-
-    :::note
-
-    避免影响已有的数据库集群，升级 KubeBlocks 至 v0.9.0 时，默认不会升级已经安装的引擎版本，如果要将引擎版本至 KubeBlocks v0.9 内置引擎的版本，可以执行如下命令，这可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.0 \
-      --set upgradeAddons=true
-    ```
-
-    :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 下载 kbcli v0.9.0。
-
-    ```shell
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.9.0
-    ```
-
-2. 升级 KubeBlocks。
-
-    ```bash
-    kbcli kb upgrade --version 0.9.0 
-    ```
-
-    :::note
-
-    为避免影响已有的数据库集群，升级 KubeBlocks 至 v0.9.0 时，默认不会升级已经安装的引擎版本，如果要升级引擎版本至 KubeBlocks v0.9.0 内置引擎的版本，可以执行如下命令，这可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-    ```bash
-    kbcli kb upgrade --version 0.9.0 --set upgradeAddons=true
-    ```
-
-    :::
-
-    kbcli 会默认为已有引擎添加 `"helm.sh/resource-policy": "keep"` 注解，确保升级过程中已有引擎不会被删除。
-
-</TabItem>
-
-</Tabs>
-
-## 升级引擎
-
-为了使用 v0.9.0 的 API，如果在上述步骤中，没有指定 `upgradeAddons`，或者您的引擎不在默认引擎列表里，可使用如下方式升级引擎。
-
-:::note
-
-- 如果您使用的引擎是 MySQL, 需要升级引擎并重启集群，否则 KubeBlocks v0.8 创建的集群将无法在 v0.9.0 中使用。
-
-- 如果您要使用 `clickhouse/milvus/elasticsearch/llm` 等引擎，需要升级 KubeBlocks 之后，再升级引擎，否则无法在 v0.9.0 正常使用。
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-```bash
-# 添加 Helm 仓库
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-
-# 如果无法访问 Github 或者访问速度过慢，可使用以下仓库地址
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-
-# 更新 Helm 仓库
-helm repo update
-
-# 升级引擎
-helm upgrade -i xxx kubeblocks-addons/xxx --version x.y.z -n kb-system  
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-# 查看引擎索引列表
-kbcli addon index list
-
-# 更新某一个索引， 默认的是 kubeblocks
-kbcli addon index update kubeblocks
-
-# 检索可用的引擎版本
-kbcli addon search {addon-name}
-
-# 安装引擎
-kbcli addon install {addon-name} --version x.y.z
-
-# 更新引擎到指定版本
-kbcli addon upgrade {addon-name} --version x.y.z
-
-# 强制更新引擎到指定版本
-kbcli addon upgrade {addon-name} --version x.y.z --force
-
-# 查看指定引擎版本
-kbcli addon list | grep {addon-name}
-```
-
-</TabItem>
-
-</Tabs>
-
-## FAQ
-
-可查看 [FAQ](./faq.md)，了解并解决升级 KubeBlocks 过程中的常见问题。如果您还遇到了其他问题，可以[提交 issue](https://github.com/apecloud/kubeblocks/issues/new/choose) 或者在 [GitHub 讨论区](https://github.com/apecloud/kubeblocks/discussions)提交您的问题。
diff --git a/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-latest-version.md b/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-latest-version.md
deleted file mode 100644
index 78cb7d715..000000000
--- a/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-latest-version.md
+++ /dev/null
@@ -1,301 +0,0 @@
----
-title: 升级至 v0.9.3
-description: KubeBlocks v0.9.3
-keywords: [升级, 0.9.3, Helm]
-sidebar_position: 1
-sidebar_label: 升级至 v0.9.3
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-
-# 升级到 KubeBlocks v0.9.3
-
-本文档将介绍如何从不同版本升级至 KubeBlocks v0.9.3。
-
-:::note
-
-- 升级前，请查看当前 KubeBlocks 的版本，并根据不同版本，执行升级操作。
-   执行 `helm -n kb-system list | grep kubeblocks` 或 `kbcli version`。
-- 如需升级到其他版本，可参考以下操作指南：
-   - 如需升级至 v0.9.2 或 v0.9.1，可按照本文档中的步骤操作，将版本号对应替换为 v0.9.2 或 v0.9.1。
-   - [v0.9.0 升级指南](https://github.com/apecloud/kubeblocks/blob/main/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.9.0.md).
-   - [v0.8.x 升级指南](https://github.com/apecloud/kubeblocks/blob/main/i18n/zh-cn/user-docs/upgrade-kubeblocks/upgrade-to-0.8.md).
-
-   建议安装最新版本，以体验全新功能及更优性能。
-
-:::
-
-## 兼容性说明
-
-KubeBlocks v0.9.3 可以兼容 KubeBlocks v0.8 的 API，但不保证兼容 v0.8 之前版本的 API，如果您正在使用 KubeBlocks v0.7 或者更老版本的引擎（版本号为 `0.7.x`, `0.6.x`），请务必参考 [v0.8 升级文档](https://github.com/apecloud/kubeblocks/blob/main/docs/user_docs/upgrade-kubeblocks/upgrade-to-0.8.md)将 KubeBlocks 升级至 v0.8 并将所有引擎升级至 0.8，以确保升级至 v0.9 版本后服务的可用性。
-
-如果您是从 v0.8 升级到 v0.9，需要打开 webhook，以确保可用性。
-
-## 从 v0.9.x 升级
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. 查看引擎，确认引擎是否已添加 `"helm.sh/resource-policy": "keep"` 注解。
-
-    KubeBlocks 对默认安装的引擎做了精简。添加 `"helm.sh/resource-policy": "keep"` 注解，以避免升级时删除已经在使用的引擎资源。
-
-    查看引擎中是否添加了 `"helm.sh/resource-policy": "keep"`。
-
-    ```bash
-    kubectl get addon -o json | jq '.items[] | {name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-    ```
-
-    如果没有该注解，可以手动执行以下命令，为引擎添加注解。可以把 `-l app.kubernetes.io/name=kubeblocks` 替换为您所需的过滤条件。
-
-    ```bash
-    kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-    ```
-
-2. 安装 CRD。
-
-    为避免 KubeBlocks Helm Chart 过大，0.8 版本将 CRD 从 Helm Chart 中移除了，升级前需要先安装 CRD。
-
-    ```bash
-    kubectl replace -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.3/kubeblocks_crds.yaml
-    ```
-
-3. 升级 KubeBlocks。
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 --set crd.enabled=false
-    ```
-
-    KubeBlocks v0.9.0/v0.9.1/v0.9.2 到 v0.9.3 的升级不涉及 API 变更，可通过设置 `--set crd.enabled=false` 跳过 API 升级任务。
-
-    :::warning
-
-    为避免影响已有的数据库集群，升级 KubeBlocks 至 v0.9.3 时，默认不会升级已经安装的引擎版本，如果要升级引擎版本至 KubeBlocks v0.9.3 内置引擎的版本，可以执行如下命令，这可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 \
-      --set upgradeAddons=true \
-      --set crd.enabled=false
-    ```
-
-    :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 下载 kbcli v0.9.3。
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.9.3
-    ```
-
-2. 升级 KubeBlocks。
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3
-    ```
-
-    :::warning
-
-    为避免影响已有的数据库集群，升级 KubeBlocks 至 v0.9.3 时，默认不会升级已经安装的引擎版本，如果要升级引擎版本至 KubeBlocks v0.9.3 内置引擎的版本，可以执行如下命令，这可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3 --set upgradeAddons=true
-    ```
-
-    :::
-
-   kbcli 会默认为已有引擎添加 `"helm.sh/resource-policy": "keep"` 注解，确保升级过程中已有引擎不会被删除。
-
-</TabItem>
-
-</Tabs>
-
-## 从 v0.8.x 升级
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-1. 查看引擎，确认引擎是否已添加 `"helm.sh/resource-policy": "keep"` 注解。
-
-    KubeBlocks 对默认安装的引擎做了精简。添加 `"helm.sh/resource-policy": "keep"` 注解可以避免升级时删除已经在使用的引擎资源。
-
-    查看引擎中是否添加了 `"helm.sh/resource-policy": "keep"`。
-
-    ```bash
-    kubectl get addon -o json | jq '.items[] | {name: .metadata.name, resource_policy: .metadata.annotations["helm.sh/resource-policy"]}'
-    ```
-
-    如果没有该注解，可以手动执行以下命令，为引擎添加注解。可以将 `-l app.kubernetes.io/name=kubeblocks` 替换为您所需的过滤条件。
-
-    ```bash
-    kubectl annotate addons.extensions.kubeblocks.io -l app.kubernetes.io/name=kubeblocks helm.sh/resource-policy=keep
-    ```
-
-2. 删除不兼容的 OpsDefinition。
-
-   ```bash
-   kubectl delete opsdefinitions.apps.kubeblocks.io kafka-quota kafka-topic kafka-user-acl switchover
-   ```
-
-3. 安装 CRD。
-
-    为避免 KubeBlocks Helm Chart 过大，0.8 版本将 CRD 从 Helm Chart 中移除了，变更了 StorageProvider 的 group。升级前，需要先安装 StorageProvider CRD。
-
-    如果网络较慢，建议先下载 CRD YAML 文件到本地，再执行操作。
-
-    ```bash
-    kubectl create -f https://github.com/apecloud/kubeblocks/releases/download/v0.9.3/dataprotection.kubeblocks.io_storageproviders.yaml
-    ```
-
-4. 升级 KubeBlocks。
-
-    请关注以下选项：
-
-    - 设置 `admissionWebhooks.enabled=true` 将启动 webhook，用于 ConfigConstraint API 多版本转换。
-    - 设置 `admissionWebhooks.ignoreReplicasCheck=true` 默认只有在 3 副本部署 KubeBlocks 时才可开启 webhook。若只部署单副本 KubeBlocks，可配置该变量跳过检查。
-    - 如果您当前运行的 KubeBlocks 使用的镜像仓库是以 `infracreate-registry`开头，升级时请显式设置镜像仓库。具体可参考 [FAQ 中镜像仓库章节](./faq.md#升级时如何指定镜像仓库)
-
-    ```bash
-    helm repo add kubeblocks https://apecloud.github.io/helm-charts
-
-    helm repo update kubeblocks
-
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true
-    ```
-
-    :::warning
-
-    为避免影响已有的数据库集群，升级 KubeBlocks 至 v0.9.3 时，默认不会升级已经安装的引擎版本，如果要升级引擎版本至 KubeBlocks v0.9.3 内置引擎的版本，可以执行如下命令，这可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-    ```bash
-    helm -n kb-system upgrade kubeblocks kubeblocks/kubeblocks --version 0.9.3 \
-      --set upgradeAddons=true \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true 
-    ```
-
-    :::
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-1. 下载 kbcli v0.9.3。
-
-    ```bash
-    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash -s 0.9.3
-    ```
-
-2. 升级 KubeBlocks。
-
-    查看 kbcli 版本，确保您使用的 kbcli 版本为 v0.9.3。
-
-    ```bash
-    kbcli version
-    ```
-
-    请关注以下选项：
-
-    - 设置 `admissionWebhooks.enabled=true` 将启动 webhook，用于 ConfigConstraint API 多版本转换。
-    - 设置 `admissionWebhooks.ignoreReplicasCheck=true` 默认只有在 3 副本部署 KubeBlocks 时才可开启 webhook。若只部署单副本 KubeBlocks，可配置该变量跳过检查。
-    - 如果您当前运行的 KubeBlocks 使用的镜像仓库是以 `infracreate-registry` 开头，升级时请显式设置镜像仓库。具体可参考 [FAQ 中镜像仓库章节](./faq.md#升级时如何指定镜像仓库)。
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3 \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true
-    ```
-
-    :::warning
-
-    为避免影响已有的数据库集群，升级 KubeBlocks 至 v0.9.3 时，默认不会升级已经安装的引擎版本，如果要升级引擎版本至 KubeBlocks v0.9.3 内置引擎的版本，可以执行如下命令，这可能导致已有集群发生重启，影响可用性，请务必谨慎操作。
-
-    ```bash
-    kbcli kb upgrade --version 0.9.3 \
-      --set upgradeAddons=true \
-      --set admissionWebhooks.enabled=true \
-      --set admissionWebhooks.ignoreReplicasCheck=true
-    ```
-
-    :::
-
-    kbcli 会默认为已有引擎添加 `"helm.sh/resource-policy": "keep"` 注解，确保升级过程中已有引擎不会被删除。
-
-</TabItem>
-
-</Tabs>
-
-## 升级引擎
-
-如果您在上述步骤中，没有将 `upgradeAddons` 指定为 `true`，或者您想要使用的引擎不在默认列表中，但您想要使用 v0.9.3 API，可使用如下方式升级引擎。
-
-:::note
-
-- 如果要升级的引擎是 `mysql`，需要先升级引擎并重启集群。否则使用 KubeBlocks v0.8.x 创建的集群将无法在 v0.9.3 中正常运行。
-
-- 如果您想要升级 `clickhouse/milvus/elasticsearch/llm`，您需要先升级 KubeBlocks，再升级引擎，否在将无法在 v0.9.3 中正常使用。
-
-:::
-
-<Tabs>
-
-<TabItem value="Helm" label="Helm" default>
-
-```bash
-# 添加 Helm 仓库
-helm repo add kubeblocks-addons https://apecloud.github.io/helm-charts
-
-# 如果无法访问 Github 或者访问速度过慢，可使用以下仓库地址
-helm repo add kubeblocks-addons https://jihulab.com/api/v4/projects/150246/packages/helm/stable
-
-# 更新 Helm 仓库
-helm repo update
-
-# 检索可用的引擎版本
-helm search repo kubeblocks-addons/{addon-name} --versions --devel 
-
-# 更新引擎版本
-helm upgrade -i {addon-release-name} kubeblocks-addons/{addon-name} --version x.y.z -n kb-system   
-```
-
-</TabItem>
-
-<TabItem value="kbcli" label="kbcli">
-
-```bash
-# 查看引擎索引列表
-kbcli addon index list
-
-# 更新某一个索引， 默认的是 kubeblocks
-kbcli addon index update kubeblocks
-
-# 检索可用的引擎版本
-kbcli addon search {addon-name}
-
-# 安装引擎
-kbcli addon install {addon-name} --version x.y.z
-
-# 更新引擎到指定版本
-kbcli addon upgrade {addon-name} --version x.y.z
-
-# 强制更新引擎到指定版本
-kbcli addon upgrade {addon-name} --version x.y.z --force
-
-# 查看指定引擎版本
-kbcli addon list | grep {addon-name}
-```
-
-</TabItem>
-
-</Tabs>
-
-## FAQ
-
-可查看 [FAQ](./faq.md)，了解并解决升级 KubeBlocks 过程中的常见问题。如果您还遇到了其他问题，可以[提交 issue](https://github.com/apecloud/kubeblocks/issues/new/choose) 或者在 [GitHub 讨论区](https://github.com/apecloud/kubeblocks/discussions)提交您的问题。
diff --git a/i18n/zh-cn/user-docs/user-management/_category_.yml b/i18n/zh-cn/user-docs/user-management/_category_.yml
deleted file mode 100644
index ec27cfe7b..000000000
--- a/i18n/zh-cn/user-docs/user-management/_category_.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-position: 9
-label: 用户管理
-collapsible: true 
-collapsed: true
diff --git a/i18n/zh-cn/user-docs/user-management/manage-user-accounts.md b/i18n/zh-cn/user-docs/user-management/manage-user-accounts.md
deleted file mode 100644
index 2c5b34a83..000000000
--- a/i18n/zh-cn/user-docs/user-management/manage-user-accounts.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-title: 管理账户
-description: 如何管理账户
-keywords: [账户管理]
-sidebar_position: 1
-sidebar_label: 管理账户
----
-
-# 管理账户
-
-KubeBlocks 提供了多种服务增强数据库集群的可用性、易用性和可观测性。不同组件所需要的用户权限不同。
-
-***步骤***
-
-- 创建账户。
-  
-  ```bash
-  kbcli cluster create-account <clustername> --name <username> --password <pwd> 
-  ```
-
-- 授予角色。
-
-  ```bash
-  kbcli cluster grant-role  <clustername> --name <username> --role <rolename>
-  ```
-
-  KubeBlocks提供了三个级别的角色。
-  - Superuser：具有所有权限。
-  - ReadWrite：具有读和写权限。
-  - ReadOnly：只具有读权限。
-
-  不同的数据库引擎的权限有所不同。详情请参阅下表。
-
-    | 角色      | MySQL    | PostgreSQL | Redis  |
-    | :------   | :------- | :------    | :----- |
-    | Superuser | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE ON * a user | ALTER USER WITH SUPERUSER | +@ALL allkeys|
-    | ReadWrite | GRANT SELECT, INSERT, DELETE ON * TO a user | GRANT pg_write_all_data TO a user | -@ALL +@Write +@READ allkeys |
-    | ReadOnly  | GRANT SELECT, SHOW VIEW ON * TO a user | GRANT pg_read_all_data TO a user | -@ALL +@READ allkeys |
-
-- 检查角色级别。
-  
-  ```bash
-  kbcli cluster describe-account <clustername> --name <username>
-  ```
-
-- 撤销账户角色。
-
-  ```bash
-  kbcli cluster revoke-role <clustername> --name <name> --role <rolename> 
-  ```
-
-- 列出所有账户。
-
-  ```bash
-  kbcli cluster list-accounts  <clustername>  
-  ```
-
-  :::note
-
-  出于安全原因，`list-accounts` 命令不显示所有账户。符合某些规则的高权限账户（例如操作账户和超级用户账户）会被隐藏。参考下表查看隐藏账户。
-
-  :::
-
-  | 数据库     | 隐藏账户                            |
-  |------------|-------------------------------------|
-  | MySQL      | root <br />kb* <br />Localhost = '' |
-  | PostgreSQL | Postgres <br />kb*                  |
-
-- 删除账户。
-
-  ```bash
-  kbcli cluster delete-account <clustername> --name <username> 
-  ```



Test patch:
diff --git a/examples/milvus/test/milvus_example.py b/examples/milvus/test/milvus_example.py
new file mode 100644
index 000000000..9fe0a987b
--- /dev/null
+++ b/examples/milvus/test/milvus_example.py
@@ -0,0 +1,85 @@
+from pymilvus import connections, FieldSchema, CollectionSchema, DataType, Collection, utility
+
+# 1. Connect to Milvus
+def connect_to_milvus():
+    connections.connect("default", host="localhost", port="19530")
+    print("Connected to Milvus.")
+
+# 2. Create Collection
+def create_collection(collection_name):
+    fields = [
+        FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
+        FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
+    ]
+
+    # define schema
+    schema = CollectionSchema(fields, "example collection")
+
+    # create collection
+    collection = Collection(collection_name, schema)
+    print(f"Collection '{collection_name}' created.")
+    return collection
+
+# 3. insert data
+def insert_data(collection, num_entities):
+    import numpy as np
+    embeddings = np.random.random((num_entities, 128)).tolist()
+    entities = [
+        embeddings
+    ]
+    collection.insert(entities)
+    print(f"Inserted {num_entities} entities into the collection.")
+
+# 4. create index
+def create_index(collection, field_name):
+    index_params = {
+        "index_type": "IVF_FLAT",
+        "metric_type": "L2",
+        "params": {"nlist": 128}
+    }
+    collection.create_index(field_name, index_params)
+    print(f"Index created on field '{field_name}'.")
+
+# 5. load collection
+def load_collection(collection):
+    collection.load()
+    print("Collection loaded into memory.")
+
+# 6. search
+def simple_query(collection, query_vector):
+    search_params = {
+        "metric_type": "L2",
+        "params": {"nprobe": 10}
+    }
+    results = collection.search(query_vector, "embedding", search_params, limit=10)
+    print("Query results:")
+    for hits in results:
+        for hit in hits:
+            print(f"Hit: {hit}, Distance: {hit.distance}")
+
+# 7. drop collection
+def drop_collection(collection_name):
+    utility.drop_collection(collection_name)
+    print(f"Collection '{collection_name}' dropped.")
+
+def main():
+    collection_name = "example_collection"
+
+    connect_to_milvus()
+
+    collection = create_collection(collection_name)
+
+    insert_data(collection, 1000)
+
+    create_index(collection, "embedding")
+
+    load_collection(collection)
+
+    import numpy as np
+    query_vector = np.random.random((1, 128)).tolist()
+    simple_query(collection, query_vector)
+
+    drop_collection(collection_name)
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
diff --git a/examples/mongodb/test/mongodb-ycsb.md b/examples/mongodb/test/mongodb-ycsb.md
new file mode 100644
index 000000000..450219d9b
--- /dev/null
+++ b/examples/mongodb/test/mongodb-ycsb.md
@@ -0,0 +1,44 @@
+## YCSB Test
+
+We will use the open-source YCSB 0.17.0 benchmarking tool for performance testing.
+
+### **Load test data using YCSB tool**
+
+```bash load-command.sh
+./bin/ycsb.sh load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000 -p mongodb.url=mongodb://<user>:<password>@<host>:<port>/admin?w=0 -threads 4
+```
+
+You need to modify the following parameters:
+
+- `recordcount`: Total number of records to load into MongoDB instance
+- `mongodb.url=mongodb://root:REDACTED@host:27017/admin`: Connection URL for MongoDB instance. This example uses admin database.
+- `threads`: Client concurrency thread count
+
+### **Execute performance test**
+
+```bash run-command.sh
+./bin/ycsb.sh run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000 -p operationcount=50000 -p insertproportion=0 -p readproportion=50 -p updateproportion=50 -p requestdistribution=zipfian -p mongodb://<user>:<password>@<host>:<port>/admin?w=0 -threads 4
+```
+
+Parameters to modify:
+
+- `recordcount`: Total loaded data volume
+- `operationcount`: Total read/write operations
+- `insertproportion`: Data loading operation ratio (0 means no inserts during test)
+- `readproportion`: Read operation percentage
+- `updateproportion`: Update operation percentage
+- `mongodb.url=mongodb://<user>:<password>@<host>:<port>/admin`: MongoDB connection URL.  This example uses admin database.
+- `threads`: Client concurrency thread count
+
+### Run YCSB using Docker Image
+
+We packed a docker image from YCSB 0.17.0 for test. Dockerfile is available at [YCSB Dockerfile](./Dockerfile-ycsb)
+
+You can run TEST using (or you can build image from the Dockerfile provided)
+
+```bash
+docker run docker.io/apecloud/ycsb:0.17.0 /bin/sh -c './bin/ycsb.sh load mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000 -p mongodb.url=mongodb://<user>:<password>@<host>:<port>/admin?w=0 -threads 4'
+docker run docker.io/apecloud/ycsb:0.17.0 /bin/sh -c './bin/ycsb.sh run mongodb -s -p workload=site.ycsb.workloads.CoreWorkload -p recordcount=10000 -p operationcount=50000 -p insertproportion=0 -p readproportion=50 -p updateproportion=50 -p requestdistribution=zipfian -p mongodb.url=mongodb://<user>:<password>@<host>:<port>/admin?w=0 -threads 4'
+```
+
+Besides, PingCAP provides go-ycsb: <https://github.com/pingcap/go-ycsb>. If you are a go-lover, you may run ycsb bench using go-ycsb.
diff --git a/examples/mysql/test/mysql_benchmark.py b/examples/mysql/test/mysql_benchmark.py
new file mode 100644
index 000000000..0e79fc4f9
--- /dev/null
+++ b/examples/mysql/test/mysql_benchmark.py
@@ -0,0 +1,175 @@
+import subprocess
+import argparse
+import mysql.connector
+from mysql.connector import Error
+
+###############################################################################
+###############################################################################
+# README.md
+# This is a simple test for MySQL using sysbench
+#
+# Prerequisites
+# - Sysbench installed
+#   - `sudo apt-get install sysbench` on Ubuntu
+#   - `brew install sysbench` on MacOS
+# - Python 3.6+
+# - MySQL client libraries (`python3 -m pip install mysql-connector-python`)
+#
+# Run test
+# - python3 mysql_benchmark.py --host <host> --user <user> --password <password>
+###############################################################################
+###############################################################################
+
+# Configuration variables
+MYSQL_HOST = "127.0.0.1"
+MYSQL_PORT = 3306
+MYSQL_USER = "<USERNAME>" #
+MYSQL_PASSWORD = "<PASSWD>"
+
+SYSBENCH_DB_NAME = "sysbench_test"
+SYSBENCH_USER = "sysbench_user"
+SYSBENCH_PASSWORD = "SysbenchPass123!"
+
+TABLE_SIZE = 100000
+THREADS = [4, 8, 16]  # Different thread counts to test
+DURATION = 60  # Test duration in seconds
+
+def create_mysql_user_and_db(host, port, root_user, root_password):
+    try:
+        connection = mysql.connector.connect(
+            host=host,
+            user=root_user,
+            password=root_password,
+            port=port,
+            auth_plugin='caching_sha2_password'
+        )
+
+        cursor = connection.cursor()
+
+        # Create database
+        cursor.execute(f"CREATE DATABASE IF NOT EXISTS {SYSBENCH_DB_NAME}")
+
+        # Create user and grant privileges
+        cursor.execute(f"""
+            CREATE USER IF NOT EXISTS '{SYSBENCH_USER}'@'%'
+            IDENTIFIED BY '{SYSBENCH_PASSWORD}'
+        """)
+        cursor.execute(f"""
+            GRANT ALL PRIVILEGES ON {SYSBENCH_DB_NAME}.*
+            TO '{SYSBENCH_USER}'@'%'
+        """)
+        connection.commit()
+
+        print("MySQL user and database created successfully")
+
+    except Error as e:
+        print(f"Error creating MySQL user/database: {e}")
+        exit(1)
+    finally:
+        if connection.is_connected():
+            cursor.close()
+            connection.close()
+
+def check_dependencies():
+    try:
+        subprocess.run(["sysbench", "--version"], check=True, capture_output=True)
+    except (subprocess.CalledProcessError, FileNotFoundError):
+        print("Error: sysbench is not installed. Please install it first.")
+        print("For Ubuntu/Debian: sudo apt-get install sysbench")
+        print("For CentOS/RHEL: sudo yum install sysbench")
+        exit(1)
+
+def run_sysbench(command, test_type):
+    try:
+        print(f"Running {test_type} test...")
+        result = subprocess.run(
+            command,
+            check=True,
+            shell=True,
+            capture_output=True,
+            text=True
+        )
+        print(result.stdout)
+        print(f"✅ {test_type} test completed successfully")
+        return True
+    except subprocess.CalledProcessError as e:
+        print(f"❌ Error during {test_type} test:")
+        print(e.stderr)
+        return False
+
+def main():
+    # Create database if not exists
+    # Create MySQL user and database
+    create_mysql_user_and_db(MYSQL_HOST, MYSQL_PORT, MYSQL_USER, MYSQL_PASSWORD)
+
+    # Prepare command
+    prepare_cmd = (
+        f"sysbench oltp_read_write "
+        f"--db-driver=mysql "
+        f"--mysql-host={MYSQL_HOST} "
+        f"--mysql-port={MYSQL_PORT} "
+        f"--mysql-user={SYSBENCH_USER} "
+        f"--mysql-password={SYSBENCH_PASSWORD} "
+        f"--mysql-db={SYSBENCH_DB_NAME} "
+        f"--table-size={TABLE_SIZE} "
+        f"--report-interval=1 "
+        f"prepare"
+    )
+
+    if not run_sysbench(prepare_cmd, "Prepare"):
+        return
+
+    # Run benchmark for different thread counts
+    for threads in THREADS:
+        print(f"\n🏁 Starting benchmark with {threads} threads")
+        run_cmd = (
+            f"sysbench oltp_read_write "
+            f"--db-driver=mysql "
+            f"--mysql-host={MYSQL_HOST} "
+            f"--mysql-port={MYSQL_PORT} "
+            f"--mysql-user={SYSBENCH_USER} "
+            f"--mysql-password={SYSBENCH_PASSWORD} "
+            f"--mysql-db={SYSBENCH_DB_NAME} "
+            f"--table-size={TABLE_SIZE} "
+            f"--threads={threads} "
+            f"--time={DURATION} "
+            f"--report-interval=1 "
+            f"run"
+        )
+
+        if run_sysbench(run_cmd, f"Runtime ({threads} threads)"):
+            print(f"📊 Results for {threads} threads:")
+            print("--------------------------------")
+
+    # Cleanup
+    cleanup_cmd = (
+        f"sysbench oltp_read_write "
+        f"--db-driver=mysql "
+        f"--mysql-host={MYSQL_HOST} "
+        f"--mysql-port={MYSQL_PORT} "
+        f"--mysql-user={SYSBENCH_USER} "
+        f"--mysql-password={SYSBENCH_PASSWORD} "
+        f"--mysql-db={SYSBENCH_DB_NAME} "
+        f"--table-size={TABLE_SIZE} "
+        f"--report-interval=1 "
+        f"cleanup"
+    )
+    run_sysbench(cleanup_cmd, "Cleanup")
+
+if __name__ == "__main__":
+    # Verify dependencies
+    check_dependencies()
+
+    parser = argparse.ArgumentParser(description='MySQL Sysbench Runner')
+    parser.add_argument('--host', help='MySQL Host', default=MYSQL_HOST)
+    parser.add_argument('--port', help='MySQL Port', default=MYSQL_PORT)
+    parser.add_argument('--user', help='MySQL User', default=MYSQL_USER)
+    parser.add_argument('--password', help='MySQL Password', default=MYSQL_PASSWORD)
+    args = parser.parse_args()
+
+    MYSQL_HOST = args.host
+    MYSQL_PORT = args.port
+    MYSQL_USER = args.user
+    MYSQL_PASSWORD = args.password
+
+    main()
\ No newline at end of file
diff --git a/examples/postgresql/test/pg_benchmark.py b/examples/postgresql/test/pg_benchmark.py
new file mode 100644
index 000000000..7d93274a8
--- /dev/null
+++ b/examples/postgresql/test/pg_benchmark.py
@@ -0,0 +1,196 @@
+import subprocess
+import argparse
+import psycopg2
+from psycopg2 import sql
+
+###############################################################################
+###############################################################################
+# README.md
+# This is a simple test for PostgreSQL using sysbench
+# Prerequisites
+# - Sysbench installed
+#   - `sudo apt-get install sysbench` on Ubuntu
+#   - `brew install sysbench` on MacOS
+# - Python 3.6+
+# - PostgreSQL client libraries
+#
+# Run
+# - python3 pg_benchmark.py --host <host> --user <user> --password <password>
+###############################################################################
+###############################################################################
+
+# Configuration variables
+PG_HOST = "127.0.0.1"
+PG_PORT = "5432"
+PG_USER = "<USERNAME>" #
+PG_PASSWORD = "<PASSWD>"
+
+SYSBENCH_DB_NAME = "sysbench_test"
+SYSBENCH_USER = "sysbench_user"
+SYSBENCH_PASSWORD = "SysbenchPass123!"
+
+TABLE_SIZE = 100000
+THREADS = [4, 8, 16]  # Different thread counts to test
+DURATION = 60  # Test duration in seconds
+
+def create_pg_user_and_db(host, port, root_user, root_password):
+    try:
+        connection = psycopg2.connect(
+            host=host,
+            port=port,
+            user=root_user,
+            password=root_password,
+            dbname="postgres"
+        )
+        connection.autocommit = True
+        cursor = connection.cursor()
+
+        # Create database
+        # Create database
+        cursor.execute(
+            sql.SQL("SELECT 1 FROM pg_database WHERE datname = {}")
+            .format(sql.Literal(SYSBENCH_DB_NAME)))
+        if not cursor.fetchone():
+            cursor.execute(
+                sql.SQL("CREATE DATABASE {}")
+                .format(sql.Identifier(SYSBENCH_DB_NAME)))
+            print(f"Created database {SYSBENCH_DB_NAME}")
+
+        # Create user
+        cursor.execute(
+            sql.SQL("SELECT 1 FROM pg_roles WHERE rolname = {}")
+            .format(sql.Literal(SYSBENCH_USER)))
+        if not cursor.fetchone():
+            cursor.execute(
+                sql.SQL("CREATE USER {} WITH PASSWORD {}")
+                .format(
+                    sql.Identifier(SYSBENCH_USER),
+                    sql.Literal(SYSBENCH_PASSWORD)
+                ))
+            print(f"Created user {SYSBENCH_USER}")
+
+        # Grant privileges
+        cursor.execute(
+            sql.SQL("GRANT ALL PRIVILEGES ON DATABASE {} TO {}")
+            .format(
+                sql.Identifier(SYSBENCH_DB_NAME),
+                sql.Identifier(SYSBENCH_USER)
+            ))
+        cursor.execute(
+            sql.SQL("ALTER DATABASE {} OWNER TO {}")
+            .format(
+                sql.Identifier(SYSBENCH_DB_NAME),
+                sql.Identifier(SYSBENCH_USER)
+            ))
+
+        cursor.close()
+        connection.close()
+        print("PostgreSQL user and database created successfully")
+
+    except psycopg2.Error as e:
+        print(f"Error creating PostgreSQL user/database: {e}")
+        exit(1)
+
+def check_dependencies():
+    try:
+        subprocess.run(["sysbench", "--version"], check=True, capture_output=True)
+    except (subprocess.CalledProcessError, FileNotFoundError):
+        print("Error: sysbench is not installed. Please install it first.")
+        print("For Ubuntu/Debian: sudo apt-get install sysbench")
+        print("For CentOS/RHEL: sudo yum install sysbench")
+        exit(1)
+
+def run_sysbench(command, test_type):
+    try:
+        print(f"Running {test_type} test...")
+        result = subprocess.run(
+            command,
+            check=True,
+            shell=True,
+            capture_output=True,
+            text=True
+        )
+        print(result.stdout)
+        print(f"✅ {test_type} test completed successfully")
+        return True
+    except subprocess.CalledProcessError as e:
+        print(f"❌ Error during {test_type} test:")
+        print(e.stderr)
+        return False
+
+def main():
+    # Create database if not exists
+    # Create PostgreSQL user and database
+    create_pg_user_and_db(PG_HOST, PG_PORT, PG_USER, PG_PASSWORD)
+
+    # Prepare command
+    prepare_cmd = (
+        f"sysbench oltp_read_write "
+        f"--db-driver=pgsql "
+        f"--pgsql-host={PG_HOST} "
+        f"--pgsql-port={PG_PORT} "
+        f"--pgsql-user={SYSBENCH_USER} "
+        f"--pgsql-password={SYSBENCH_PASSWORD} "
+        f"--pgsql-db={SYSBENCH_DB_NAME} "
+        f"--table-size={TABLE_SIZE} "
+        f"--report-interval=1 "
+        f"prepare"
+    )
+
+    if not run_sysbench(prepare_cmd, "Prepare"):
+        return
+
+    # Run benchmark for different thread counts
+    for threads in THREADS:
+        print(f"\n🏁 Starting benchmark with {threads} threads")
+        run_cmd = (
+            f"sysbench oltp_read_write "
+            f"--db-driver=pgsql "
+            f"--pgsql-host={PG_HOST} "
+            f"--pgsql-port={PG_PORT} "
+            f"--pgsql-user={SYSBENCH_USER} "
+            f"--pgsql-password={SYSBENCH_PASSWORD} "
+            f"--pgsql-db={SYSBENCH_DB_NAME} "
+            f"--table-size={TABLE_SIZE} "
+            f"--threads={threads} "
+            f"--time={DURATION} "
+            f"--report-interval=1 "
+            f"run"
+        )
+
+        if run_sysbench(run_cmd, f"Runtime ({threads} threads)"):
+            print(f"📊 Results for {threads} threads:")
+            print("--------------------------------")
+
+    # Cleanup
+    cleanup_cmd = (
+        f"sysbench oltp_read_write "
+        f"--db-driver=pgsql "
+        f"--pgsql-host={PG_HOST} "
+        f"--pgsql-port={PG_PORT} "
+        f"--pgsql-user={SYSBENCH_USER} "
+        f"--pgsql-password={SYSBENCH_PASSWORD} "
+        f"--pgsql-db={SYSBENCH_DB_NAME} "
+        f"--table-size={TABLE_SIZE} "
+        f"--report-interval=1 "
+        f"cleanup"
+    )
+    run_sysbench(cleanup_cmd, "Cleanup")
+
+if __name__ == "__main__":
+    # Verify dependencies
+    check_dependencies()
+
+    parser = argparse.ArgumentParser(description='PostgreSQL Sysbench Runner')
+    parser.add_argument('--host', help='PostgreSQL Host', default=PG_HOST)
+    parser.add_argument('--port', help='PostgreSQL Port', default=PG_PORT)
+    parser.add_argument('--user', help='PostgreSQL User', default=PG_USER)
+    parser.add_argument('--password', help='PostgreSQL Password', default=PG_PASSWORD)
+    args = parser.parse_args()
+
+    PG_HOST = args.host
+    PG_PORT = args.port
+    PG_USER = args.user
+    PG_PASSWORD = args.password
+
+    main()
\ No newline at end of file
diff --git a/examples/redis/test/redis_benchmark.py b/examples/redis/test/redis_benchmark.py
new file mode 100644
index 000000000..835dd1205
--- /dev/null
+++ b/examples/redis/test/redis_benchmark.py
@@ -0,0 +1,199 @@
+import redis
+import time
+import argparse
+from threading import Thread
+from statistics import mean, median, pstdev
+
+###############################################################################
+###############################################################################
+# README.md
+# This is a simple bench mark test for redis.
+# - Tests both SET and GET operations
+# - Measures throughput and latency statistics
+# - Supports concurrent client simulation
+# - Configurable payload sizes
+#
+# Usage:
+# python3 redis_benchmark.py \
+#   --host 127.0.0.1 \
+#   --clients 100 \
+#   --requests 1000000 \
+#   --value-size 256
+#   --username default \
+#   --password <password>
+#
+# Installation Requirements:
+# - pip install redis
+#
+# Output Example:
+# ==================================================
+# Total requests: 100,000
+# Errors: 0
+# Duration: 4.23s
+# Throughput: 23,640.65 ops/sec
+# Mean latency: 4.12ms
+# Median latency: 3.98ms
+# 99th percentile: 8.45ms
+# Latency std dev: 1.23ms
+# ==================================================
+#
+###############################################################################
+###############################################################################
+class RedisBenchmark:
+    def __init__(self, host='localhost', port=6379, username=None, password=None, db=0):
+        self.r = redis.Redis(
+            host=host,
+            port=port,
+            username=username,
+            password=password,
+            db=db,
+            decode_responses=True,
+
+        )
+        self.latencies = []
+        self.results = {
+            'total_requests': 0,
+            'errors': 0,
+            'start_time': None,
+            'end_time': None
+        }
+
+    def flush_db(self):
+        """Initialize test environment"""
+        self.r.flushdb()
+        print("✅ Database flushed")
+
+    def _record_latency(self, start):
+        latency = (time.perf_counter() - start) * 1000  # in milliseconds
+        self.latencies.append(latency)
+        self.results['total_requests'] += 1
+
+    def _worker(self, op_type, key_size, value_size, num_ops):
+        """Worker thread for benchmark operations"""
+        key_prefix = f"key:{op_type}:{key_size}:"
+        value = 'v' * value_size
+
+        for i in range(num_ops):
+            key = f"{key_prefix}{i}"
+            try:
+                start = time.perf_counter()
+                if op_type == 'set':
+                    self.r.set(key, value)
+                elif op_type == 'get':
+                    self.r.get(key)
+                self._record_latency(start)
+            except redis.RedisError as e:
+                self.results['errors'] += 1
+
+    def run_test(self, op_type, num_clients=50, total_requests=100000,
+                key_size=32, value_size=128):
+        """Run benchmark test with parameters"""
+        self.latencies = []
+        self.results.update({
+            'total_requests': 0,
+            'errors': 0,
+            'start_time': time.time(),
+            'op_type': op_type.upper()
+        })
+
+        ops_per_client = total_requests // num_clients
+        threads = []
+
+        print(f"\n🏁 Starting {op_type.upper()} test with {num_clients} clients...")
+
+        # Create and start threads
+        for _ in range(num_clients):
+            t = Thread(target=self._worker,
+                      args=(op_type, key_size, value_size, ops_per_client))
+            threads.append(t)
+            t.start()
+
+        # Wait for all threads to complete
+        for t in threads:
+            t.join()
+
+        self.results['end_time'] = time.time()
+        self._calculate_stats()
+        self._print_results()
+
+    def _calculate_stats(self):
+        """Calculate performance statistics"""
+        total_time = self.results['end_time'] - self.results['start_time']
+        self.results.update({
+            'duration': total_time,
+            'throughput': self.results['total_requests'] / total_time,
+            'mean_latency': mean(self.latencies),
+            'median_latency': median(self.latencies),
+            'p99_latency': sorted(self.latencies)[int(len(self.latencies) * 0.99)],
+            'stdev': pstdev(self.latencies)
+        })
+
+    def _print_results(self):
+        """Print formatted benchmark results"""
+        print(f"\n📊 {self.results['op_type']} Benchmark Results:")
+        print("=" * 50)
+        print(f"Total requests: {self.results['total_requests']:,}")
+        print(f"Errors: {self.results['errors']}")
+        print(f"Duration: {self.results['duration']:.2f}s")
+        print(f"Throughput: {self.results['throughput']:,.2f} ops/sec")
+        print(f"Mean latency: {self.results['mean_latency']:.2f}ms")
+        print(f"Median latency: {self.results['median_latency']:.2f}ms")
+        print(f"99th percentile: {self.results['p99_latency']:.2f}ms")
+        print(f"Latency std dev: {self.results['stdev']:.2f}ms")
+        print("=" * 50)
+
+def main():
+    parser = argparse.ArgumentParser(description='Redis Benchmark Tool')
+    parser.add_argument('--host', default='localhost', help='Redis host')
+    parser.add_argument('--port', type=int, default=6379, help='Redis port')
+    parser.add_argument('--username',  default="default",help='Redis username')
+    parser.add_argument('--password', help='Redis password')
+    parser.add_argument('--clients', type=int, default=50,
+                       help='Number of concurrent clients')
+    parser.add_argument('--requests', type=int, default=100000,
+                       help='Total number of requests')
+    parser.add_argument('--key-size', type=int, default=32,
+                       help='Size of keys in bytes')
+    parser.add_argument('--value-size', type=int, default=128,
+                       help='Size of values in bytes')
+
+    args = parser.parse_args()
+
+    benchmark = RedisBenchmark(
+        host=args.host,
+        port=args.port,
+        username=args.username,
+        password=args.password
+    )
+
+    try:
+        # Prepare test environment
+        benchmark.flush_db()
+
+        # Run SET benchmark
+        benchmark.run_test(
+            op_type='set',
+            num_clients=args.clients,
+            total_requests=args.requests,
+            key_size=args.key_size,
+            value_size=args.value_size
+        )
+
+        # Run GET benchmark
+        benchmark.run_test(
+            op_type='get',
+            num_clients=args.clients,
+            total_requests=args.requests,
+            key_size=args.key_size,
+            value_size=args.value_size
+        )
+
+        # Cleanup
+        benchmark.flush_db()
+    except redis.ConnectionError as e:
+        print(f"❌ Connection failed: {e}")
+    except KeyboardInterrupt:
+        print("\n🚫 Benchmark interrupted by user")
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file