$ BUCKET=<your_bucket>
您可以通过安装OADP操作符来安装用于与Amazon Web Services (AWS) S3兼容存储的数据保护的OpenShift API (OADP)。该操作符安装Velero 1.14。
从OADP 1.0.4开始,所有OADP 1.0.z版本只能用作容器迁移工具包操作符的依赖项,并且不能作为独立操作符使用。 |
您可以为Velero配置AWS,创建一个默认的Secret
,然后安装数据保护应用程序。更多详情,请参见安装OADP操作符。
要在受限网络环境中安装OADP操作符,您必须首先禁用默认的OperatorHub源并镜像操作符目录。详情请参见在断开连接的环境中使用Operator Lifecycle Manager。
Amazon Simple Storage Service (Amazon S3)是亚马逊的互联网存储解决方案。作为授权用户,您可以随时随地从网络上的任何位置使用此服务来存储和检索任何数量的数据。
您可以使用AWS身份和访问管理(IAM)网络服务安全地控制对Amazon S3和其他Amazon服务的访问。
您可以使用IAM管理权限,这些权限控制用户可以访问哪些AWS资源。您可以使用IAM来进行身份验证(验证用户是否是他们声称的人)和授权(授予使用资源的权限)。
AWS GovCloud (US)是亚马逊开发的存储解决方案,旨在满足美国联邦政府严格而具体的数据安全要求。AWS GovCloud (US)的工作方式与Amazon S3相同,但以下几点除外:
您不能将AWS GovCloud (US)区域中的Amazon S3存储桶的内容直接复制到或从其他AWS区域复制。
如果您使用Amazon S3策略,请使用AWS GovCloud (US) Amazon资源名称(ARN)标识符来明确指定所有AWS中的资源,例如在IAM策略、Amazon S3存储桶名称和API调用中。
在 AWS GovCloud (美国) 区域中,ARN 的标识符与其他标准 AWS 区域中的标识符不同,为 arn:aws-us-gov
。如果您需要指定美国西部或美国东部区域,请使用以下 ARN 之一。
对于美国西部,请使用 us-gov-west-1
。
对于美国东部,请使用 us-gov-east-1
。
对于所有其他标准区域,ARN 以以下内容开头:arn:aws
。
在 AWS GovCloud (美国) 区域中,请使用 Amazon 简单存储服务端点和配额 中“Amazon S3 端点”表的“AWS GovCloud (美国东部)”和“AWS GovCloud (美国西部)”行中列出的端点。如果您正在处理受出口管制的数据,请使用 SSL/TLS 端点之一。如果您有 FIPS 要求,请使用 FIPS 140-2 端点,例如 https://s3-fips.us-gov-west-1.amazonaws.com 或 https://s3-fips.us-gov-east-1.amazonaws.com。
要查找 AWS 强加的其他限制,请参阅 Amazon 简单存储服务在 AWS GovCloud (美国) 中的不同之处。
您需要为 OpenShift 数据保护 API (OADP) 配置 Amazon Web Services (AWS)。
您必须安装 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
对象。
您在 DataProtectionApplication
自定义资源 (CR) 中指定备份和快照位置及其密钥。
您可以指定与 AWS S3 兼容的对象存储作为备份位置,例如多云对象网关;Red Hat 容器存储;Ceph RADOS 网关(也称为 Ceph 对象网关);Red Hat OpenShift 数据基础架构;或 MinIO。
Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像作为存档文件备份到对象存储中。
如果您使用云提供商的原生快照 API 来备份持久卷,则必须将云提供商指定为快照位置。
如果您使用容器存储接口 (CSI) 快照,则无需指定快照位置,因为您将创建一个 VolumeSnapshotClass
CR 来注册 CSI 驱动程序。
如果您使用文件系统备份 (FSB),则无需指定快照位置,因为 FSB 将文件系统备份到对象存储中。
如果备份和快照位置使用相同的凭据,或者您不需要快照位置,则创建一个默认的 Secret
。
如果备份和快照位置使用不同的凭据,则创建两个密钥对象。
备份位置的自定义 Secret
,您在 DataProtectionApplication
CR 中指定。
快照位置的默认 Secret
,在 DataProtectionApplication
CR 中未引用。
数据保护应用程序需要一个默认的 如果您不想在安装期间指定备份或快照位置,则可以使用空 |
如果您的备份和快照位置使用相同的凭据,或者您不需要快照位置,则创建一个默认的 Secret
。
Secret
的默认名称为 cloud-credentials
。
如果您不想在安装期间使用备份位置凭据,则可以使用空 |
您的对象存储和云存储(如有)必须使用相同的凭据。
您必须为 Velero 配置对象存储。
您必须以适当的格式为对象存储创建一个 credentials-velero
文件。
使用默认名称创建 Secret
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
安装数据保护应用程序时,Secret
在 DataProtectionApplication
CR 的 spec.backupLocations.credential
块中引用。
如果您的备份和快照位置使用不同的凭据,则在 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"
您可以按照以下示例过程配置 AWS 备份存储位置 (BSL)。
您已使用 AWS 创建了一个对象存储桶。
您已安装 OADP 运算符。
使用适用于您用例的值配置 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 | 对象存储插件的名称。在此示例中,插件为 aws 。此字段是必需的。 |
2 | 用于存储备份的存储桶的名称。此字段是必需的。 |
3 | 用于存储备份的存储桶中的前缀。此字段是可选的。 |
4 | 备份存储位置的凭据。您可以设置自定义凭据。如果未设置自定义凭据,则使用默认凭据的密钥。 |
5 | 密钥凭据数据中的key 。 |
6 | 包含凭据的密钥名称。 |
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/ ,或完整的ARN ,以启用对存储在S3中的备份的加密。请注意,kmsKeyId 不能与customerKeyEncryptionFile 一起使用。这是一个可选字段。 |
13 | 指定包含SSE-C 客户密钥的文件,以启用对存储在S3中的备份的客户密钥加密。该文件必须包含一个32字节的字符串。customerKeyEncryptionFile 字段指向velero 容器内挂载的密钥。将以下键值对添加到velero cloud-credentials 密钥:customer-key: 。请注意,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 。如果将此字段设置为空字符串("" ),则将跳过校验和检查。默认值为CRC32 。这是一个可选字段。 |
Amazon Web Services (AWS) S3使用Amazon S3托管密钥 (SSE-S3) 应用服务器端加密,作为Amazon S3中每个存储桶的基础加密级别。
OpenShift API for Data Protection (OADP) 在将数据从集群传输到存储时,使用SSL/TLS、HTTPS和velero-repo-credentials
密钥进行数据加密。为了防止AWS凭据丢失或被盗的情况下的备份数据泄露,请应用额外的加密层。
velero-plugin-for-aws插件提供了几种额外的加密方法。您应该查看其配置选项并考虑实施额外的加密。
您可以使用带有客户提供的密钥的服务器端加密 (SSE-C) 来存储您自己的加密密钥。如果您的AWS凭据泄露,此功能可提供额外的安全性。
务必以安全可靠的方式存储加密密钥。如果您没有加密密钥,则无法恢复加密数据和备份。 |
要使OADP将包含您的SSE-C密钥的密钥挂载到/credentials
处的Velero pod,请使用以下AWS默认密钥名称:cloud-credentials
,并至少保留以下标签之一为空
dpa.spec.backupLocations[].velero.credential
dpa.spec.snapshotLocations[].velero.credential
这是一个针对已知问题的解决方法:https://issues.redhat.com/browse/OADP-3971。
以下过程包含一个 |
如果您需要备份位置使用与cloud-credentials
不同的名称的凭据,则必须添加一个快照位置(例如以下示例中的位置),该位置不包含凭据名称。由于该示例不包含凭据名称,因此快照位置将使用cloud-credentials
作为其拍摄快照的密钥。
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密钥
如果您最初安装和配置OADP,请同时创建AWS凭据和加密密钥,方法是运行以下命令
$ 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才能在现有安装上正确重新挂载密钥凭据。 |
安装已完成,您可以备份和还原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备份的文件。
验证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
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
您可以通过编辑 `DataProtectionApplication` 自定义资源 (CR) 清单来设置 `Velero` pod 的 CPU 和内存资源分配。
您必须已安装 OpenShift 数据保护 (OADP) 运算符。
编辑 `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
1 | 指定要提供给 Velero podSpec 的节点选择器。 |
2 | 列出的 `resourceAllocations` 用于平均使用情况。 |
Kopia 是 OADP 1.3 及更高版本中的一个选项。您可以使用 Kopia 进行文件系统备份,对于使用内置数据移动器的 Data Mover 案例,Kopia 是您唯一的选项。 Kopia 比 Restic 更消耗资源,您可能需要相应地调整 CPU 和内存需求。 |
使用 `nodeSelector` 字段选择哪些节点可以运行节点代理。`nodeSelector` 字段是推荐的最简单的节点选择约束形式。指定的任何标签都必须与每个节点上的标签匹配。
更多详细信息,请参见 配置节点代理和节点标签。
您必须通过编辑 `DataProtectionApplication` 自定义资源 (CR) 清单来启用对象存储的自签名 CA 证书,以防止出现 `certificate signed by unknown authority` 错误。
您必须已安装 OpenShift 数据保护 (OADP) 运算符。
编辑 `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)
# ...
1 | 指定 Base64 编码的 CA 证书字符串。 |
2 | `insecureSkipTLSVerify` 配置可以设置为 `"true"` 或 `"false"`。如果设置为 `"true"`,则禁用 SSL/TLS 安全性。如果设置为 `"false"`,则启用 SSL/TLS 安全性。 |
您可以通过为其创建别名来使用 Velero CLI,而无需将其本地安装到您的系统上。
您必须以具有 `cluster-admin` 角色的用户身份登录到 OpenShift Container Platform 集群。
您必须已安装 OpenShift CLI (`oc`)。
要使用 Velero 命令别名,请运行以下命令:
$ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
运行以下命令检查别名是否正常工作:
$ 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 (OADP) 的未来版本中,我们计划将证书挂载到 Velero pod,以便无需执行此步骤。
您可以通过创建 `DataProtectionApplication` API 的实例来安装数据保护应用程序 (DPA)。
您必须安装 OADP 运算符。
您必须将对象存储配置为备份位置。
如果您使用快照来备份 PV,则您的云提供商必须支持本机快照 API 或容器存储接口 (CSI) 快照。
如果备份和快照位置使用相同的凭据,则必须创建名称为 `cloud-credentials` 的默认 `Secret`。
如果备份和快照位置使用不同的凭据,则必须创建名称为 `cloud-credentials` 的默认 `Secret`,其中包含备份和快照位置凭据的单独配置文件。
如果您不想在安装过程中指定备份或快照位置,您可以创建一个包含空 `credentials-velero` 文件的默认 `Secret`。如果没有默认 `Secret`,安装将失败。 |
单击 **运算符** → **已安装的运算符** 并选择 OADP 运算符。
在 **提供的 API** 下,单击 **DataProtectionApplication** 框中的 **创建实例**。
单击 **YAML 视图** 并更新 `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 可用性、卷快照删除和备份存储库可用性)的分钟数。默认为 10 分钟。 |
4 | 将管理请求路由到服务器的管理代理。 |
5 | 如果您想启用 `nodeAgent` 并执行文件系统备份,请将此值设置为 `true`。 |
6 | 输入 `kopia` 或 `restic` 作为您的上传器。安装后您无法更改选择。对于内置 DataMover,您必须使用 Kopia。`nodeAgent` 部署了一个守护程序集,这意味着 `nodeAgent` pod 在每个工作节点上运行。您可以通过将 `spec.defaultVolumesToFsBackup: true` 添加到 `Backup` CR 来配置文件系统备份。 |
7 | 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。 |
8 | 指定一个桶作为备份存储位置。如果该桶不是 Velero 备份的专用桶,则必须指定一个前缀。 |
9 | 如果该桶用于多种用途,则为 Velero 备份指定一个前缀,例如 `velero`。 |
10 | 指定是否强制为 S3 对象使用路径样式 URL(布尔值)。AWS S3 不需要。仅对于与 S3 兼容的存储需要。 |
11 | 指定您用于存储备份的对象存储的 URL。AWS S3 不需要。仅对于与 S3 兼容的存储需要。 |
12 | 指定您创建的 `Secret` 对象的名称。如果您未指定此值,则使用默认名称 `cloud-credentials`。如果您指定自定义名称,则自定义名称将用于备份位置。 |
13 | 指定快照位置,除非您使用 CSI 快照或文件系统备份 (FSB) 来备份 PV。 |
14 | 快照位置必须与 PV 位于同一区域。 |
15 | 指定您创建的Secret 对象的名称。如果您未指定此值,则使用默认名称cloud-credentials 。如果您指定自定义名称,则自定义名称将用于快照位置。如果您的备份和快照位置使用不同的凭据,请在credentials-velero 文件中创建单独的配置文件。 |
点击创建。
通过运行以下命令查看用于数据保护的 OpenShift API (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 backupstoragelocations.velero.io -n openshift-adp
NAME PHASE LAST VALIDATED AGE DEFAULT
dpa-sample-1 Available 1s 3d16h true
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: ""
您可以将数据保护应用程序 (DPA) 中的备份存储位置 (BSL) 配置为对 Amazon 简单存储服务 (Amazon S3) 和与 S3 兼容的存储提供商都使用 MD5 校验和算法。校验和算法计算上传和下载到 Amazon S3 的对象的校验和。您可以使用以下选项之一来设置 DPA 的spec.backupLocations.velero.config.checksumAlgorithm
部分中的checksumAlgorithm
字段。
CRC32
CRC32C
SHA1
SHA256
您也可以将 如果您未为 |
您已安装 OADP 运算符。
您已将 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 中设置 空值仅添加到使用 DPA 创建的 BSL。如果您使用任何其他方法创建 BSL,则不会添加此值。 |
突发设置决定在应用限制之前可以向velero
服务器发送多少个请求。达到突发限制后,每秒查询数 (QPS) 设置决定每秒可以发送多少个额外请求。
您可以通过使用突发和 QPS 值配置数据保护应用程序 (DPA) 来设置velero
服务器的突发和 QPS 值。您可以使用 DPA 的dpa.configuration.velero.client-burst
和dpa.configuration.velero.client-qps
字段来设置突发和 QPS 值。
您已安装 OADP 运算符。
按照以下示例在 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
1 | 指定client-burst 值。在此示例中,client-burst 字段设置为 500。 |
2 | 指定client-qps 值。在此示例中,client-qps 字段设置为 300。 |
您可以使用多个 BSL 配置 DPA 并指定云提供商提供的凭据。
您必须安装 OADP 运算符。
您必须使用云提供商提供的凭据创建密钥。
使用多个 BSL 配置 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)
#...
1 | 为第一个 BSL 指定一个名称。 |
2 | 此参数表示此 BSL 是默认 BSL。如果在Backup CR 中未设置 BSL,则使用默认 BSL。您只能将一个 BSL 设置为默认值。 |
3 | 指定存储桶名称。 |
4 | 为 Velero 备份指定一个前缀;例如,velero 。 |
5 | 指定存储桶的 AWS 区域。 |
6 | 指定您创建的默认Secret 对象的名称。 |
7 | 为第二个 BSL 指定一个名称。 |
8 | 指定 S3 端点的 URL。 |
9 | 指定Secret 的正确名称;例如,custom_secret_name_odf 。如果您未指定Secret 名称,则使用默认名称。 |
指定要在备份 CR 中使用的 BSL。请参见以下示例。
apiVersion: velero.io/v1
kind: Backup
# ...
spec:
includedNamespaces:
- <namespace> (1)
storageLocation: <backup_storage_location> (2)
defaultVolumesToFsBackup: true
1 | 指定要备份的命名空间。 |
2 | 指定存储位置。 |
您需要在DataProtectionApplication
自定义资源 (CR) 中启用容器存储接口 (CSI) 以使用 CSI 快照备份持久卷。
云提供商必须支持 CSI 快照。
编辑DataProtectionApplication
CR,例如
apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
...
spec:
configuration:
velero:
defaultPlugins:
- openshift
- csi (1)
1 | 添加csi 默认插件。 |
如果您没有使用Restic
、Kopia
或DataMover
进行备份,则可以在DataProtectionApplication
自定义资源 (CR) 中禁用nodeAgent
字段。在禁用nodeAgent
之前,请确保 OADP 运算符处于空闲状态且未运行任何备份。
要禁用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 中运行任务”。