4.11. 使用 MCG 配置 OADP
4.11.1. 为使用多云对象网关的数据保护配置 OpenShift API 复制链接链接已复制到粘贴板!
Multicloud Object Gateway (MCG)是 OpenShift Data Foundation 的一个组件,您可以在 DataProtectionApplication
自定义资源(CR)中将其配置为备份位置。您可以通过安装 OADP Operator,使用 MCG 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
CloudStorage
API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以为备份位置创建一个 Secret
CR,并安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.11.1.1. 检索多云对象网关凭证 复制链接链接已复制到粘贴板!
您必须检索 Multicloud Object Gateway (MCG)存储桶凭证,以便为 OpenShift API 创建用于数据保护(OADP)的 Secret
自定义资源(CR)。
虽然 MCG Operator 已被弃用,但 MCG 插件仍可用于 OpenShift Data Foundation。要下载插件,请访问下载 Red Hat OpenShift Data Foundation,并为您的操作系统下载适当的 MCG 插件。
先决条件
- 请根据相关的 Red Hat OpenShift Data Foundation 部署指南部署 OpenShift Data Foundation。
流程
- 创建一个 MCG 存储桶。如需更多信息,请参阅管理混合和多资源。
-
通过在 bucket 资源上运行
oc describe
命令,获取 S3 端点、AWS_ACCESS_KEY_ID
、AWS_SECRET_ACCESS_KEY
和存储桶名称。 创建
credentials-velero
文件:cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在安装数据保护应用程序时,您可以使用
credentials-velero
文件创建Secret
对象。
4.11.1.2. 关于备份和恢复位置及其 secret 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication
自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将以下 AWS S3 兼容对象存储解决方案之一指定为备份位置:
- 多云对象网关 (MCG)
- Red Hat Container Storage
- Ceph RADOS 网关;也称为 Ceph 对象网关
- Red Hat OpenShift Data Foundation
- MinIO
Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。
快照位置
如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。
如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass
CR 来注册 CSI 驱动程序。
如果您使用文件系统备份 (FSB),则不需要指定快照位置,因为 FSB 在对象存储上备份文件系统。
Secrets
如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret
。
如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:
-
您在
DataProtectionApplication
CR 中指定的备份位置的自定义Secret
。 -
快照位置的默认
Secret
,在DataProtectionApplication
CR 中没有引用。
数据保护应用程序需要一个默认的 Secret
。否则,安装将失败。
如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero
文件创建默认 Secret
。
4.11.1.2.1. 创建默认 Secret 复制链接链接已复制到粘贴板!
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
Secret
的默认名称为 cloud-credentials
。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
流程
为您的云供应商为备份存储位置创建一个
credentials-velero
文件。请参见以下示例:
[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用默认名称创建
Secret
自定义资源(CR):oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.11.1.2.2. 为不同凭证创建 secret 复制链接链接已复制到粘贴板!
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret
对象:
-
具有自定义名称的备份位置
Secret
。自定义名称在DataProtectionApplication
自定义资源(CR)的spec.backupLocations
块中指定。 -
带有默认名称
cloud-credentials
的快照位置Secret
。此Secret
不在DataProtectionApplication
CR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero
文件。 使用默认名称为快照位置创建
Secret
:oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
为您的对象存储创建一个用于备份位置的
credentials-velero
文件。 使用自定义名称为备份位置创建
Secret
:oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将带有自定义名称的
Secret
添加到DataProtectionApplication
CR 中,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11.1.3. 配置数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.11.1.3.1. 设置 Velero CPU 和内存分配 复制链接链接已复制到粘贴板!
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector
字段选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.11.1.3.2. 启用自签名 CA 证书 复制链接链接已复制到粘贴板!
您必须通过编辑 DataProtectionApplication
自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书
。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.backupLocations.velero.objectStorage.caCert
参数和spec.backupLocations.velero.config
参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11.1.3.2.1. 使用带有用于 velero 部署的 velero 命令的 CA 证书 复制链接链接已复制到粘贴板!
如果您望使用 Velero CLI 而又不想在您的系统中安装它,可以为它创建一个别名。
先决条件
-
您必须使用具有
cluster-admin
角色的用户登录到 OpenShift Container Platform 集群。 已安装 OpenShift CLI (
oc
)。要使用别名的 Velero 命令,请运行以下命令:
alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查别名是否正常工作:
Example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要使用这个命令来使用 CA 证书,您可以运行以下命令在 Velero 部署中添加证书:
CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
$ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}') $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要获取备份日志,请运行以下命令:
velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 Velero pod 重启,
/tmp/your-cacert.txt
文件会消失,您需要通过重新运行上一步中的命令来重新创建/tmp/your-cacert.txt
文件。 您可以运行以下命令来检查
/tmp/your-cacert.txt
文件是否存在(在存储它的文件位置中):oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
$ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt" /tmp/your-cacert.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.11.1.4. 安装数据保护应用程序 复制链接链接已复制到粘贴板!
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials
的Secret
。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero
文件创建默认Secret
。如果没有默认Secret
,安装将失败。
流程
-
点 Operators
Installed Operators 并选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication
清单的参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- OADP 的默认命名空间是
openshift-adp
。命名空间是一个变量,可配置。 - 2
- 需要与您的存储位置对应的对象存储插件。对于所有 S3 供应商,所需的插件都是
aws
。对于 Azure 和 GCP 对象存储,需要azure
或gcp
插件。 - 3
openshift
插件是必需的。- 4
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 5
- 将管理请求路由到服务器的管理代理。
- 6
- 如果要启用
nodeAgent
并执行文件系统备份,则将此值设置为true
。 - 7
- 输入
kopia
或restic
作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent
部署守护进程集,这意味着nodeAgent
pod 在每个工作节点上运行。您可以通过在Backup
CR 中添加spec.defaultVolumesToFsBackup: true
来配置文件系统备份。 - 8
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 9
- 按照对象存储服务器文档的命名约定,指定地区。
- 10
- 指定 S3 端点的 URL。
- 11
- 指定您创建的
Secret
对象的名称。如果没有指定这个值,则使用默认值cloud-credentials
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 12
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 13
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
oc get all -n openshift-adp
$ oc get all -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:oc get backupstoragelocations.velero.io -n openshift-adp
$ oc get backupstoragelocations.velero.io -n openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.11.1.5. 使用客户端 burst 和 QPS 设置配置 DPA 复制链接链接已复制到粘贴板!
burst 设置决定在应用限制前可以发送到 velero
服务器的请求数量。达到 burst 限制后,查询每秒 (QPS) 设置决定了每秒可以发送多少个额外请求。
您可以使用 burst 和 QPS 值配置数据保护应用程序 (DPA) 来设置 velero
服务器的 burst 和 QPS 值。您可以使用 DPA 的 dpa.configuration.velero.client-burst
和 dpa.configuration.velero.client-qps
字段来设置 burst 和 QPS 值。
先决条件
- 已安装 OADP Operator。
4.11.1.6. 覆盖 DPA 中的 imagePullPolicy 设置 复制链接链接已复制到粘贴板!
在 OADP 1.4.0 或更早版本中,Operator 会将 Velero 和节点代理 pod 的 imagePullPolicy
字段设置为 Always
。
在 OADP 1.4.1 或更高版本中,Operator 首先检查每个镜像是否有 sha256
或 sha512
摘要,并相应地设置 imagePullPolicy
字段:
-
如果镜像有摘要,Operator 会将
imagePullPolicy
设置为IfNotPresent
。 -
如果镜像没有摘要,Operator 会将
imagePullPolicy
设置为Always
。
您还可以使用 Data Protection Application (DPA)中的 spec.imagePullPolicy
字段覆盖 imagePullPolicy
字段。
先决条件
- 已安装 OADP Operator。
流程
在 DPA 中配置
spec.imagePullPolicy
字段,如下例所示:数据保护应用程序示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定
imagePullPolicy
的值。在本例中,imagePullPolicy
字段设置为Never
。
4.11.1.6.1. 配置节点代理和节点标签 复制链接链接已复制到粘贴板!
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
4.11.1.6.2. 在 DataProtectionApplication CR 中启用 CSI 复制链接链接已复制到粘贴板!
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplication
CR,如下例所示:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 添加
csi
默认插件。
4.11.1.6.3. 在 DataProtectionApplication 中禁用节点代理 复制链接链接已复制到粘贴板!
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。