4.6. 安装和配置 OADP
4.6.1. 关于安装 OADP
作为集群管理员,您可以通过安装 OADP Operator 来为数据保护(OADP)安装 OpenShift API。OADP Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
要备份 Kubernetes 资源和内部镜像,必须将对象存储用作备份位置,如以下存储类型之一:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- 多云对象网关
- AWS S3 兼容对象存储,如 Multicloud 对象网关或 MinIO
您可以为每个单独的 OADP 部署在同一命名空间中配置多个备份存储位置。
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
CloudStorage
API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
当使用 CloudStorage
对象,并希望 OADP 使用 CloudStorage
API 自动创建 S3 存储桶以用作 BackupStorageLocation
时,CloudStorage
API 只是一个技术预览功能。
CloudStorage
API 支持通过指定一个现有的 S3 存储桶来手动创建 BackupStorageLocation
对象。自动创建 S3 存储桶的 CloudStorage
API 目前只为 AWS S3 存储启用。
您可以使用快照或文件系统备份 (FSB) 备份持久性卷 (PV)。
要使用快照备份 PV,您必须有一个支持原生快照 API 或 Container Storage Interface(CSI)快照的云供应商,如以下云供应商之一:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- 启用 CSI 快照的云供应商,如 OpenShift Data Foundation
如果要在 OCP 4.11 及之后的版本中使用 CSI 备份,请安装 OADP 1.1.x。
OADP 1.0.x 不支持 OCP 4.11 及更高版本上的 CSI 备份。OADP 1.0.x 包括 Velero 1.7.x,并需要 API 组 snapshot.storage.k8s.io/v1beta1
,这在 OCP 4.11 及更高版本中不存在。
如果您的云供应商不支持快照,或者您的存储是 NFS,您可以在对象存储中使用文件系统备份对应用程序进行备份:Kopia 或 Restic 来备份应用程序。
您可以创建一个默认 Secret
,然后安装数据保护应用程序。
4.6.1.1. AWS S3 兼容备份存储供应商
OADP 与许多对象存储供应商兼容,用于不同的备份和恢复操作。一些对象存储供应商被完全支持,一些不被支持但可以正常工作,另外一些有已知的限制。
4.6.1.1.1. 支持的备份存储供应商
通过 AWS 插件,以下 AWS S3 兼容对象存储供应商被 OADP 完全支持作为备份存储:
- MinIO
- 多云对象网关 (MCG)
- Amazon Web Services (AWS) S3
- IBM Cloud® Object Storage S3
- Ceph RADOS 网关 (Ceph 对象网关)
- Red Hat Container Storage
- {odf-full}
- Google Cloud Platform (GCP)
- Microsoft Azure
Google Cloud Platform (GCP)和 Microsoft Azure 有自己的 Velero 对象存储插件。
4.6.1.1.2. 不支持的备份存储供应商
通过 AWS 插件,以下 AWS S3 兼容对象存储供应商可以与 Velero 一起正常工作作为备份存储,但它们不被支持,且还没有经过红帽测试:
- IBM Cloud
- Oracle Cloud
- DigitalOcean
- NooBaa,除非使用 Multicloud Object Gateway (MCG) 安装
- Tencent Cloud
- Ceph RADOS v12.2.7
- Quobyte
- Cloudian HyperStore
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
4.6.1.1.3. 带有已知限制的备份存储供应商
通过 AWS 插件,以下 AWS S3 兼容对象存储供应商可以与 Velero 搭配使用,但有一些已知的限制:
- Swift - 它可以作为备份存储的备份存储位置,但对于基于文件系统的卷备份和恢复,它与 Restic 不兼容。
4.6.1.2. 为 OpenShift Data Foundation 上的灾难恢复配置多云对象网关 (MCG)
如果您在 OpenShift Data Foundation 上为 MCG bucket backupStorageLocation
使用集群存储,请将 MCG 配置为外部对象存储。
将 MCG 配置为外部对象存储可能会导致备份不可用。
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
流程
- 将 MCG 配置为外部对象存储,如为混合或多云添加存储资源中所述。
其他资源
4.6.1.3. 关于 OADP 更新频道
安装 OADP Operator 时,您可以选择更新频道。这个频道决定到您接收到的 OADP Operator 和 Velero 的哪些升级。您可以随时切换频道。
可用的更新频道如下:
-
stable 频道现已弃用。stable 频道包含
OADP.v1.1.z
和自OADP.v1.0.z
的更老版本的 OADPClusterServiceVersion
的补丁 (z-stream 更新)。 - stable-1.0 频道已弃用,且不被支持。
- stable-1.1 频道已弃用,且不被支持。
- stable-1.2 频道已弃用,且不被支持。
-
stable-1.3 频道包含
OADP.v1.3.z
,它是最新的 OADP 1.3ClusterServiceVersion
。 -
stable-1.4 频道包含
OADP.v1.4.z
,它是最新的 OADP 1.4ClusterServiceVersion
。
如需更多信息,请参阅 OpenShift Operator 生命周期。
哪个更新频道适合您?
-
stable 频道现已弃用。如果您已使用 stable 频道,您可以继续从
OADP.v1.1.z
获取更新。 - 选择 stable-1.y 更新频道来安装 OADP 1.y,并继续为其接收补丁。如果您选择此频道,您将收到版本 1.y.z 的所有 z-stream 补丁。
何时需要切换更新频道?
- 如果您安装了 OADP 1.y,且只想接收那个 y-stream 的补丁,则必须从 stable 更新频道切换到 stable-1.y 更新频道。然后,您将收到版本 1.y.z 的所有 z-stream 补丁。
- 如果您安装了 OADP 1.0,希望升级到 OADP 1.1,然后只接收 OADP 1.1 的补丁,则必须从 stable-1.0 更新频道切换到 stable-1.1 更新频道。然后,您将收到版本 1.1.z 的所有 z-stream 补丁。
- 如果您安装了 OADP 1.y,其 y 大于 0,并希望切换到 OADP 1.0,则必须卸载 OADP Operator,然后使用 stable-1.0 更新频道重新安装它。然后,您将收到 1.0.z 版本的所有 z-stream 补丁。
您无法通过切换更新频道从 OADP 1.y 切换到 OADP 1.0。您必须卸载 Operator,然后重新安装它。
4.6.1.4. 在多个命名空间中安装 OADP
您可以将 OpenShift API for Data Protection (OADP) 安装到同一集群中的多个命名空间中,以便多个项目所有者可以管理自己的 OADP 实例。这个用例已通过文件系统备份 (FSB) 和 Container Storage Interface (CSI) 进行验证。
您可以根据本文档中包含的每个平台流程指定安装每个 OADP 实例,并有以下额外的要求:
- 同一集群中的所有 OADP 部署都必须相同版本,如 1.1.4。不支持在同一集群中安装 OADP 的不同版本。
-
每个 OADP 部署都必须具有一组唯一的凭证和唯一的
BackupStorageLocation
配置。您还可以在同一命名空间中使用多个BackupStorageLocation
配置。 - 默认情况下,每个 OADP 部署在不同的命名空间中都有集群级别的访问权限。OpenShift Container Platform 管理员需要仔细检查安全性和 RBAC 设置,并对它们进行任何更改,以确保每个 OADP 实例都有正确的权限。
其他资源
4.6.1.5. 基于收集到的数据的 Velero CPU 和内存要求
以下建议基于在扩展和性能实验室中观察到的性能。备份和恢复资源可能会受到插件类型、备份或恢复所需的资源数量,以及与这些资源相关的持久性卷 (PV) 中包含的相应数据。
4.6.1.5.1. 配置的 CPU 和内存要求
配置类型 | [1] 平均用量 | [2] 大使用 | resourceTimeouts |
---|---|---|---|
CSI | Velero: CPU- Request 200m, Limits 1000m 内存 - Request 256Mi, Limits 1024Mi | Velero: CPU- Request 200m, Limits 2000m 内存- Request 256Mi, Limits 2048Mi | N/A |
Restic | [3] Restic: CPU- Request 1000m, Limits 2000m 内存 - Request 16Gi, Limits 32Gi | [4] Restic: CPU - Request 2000m, Limits 8000m 内存 - Request 16Gi, Limits 40Gi | 900m |
[5] 数据 Mover | N/A | N/A | 10m - 平均使用 60m - 大型使用 |
- 平均使用 - 将这些设置用于大多数使用情况。
- 大型使用 - 使用这些设置进行大型使用情况,如大型 PV (500GB 使用情况)、多个命名空间(100+)或单个命名空间中的多个 pod (2000 pods+),以及对涉及大型数据集进行备份和恢复的最佳性能。
- Restic 资源使用量与数据的数量和数据类型对应。例如,许多小文件或大量数据都可能导致 Restic 使用大量资源。在 Velero 文档中 500m 是默认设置,但在我们的大多数测试中,我们认为 200m request 和 1000m limit 是比较适当的设置。如 Velero 文档中所述,除了环境限制外,具体的 CPU 和内存用量还取决于文件和目录的规模。
- 增加 CPU 会对改进备份和恢复时间有重大影响。
- Data Mover - Data Mover 默认 resourceTimeout 为 10m。我们的测试显示恢复大型 PV (500GB 使用量),需要将 resourceTimeout 增加到 60m。
本指南中列出的资源要求仅用于平均使用。对于大型用途,请按照上表所述调整设置。
4.6.1.5.2. 用于大用量的 NodeAgent CPU
测试显示,在使用 OpenShift API for Data Protection (OADP) 时,增加 NodeAgent
CPU 可以显著提高备份和恢复的时间。
因为 Kopia 会以激进的方式消耗资源,因此不建议在没有在运行生产负载的节点上进行限制的环境中使用 Kopia。但是,如果运行 Kopia 时有太低的限制会导致 CPU 的限制,并减慢备份和恢复的速度。测试显示,在具有 20 个内核和 32 Gi 内存的环境中运行 Kopia,支持在跨多个命名空间或在一个命名空间中的 2000 个 pod 中对 100 GB 数据进行备份和恢复操作。
在具有这样配置的环境中的测试中没有出现 CPU 限制或内存饱和的问题。
您可以按照 更改 rook-ceph pod 上的 CPU 和内存资源中的步骤在 Ceph MDS pod 中设置这些限制。
您需要在存储集群自定义资源 (CR) 中添加以下行来设置限制:
resources: mds: limits: cpu: "3" memory: 128Gi requests: cpu: "3" memory: 8Gi
4.6.2. 安装 OADP Operator
您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.13 上安装 Data Protection(OADP)Operator 的 OpenShift API。
OADP Operator 安装 Velero 1.14。
先决条件
-
您必须以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp
项目中安装 Operator。 -
点 Operators
Installed Operators 来验证安装。
4.6.2.1. OADP-Velero-OpenShift Container Platform 版本关系
OADP 版本 | Velero 版本 | OpenShift Container Platform 版本 |
---|---|---|
1.1.0 | 4.9 及更新的版本 | |
1.1.1 | 4.9 及更新的版本 | |
1.1.2 | 4.9 及更新的版本 | |
1.1.3 | 4.9 及更新的版本 | |
1.1.4 | 4.9 及更新的版本 | |
1.1.5 | 4.9 及更新的版本 | |
1.1.6 | 4.11 及更新的版本 | |
1.1.7 | 4.11 及更新的版本 | |
1.2.0 | 4.11 及更新的版本 | |
1.2.1 | 4.11 及更新的版本 | |
1.2.2 | 4.11 及更新的版本 | |
1.2.3 | 4.11 及更新的版本 | |
1.3.0 | 4.10 - 4.15 | |
1.3.1 | 4.10 - 4.15 | |
1.3.2 | 4.10 - 4.15 | |
1.3.3 | 4.10 - 4.15 | |
1.4.0 | 4.14 及更新版本 | |
1.4.1 | 4.14 及更新版本 |
4.6.3. 为 Amazon Web Services 进行数据保护配置 OpenShift API
您可以通过安装 OADP Operator,使用 Amazon Web Services (AWS) 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 AWS,创建一个默认 Secret
,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.6.3.1. 配置 Amazon Web Services
您可以为 OpenShift API 配置 Amazon Web Services(AWS)以进行数据保护(OADP)。
先决条件
- 已安装 AWS CLI。
流程
设置
BUCKET
变量:$ BUCKET=<your_bucket>
设置
REGION
变量:$ REGION=<your_region>
创建 AWS S3 存储桶:
$ aws s3api create-bucket \ --bucket $BUCKET \ --region $REGION \ --create-bucket-configuration LocationConstraint=$REGION 1
- 1
us-east-1
不支持LocationConstraint
。如果您的区域是us-east-1
,忽略--create-bucket-configuration LocationConstraint=$REGION
。
创建一个 IAM 用户:
$ aws iam create-user --user-name velero 1
- 1
- 如果要使用 Velero 备份具有多个 S3 存储桶的集群,请为每个集群创建一个唯一用户名。
创建
velero-policy.json
文件:$ cat > velero-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeSnapshots", "ec2:CreateTags", "ec2:CreateVolume", "ec2:CreateSnapshot", "ec2:DeleteSnapshot" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::${BUCKET}/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::${BUCKET}" ] } ] } EOF
附加策略,为
velero
用户提供所需的最低权限:$ aws iam put-user-policy \ --user-name velero \ --policy-name velero \ --policy-document file://velero-policy.json
为
velero
用户创建访问密钥:$ aws iam create-access-key --user-name velero
输出示例
{ "AccessKey": { "UserName": "velero", "Status": "Active", "CreateDate": "2017-07-31T22:24:41.576Z", "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>, "AccessKeyId": <AWS_ACCESS_KEY_ID> } }
创建
credentials-velero
文件:$ cat << EOF > ./credentials-velero [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> EOF
在安装数据保护应用程序前,您可以使用
credentials-velero
文件为 AWS 创建Secret
对象。
4.6.3.2. 关于备份和恢复位置及其 secret
您可以在 DataProtectionApplication
自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将 AWS S3 兼容对象存储指定为备份位置,如 Multicloud Object Gateway; Red Hat Container Storage; Ceph RADOS Gateway, 也称为 Ceph Object Gateway; {odf-full}; 或 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.6.3.2.1. 创建默认 Secret
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
Secret
的默认名称为 cloud-credentials
。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
-
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。
流程
使用默认名称创建
Secret
:$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.6.3.2.2. 为不同凭证创建配置集
如果您的备份和快照位置使用不同的凭证,您可以在 credentials-velero
文件中创建单独的配置集。
然后,您可以创建一个 Secret
对象并在 DataProtectionApplication
自定义资源(CR)中指定配置集。
流程
使用备份和快照位置的独立配置集创建一个
credentials-velero
文件,如下例所示:[backupStorage] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> [volumeSnapshot] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
使用
credentials-velero
文件创建Secret
对象:$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero 1
在
DataProtectionApplication
CR 中添加配置集,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: ... backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket_name> prefix: <prefix> config: region: us-east-1 profile: "backupStorage" credential: key: cloud name: cloud-credentials snapshotLocations: - velero: provider: aws config: region: us-west-2 profile: "volumeSnapshot"
4.6.3.2.3. 使用 AWS 配置备份存储位置
您可以配置 AWS 备份存储位置 (BSL),如下例所示。
先决条件
- 已使用 AWS 创建对象存储桶。
- 已安装 OADP Operator。
流程
使用适合您用例的值配置 BSL 自定义资源 (CR)。
备份存储位置
apiVersion: oadp.openshift.io/v1alpha1 kind: BackupStorageLocation metadata: name: default namespace: openshift-adp spec: provider: aws 1 objectStorage: bucket: <bucket_name> 2 prefix: <bucket_prefix> 3 credential: 4 key: cloud 5 name: cloud-credentials 6 config: region: <bucket_region> 7 s3ForcePathStyle: "true" 8 s3Url: <s3_url> 9 publicUrl: <public_s3_url> 10 serverSideEncryption: AES256 11 kmsKeyId: "50..c-4da1-419f-a16e-ei...49f" 12 customerKeyEncryptionFile: "/credentials/customer-key" 13 signatureVersion: "1" 14 profile: "default" 15 insecureSkipTLSVerify: "true" 16 enableSharedConfig: "true" 17 tagging: "" 18 checksumAlgorithm: "CRC32" 19
- 1 1
- 对象存储插件的名称。在本例中,插件是
aws
。此字段是必需的。 - 2
- 在其中存储备份的存储桶的名称。此字段是必需的。
- 3
- 在其中存储备份的存储桶的前缀。此字段是可选的。
- 4
- 备份存储位置的凭证。您可以设置自定义凭证。如果没有设置自定义凭证,则使用默认凭证的 secret。
- 5
- secret 凭证数据中的
密钥
。 - 6
- 包含凭证的 secret 名称。
- 7
- 存储桶所在的 AWS 区域。如果 s3ForcePathStyle 为 false,则可选。
- 8
- 决定是否使用路径风格寻址而不是虚拟托管存储桶寻址的布尔值标志。如果使用存储服务,如 MinIO 或 NooBaa,则设置为
true
。这是可选字段。默认值为false
。 - 9
- 您可以在此处显式指定 AWS S3 URL。此字段主要用于存储服务,如 MinIO 或 NooBaa。这是可选字段。
- 10
- 此字段主要用于存储服务,如 MinIO 或 NooBaa。这是可选字段。
- 11
- 用于上传对象的服务器端加密算法的名称,如
AES256
。这是可选字段。 - 12
- 指定 AWS KMS 密钥 ID。您可以格式化示例所示,如别名,如
alias/<KMS-key-alias-name>
,或完整ARN
,以启用存储在 S3 中的备份加密。请注意kmsKeyId
无法用于customerKeyEncryptionFile
。这是可选字段。 - 13
- 指定具有
SSE-C
客户密钥的文件,以启用存储在 S3 中的备份的客户密钥加密。该文件必须包含一个 32 字节的字符串。customerKeyEncryptionFile
字段指向velero
容器中挂载的 secret。将以下“键-值”对添加到velero
cloud-credentials
secret:customer-key: <your_b64_encoded_32byte_string>
.请注意,customerKeyEncryptionFile
字段不能与kmsKeyId
字段一起使用。默认值为一个空字符串(""
),这代表SSE-C
被禁用。这是可选字段。 - 14
- 用于创建签名 URL 的签名算法版本。您可以使用签名的 URL 来下载备份或获取日志。有效值为
1
和4
。默认版本为4
。这是可选字段。 - 15
- 凭证文件中的 AWS 配置集的名称。默认值为
default
。这是可选字段。 - 16
- 如果您不想在连接到对象存储时验证 TLS 证书,例如,使用 MinIO 的自签名证书,请将
insecureSkipTLSVerify
字段设置为true
。将其设置为true
容易受到中间人攻击的影响,不建议在生产环境工作负载中使用。默认值为false
。这是可选字段。 - 17
- 如果要将凭据文件作为共享配置文件加载,请将
enableSharedConfig
字段设置为true
。默认值为false
。这是可选字段。 - 18
- 指定要注解 AWS S3 对象的标签。以键值对的形式指定标签。默认值为一个空字符串 (
""
)。这是可选字段。 - 19
- 指定用于上传对象到 S3 的校验和算法。支持的值包括:
CRC32
,CRC32C
,SHA1
, 和SHA256
。如果将字段设置为空字符串 (""
),则会跳过 checksum 检查。默认值为CRC32
。这是可选字段。
4.6.3.2.4. 创建 OADP SSE-C 加密密钥以提供额外的数据安全性
Amazon Web Services (AWS) S3 应用 Amazon S3 管理密钥(SSE-S3)的服务器端加密,作为 Amazon S3 中每个 bucket 的基本加密级别。
OpenShift API for Data Protection (OADP) 在将数据从集群传输到存储时使用 SSL/TLS、HTTPS 和 velero-repo-credentials
secret 来加密数据。要在丢失了 AWS 凭证或 AWS 凭证被盗用时保护备份数据,请使用额外的加密层。
velero-plugin-for-aws 插件提供了几个额外的加密方法。您应该查看其配置选项,并考虑实施其他加密。
您可以在客户提供的密钥(SSE-C)中使用服务器端加密来存储自己的加密密钥。如果您的 AWS 凭证被公开,此功能会提供额外的安全性。
确保以安全的方式存储加密密钥。如果没有加密密钥,则无法恢复加密的数据和备份。
先决条件
要使 OADP 将一个包含了您的 SSE-C 密钥的 secret 挂载到 Velero pod(位于
/credentials
),为 AWS 使用以下默认 secret 名称:cloud-credentials
,并至少将以下标签之一留空:-
dpa.spec.backupLocations[].velero.credential
dpa.spec.snapshotLocations[].velero.credential
这是对一个已知问题的临时解决方案:https://issues.redhat.com/browse/OADP-3971。
-
以下流程包含了一个没有指定凭证的 spec:backupLocations
块的示例。本例会触发 OADP secret 挂载。
-
如果您需要备份位置带有不是名为
cloud-credentials
的凭证,则需要添加一个快照位置,如以下示例中的凭证,它没有包含凭证名称。由于示例没有包含凭证名称,快照位置将使用cloud-credentials
作为其执行快照的 secret。
没有指定凭证的 DPA 中的快照位置示例
snapshotLocations: - velero: config: profile: default region: <region> provider: aws # ...
流程
创建 SSE-C 加密密钥:
运行以下命令,生成随机数字并将其保存为名为
sse.key
的文件:$ dd if=/dev/urandom bs=1 count=32 > sse.key
运行以下命令,使用 Base64 对
sse.key
进行编码,并将结果保存为名为sse_encoded.key
的文件:$ cat sse.key | base64 > sse_encoded.key
运行以下命令,将名为
sse_encoded.key
的文件链接到名为customer-key
的新文件:$ ln -s sse_encoded.key customer-key
创建一个 OpenShift Container Platform secret:
如果您在初始安装和配置 OADP,同时创建 AWS 凭证和加密密钥 secret,请运行以下命令:
$ oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<path>/openshift_aws_credentials,customer-key=<path>/sse_encoded.key
如果要更新一个现有的安装,编辑
DataProtectionApplication
CR 清单的cloud-credential
secret
块的值,如下例所示:apiVersion: v1 data: cloud: W2Rfa2V5X2lkPSJBS0lBVkJRWUIyRkQ0TlFHRFFPQiIKYXdzX3NlY3JldF9hY2Nlc3Nfa2V5P<snip>rUE1mNWVSbTN5K2FpeWhUTUQyQk1WZHBOIgo= customer-key: v+<snip>TFIiq6aaXPbj8dhos= kind: Secret # ...
编辑
DataProtectionApplication
CR 清单的backupLocations
块中customerKeyEncryptionFile
属性的值,如下例所示:spec: backupLocations: - velero: config: customerKeyEncryptionFile: /credentials/customer-key profile: default # ...
警告您必须重启 Velero pod,以便在现有安装中正确重新挂载 secret 凭证。
在安装完成后,您可以备份和恢复 OpenShift Container Platform 资源。在 AWS S3 存储中保存的数据使用新密钥加密,您无法在没有额外加密密钥的情况下从 AWS S3 控制台或 API 下载。
验证
要验证在没有包含额外密钥的情况下无法下载加密文件,请创建一个测试文件,上传该文件,然后尝试下载该文件。
运行以下命令来创建测试文件:
$ echo "encrypt me please" > test.txt
运行以下命令来上传测试文件:
$ aws s3api put-object \ --bucket <bucket> \ --key test.txt \ --body test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256
尝试下载文件。在 Amazon Web 控制台或终端中运行以下命令:
$ s3cmd get s3://<bucket>/test.txt test.txt
下载失败,因为文件使用了附加的密钥进行加密。
运行以下命令,下载带有额外加密密钥的文件:
$ aws s3api get-object \ --bucket <bucket> \ --key test.txt \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256 \ downloaded.txt
运行以下命令来读取文件内容:
$ cat downloaded.txt
输出示例
encrypt me please
其他资源
您还可以通过运行一个不同的命令,下载由 Velcro 备份的、带有额外加密密钥的文件。请参阅使用 SSE-C 加密密钥下载由 Velero 备份的文件。
4.6.3.2.4.1. 下载带有由 Velero 备份的、带有 SSE-C 加密密钥的文件
当您验证 SSE-C 加密密钥时,您也可以下载带有额外的加密密钥的由 Velcro 备份的文件。
流程
- 运行以下命令,下载使用 Velero 备份的、带有额外加密密钥的文件:
$ aws s3api get-object \ --bucket <bucket> \ --key velero/backups/mysql-persistent-customerkeyencryptionfile4/mysql-persistent-customerkeyencryptionfile4.tar.gz \ --sse-customer-key fileb://sse.key \ --sse-customer-algorithm AES256 \ --debug \ velero_download.tar.gz
4.6.3.3. 配置数据保护应用程序
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.6.3.3.1. 设置 Velero CPU 和内存分配
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... configuration: velero: podConfig: nodeSelector: <node_selector> 1 resourceAllocations: 2 limits: cpu: "1" memory: 1024Mi requests: cpu: 200m memory: 256Mi
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector
字段选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.6.3.3.2. 启用自签名 CA 证书
您必须通过编辑 DataProtectionApplication
自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书
。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.backupLocations.velero.objectStorage.caCert
参数和spec.backupLocations.velero.config
参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket> prefix: <prefix> caCert: <base64_encoded_cert_string> 1 config: insecureSkipTLSVerify: "false" 2 ...
4.6.3.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'
运行以下命令检查别名是否正常工作:
Example
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
要使用这个命令来使用 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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
要获取备份日志,请运行以下命令:
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 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" /tmp/your-cacert.txt
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.6.3.4. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials
的Secret
。 如果备份和快照位置使用不同的凭证,则必须使用默认名称
cloud-credentials
创建一个Secret
,其中包含备份和快照位置凭证的独立配置集。注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero
文件创建默认Secret
。如果没有默认Secret
,安装将失败。
流程
-
点 Operators
Installed Operators 并选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp 1 spec: configuration: velero: defaultPlugins: - openshift 2 - aws resourceTimeout: 10m 3 nodeAgent: 4 enable: true 5 uploaderType: kopia 6 podConfig: nodeSelector: <node_selector> 7 backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket_name> 8 prefix: <prefix> 9 config: region: <region> profile: "default" s3ForcePathStyle: "true" 10 s3Url: <s3_url> 11 credential: key: cloud name: cloud-credentials 12 snapshotLocations: 13 - name: default velero: provider: aws config: region: <region> 14 profile: "default" credential: key: cloud name: cloud-credentials 15
- 1
- OADP 的默认命名空间是
openshift-adp
。命名空间是一个变量,可配置。 - 2
openshift
插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent
并执行文件系统备份,则将此值设置为true
。 - 6
- 输入
kopia
或restic
作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent
部署守护进程集,这意味着nodeAgent
pod 在每个工作节点上运行。您可以通过在Backup
CR 中添加spec.defaultVolumesToFsBackup: true
来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 9
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。 - 10
- 指定是否为 S3 对象强制路径风格 URL (Boolean)。AWS S3 不需要。只适用于 S3 兼容存储。
- 11
- 指定您用于存储备份的对象存储的 URL。AWS S3 不需要。只适用于 S3 兼容存储。
- 12
- 指定您创建的
Secret
对象的名称。如果没有指定这个值,则使用默认值cloud-credentials
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 13
- 指定快照位置,除非您使用 CSI 快照或文件系统备份 (FSB)备份 PV。
- 14
- 快照位置必须与 PV 位于同一区域。
- 15
- 指定您创建的
Secret
对象的名称。如果没有指定这个值,则使用默认值cloud-credentials
。如果指定了自定义名称,则自定义名称用于快照位置。如果您的备份和快照位置使用不同的凭证,您可以在credentials-velero
文件中创建单独的配置集。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
$ oc get all -n openshift-adp
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.3.4.1. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.3.5. 使用 MD5 checksum 算法配置备份存储位置
您可以在数据保护应用程序(DPA)中配置 Backup Storage Location (BSL),为 Amazon Simple Storage Service (Amazon S3)和 S3 兼容存储供应商使用 MD5 checksum 算法。checksum 算法计算校验和,以在 Amazon S3 中上传和下载对象。您可以使用以下选项之一,设置 DPA 的 spec.backupLocations.velero.config.checksumAlgorithm
部分中的 checksumAlgorithm
字段。
-
CRC32
-
CRC32C
-
SHA1
-
SHA256
您还可以将 checksumAlgorithm
字段设置为空值来跳过 MD5 checksum 检查。
如果没有为 checksumAlgorithm
字段设置值,则默认值为 CRC32
。
先决条件
- 已安装 OADP Operator。
- 您已将 Amazon S3 或 S3 兼容对象存储配置为备份位置。
流程
在 DPA 中配置 BSL,如下例所示:
数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: checksumAlgorithm: "" 1 insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: velero: defaultPlugins: - openshift - aws - csi
- 1
- 指定
checksumAlgorithm
。在本例中,checksumAlgorithm
字段被设置为一个空值。您可以从以下列表中选择一个选项:CRC32
,CRC32C
,SHA1
,SHA256
。
如果您使用 Noobaa 作为对象存储供应商,并且没有在 DPA 中设置 spec.backupLocations.velero.config.checksumAlgorithm
字段,则值为空的 checksumAlgorithm
会添加到 BSL 配置中。
空值只为使用 DPA 创建的 BSL 添加。如果您使用任何其他方法创建 BSL,则不会添加这个值。
4.6.3.6. 使用客户端 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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.3.7. 使用多个 BSL 配置 DPA
您可以使用多个 BSL 配置 DPA,并指定云供应商提供的凭证。
先决条件
- 您必须安装 OADP Operator。
- 您必须使用云供应商提供的凭证创建 secret。
流程
使用多个 BSL 配置 DPA。请参见以下示例。
DPA 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication #... backupLocations: - name: aws 1 velero: provider: aws default: true 2 objectStorage: bucket: <bucket_name> 3 prefix: <prefix> 4 config: region: <region_name> 5 profile: "default" credential: key: cloud name: cloud-credentials 6 - name: odf 7 velero: provider: aws default: false objectStorage: bucket: <bucket_name> prefix: <prefix> config: profile: "default" region: <region_name> s3Url: <url> 8 insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" credential: key: cloud name: <custom_secret_name_odf> 9 #...
指定要在备份 CR 中使用的 BSL。请参见以下示例。
备份 CR 示例
apiVersion: velero.io/v1 kind: Backup # ... spec: includedNamespaces: - <namespace> 1 storageLocation: <backup_storage_location> 2 defaultVolumesToFsBackup: true
4.6.3.7.1. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplication
CR,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication ... spec: configuration: velero: defaultPlugins: - openshift - csi 1
- 1
- 添加
csi
默认插件。
4.6.3.7.2. 在 DataProtectionApplication 中禁用节点代理
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
要禁用
nodeAgent
,请将enable
标志设置为false
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- 禁用节点代理。
要启用
nodeAgent
,将enable
标志设置为true
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- 启用节点代理。
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.6.4. 为 IBM Cloud 的数据保护配置 OpenShift API
您可以在 IBM Cloud 集群上安装 Data Protection (OADP) Operator 的 OpenShift API,以便在集群上备份和恢复应用程序。您可以配置 IBM Cloud Object Storage (COS)来存储备份。
4.6.4.1. 配置 COS 实例
您可以创建一个 IBM Cloud Object Storage (COS)实例来存储 OADP 备份数据。创建 COS 实例后,配置 HMAC
服务凭据。
先决条件
- 您有一个 IBM Cloud Platform 帐户。
- 已安装 IBM Cloud CLI。
- 登录到 IBM Cloud。
流程
运行以下命令来安装 IBM Cloud Object Storage (COS)插件:
$ ibmcloud plugin install cos -f
运行以下命令来设置存储桶名称:
$ BUCKET=<bucket_name>
运行以下命令来设置存储桶区域:
$ REGION=<bucket_region> 1
- 1
- 指定存储桶区域,如
eu-gb
。
运行以下命令来创建资源组:
$ ibmcloud resource group-create <resource_group_name>
运行以下命令来设置目标资源组:
$ ibmcloud target -g <resource_group_name>
运行以下命令验证目标资源组是否已正确设置:
$ ibmcloud target
输出示例
API endpoint: https://cloud.ibm.com Region: User: test-user Account: Test Account (fb6......e95) <-> 2...122 Resource group: Default
在示例输出中,资源组设置为
Default
。运行以下命令来设置资源组名称:
$ RESOURCE_GROUP=<resource_group> 1
- 1
- 指定资源组名称,例如
"default
"。
运行以下命令来创建 IBM Cloud
service-instance
资源:$ ibmcloud resource service-instance-create \ <service_instance_name> \1 <service_name> \2 <service_plan> \3 <region_name> 4
示例命令
$ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ 1 standard \ global \ -d premium-global-deployment 2
运行以下命令来提取服务实例 ID:
$ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
运行以下命令来创建 COS 存储桶:
$ ibmcloud cos bucket-create \// --bucket $BUCKET \// --ibm-service-instance-id $SERVICE_INSTANCE_ID \// --region $REGION
$BUCKET
、$SERVICE_INSTANCE_ID
和$REGION
等变量将被您之前设置的值替代。运行以下命令来创建
HMAC
凭据。$ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
从
HMAC
凭证中提取访问密钥 ID 和 secret 访问密钥,并将它们保存到credentials-velero
文件中。您可以使用credentials-velero
文件为备份存储位置创建secret
。运行以下命令:$ cat > credentials-velero << __EOF__ [default] aws_access_key_id=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.access_key_id') aws_secret_access_key=$(ibmcloud resource service-key test-key -o json | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key') __EOF__
4.6.4.2. 创建默认 Secret
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
-
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。
流程
使用默认名称创建
Secret
:$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.6.4.3. 为不同凭证创建 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
-
为您的对象存储创建一个用于备份位置的
credentials-velero
文件。 使用自定义名称为备份位置创建
Secret
:$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
将带有自定义名称的
Secret
添加到DataProtectionApplication
CR 中,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: ... backupLocations: - velero: provider: <provider> default: true credential: key: cloud name: <custom_secret> 1 objectStorage: bucket: <bucket_name> prefix: <prefix>
- 1
- 具有自定义名称的备份位置
Secret
。
4.6.4.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
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: namespace: openshift-adp name: <dpa_name> spec: configuration: velero: defaultPlugins: - openshift - aws - csi backupLocations: - velero: provider: aws 1 default: true objectStorage: bucket: <bucket_name> 2 prefix: velero config: insecureSkipTLSVerify: 'true' profile: default region: <region_name> 3 s3ForcePathStyle: 'true' s3Url: <s3_url> 4 credential: key: cloud name: cloud-credentials 5
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
$ oc get all -n openshift-adp
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.4.5. 设置 Velero CPU 和内存分配
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... configuration: velero: podConfig: nodeSelector: <node_selector> 1 resourceAllocations: 2 limits: cpu: "1" memory: 1024Mi requests: cpu: 200m memory: 256Mi
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
4.6.4.6. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.4.7. 使用客户端 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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.4.8. 使用多个 BSL 配置 DPA
您可以使用多个 BSL 配置 DPA,并指定云供应商提供的凭证。
先决条件
- 您必须安装 OADP Operator。
- 您必须使用云供应商提供的凭证创建 secret。
流程
使用多个 BSL 配置 DPA。请参见以下示例。
DPA 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication #... backupLocations: - name: aws 1 velero: provider: aws default: true 2 objectStorage: bucket: <bucket_name> 3 prefix: <prefix> 4 config: region: <region_name> 5 profile: "default" credential: key: cloud name: cloud-credentials 6 - name: odf 7 velero: provider: aws default: false objectStorage: bucket: <bucket_name> prefix: <prefix> config: profile: "default" region: <region_name> s3Url: <url> 8 insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" credential: key: cloud name: <custom_secret_name_odf> 9 #...
指定要在备份 CR 中使用的 BSL。请参见以下示例。
备份 CR 示例
apiVersion: velero.io/v1 kind: Backup # ... spec: includedNamespaces: - <namespace> 1 storageLocation: <backup_storage_location> 2 defaultVolumesToFsBackup: true
4.6.4.9. 在 DataProtectionApplication 中禁用节点代理
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
要禁用
nodeAgent
,请将enable
标志设置为false
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- 禁用节点代理。
要启用
nodeAgent
,将enable
标志设置为true
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- 启用节点代理。
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.6.5. 为 Microsoft Azure 的数据保护配置 OpenShift API
您可以通过安装 OADP Operator,使用 Microsoft Azure 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 Azure,创建一个默认 Secret
,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.6.5.1. 配置 Microsoft Azure
您可以为 OpenShift API 配置 Microsoft Azure for Data Protection (OADP)。
先决条件
- 已安装 Azure CLI。
使用 Azure 服务的工具应该始终具有受限权限,以确保 Azure 资源安全。因此,Azure 提供了服务主体,而不是以完全特权用户身份登录。Azure 服务主体是一个名称,可用于应用程序、托管服务或自动化工具。
此身份用于访问资源。
- 创建服务主体
- 使用服务主体和密码登录
- 使用服务主体和证书登录
- 管理服务主体角色
- 使用服务主体创建 Azure 资源
- 重置服务主体凭证
如需了解更多详细信息,请参阅使用 Azure CLI 创建 Azure 服务主体。
4.6.5.2. 关于备份和恢复位置及其 secret
您可以在 DataProtectionApplication
自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将 AWS S3 兼容对象存储指定为备份位置,如 Multicloud Object Gateway; Red Hat Container Storage; Ceph RADOS Gateway, 也称为 Ceph Object Gateway; {odf-full}; 或 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.6.5.2.1. 创建默认 Secret
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
Secret
的默认名称为 cloud-credentials-azure
。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
-
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。
流程
使用默认名称创建
Secret
:$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.6.5.2.2. 为不同凭证创建 secret
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret
对象:
-
具有自定义名称的备份位置
Secret
。自定义名称在DataProtectionApplication
自定义资源(CR)的spec.backupLocations
块中指定。 -
带有默认名称
cloud-credentials-azure
的快照位置Secret
。此Secret
不在DataProtectionApplication
CR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero
文件。 使用默认名称为快照位置创建
Secret
:$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
-
为您的对象存储创建一个用于备份位置的
credentials-velero
文件。 使用自定义名称为备份位置创建
Secret
:$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
将带有自定义名称的
Secret
添加到DataProtectionApplication
CR 中,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: ... backupLocations: - velero: config: resourceGroup: <azure_resource_group> storageAccount: <azure_storage_account_id> subscriptionId: <azure_subscription_id> storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY credential: key: cloud name: <custom_secret> 1 provider: azure default: true objectStorage: bucket: <bucket_name> prefix: <prefix> snapshotLocations: - velero: config: resourceGroup: <azure_resource_group> subscriptionId: <azure_subscription_id> incremental: "true" provider: azure
- 1
- 具有自定义名称的备份位置
Secret
。
4.6.5.3. 配置数据保护应用程序
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.6.5.3.1. 设置 Velero CPU 和内存分配
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... configuration: velero: podConfig: nodeSelector: <node_selector> 1 resourceAllocations: 2 limits: cpu: "1" memory: 1024Mi requests: cpu: 200m memory: 256Mi
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector
字段选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.6.5.3.2. 启用自签名 CA 证书
您必须通过编辑 DataProtectionApplication
自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书
。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.backupLocations.velero.objectStorage.caCert
参数和spec.backupLocations.velero.config
参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket> prefix: <prefix> caCert: <base64_encoded_cert_string> 1 config: insecureSkipTLSVerify: "false" 2 ...
4.6.5.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'
运行以下命令检查别名是否正常工作:
Example
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
要使用这个命令来使用 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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
要获取备份日志,请运行以下命令:
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 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" /tmp/your-cacert.txt
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.6.5.4. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-azure
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 -
带有快照位置的另一个自定义名称的
Secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。
注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero
文件创建默认Secret
。如果没有默认Secret
,安装将失败。-
带有备份位置的自定义名称的
流程
-
点 Operators
Installed Operators 并选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp 1 spec: configuration: velero: defaultPlugins: - azure - openshift 2 resourceTimeout: 10m 3 nodeAgent: 4 enable: true 5 uploaderType: kopia 6 podConfig: nodeSelector: <node_selector> 7 backupLocations: - velero: config: resourceGroup: <azure_resource_group> 8 storageAccount: <azure_storage_account_id> 9 subscriptionId: <azure_subscription_id> 10 storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY credential: key: cloud name: cloud-credentials-azure 11 provider: azure default: true objectStorage: bucket: <bucket_name> 12 prefix: <prefix> 13 snapshotLocations: 14 - velero: config: resourceGroup: <azure_resource_group> subscriptionId: <azure_subscription_id> incremental: "true" name: default provider: azure credential: key: cloud name: cloud-credentials-azure 15
- 1
- OADP 的默认命名空间是
openshift-adp
。命名空间是一个变量,可配置。 - 2
openshift
插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent
并执行文件系统备份,则将此值设置为true
。 - 6
- 输入
kopia
或restic
作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent
部署守护进程集,这意味着nodeAgent
pod 在每个工作节点上运行。您可以通过在Backup
CR 中添加spec.defaultVolumesToFsBackup: true
来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 指定 Azure 资源组。
- 9
- 指定 Azure 存储帐户 ID。
- 10
- 指定 Azure 订阅 ID。
- 11
- 如果没有指定这个值,则使用默认值
cloud-credentials-azure
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 12
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 13
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。 - 14
- 如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
- 15
- 指定您创建的
Secret
对象的名称。如果没有指定这个值,则使用默认值cloud-credentials-azure
。如果您指定了自定义名称,则使用自定义名称进行备份位置。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
$ oc get all -n openshift-adp
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.5.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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.5.5.1. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.5.5.2. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplication
CR,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication ... spec: configuration: velero: defaultPlugins: - openshift - csi 1
- 1
- 添加
csi
默认插件。
4.6.5.5.3. 在 DataProtectionApplication 中禁用节点代理
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
要禁用
nodeAgent
,请将enable
标志设置为false
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- 禁用节点代理。
要启用
nodeAgent
,将enable
标志设置为true
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- 启用节点代理。
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.6.6. 配置 OpenShift API 以进行 Google Cloud Platform 的数据保护
您可以通过安装 OADP Operator,使用 Google Cloud Platform (GCP) 安装 OpenShift API for Data Protection (OADP)。Operator 安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以为 Velero 配置 GCP,创建一个默认 Secret
,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.6.6.1. 配置 Google Cloud Platform
对于数据保护(OADP),您可以为 OpenShift API 配置 Google Cloud Platform(GCP)。
先决条件
-
您必须安装了
gcloud
和gsutil
CLI 工具。详情请查看 Google 云文档。
流程
登录到 GCP:
$ gcloud auth login
设置
BUCKET
变量:$ BUCKET=<bucket> 1
- 1
- 指定存储桶名称。
创建存储桶:
$ gsutil mb gs://$BUCKET/
将
PROJECT_ID
变量设置为您的活跃项目:$ PROJECT_ID=$(gcloud config get-value project)
创建服务帐户:
$ gcloud iam service-accounts create velero \ --display-name "Velero service account"
列出服务帐户:
$ gcloud iam service-accounts list
设置
SERVICE_ACCOUNT_EMAIL
变量,使其与email
值匹配:$ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:Velero service account" \ --format 'value(email)')
附加策略,为
velero
用户提供所需的最低权限:$ ROLE_PERMISSIONS=( compute.disks.get compute.disks.create compute.disks.createSnapshot compute.snapshots.get compute.snapshots.create compute.snapshots.useReadOnly compute.snapshots.delete compute.zones.get storage.objects.create storage.objects.delete storage.objects.get storage.objects.list iam.serviceAccounts.signBlob )
创建
velero.server
自定义角色:$ gcloud iam roles create velero.server \ --project $PROJECT_ID \ --title "Velero Server" \ --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
为项目添加 IAM 策略绑定:
$ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \ --role projects/$PROJECT_ID/roles/velero.server
更新 IAM 服务帐户:
$ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
将 IAM 服务帐户的密钥保存到当前目录中的
credentials-velero
文件中:$ gcloud iam service-accounts keys create credentials-velero \ --iam-account $SERVICE_ACCOUNT_EMAIL
在安装 Data Protection Application 前,您可以使用
credentials-velero
文件为 GCP 创建Secret
对象。
4.6.6.2. 关于备份和恢复位置及其 secret
您可以在 DataProtectionApplication
自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将 AWS S3 兼容对象存储指定为备份位置,如 Multicloud Object Gateway; Red Hat Container Storage; Ceph RADOS Gateway, 也称为 Ceph Object Gateway; {odf-full}; 或 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.6.6.2.1. 创建默认 Secret
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
Secret
的默认名称为 cloud-credentials-gcp
。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
-
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。
流程
使用默认名称创建
Secret
:$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.6.6.2.2. 为不同凭证创建 secret
如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret
对象:
-
具有自定义名称的备份位置
Secret
。自定义名称在DataProtectionApplication
自定义资源(CR)的spec.backupLocations
块中指定。 -
带有默认名称
cloud-credentials-gcp
的快照位置Secret
。此Secret
不在DataProtectionApplication
CR 中指定。
流程
-
为您的云供应商为快照位置创建一个
credentials-velero
文件。 使用默认名称为快照位置创建
Secret
:$ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
-
为您的对象存储创建一个用于备份位置的
credentials-velero
文件。 使用自定义名称为备份位置创建
Secret
:$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
将带有自定义名称的
Secret
添加到DataProtectionApplication
CR 中,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: ... backupLocations: - velero: provider: gcp default: true credential: key: cloud name: <custom_secret> 1 objectStorage: bucket: <bucket_name> prefix: <prefix> snapshotLocations: - velero: provider: gcp default: true config: project: <project> snapshotLocation: us-west1
- 1
- 具有自定义名称的备份位置
Secret
。
4.6.6.3. 配置数据保护应用程序
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.6.6.3.1. 设置 Velero CPU 和内存分配
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... configuration: velero: podConfig: nodeSelector: <node_selector> 1 resourceAllocations: 2 limits: cpu: "1" memory: 1024Mi requests: cpu: 200m memory: 256Mi
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector
字段选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.6.6.3.2. 启用自签名 CA 证书
您必须通过编辑 DataProtectionApplication
自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书
。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.backupLocations.velero.objectStorage.caCert
参数和spec.backupLocations.velero.config
参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket> prefix: <prefix> caCert: <base64_encoded_cert_string> 1 config: insecureSkipTLSVerify: "false" 2 ...
4.6.6.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'
运行以下命令检查别名是否正常工作:
Example
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
要使用这个命令来使用 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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
要获取备份日志,请运行以下命令:
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 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" /tmp/your-cacert.txt
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.6.6.4. Google 工作负载身份联邦云身份验证
在 Google Cloud 外部运行的应用程序使用服务帐户密钥(如用户名和密码)来访问 Google Cloud 资源。如果没有正确管理,则这些服务帐户密钥可能会成为安全风险。
使用 Google 的工作负载身份联邦,您可以使用 Identity and Access Management (IAM) 提供外部身份 IAM 角色,包括模拟服务帐户的功能。这消除了与服务帐户密钥相关的维护和安全风险。
工作负载联邦处理加密和解密证书、提取用户属性和验证。身份联邦对身份验证进行外部化,将其传递给安全令牌服务 (STS),并减少对各个开发人员的需求。授权和控制对资源的访问保持应用的职责。
在备份卷时,使用 Google 工作负载身份联邦身份验证的 GCP 上 OADP 仅支持 CSI 快照。
在带有 Google 工作负载身份联邦身份验证的 GCP 上的 OADP 不支持卷快照位置 (VSL) 备份。如需了解更多详细信息,请参阅 Google 工作负载身份联邦已知问题。
如果不使用 Google 工作负载身份联邦云身份验证,请继续安装数据保护应用程序。
先决条件
- 您已以手动模式安装集群,并配置了 GCP Workload Identity。
-
您可以访问 Cloud Credential Operator 实用程序 (
ccoctl
) 以及关联的工作负载身份池。
流程
运行以下命令,创建一个
oadp-credrequest
目录:$ mkdir -p oadp-credrequest
创建
CredentialsRequest.yaml
文件,如下所示:echo 'apiVersion: cloudcredential.openshift.io/v1 kind: CredentialsRequest metadata: name: oadp-operator-credentials namespace: openshift-cloud-credential-operator spec: providerSpec: apiVersion: cloudcredential.openshift.io/v1 kind: GCPProviderSpec permissions: - compute.disks.get - compute.disks.create - compute.disks.createSnapshot - compute.snapshots.get - compute.snapshots.create - compute.snapshots.useReadOnly - compute.snapshots.delete - compute.zones.get - storage.objects.create - storage.objects.delete - storage.objects.get - storage.objects.list - iam.serviceAccounts.signBlob skipServiceCheck: true secretRef: name: cloud-credentials-gcp namespace: <OPERATOR_INSTALL_NS> serviceAccountNames: - velero ' > oadp-credrequest/credrequest.yaml
运行以下命令,使用
ccoctl
实用程序处理oadp-credrequest
目录中的CredentialsRequest
对象:$ ccoctl gcp create-service-accounts \ --name=<name> \ --project=<gcp_project_id> \ --credentials-requests-dir=oadp-credrequest \ --workload-identity-pool=<pool_id> \ --workload-identity-provider=<provider_id>
manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
文件现在可用于以下步骤。运行以下命令来创建命名空间:
$ oc create namespace <OPERATOR_INSTALL_NS>
运行以下命令,将凭证应用到命名空间:
$ oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml
4.6.6.4.1. Google 工作负载身份联邦已知问题
-
在配置了 GCP 工作负载身份联邦时,卷快照位置(VSL) 备份会以一个
PartiallyFailed
阶段完成。Google 工作负载身份联邦身份验证不支持 VSL 备份。
4.6.6.5. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-gcp
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 -
带有快照位置的另一个自定义名称的
Secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。
注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero
文件创建默认Secret
。如果没有默认Secret
,安装将失败。-
带有备份位置的自定义名称的
流程
-
点 Operators
Installed Operators 并选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: <OPERATOR_INSTALL_NS> 1 spec: configuration: velero: defaultPlugins: - gcp - openshift 2 resourceTimeout: 10m 3 nodeAgent: 4 enable: true 5 uploaderType: kopia 6 podConfig: nodeSelector: <node_selector> 7 backupLocations: - velero: provider: gcp default: true credential: key: cloud 8 name: cloud-credentials-gcp 9 objectStorage: bucket: <bucket_name> 10 prefix: <prefix> 11 snapshotLocations: 12 - velero: provider: gcp default: true config: project: <project> snapshotLocation: us-west1 13 credential: key: cloud name: cloud-credentials-gcp 14 backupImages: true 15
- 1
- OADP 的默认命名空间是
openshift-adp
。命名空间是一个变量,可配置。 - 2
openshift
插件是必需的。- 3
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 4
- 将管理请求路由到服务器的管理代理。
- 5
- 如果要启用
nodeAgent
并执行文件系统备份,则将此值设置为true
。 - 6
- 输入
kopia
或restic
作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent
部署守护进程集,这意味着nodeAgent
pod 在每个工作节点上运行。您可以通过在Backup
CR 中添加spec.defaultVolumesToFsBackup: true
来配置文件系统备份。 - 7
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 8
- 包含凭证的 secret 密钥。对于 Google 工作负载身份联邦云身份验证,请使用
service_account.json
。 - 9
- 包含凭证的 secret 名称。如果没有指定这个值,则使用默认值
cloud-credentials-gcp
。 - 10
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 11
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。 - 12
- 指定快照位置,除非您使用 CSI 快照或 Restic 备份 PV。
- 13
- 快照位置必须与 PV 位于同一区域。
- 14
- 指定您创建的
Secret
对象的名称。如果没有指定这个值,则使用默认值cloud-credentials-gcp
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 15
- Google 工作负载身份联邦支持内部镜像备份。如果您不想使用镜像备份,请将此字段设置为
false
。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
$ oc get all -n openshift-adp
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.6.6. 使用客户端 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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.6.6.1. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.6.6.2. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplication
CR,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication ... spec: configuration: velero: defaultPlugins: - openshift - csi 1
- 1
- 添加
csi
默认插件。
4.6.6.6.3. 在 DataProtectionApplication 中禁用节点代理
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
要禁用
nodeAgent
,请将enable
标志设置为false
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- 禁用节点代理。
要启用
nodeAgent
,将enable
标志设置为true
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- 启用节点代理。
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.6.7. 为使用多云对象网关的数据保护配置 OpenShift API
您可以通过安装 OADP Operator,使用 Multicloud Object Gateway (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 提供。
您可以将 Multicloud 对象网关 配置为备份位置。MCG 是 OpenShift Data Foundation 的一个组件。您可以将 MCG 配置为 DataProtectionApplication
自定义资源(CR)中的备份位置。
CloudStorage
API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
为备份位置创建一个 Secret
,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.6.7.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。
流程
-
通过对
NooBaa
自定义资源运行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
在安装 Data Protection Application 时,您可以使用
credentials-velero
文件创建Secret
对象。
4.6.7.2. 关于备份和恢复位置及其 secret
您可以在 DataProtectionApplication
自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将 AWS S3 兼容对象存储指定为备份位置,如 Multicloud Object Gateway; Red Hat Container Storage; Ceph RADOS Gateway, 也称为 Ceph Object Gateway; {odf-full}; 或 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.6.7.2.1. 创建默认 Secret
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
Secret
的默认名称为 cloud-credentials
。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
-
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。
流程
使用默认名称创建
Secret
:$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.6.7.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
-
为您的对象存储创建一个用于备份位置的
credentials-velero
文件。 使用自定义名称为备份位置创建
Secret
:$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
将带有自定义名称的
Secret
添加到DataProtectionApplication
CR 中,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: ... backupLocations: - velero: config: profile: "default" region: <region_name> 1 s3Url: <url> insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" provider: aws default: true credential: key: cloud name: <custom_secret> 2 objectStorage: bucket: <bucket_name> prefix: <prefix>
4.6.7.3. 配置数据保护应用程序
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.6.7.3.1. 设置 Velero CPU 和内存分配
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... configuration: velero: podConfig: nodeSelector: <node_selector> 1 resourceAllocations: 2 limits: cpu: "1" memory: 1024Mi requests: cpu: 200m memory: 256Mi
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector
字段选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.6.7.3.2. 启用自签名 CA 证书
您必须通过编辑 DataProtectionApplication
自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书
。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.backupLocations.velero.objectStorage.caCert
参数和spec.backupLocations.velero.config
参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket> prefix: <prefix> caCert: <base64_encoded_cert_string> 1 config: insecureSkipTLSVerify: "false" 2 ...
4.6.7.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'
运行以下命令检查别名是否正常工作:
Example
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
要使用这个命令来使用 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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
要获取备份日志,请运行以下命令:
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 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" /tmp/your-cacert.txt
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.6.7.4. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 -
带有快照位置的另一个自定义名称的
Secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。
注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero
文件创建默认Secret
。如果没有默认Secret
,安装将失败。-
带有备份位置的自定义名称的
流程
-
点 Operators
Installed Operators 并选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp 1 spec: configuration: velero: defaultPlugins: - aws 2 - openshift 3 resourceTimeout: 10m 4 nodeAgent: 5 enable: true 6 uploaderType: kopia 7 podConfig: nodeSelector: <node_selector> 8 backupLocations: - velero: config: profile: "default" region: <region_name> 9 s3Url: <url> 10 insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" provider: aws default: true credential: key: cloud name: cloud-credentials 11 objectStorage: bucket: <bucket_name> 12 prefix: <prefix> 13
- 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
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.7.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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.7.5.1. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.7.5.2. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplication
CR,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication ... spec: configuration: velero: defaultPlugins: - openshift - csi 1
- 1
- 添加
csi
默认插件。
4.6.7.5.3. 在 DataProtectionApplication 中禁用节点代理
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
要禁用
nodeAgent
,请将enable
标志设置为false
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- 禁用节点代理。
要启用
nodeAgent
,将enable
标志设置为true
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- 启用节点代理。
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.6.8. 为 OpenShift Data Foundation 的数据保护配置 OpenShift API
您可以通过安装 OADP Operator 并配置备份位置和快照位置,在 OpenShift Data Foundation 中安装 OpenShift API for Data Protection (OADP)。然后,您要安装数据保护应用程序。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作 Migration Toolkit for Containers Operator 的依赖项,且不能作为独立 Operator 提供。
您可以将 Multicloud 对象网关 或任何 AWS S3 兼容对象存储配置为备份位置。
CloudStorage
API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
为备份位置创建一个 Secret
,然后安装数据保护应用程序。如需了解更多详细信息,请参阅安装 OADP Operator。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.6.8.1. 关于备份和恢复位置及其 secret
您可以在 DataProtectionApplication
自定义资源(CR)中指定备份和快照位置及其 secret。
备份位置
您可以将 AWS S3 兼容对象存储指定为备份位置,如 Multicloud Object Gateway; Red Hat Container Storage; Ceph RADOS Gateway, 也称为 Ceph Object Gateway; {odf-full}; 或 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.6.8.1.1. 创建默认 Secret
如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret
。
Secret
的默认名称为 cloud-credentials
,除非备份存储供应商有一个默认插件,如 aws
、azure
或 gcp
。在这种情况下,默认名称是在特定于供应商的 OADP 安装过程中指定。
DataProtectionApplication
自定义资源(CR)需要一个默认的 Secret
。否则,安装将失败。如果没有指定备份位置 Secret
的名称,则会使用默认名称。
如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero
文件创建带有默认名称的 Secret
。
先决条件
- 您的对象存储和云存储(若有)必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
-
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。
流程
使用默认名称创建
Secret
:$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
在安装 Data Protection Application 时,secret
会在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
4.6.8.1.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
-
为您的对象存储创建一个用于备份位置的
credentials-velero
文件。 使用自定义名称为备份位置创建
Secret
:$ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
将带有自定义名称的
Secret
添加到DataProtectionApplication
CR 中,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp spec: ... backupLocations: - velero: provider: <provider> default: true credential: key: cloud name: <custom_secret> 1 objectStorage: bucket: <bucket_name> prefix: <prefix>
- 1
- 具有自定义名称的备份位置
Secret
。
4.6.8.2. 配置数据保护应用程序
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
4.6.8.2.1. 设置 Velero CPU 和内存分配
您可以通过编辑 DataProtectionApplication
自定义资源(CR)清单来为 Velero
pod 设置 CPU 和内存分配。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.configuration.velero.podConfig.ResourceAllocations
块中的值,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... configuration: velero: podConfig: nodeSelector: <node_selector> 1 resourceAllocations: 2 limits: cpu: "1" memory: 1024Mi requests: cpu: 200m memory: 256Mi
Kopia 是 OADP 1.3 及之后的版本中的一个选项。您可以使用 Kopia 进行文件系统备份,Kopia 是 Data Mover 的唯一选择,并带有内置数据 Mover。
和 Restic 相比,Kopia 需要更多资源,您可能需要相应地调整 CPU 和内存要求。
使用 nodeSelector
字段选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。任何指定的标签都需要与每个节点上的标签匹配。
如需了解更多详细信息,请参阅配置节点代理和节点标签。
4.6.8.2.1.1. 根据收集的数据调整 Ceph CPU 和内存要求
以下建议基于在扩展和性能实验室中观察到的性能。更改与 {odf-first} 相关。如果使用 {odf-short},请参阅相关的调优指南来了解官方的建议。
4.6.8.2.1.1.1. 配置的 CPU 和内存要求
备份和恢复操作需要大量 CephFS PersistentVolume
(PV)。为了避免 Ceph MDS pod 重启并带有 out-of-memory
(OOM) 错误,建议以下配置:
配置类型 | Request(请求) | 最大限制 |
---|---|---|
CPU | 请求改为 3 | 最大限制为 3 |
内存 | 请求改为 8 Gi | 最大限制为 128 Gi |
4.6.8.2.2. 启用自签名 CA 证书
您必须通过编辑 DataProtectionApplication
自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书
。
先决条件
- 您必须安装了 OpenShift API for Data Protection(OADP)Operator。
流程
编辑
DataProtectionApplication
CR 清单的spec.backupLocations.velero.objectStorage.caCert
参数和spec.backupLocations.velero.config
参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> spec: ... backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket> prefix: <prefix> caCert: <base64_encoded_cert_string> 1 config: insecureSkipTLSVerify: "false" 2 ...
4.6.8.2.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'
运行以下命令检查别名是否正常工作:
Example
$ velero version Client: Version: v1.12.1-OADP Git commit: - Server: Version: v1.12.1-OADP
要使用这个命令来使用 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"
$ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
要获取备份日志,请运行以下命令:
$ velero backup logs <backup_name> --cacert /tmp/<your_cacert.txt>
您可以使用这些日志来查看无法备份的资源的失败和警告。
-
如果 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" /tmp/your-cacert.txt
在以后的 OpenShift API for Data Protection (OADP) 发行版本中,我们计划将证书挂载到 Velero pod,以便不需要这一步。
4.6.8.3. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 -
带有快照位置的另一个自定义名称的
Secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。
注意如果您不想在安装过程中指定备份或快照位置,您可以使用空
credentials-velero
文件创建默认Secret
。如果没有默认Secret
,安装将失败。-
带有备份位置的自定义名称的
流程
-
点 Operators
Installed Operators 并选择 OADP Operator。 - 在 Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例。
点 YAML View 并更新
DataProtectionApplication
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp 1 spec: configuration: velero: defaultPlugins: - aws 2 - kubevirt 3 - csi 4 - openshift 5 resourceTimeout: 10m 6 nodeAgent: 7 enable: true 8 uploaderType: kopia 9 podConfig: nodeSelector: <node_selector> 10 backupLocations: - velero: provider: gcp 11 default: true credential: key: cloud name: <default_secret> 12 objectStorage: bucket: <bucket_name> 13 prefix: <prefix> 14
- 1
- OADP 的默认命名空间是
openshift-adp
。命名空间是一个变量,可配置。 - 2
- 需要与您的存储位置对应的对象存储插件。对于所有 S3 供应商,所需的插件都是
aws
。对于 Azure 和 GCP 对象存储,需要azure
或gcp
插件。 - 3
- 可选:
kubevirt
插件用于 OpenShift Virtualization。 - 4
- 5
openshift
插件是必需的。- 6
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 7
- 将管理请求路由到服务器的管理代理。
- 8
- 如果要启用
nodeAgent
并执行文件系统备份,则将此值设置为true
。 - 9
- 输入
kopia
或restic
作为您的上传者。您不能在安装后更改选择。对于 Built-in DataMover,您必须使用 Kopia。nodeAgent
部署守护进程集,这意味着nodeAgent
pod 在每个工作节点上运行。您可以通过在Backup
CR 中添加spec.defaultVolumesToFsBackup: true
来配置文件系统备份。 - 10
- 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。
- 11
- 指定备份供应商。
- 12
- 如果备份供应商使用一个默认插件,为
Secret
指定正确的默认名称,如cloud-credentials-gcp
。如果指定了一个自定义名称,则使用自定义名称用于备份位置。如果没有指定Secret
名称,则使用默认名称。 - 13
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 14
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
$ oc get all -n openshift-adp
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
4.6.8.4. 使用客户端 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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.8.4.1. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.8.4.2. 为 OpenShift Data Foundation 上的灾难恢复创建对象 Bucket 声明
如果您在 OpenShift Data Foundation 上将集群存储用于 Multicloud 对象网关 (MCG) 存储桶 backupStorageLocation
,请使用 OpenShift Web 控制台创建一个对象 Bucket 声明 (OBC)。
未能配置对象 Bucket 声明 (OBC) 可能会导致备份不可用。
除非另有指定,"NooBaa" 指的是提供轻量级对象存储的开源项目,而 "Multicloud Object Gateway (MCG) " 是指 NooBaa 的红帽发行版本。
如需有关 MCG 的更多信息,请参阅使用应用程序访问多云对象网关。
流程
- 使用 OpenShift Web 控制台创建对象 Bucket 声明 (OBC),如使用 OpenShift Web 控制台创建对象 Bucket 声明中所述。
4.6.8.4.3. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
流程
编辑
DataProtectionApplication
CR,如下例所示:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication ... spec: configuration: velero: defaultPlugins: - openshift - csi 1
- 1
- 添加
csi
默认插件。
4.6.8.4.4. 在 DataProtectionApplication 中禁用节点代理
如果您没有在备份中使用 Restic
、Kopia
或 DataMover
,您可以在 DataProtectionApplication
自定义资源(CR)中禁用 nodeAgent
字段。在禁用 nodeAgent
前,请确保 OADP Operator 闲置且没有运行任何备份。
流程
要禁用
nodeAgent
,请将enable
标志设置为false
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: false 1 uploaderType: kopia # ...
- 1
- 禁用节点代理。
要启用
nodeAgent
,将enable
标志设置为true
。请参见以下示例:DataProtectionApplication
CR 示例# ... configuration: nodeAgent: enable: true 1 uploaderType: kopia # ...
- 1
- 启用节点代理。
您可以设置一个作业来启用和禁用 DataProtectionApplication
CR 中的 nodeAgent
字段。如需更多信息,请参阅"使用作业在 pod 中运行任务"。
4.6.9. 为 OpenShift Virtualization 的数据保护配置 OpenShift API
您可以通过安装 OADP Operator 并配置备份位置,使用 OpenShift Virtualization 安装 OpenShift API for Data Protection (OADP)。然后,您可以安装数据保护应用程序。
使用 OpenShift API for Data Protection 来备份和恢复虚拟机。
OpenShift API for Data Protection with OpenShift Virtualization 支持以下备份和恢复存储选项:
- 容器存储接口 (CSI) 备份
- 使用 DataMover 进行容器存储接口 (CSI) 备份
排除以下存储选项:
- 文件系统备份和恢复
- 卷快照备份和恢复
如需更多信息,请参阅使用文件系统备份备份应用程序: Kopia 或 Restic。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.6.9.1. 使用 OpenShift Virtualization 安装和配置 OADP
作为集群管理员,您可以通过安装 OADP Operator 来安装 OADP。
Operator 安装 Velero 1.14。
先决条件
-
使用具有
cluster-admin
角色的用户访问集群。
流程
- 根据您的存储供应商说明安装 OADP Operator。
-
使用
kubevirt
和openshift
OADP 插件安装数据保护应用程序(DPA)。 通过创建
Backup
自定义资源(CR) 来备份虚拟机。警告红帽支持仅限于以下选项:
- CSI 备份
- 使用 DataMover 的 CSI 备份。
您可以通过创建一个 Restore
CR来恢复 Backup
CR。
4.6.9.2. 安装数据保护应用程序
您可以通过创建 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
清单的参数:apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: <dpa_sample> namespace: openshift-adp 1 spec: configuration: velero: defaultPlugins: - kubevirt 2 - gcp 3 - csi 4 - openshift 5 resourceTimeout: 10m 6 nodeAgent: 7 enable: true 8 uploaderType: kopia 9 podConfig: nodeSelector: <node_selector> 10 backupLocations: - velero: provider: gcp 11 default: true credential: key: cloud name: <default_secret> 12 objectStorage: bucket: <bucket_name> 13 prefix: <prefix> 14
- 1
- OADP 的默认命名空间是
openshift-adp
。命名空间是一个变量,可配置。 - 2
- OpenShift Virtualization 需要
kubevirt
插件。 - 3
- 为备份供应商指定插件,如
gcp
(如果存在)。 - 4
- 5
openshift
插件是必需的。- 6
- 指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
- 7
- 将管理请求路由到服务器的管理代理。
- 8
- 如果要启用
nodeAgent
并执行文件系统备份,则将此值设置为true
。 - 9
- 输入
kopia
作为您的上传程序,以使用 Built-in DataMover。nodeAgent
部署守护进程集,这意味着nodeAgent
pod 在每个工作节点上运行。您可以通过在Backup
CR 中添加spec.defaultVolumesToFsBackup: true
来配置文件系统备份。 - 10
- 指定 Kopia 可用的节点。默认情况下,Kopia 在所有节点上运行。
- 11
- 指定备份供应商。
- 12
- 如果备份供应商使用一个默认插件,为
Secret
指定正确的默认名称,如cloud-credentials-gcp
。如果指定了一个自定义名称,则使用自定义名称用于备份位置。如果没有指定Secret
名称,则使用默认名称。 - 13
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 14
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。
- 点 Create。
验证
运行以下命令,查看 OpenShift API for Data Protection (OADP) 资源来验证安装:
$ oc get all -n openshift-adp
输出示例
NAME READY STATUS RESTARTS AGE pod/oadp-operator-controller-manager-67d9494d47-6l8z8 2/2 Running 0 2m8s pod/node-agent-9cq4q 1/1 Running 0 94s pod/node-agent-m4lts 1/1 Running 0 94s pod/node-agent-pv4kr 1/1 Running 0 95s pod/velero-588db7f655-n842v 1/1 Running 0 95s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/oadp-operator-controller-manager-metrics-service ClusterIP 172.30.70.140 <none> 8443/TCP 2m8s service/openshift-adp-velero-metrics-svc ClusterIP 172.30.10.0 <none> 8085/TCP 8h NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-agent 3 3 3 3 3 <none> 96s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/oadp-operator-controller-manager 1/1 1 1 2m9s deployment.apps/velero 1/1 1 1 96s NAME DESIRED CURRENT READY AGE replicaset.apps/oadp-operator-controller-manager-67d9494d47 1 1 1 2m9s replicaset.apps/velero-588db7f655 1 1 1 96s
运行以下命令,验证
DataProtectionApplication
(DPA) 是否已协调:$ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
输出示例
{"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
-
验证
type
被设置为Reconciled
。 运行以下命令,验证备份存储位置并确认
PHASE
为Available
:$ oc get backupStorageLocation -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true
如果您在虚拟机重启后马上运行 Microsoft Windows 虚拟机(VM)备份,备份可能会失败,并显示 PartiallyFailed
错误。这是因为,在虚拟机启动后,Microsoft Windows Volume Shadow Copy Service (VSS)和客户机代理(GA)服务未就绪。VSS 和 GA 服务未就绪会导致备份失败。在这种情况下,在虚拟机启动后重试备份几分钟。
4.6.9.3. 使用客户端 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。
流程
在 DPA 中配置
client-burst
和client-qps
字段,如下例所示:数据保护应用程序示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: test-dpa namespace: openshift-adp spec: backupLocations: - name: default velero: config: insecureSkipTLSVerify: "true" profile: "default" region: <bucket_region> s3ForcePathStyle: "true" s3Url: <bucket_url> credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: restic velero: client-burst: 500 1 client-qps: 300 2 defaultPlugins: - openshift - aws - kubevirt
4.6.9.3.1. 配置节点代理和节点标签
OADP 的 DPA 使用 nodeSelector
字段来选择哪些节点可以运行节点代理。nodeSelector
字段是节点选择限制的最简单的形式。
任何指定的标签都需要与每个节点上的标签匹配。
在您选择的任何节点上运行节点代理的正确方法是使用自定义标签标记节点:
$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
在 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector
中使用相同的自定义标签,用于标记节点。例如:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/nodeAgent: ""
以下示例是 nodeSelector
的反模式,除非标签 'node-role.kubernetes.io/infra: ""'
和 'node-role.kubernetes.io/worker: ""'
都位于节点上,否则无法工作:
configuration: nodeAgent: enable: true podConfig: nodeSelector: node-role.kubernetes.io/infra: "" node-role.kubernetes.io/worker: ""
4.6.9.4. 关于增量备份支持
OADP 支持对容器化和 OpenShift Virtualization 工作负载进行块
和文件系统
持久性卷的增量备份。下表总结了对文件系统备份 (FSB)、Container Storage Interface (CSI) 和 CSI Data Mover 的支持:
卷模式 | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover |
---|---|---|---|---|
Filesystem | S [1], I [2] | S [1], I [2] | S [1] | S [1], I [2] |
Block | N [3] | N [3] | S [1] | S [1], I [2] |
卷模式 | FSB - Restic | FSB - Kopia | CSI | CSI Data Mover |
---|---|---|---|---|
Filesystem | N [3] | N [3] | S [1] | S [1], I [2] |
Block | N [3] | N [3] | S [1] | S [1], I [2] |
- 支持的备份
- 支持的增量备份
- 不支持
CSI Data Mover 备份使用 Kopia,无论 uploaderType
是什么。
红帽只支持 OADP 版本 1.3.0 及更新的版本,以及 OpenShift Virtualization 版本 4.14 及更新的版本。
在 1.3.0 前 OADP 版本不支持备份和恢复 OpenShift Virtualization。
4.6.10. 为带有多个备份存储位置的数据保护(OADP)配置 OpenShift API
您可以在数据保护应用程序(DPA)中配置一个或多个备份存储位置(BSL)。在创建备份时,您还可以选择要将备份存储到的位置。使用这个配置,您可以使用以下方法存储备份:
- 到不同的区域
- 到不同的存储供应商
OADP 支持配置多个凭证来配置多个 BSL,以便您可以指定与任何 BSL 搭配使用的凭证。
4.6.10.1. 使用多个 BSL 配置 DPA
您可以使用多个 BSL 配置 DPA,并指定云供应商提供的凭证。
先决条件
- 您必须安装 OADP Operator。
- 您必须使用云供应商提供的凭证创建 secret。
流程
使用多个 BSL 配置 DPA。请参见以下示例。
DPA 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication #... backupLocations: - name: aws 1 velero: provider: aws default: true 2 objectStorage: bucket: <bucket_name> 3 prefix: <prefix> 4 config: region: <region_name> 5 profile: "default" credential: key: cloud name: cloud-credentials 6 - name: odf 7 velero: provider: aws default: false objectStorage: bucket: <bucket_name> prefix: <prefix> config: profile: "default" region: <region_name> s3Url: <url> 8 insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" credential: key: cloud name: <custom_secret_name_odf> 9 #...
指定要在备份 CR 中使用的 BSL。请参见以下示例。
备份 CR 示例
apiVersion: velero.io/v1 kind: Backup # ... spec: includedNamespaces: - <namespace> 1 storageLocation: <backup_storage_location> 2 defaultVolumesToFsBackup: true
4.6.10.2. 两个 BSLs 的 OADP 用例
在这种情况下,您可以使用两个云凭证配置有两个存储位置的 DPA。您可以使用默认 BSL 备份带有数据库的应用程序。OADP 将备份资源存储在默认的 BSL 中。然后,您可以使用第二个 BSL 再次备份应用程序。
先决条件
- 您必须安装 OADP Operator。
- 您必须配置两个备份存储位置:AWS S3 和 Multicloud Object Gateway (MCG)。
- 您必须具有一个应用程序,其数据库部署在 Red Hat OpenShift 集群中。
流程
运行以下命令,使用默认名称为 AWS S3 存储供应商创建第一个
Secret
:$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=<aws_credentials_file_name> 1
- 1
- 指定 AWS S3 的云凭证文件的名称。
运行以下命令,使用自定义名称为 MCG 创建第二个
Secret
:$ oc create secret generic mcg-secret -n openshift-adp --from-file cloud=<MCG_credentials_file_name> 1
- 1
- 指定 MCG 的云凭据文件的名称。记录
mcg-secret
自定义 secret 的名称。
使用两个 BSLs 配置 DPA,如下例所示。
DPA 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: two-bsl-dpa namespace: openshift-adp spec: backupLocations: - name: aws velero: config: profile: default region: <region_name> 1 credential: key: cloud name: cloud-credentials default: true objectStorage: bucket: <bucket_name> 2 prefix: velero provider: aws - name: mcg velero: config: insecureSkipTLSVerify: "true" profile: noobaa region: <region_name> 3 s3ForcePathStyle: "true" s3Url: <s3_url> 4 credential: key: cloud name: mcg-secret 5 objectStorage: bucket: <bucket_name_mcg> 6 prefix: velero provider: aws configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - openshift - aws
运行以下命令来创建 DPA:
$ oc create -f <dpa_file_name> 1
- 1
- 指定您配置的 DPA 的文件名。
运行以下命令验证 DPA 是否已协调:
$ oc get dpa -o yaml
运行以下命令验证 BSLs 是否可用:
$ oc get bsl
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT aws Available 5s 3m28s true mcg Available 5s 3m28s
使用默认 BSL 创建备份 CR。
注意在以下示例中,在 backup CR 中没有指定
storageLocation
字段。备份 CR 示例
apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup1 namespace: openshift-adp spec: includedNamespaces: - <mysql_namespace> 1 defaultVolumesToFsBackup: true
- 1
- 指定集群中安装的应用程序的命名空间。
运行以下命令来创建备份:
$ oc apply -f <backup_file_name> 1
- 1
- 指定备份 CR 文件的名称。
运行以下命令,验证使用默认 BSL 的备份是否完成:
$ oc get backup <backup_name> -o yaml 1
- 1
- 指定备份的名称。
使用 MCG 作为 BSL 创建备份 CR。在以下示例中,请注意,在创建备份 CR 时指定了第二个
storageLocation
值。备份
CR
示例apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup1 namespace: openshift-adp spec: includedNamespaces: - <mysql_namespace> 1 storageLocation: mcg 2 defaultVolumesToFsBackup: true
运行以下命令来创建第二个备份:
$ oc apply -f <backup_file_name> 1
- 1
- 指定备份 CR 文件的名称。
运行以下命令,验证备份是否以 MCG 用户身份完成:
$ oc get backup <backup_name> -o yaml 1
- 1
- 指定备份的名称。
其他资源
4.6.11. 使用多个卷快照位置为数据保护(OADP)配置 OpenShift API
您可以配置一个或多个卷快照位置(VSL),将快照存储在不同的云供应商区域中。
4.6.11.1. 使用多个 VSL 配置 DPA
您可以使用多个 VSL 配置 DPA,并指定云供应商提供的凭证。确保在与持久性卷相同的区域中配置快照位置。请参见以下示例。
DPA 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication #... snapshotLocations: - velero: config: profile: default region: <region> 1 credential: key: cloud name: cloud-credentials provider: aws - velero: config: profile: default region: <region> credential: key: cloud name: <custom_credential> 2 provider: aws #...