4.2. 安装和配置 OADP
4.2.1. 关于安装 OADP
作为集群管理员,您可以通过安装 OADP Operator 来为数据保护(OADP)安装 OpenShift API。OADP Operator 会安装 Velero 1.7。
要备份 Kubernetes 资源和内部镜像,必须将对象存储用作备份位置,如以下存储类型之一:
- Amazon Web Services
- Microsoft Azure
- Google Cloud Platform
- 多云对象网关
- S3 兼容对象存储,如 Noobaa 或 Minio
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
您可以使用快照或 Restic 备份持久性卷(PV)。
要使用快照备份 PV,您必须有一个支持原生快照 API 或 Container Storage Interface(CSI)快照的云供应商,如以下云供应商之一:
如果您的云供应商不支持快照,或者您的存储是 NFS,您可以使用 Restic 备份应用程序。
您可以为存储供应商凭证创建一个 Secret
对象,然后安装数据保护应用程序。
其他资源
- Velero 文档中的备份位置和快照位置概述。
4.2.2. 为 Amazon Web Services 进行数据保护安装和配置 OpenShift API
您可以通过安装 OADP Operator、为 Velero 配置 AWS,然后安装数据保护应用程序,安装带有 Amazon Web Services(AWS)的数据保护(OADP)的 OpenShift API。
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.2.2.1. 安装 OADP Operator
您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.8 上安装 Data Protection(OADP)Operator 的 OpenShift API。
OADP Operator 会安装 Velero 1.7。
先决条件
-
您必须以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp
项目中安装 Operator。 -
点 Operators
Installed Operators 来验证安装。
4.2.2.2. 配置 Amazon Web Services S3
您可以将 Amazon Web Services(AWS)S3 存储桶配置为 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
- AWS S3 存储桶必须可以被源和目标集群访问。
- 您必须安装了 AWS CLI。
如果您使用快照复制方法:
- 您必须有权访问 EC2 Elastic Block Storage (EBS)。
- 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
流程
创建 AWS S3 存储桶:
$ aws s3api create-bucket \ --bucket <bucket> \ 1 --region <bucket_region> 2
创建 IAM 用户
velero
:$ aws iam create-user --user-name velero
创建 EC2 EBS 快照策略:
$ cat > velero-ec2-snapshot-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeVolumes", "ec2:DescribeSnapshots", "ec2:CreateTags", "ec2:CreateVolume", "ec2:CreateSnapshot", "ec2:DeleteSnapshot" ], "Resource": "*" } ] } EOF
为一个或所有 S3 存储桶创建 AWS S3 访问策略:
$ cat > velero-s3-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource": [ "arn:aws:s3:::<bucket>/*" 1 ] }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation", "s3:ListBucketMultipartUploads" ], "Resource": [ "arn:aws:s3:::<bucket>" 2 ] } ] } EOF
输出示例
"Resource": [ "arn:aws:s3:::*"
将 EC2 EBS 策略附加到
velero
:$ aws iam put-user-policy \ --user-name velero \ --policy-name velero-ebs \ --policy-document file://velero-ec2-snapshot-policy.json
将 AWS S3 策略附加到
velero
:$ aws iam put-user-policy \ --user-name velero \ --policy-name velero-s3 \ --policy-document file://velero-s3-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>, 1 "AccessKeyId": <AWS_ACCESS_KEY_ID> 2 } }
创建
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.2.2.3. 创建用于备份和快照位置的 secret
如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret
对象。
Secret
的默认名称为 cloud-credentials
。
先决条件
- 对象存储和云存储必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。注意DataProtectionApplication
自定义资源(CR)需要一个Secret
进行安装。如果没有指定spec.backupLocations.credential.name
值,则会使用默认名称。如果您不想指定备份位置或快照位置,则必须使用空
credentials-velero
文件创建带有默认名称的Secret
。
流程
使用默认名称创建
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.2.2.3.1. 为不同的备份和恢复位置凭证配置 secret
如果您的备份和快照位置使用不同的凭证,您可以在 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: - name: default velero: provider: aws config: region: us-west-2 profile: "volumeSnapshot"
4.2.2.4. 配置数据保护应用程序
您可以配置 Velero 资源分配并启用自签名 CA 证书。
4.2.2.4.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: resourceAllocations: limits: cpu: "1" 1 memory: 512Mi 2 requests: cpu: 500m 3 memory: 256Mi 4
4.2.2.4.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.2.2.5. 安装数据保护应用程序
您可以通过创建 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 spec: configuration: velero: defaultPlugins: - openshift 1 - aws restic: enable: true 2 backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket_name> 3 prefix: <prefix> 4 config: region: <region> profile: "default" credential: key: cloud name: cloud-credentials 5 snapshotLocations: 6 - name: default velero: provider: aws config: region: <region> 7 profile: "default"
- 1
openshift
插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。- 2
- 如果要禁用 Restic 安装,设置为
false
。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有Restic
pod。您可以通过在Backup
CR 中添加spec.defaultVolumesToRestic: true
来配置 Restic 以进行备份。 - 3
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 4
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。 - 5
- 指定您创建的
Secret
对象的名称。如果没有指定这个值,则使用默认值cloud-credentials
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 6
- 如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
- 7
- 快照位置必须与 PV 位于同一区域。
- 点 Create。
通过查看 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/oadp-velero-sample-1-aws-registry-5d6968cbdd-d5w9k 1/1 Running 0 95s pod/restic-9cq4q 1/1 Running 0 94s pod/restic-m4lts 1/1 Running 0 94s pod/restic-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/oadp-velero-sample-1-aws-registry-svc ClusterIP 172.30.130.230 <none> 5000/TCP 95s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/restic 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/oadp-velero-sample-1-aws-registry 1/1 1 1 96s 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/oadp-velero-sample-1-aws-registry-5d6968cbdd 1 1 1 96s replicaset.apps/velero-588db7f655 1 1 1 96s
4.2.2.5.1. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
4.2.3. 为 Microsoft Azure 的数据保护安装和配置 OpenShift API
您可以通过安装 OADP Operator、为 Velero 配置 Azure,然后安装数据保护应用程序,使用 Microsoft Azure 安装 OpenShift API for Data ProtectionP。
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.2.3.1. 安装 OADP Operator
您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.8 上安装 Data Protection(OADP)Operator 的 OpenShift API。
OADP Operator 会安装 Velero 1.7。
先决条件
-
您必须以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp
项目中安装 Operator。 -
点 Operators
Installed Operators 来验证安装。
4.2.3.2. 配置 Microsoft Azure Blob
您可以将 Microsoft Azure Blob 存储容器配置为 Migration Toolkit for Containers(MTC)的复制仓库。
先决条件
- 您必须具有 Azure 存储帐户。
- 您必须安装了 Azure CLI。
- Azure Blob 存储容器必须可以被源和目标集群访问。
如果您使用快照复制方法:
- 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
流程
设置
AZURE_RESOURCE_GROUP
变量:$ AZURE_RESOURCE_GROUP=Velero_Backups
创建 Azure 资源组:
$ az group create -n $AZURE_RESOURCE_GROUP --location <CentralUS> 1
- 1
- 指定位置。
设置
AZURE_STORAGE_ACCOUNT_ID
变量:$ AZURE_STORAGE_ACCOUNT_ID=velerobackups
创建 Azure 存储帐户:
$ az storage account create \ --name $AZURE_STORAGE_ACCOUNT_ID \ --resource-group $AZURE_RESOURCE_GROUP \ --sku Standard_GRS \ --encryption-services blob \ --https-only true \ --kind BlobStorage \ --access-tier Hot
设置
BLOB_CONTAINER
变量:$ BLOB_CONTAINER=velero
创建 Azure Blob 存储容器:
$ az storage container create \ -n $BLOB_CONTAINER \ --public-access off \ --account-name $AZURE_STORAGE_ACCOUNT_ID
获取存储帐户访问密钥:
$ AZURE_STORAGE_ACCOUNT_ACCESS_KEY=`az storage account keys list \ --account-name $AZURE_STORAGE_ACCOUNT_ID \ --query "[?keyName == 'key1'].value" -o tsv`
创建
credentials-velero
文件:$ cat << EOF > ./credentials-velero AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID} AZURE_TENANT_ID=${AZURE_TENANT_ID} AZURE_CLIENT_ID=${AZURE_CLIENT_ID} AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET} AZURE_RESOURCE_GROUP=${AZURE_RESOURCE_GROUP} AZURE_STORAGE_ACCOUNT_ACCESS_KEY=${AZURE_STORAGE_ACCOUNT_ACCESS_KEY} 1 AZURE_CLOUD_NAME=AzurePublicCloud EOF
- 1
- 必需。如果
credentials-velero
文件只包含服务主体凭证,则无法备份内部镜像。
在安装 Data Protection 应用前,您可以使用
credentials-velero
文件为 Azure 创建Secret
对象。
4.2.3.3. 创建用于备份和快照位置的 secret
如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret
对象。
Secret
的默认名称为 cloud-credentials-azure
。
先决条件
- 对象存储和云存储必须使用相同的凭证。
- 您必须为 Velero 配置对象存储。
您必须以适当的格式为对象存储创建一个
credentials-velero
文件。注意DataProtectionApplication
自定义资源(CR)需要一个Secret
进行安装。如果没有指定spec.backupLocations.credential.name
值,则会使用默认名称。如果您不想指定备份位置或快照位置,则必须使用空
credentials-velero
文件创建带有默认名称的Secret
。
流程
使用默认名称创建
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.2.3.3.1. 为不同的备份和恢复位置凭证配置 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" name: default provider: azure
- 1
- 具有自定义名称的备份位置
Secret
。
4.2.3.4. 配置数据保护应用程序
您可以配置 Velero 资源分配并启用自签名 CA 证书。
4.2.3.4.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: resourceAllocations: limits: cpu: "1" 1 memory: 512Mi 2 requests: cpu: 500m 3 memory: 256Mi 4
4.2.3.4.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.2.3.5. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-azure
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 带有默认名称
cloud-credentials-azure
的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 spec: configuration: velero: defaultPlugins: - azure - openshift 1 restic: enable: true 2 backupLocations: - velero: config: resourceGroup: <azure_resource_group> 3 storageAccount: <azure_storage_account_id> 4 subscriptionId: <azure_subscription_id> 5 storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY credential: key: cloud name: cloud-credentials-azure 6 provider: azure default: true objectStorage: bucket: <bucket_name> 7 prefix: <prefix> 8 snapshotLocations: 9 - velero: config: resourceGroup: <azure_resource_group> subscriptionId: <azure_subscription_id> incremental: "true" name: default provider: azure
- 1
openshift
插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。- 2
- 如果要禁用 Restic 安装,设置为
false
。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有Restic
pod。您可以通过在Backup
CR 中添加spec.defaultVolumesToRestic: true
来配置 Restic 以进行备份。 - 3
- 指定 Azure 资源组。
- 4
- 指定 Azure 存储帐户 ID。
- 5
- 指定 Azure 订阅 ID。
- 6
- 如果没有指定这个值,则使用默认值
cloud-credentials-azure
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 7
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 8
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。 - 9
- 如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
- 点 Create。
通过查看 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/oadp-velero-sample-1-aws-registry-5d6968cbdd-d5w9k 1/1 Running 0 95s pod/restic-9cq4q 1/1 Running 0 94s pod/restic-m4lts 1/1 Running 0 94s pod/restic-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/oadp-velero-sample-1-aws-registry-svc ClusterIP 172.30.130.230 <none> 5000/TCP 95s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/restic 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/oadp-velero-sample-1-aws-registry 1/1 1 1 96s 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/oadp-velero-sample-1-aws-registry-5d6968cbdd 1 1 1 96s replicaset.apps/velero-588db7f655 1 1 1 96s
4.2.3.5.1. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
4.2.4. 安装和配置 OpenShift API 以进行 Google Cloud Platform 的数据保护
您可以通过安装 OADP Operator、为 Velero 配置 GCP,然后安装数据保护应用程序,使用 Google Cloud Platform(GCP)安装 OpenShift API for Data Protection(GCP)。
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.2.4.1. 安装 OADP Operator
您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.8 上安装 Data Protection(OADP)Operator 的 OpenShift API。
OADP Operator 会安装 Velero 1.7。
先决条件
-
您必须以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp
项目中安装 Operator。 -
点 Operators
Installed Operators 来验证安装。
4.2.4.2. 配置 Google Cloud Platform
您可以将 Google Cloud Platform (GCP) 存储桶配置为 Migration Toolkit for Containers (MTC) 的复制仓库。
先决条件
- AWS S3 存储桶必须可以被源和目标集群访问。
-
您必须安装了
gsutil
。 如果您使用快照复制方法:
- 源和目标集群必须位于同一区域。
- 源和目标集群必须具有相同的存储类。
- 存储类必须与快照兼容。
流程
登录到
gsutil
:$ gsutil init
输出示例
Welcome! This command will take you through the configuration of gcloud. Your current configuration has been set to: [default] To continue, you must login. Would you like to login (Y/n)?
设置
BUCKET
变量:$ BUCKET=<bucket> 1
- 1
- 指定存储桶名称。
创建存储桶:
$ gsutil mb gs://$BUCKET/
将
PROJECT_ID
变量设置为您的活跃项目:$ PROJECT_ID=`gcloud config get-value project`
创建
velero
IAM 服务帐户:$ gcloud iam service-accounts create velero \ --display-name "Velero Storage"
创建
SERVICE_ACCOUNT_EMAIL
变量:$ SERVICE_ACCOUNT_EMAIL=`gcloud iam service-accounts list \ --filter="displayName:Velero Storage" \ --format 'value(email)'`
创建
ROLE_PERMISSIONS
变量:$ 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 )
创建
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.2.4.3. 创建用于备份和快照位置的 secret
如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret
对象。
Secret
的默认名称为 cloud-credentials-gcp
。
先决条件
- 对象存储和云存储必须使用相同的凭证。
- 您必须为 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.2.4.3.1. 为不同的备份和恢复位置凭证配置 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.2.4.4. 配置数据保护应用程序
您可以配置 Velero 资源分配并启用自签名 CA 证书。
4.2.4.4.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: resourceAllocations: limits: cpu: "1" 1 memory: 512Mi 2 requests: cpu: 500m 3 memory: 256Mi 4
4.2.4.4.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.2.4.5. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials-gcp
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 带有默认名称
cloud-credentials-gcp
的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 spec: configuration: velero: defaultPlugins: - gcp - openshift 1 restic: enable: true 2 backupLocations: - velero: provider: gcp default: true credential: key: cloud name: cloud-credentials-gcp 3 objectStorage: bucket: <bucket_name> 4 prefix: <prefix> 5 snapshotLocations: 6 - velero: provider: gcp default: true config: project: <project> snapshotLocation: us-west1 7
- 1
openshift
插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。- 2
- 如果要禁用 Restic 安装,设置为
false
。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有Restic
pod。您可以通过在Backup
CR 中添加spec.defaultVolumesToRestic: true
来配置 Restic 以进行备份。 - 3
- 如果没有指定这个值,则使用默认值
cloud-credentials-gcp
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 4
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 5
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。 - 6
- 如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
- 7
- 快照位置必须与 PV 位于同一区域。
- 点 Create。
通过查看 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/oadp-velero-sample-1-aws-registry-5d6968cbdd-d5w9k 1/1 Running 0 95s pod/restic-9cq4q 1/1 Running 0 94s pod/restic-m4lts 1/1 Running 0 94s pod/restic-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/oadp-velero-sample-1-aws-registry-svc ClusterIP 172.30.130.230 <none> 5000/TCP 95s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/restic 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/oadp-velero-sample-1-aws-registry 1/1 1 1 96s 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/oadp-velero-sample-1-aws-registry-5d6968cbdd 1 1 1 96s replicaset.apps/velero-588db7f655 1 1 1 96s
4.2.4.5.1. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
4.2.5. 安装和配置 OpenShift API 以进行 Google Cloud Platform 的数据保护
您可以通过安装 OADP Operator、创建 Secret
对象,然后安装数据保护应用程序,安装带有 Multicloud Object Gateway(MCG)的数据保护(OADP)的 OpenShift API。
MCG 是 OpenShift Container Storage(OCS)的一个组件。您可以将 MCG 配置为 DataProtectionApplication
自定义资源(CR)中的备份位置。
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
如果您的云供应商具有原生快照 API,请配置快照位置。如果您的云供应商不支持快照,或者存储是 NFS,您可以使用 Restic 创建备份。
您不需要在 Restic 或 Container Storage Interface(CSI)快照的 DataProtectionApplication
CR 中指定快照位置。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.2.5.1. 安装 OADP Operator
您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.8 上安装 Data Protection(OADP)Operator 的 OpenShift API。
OADP Operator 会安装 Velero 1.7。
先决条件
-
您必须以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp
项目中安装 Operator。 -
点 Operators
Installed Operators 来验证安装。
4.2.5.2. 配置多云对象网关
您可以安装 OpenShift Container Storage Operator,并将一个 Multi-Cloud Object Gateway(MCG)存储桶配置为 Migration Toolkit for Containers(MTC)的复制仓库。
4.2.5.2.1. 安装 OpenShift Container Storage Operator
您可以从 OperatorHub 安装 OpenShift Container Storage Operator。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword (本例中为 OCS)来查找 OpenShift Container Storage Operator。
- 选择 OpenShift Container Storage Operator 并点 Install。
- 选择一个 Update Channel、Installation Mode 和 Approval Strategy。
点击 Install。
在 Installed Operators 页面中,OpenShift Container Storage Operator 会出现在 openshift-storage 项目中,状态为 Succeeded。
4.2.5.2.2. 创建 Multi-Cloud Object Gateway 存储桶
您可以创建 Multi-Cloud Object Gateway(MCG)存储桶的自定义资源(CR)。
流程
登录到 OpenShift Container Platform 集群:
$ oc login -u <username>
使用以下内容创建
NooBaa
CR 配置文件,noobaa.yml
:apiVersion: noobaa.io/v1alpha1 kind: NooBaa metadata: name: <noobaa> namespace: openshift-storage spec: dbResources: requests: cpu: 0.5 1 memory: 1Gi coreResources: requests: cpu: 0.5 2 memory: 1Gi
创建
NooBaa
对象:$ oc create -f noobaa.yml
使用以下内容创建
BackingStore
CR 配置文件,bs.yml
:apiVersion: noobaa.io/v1alpha1 kind: BackingStore metadata: finalizers: - noobaa.io/finalizer labels: app: noobaa name: <mcg_backing_store> namespace: openshift-storage spec: pvPool: numVolumes: 3 1 resources: requests: storage: <volume_size> 2 storageClass: <storage_class> 3 type: pv-pool
创建
BackingStore
对象:$ oc create -f bs.yml
使用以下内容创建
BucketClass
CR 配置文件,bc.yml
:apiVersion: noobaa.io/v1alpha1 kind: BucketClass metadata: labels: app: noobaa name: <mcg_bucket_class> namespace: openshift-storage spec: placementPolicy: tiers: - backingStores: - <mcg_backing_store> placement: Spread
创建
BucketClass
对象:$ oc create -f bc.yml
使用以下内容创建
ObjectBucketClaim
CR 配置文件,obc.yml
:apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: <bucket> namespace: openshift-storage spec: bucketName: <bucket> 1 storageClassName: <storage_class> additionalConfig: bucketclass: <mcg_bucket_class>
- 1
- 记录在 MTC web 控制台中添加复制存储库的存储桶名称。
创建
ObjectBucketClaim
对象:$ oc create -f obc.yml
监控资源创建过程以验证
ObjectBucketClaim
的状态变为Bound
:$ watch -n 30 'oc get -n openshift-storage objectbucketclaim migstorage -o yaml'
这个过程可能需要五到十分钟。
获取并记录以下值,当您将复制存储库添加到 MTC web 控制台时需要这些值:
S3 端点:
$ oc get route -n openshift-storage s3
S3 provider access key:
$ oc get secret -n openshift-storage migstorage \ -o go-template='{{ .data.AWS_ACCESS_KEY_ID }}' | base64 --decode
S3 provider secret access key:
$ oc get secret -n openshift-storage migstorage \ -o go-template='{{ .data.AWS_SECRET_ACCESS_KEY }}' | base64 --decode
4.2.5.3. 创建用于备份和快照位置的 secret
如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret
对象。
Secret
的默认名称为 cloud-credentials
。
先决条件
- 对象存储和云存储必须使用相同的凭证。
- 您必须为 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.2.5.3.1. 为不同的备份和恢复位置凭证配置 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: configuration: velero: defaultPlugins: - aws - openshift restic: enable: true backupLocations: - velero: config: profile: "default" region: minio s3Url: <url> insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" provider: aws default: true credential: key: cloud name: <custom_secret> 1 objectStorage: bucket: <bucket_name> prefix: <prefix>
- 1
- 具有自定义名称的备份位置
Secret
。
4.2.5.4. 配置数据保护应用程序
您可以配置 Velero 资源分配并启用自签名 CA 证书。
4.2.5.4.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: resourceAllocations: limits: cpu: "1" 1 memory: 512Mi 2 requests: cpu: 500m 3 memory: 256Mi 4
4.2.5.4.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.2.5.5. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 带有默认名称
cloud-credentials
的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 spec: configuration: velero: defaultPlugins: - aws - openshift 1 restic: enable: true 2 backupLocations: - velero: config: profile: "default" region: minio s3Url: <url> 3 insecureSkipTLSVerify: "true" s3ForcePathStyle: "true" provider: aws default: true credential: key: cloud name: cloud-credentials 4 objectStorage: bucket: <bucket_name> 5 prefix: <prefix> 6
- 1
openshift
插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。- 2
- 如果要禁用 Restic 安装,设置为
false
。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有Restic
pod。您可以通过在Backup
CR 中添加spec.defaultVolumesToRestic: true
来配置 Restic 以进行备份。 - 3
- 指定 S3 端点的 URL。
- 4
- 如果没有指定这个值,则使用默认值
cloud-credentials
。如果您指定了自定义名称,则使用自定义名称进行备份位置。 - 5
- 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 6
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。
- 点 Create。
通过查看 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/oadp-velero-sample-1-aws-registry-5d6968cbdd-d5w9k 1/1 Running 0 95s pod/restic-9cq4q 1/1 Running 0 94s pod/restic-m4lts 1/1 Running 0 94s pod/restic-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/oadp-velero-sample-1-aws-registry-svc ClusterIP 172.30.130.230 <none> 5000/TCP 95s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/restic 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/oadp-velero-sample-1-aws-registry 1/1 1 1 96s 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/oadp-velero-sample-1-aws-registry-5d6968cbdd 1 1 1 96s replicaset.apps/velero-588db7f655 1 1 1 96s
4.2.5.5.1. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
4.2.6. 为 OpenShift Container Storage 的数据保护安装和配置 OpenShift API
您可以通过安装 OADP Operator 并配置备份位置和快照位置,通过安装 OpenShift Container Storage(OCS)安装 OpenShift API for Data Protection(OADP)。然后,您要安装数据保护应用程序。
您可以在 DataProtectionApplication
自定义资源(CR)中将 Multicloud Object Gateway 或任何 S3 兼容对象存储配置为备份位置。
S3 存储的 CloudStorage
API 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
如果云供应商具有原生快照 API,您可以在 DataProtectionApplication
CR 中将云存储配置为快照位置。您不需要为 Restic 或 Container Storage Interface(CSI)快照指定快照。
要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager。
4.2.6.1. 安装 OADP Operator
您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.8 上安装 Data Protection(OADP)Operator 的 OpenShift API。
OADP Operator 会安装 Velero 1.7。
先决条件
-
您必须以具有
cluster-admin
权限的用户身份登录。
流程
-
在 OpenShift Container Platform Web 控制台中,点击 Operators
OperatorHub。 - 使用 Filter by keyword 字段查找 OADP Operator。
- 选择 OADP Operator 并点 Install。
-
点 Install 在
openshift-adp
项目中安装 Operator。 -
点 Operators
Installed Operators 来验证安装。
安装 OADP Operator 后,如果云供应商支持原生快照 API,将对象存储配置为备份位置,云存储为快照位置。
如果云供应商不支持快照,或者存储是 NFS,您可以使用 Restic 创建备份。Restic 不需要快照位置。
4.2.6.2. 创建用于备份和快照位置的 secret
如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret
对象。
Secret
的默认名称为 cloud-credentials
,除非您为备份存储供应商指定了默认插件。
先决条件
- 对象存储和云存储必须使用相同的凭证。
- 您必须为 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.2.6.2.1. 为不同的备份和恢复位置凭证配置 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: configuration: velero: defaultPlugins: - csi - openshift featureFlags: - EnableCSI restic: enable: true backupLocations: - velero: provider: gcp default: true credential: key: cloud name: <custom_secret> 1 objectStorage: bucket: <bucket_name> prefix: <prefix>
- 1
- 具有自定义名称的备份位置
Secret
。
4.2.6.3. 配置数据保护应用程序
您可以配置 Velero 资源分配并启用自签名 CA 证书。
4.2.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: resourceAllocations: limits: cpu: "1" 1 memory: 512Mi 2 requests: cpu: 500m 3 memory: 256Mi 4
4.2.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.2.6.4. 安装数据保护应用程序
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序(DPA)。
先决条件
- 您必须安装 OADP Operator。
- 您必须将对象存储配置为备份位置。
- 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
-
如果备份和快照位置使用相同的凭证,您必须创建带有默认名称
cloud-credentials
的Secret
。 如果备份和快照位置使用不同的凭证,您必须创建两个
Secret
:-
带有备份位置的自定义名称的
secret
。您可以将此Secret
添加到DataProtectionApplication
CR 中。 带有默认名称
cloud-credentials
的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 spec: configuration: velero: defaultPlugins: - gcp <.> - csi <.> - openshift 1 restic: enable: true 2 backupLocations: - velero: provider: gcp 3 default: true credential: key: cloud name: <default_secret> 4 objectStorage: bucket: <bucket_name> 5 prefix: <prefix> 6
- 1
- 为备份供应商指定默认插件,如
gcp
(如果适用)。 - 2
- 3
openshift
插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。- 4
- 如果要禁用 Restic 安装,设置为
false
。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有Restic
pod。您可以通过在Backup
CR 中添加spec.defaultVolumesToRestic: true
来配置 Restic 以进行备份。 - 5
- 指定备份供应商。
- 6
- 如果将默认插件用于备份提供程序,您必须为
Secret
指定正确的默认名称,例如cloud-credentials-gcp
。如果您指定了自定义名称,则使用自定义名称进行备份位置。如果没有指定Secret
名称,则使用默认名称。 - 指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
- 如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如
velero
。
- 点 Create。
通过查看 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/oadp-velero-sample-1-aws-registry-5d6968cbdd-d5w9k 1/1 Running 0 95s pod/restic-9cq4q 1/1 Running 0 94s pod/restic-m4lts 1/1 Running 0 94s pod/restic-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/oadp-velero-sample-1-aws-registry-svc ClusterIP 172.30.130.230 <none> 5000/TCP 95s NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/restic 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/oadp-velero-sample-1-aws-registry 1/1 1 1 96s 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/oadp-velero-sample-1-aws-registry-5d6968cbdd 1 1 1 96s replicaset.apps/velero-588db7f655 1 1 1 96s
4.2.6.4.1. 在 DataProtectionApplication CR 中启用 CSI
您可以在 DataProtectionApplication
自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。
先决条件
- 云供应商必须支持 CSI 快照。
4.2.7. 为数据保护卸载 OpenShift API
您可以通过删除 OADP Operator 来卸载 OpenShift API for Data Protection(OADP)。详情请参阅从集群中删除 Operator。