Skip to content

Commit

Permalink
docs: update docs
Browse files Browse the repository at this point in the history
  • Loading branch information
michelle-0808 committed Jan 24, 2025
1 parent af079dc commit 601ab2b
Show file tree
Hide file tree
Showing 2 changed files with 176 additions and 168 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ 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. Additionally, it also supports using Kubernetes-native PVCs as backup repositories.
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.

Expand Down Expand Up @@ -420,7 +420,7 @@ If you do not configure the BackupRepo information when installing KubeBlocks, y
```bash
# The current GCS is the S3-compatible version provided by Google Cloud
kbcli backuprepo create my-repo \
--provider gcs \
--provider gcs-s3comp \
--region auto \
--bucket test-kb-backup \
--access-key-id <ACCESS KEY> \
Expand Down
340 changes: 174 additions & 166 deletions i18n/zh-cn/user-docs/maintenance/backup-and-restore/backup/backup-repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import TabItem from '@theme/TabItem';

## 概述

BackupRepo 是备份数据的存储仓库,支持配置 OSS(阿里云对象存储),S3(亚马逊对象存储),COS(腾讯云对象存储),GCS(谷歌云对象存储),OBS(华为云对象存储),MinIO 等兼容 S3 协议的对象存储作为备份仓库,同时支持 K8s 原生的 PVC 作为备份仓库
BackupRepo 是备份数据的存储仓库,支持配置 OSS(阿里云对象存储),S3(亚马逊对象存储),COS(腾讯云对象存储),GCS(谷歌云对象存储),OBS(华为云对象存储),MinIO 等兼容 S3 协议的对象存储作为备份仓库。

用户可以创建多个 BackupRepo 以适应不同的场景。例如,根据不同的业务需求,可以把业务 A 的数据存储在 A 仓库,把业务 B 的数据存储在 B 仓库,或者可以按地区配置多个仓库以实现异地容灾。在创建备份时,你需要指定备份仓库。你也可以创建一个默认的备份仓库,如果在创建备份时未指定具体的仓库,KubeBlocks 将使用此默认仓库来存储备份数据。

Expand Down Expand Up @@ -102,180 +102,20 @@ BackupRepo 是备份数据的存储仓库,支持配置 OSS(阿里云对象

<Tabs>

<TabItem value="kbcli" label="kbcli" default>
<TabItem value="kubectl" label="kubectl" 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
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
```

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 \ # 也可以填 Mount
--default
```

</TabItem>

<TabItem value="OSS" label="OSS">

```bash
kbcli backuprepo create my-repo \
--provider oss \
--region cn-zhangjiakou \
--bucket test-kb-backup \
# --endpoint https://oss-cn-zhangjiakou-internal.aliyuncs.com \ 可以显示指定 oss endpoint
--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">

```bash
kbcli backuprepo create my-repo \
--provider cos \
--region ap-guangzhou \
# 腾讯云中存储桶的命名格式为 <BucketName-APPID>,APPID 为腾讯云自动生成
# 设置 bucket 时先通过腾讯云的控制台创建 bucket,获取存储桶名称
--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
# 目前的 gcs 为谷歌云的 s3 兼容版
kbcli backuprepo create my-repo \
--provider gcs \
--region auto \
--bucket test-kb-backup \
--access-key-id <ACCESS KEY> \
--secret-access-key <SECRET KEY> \
--access-method Tool \
--default
```

</TabItem>

<TabItem value="MinIO" label="MinIO">

```bash
kbcli backuprepo create my-repo \
--provider minio \
--endpoint <ip:port> \ # 以上部署的 MinIO 的访问地址为 http://minio.kb-system.svc.cluster.local:9000
--bucket test-minio \
--access-key-id <ACCESS KEY> \
--secret-access-key <SECRET KEY> \
--access-method Tool \
--default
```

</TabItem>

<TabItem value="PVC" label="PVC">

```bash
kbcli backuprepo create my-repo \
--provider pvc \
--storage-class-name "nfs-storage" \
--access-mode "ReadWriteMany" \
--volume-capacity "100Gi" \
--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``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>

<TabItem value="kubectl" label="kubectl">

1. 安装 S3 CSI driver (仅访问方式为 “Mount” 时需要安装)。
您也可以自定义安装 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
# 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"}]'
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。
Expand Down Expand Up @@ -501,6 +341,174 @@ BackupRepo 是备份数据的存储仓库,支持配置 OSS(阿里云对象
</TabItem>
<TabItem value="kbcli" label="kbcli">
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>
</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`、`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
Expand Down

0 comments on commit 601ab2b

Please sign in to comment.