From dcdfa9dc003d958a6540eda029de8572429b97a9 Mon Sep 17 00:00:00 2001 From: shenying1023 Date: Sat, 7 Oct 2023 10:52:15 +0800 Subject: [PATCH] docs: update minio --- ...and-restore-configure-backuprepo-minio.png | Bin 0 -> 48833 bytes docs/node_modules/.yarn-integrity | 10 + .../backup-and-restore/backup/backup-repo.md | 433 ++++++++++-------- .../configuration/configuration.md | 10 +- docs/yarn.lock | 4 + 5 files changed, 254 insertions(+), 203 deletions(-) create mode 100644 docs/img/backup-and-restore-configure-backuprepo-minio.png create mode 100644 docs/node_modules/.yarn-integrity create mode 100644 docs/yarn.lock diff --git a/docs/img/backup-and-restore-configure-backuprepo-minio.png b/docs/img/backup-and-restore-configure-backuprepo-minio.png new file mode 100644 index 0000000000000000000000000000000000000000..c8df5b8897b1360ba03ba4fba20200124c664052 GIT binary patch literal 48833 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 Ae)u*X(uU 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 literal 0 HcmV?d00001 diff --git a/docs/node_modules/.yarn-integrity b/docs/node_modules/.yarn-integrity new file mode 100644 index 00000000000..20d6d48814b --- /dev/null +++ b/docs/node_modules/.yarn-integrity @@ -0,0 +1,10 @@ +{ + "systemParams": "darwin-arm64-108", + "modulesFolders": [], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [], + "lockfileEntries": {}, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/docs/user_docs/backup-and-restore/backup/backup-repo.md b/docs/user_docs/backup-and-restore/backup/backup-repo.md index 73246bc8624..354bbe0c91c 100644 --- a/docs/user_docs/backup-and-restore/backup/backup-repo.md +++ b/docs/user_docs/backup-and-restore/backup/backup-repo.md @@ -65,225 +65,260 @@ You can specify the BackupRepo information in a YAML configuration file when ins If you do not configure the BackupRepo information when installing KubeBlocks, you can manually configure it by the following instructions. -1. Install S3 CSI driver. +### Before you start + +There are various ways to create a BackupRepo. Make sure you have done all the necessary preparations before creating it. If you want to use MinIO, you need to make the following configurations in advance. + +1. Install MinIO. + + ```bash + helm install minio oci://registry-1.docker.io/bitnamicharts/minio + ``` + To get initial username and password, try the following. + + ```bash + # Initial username + echo $(kubectl get secret --namespace default minio -o jsonpath="{.data.root-user}" | base64 -d) + + # Initial password + echo $(kubectl get secret --namespace default minio -o jsonpath="{.data.root-password}" | base64 -d) + ``` + +2. Generate credentials. + + Access the login page by running `kubectl port-forward --namespace default 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`. + + ![MinIO dashboard](./../../../img/backup-and-restore-configure-backuprepo-minio.png) + +### Install S3 CSI driver + + + + + +```bash +# Enable the CSI-S3 add-on +kbcli addon enable csi-s3 + +# You can add flags to customize the installation of this add-on +# CSI-S3 install 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 +``` + + + + + +```bash +helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable +helm install csi-s3 kubeblocks/csi-s3 --version=0.6.0 -n kb-system + +# You can add flags to customize the installation of this add-on +# CSI-S3 install 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"}]' +``` + + + + + +### Create BackupRepo + + + + - + ```bash - # Enable the CSI-S3 add-on - kbcli addon enable csi-s3 + kbcli backuprepo create my-repo \ + --provider s3 \ + --region cn-northwest-1 \ + --bucket test-kb-backup \ + --access-key-id \ + --secret-access-key \ + --default + ``` - # You can add flags to customize the installation of this add-on - # CSI-S3 install 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 + + + ```bash + kbcli backuprepo create my-repo \ + --provider oss \ + --region cn-zhangjiakou \ + --bucket test-kb-backup \ + # --endpoint https://oss-cn-zhangjiakou-internal.aliyuncs.com \ To display the specified oss endpoint + --access-key-id \ + --secret-access-key \ + --default + ``` + + + + + + ```bash + kbcli backuprepo create my-repo \ + --provider minio \ + --endpoint \ + --bucket test-minio \ + --access-key-id \ + --secret-access-key \ + --default + ``` + + + + + + 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`, `oss`, and `minio`. 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. + + 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 + # Canel 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 + ``` + + + + + + `kubectl` is another option to create a BackupRepo, but the commands do not include parameter and default repository verification compared with kbcli, which is not convenient. + + + + + + ```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= \ + --from-literal=secretAccessKey= + + # 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 + 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 ``` - + ```bash - helm repo add kubeblocks https://jihulab.com/api/v4/projects/85949/packages/helm/stable - helm install csi-s3 kubeblocks/csi-s3 --version=0.6.0 -n kb-system + # Create a secret to save the access key for OSS + kubectl create secret generic oss-credential-for-backuprepo \ + -n kb-system \ + --from-literal=accessKeyId= \ + --from-literal=secretAccessKey= + + # 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 + pvReclaimPolicy: Retain + volumeCapacity: 100Gi + config: + bucket: test-kb-backup + mountOptions: "" + endpoint: "" + region: cn-zhangjiakou + credential: + name: oss-credential-for-backuprepo + namespace: kb-system + EOF + ``` + + - # You can add flags to customize the installation of this add-on - # CSI-S3 install 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"}]' + + + ```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= \ + --from-literal=secretAccessKey= + + # 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 + pvReclaimPolicy: Retain + volumeCapacity: 100Gi + config: + bucket: test-kb-backup + mountOptions: "" + endpoint: + credential: + name: minio-credential-for-backuprepo + namespace: kb-system + EOF ``` -2. Create BackupRepo. - - - Use kbcli - - - - - - ```bash - kbcli backuprepo create my-repo \ - --provider s3 \ - --region cn-northwest-1 \ - --bucket test-kb-backup \ - --access-key-id \ - --secret-access-key \ - --default - ``` - - - - - - ```bash - kbcli backuprepo create my-repo \ - --provider oss \ - --region cn-zhangjiakou \ - --bucket test-kb-backup \ - # --endpoint https://oss-cn-zhangjiakou-internal.aliyuncs.com \ To display the specified oss endpoint - --access-key-id \ - --secret-access-key \ - --default - ``` - - - - - - ```bash - kbcli backuprepo create my-repo \ - --provider minio \ - --endpoint \ - --bucket test-minio \ - --access-key-id \ - --secret-access-key \ - --default - ``` - - - - - - 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`, `oss`, and `minio`. 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. - - 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 - # Canel 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 - ``` - - - Use kubectl - - `kubectl` is another option to create a BackupRepo, but the commands do not include parameter and default repository verification compared with kbcli, which is not convenient. - - - - - - ```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= \ - --from-literal=secretAccessKey= - - # 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 - 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 - ``` - - - - - - ```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= \ - --from-literal=secretAccessKey= - - # 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 - pvReclaimPolicy: Retain - volumeCapacity: 100Gi - config: - bucket: test-kb-backup - mountOptions: "" - endpoint: "" - region: cn-zhangjiakou - credential: - name: oss-credential-for-backuprepo - namespace: kb-system - EOF - ``` - - - - - - ```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= \ - --from-literal=secretAccessKey= - - # 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 - pvReclaimPolicy: Retain - volumeCapacity: 100Gi - config: - bucket: test-kb-backup - mountOptions: "" - endpoint: - credential: - name: minio-credential-for-backuprepo - namespace: kb-system - EOF - ``` - - - - + + + ## (Optional) Change the backup repository for a cluster diff --git a/docs/user_docs/kubeblocks-for-mysql/configuration/configuration.md b/docs/user_docs/kubeblocks-for-mysql/configuration/configuration.md index 63f0f72b7e2..2181ac77583 100644 --- a/docs/user_docs/kubeblocks-for-mysql/configuration/configuration.md +++ b/docs/user_docs/kubeblocks-for-mysql/configuration/configuration.md @@ -38,9 +38,11 @@ You can also view the details of this configuration file and parameters. * View the user guide of a specified parameter. ```bash - kbcli cluster explain-config mysql-cluster --param=innodb_buffer_pool_size + kbcli cluster explain-config mysql-cluster --param=innodb_buffer_pool_size --config-spec=mysql-consensusset-config ``` + `--config-spec` is required to specify a configuration template since ApeCloud MySQL currently supports multiple templates. You can run `kbcli cluster describe-config mysql-cluster` to view the all template names. +
Output @@ -204,18 +206,18 @@ The following steps take configuring MySQL Standalone as an example. :::note -* ApeCloud MySQL currently supports multiple configuration templates, so `--config-spec` is required. +* `--config-spec` is required to specify a configuration template since ApeCloud MySQL currently supports multiple templates. You can run `kbcli cluster describe-config mysql-cluster` to view the all template names. * If there are multiple components in a cluster, use `--component` to specify a component. ::: -2. View the status of the parameter configuration. +1. 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. +2. Connect to the database to verify whether the parameters are configured as expected. ```bash kbcli cluster connect mysql-cluster diff --git a/docs/yarn.lock b/docs/yarn.lock new file mode 100644 index 00000000000..fb57ccd13af --- /dev/null +++ b/docs/yarn.lock @@ -0,0 +1,4 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + +