$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
您可以通过安装 OADP 运算符来安装用于 Microsoft Azure 的 OpenShift 数据保护 API (OADP)。该运算符将安装 Velero 1.14。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作容器迁移工具包运算符的依赖项,并且不能作为独立运算符使用。 |
您可以为 Velero 配置 Azure,创建一个默认的 Secret
,然后安装数据保护应用程序。更多详细信息,请参见 安装 OADP 运算符。
要在受限网络环境中安装 OADP 运算符,您必须首先禁用默认的 OperatorHub 源并镜像运算符目录。有关详细信息,请参见 在断开连接的环境中使用运算符生命周期管理器。
您为 OpenShift 数据保护 API (OADP) 配置 Microsoft Azure。
您必须安装 Azure CLI。
使用 Azure 服务的工具应始终具有受限权限,以确保 Azure 资源安全。因此,Azure 提供服务主体,而不是让应用程序以完全特权的用户身份登录。Azure 服务主体是可以与应用程序、托管服务或自动化工具一起使用的名称。
此身份用于访问资源。
创建服务主体
使用服务主体和密码登录
使用服务主体和证书登录
管理服务主体角色
使用服务主体创建 Azure 资源
重置服务主体凭据
更多详细信息,请参见 使用 Azure CLI 创建 Azure 服务主体。
您在DataProtectionApplication
自定义资源 (CR) 中指定备份和快照位置及其密钥。
您可以指定与 AWS S3 兼容的对象存储作为备份位置,例如:多云对象网关;Red Hat Container Storage;Ceph RADOS 网关(也称为 Ceph 对象网关);Red Hat OpenShift Data Foundation;或 MinIO。
Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像作为存档文件备份到对象存储中。
如果您使用云提供商的原生快照 API 来备份持久卷,则必须将云提供商指定为快照位置。
如果您使用容器存储接口 (CSI) 快照,则无需指定快照位置,因为您将创建一个VolumeSnapshotClass
CR 来注册 CSI 驱动程序。
如果您使用文件系统备份 (FSB),则无需指定快照位置,因为 FSB 会将文件系统备份到对象存储中。
如果备份和快照位置使用相同的凭据,或者您不需要快照位置,则创建一个默认的Secret
。
如果备份和快照位置使用不同的凭据,则创建两个密钥对象。
备份位置的自定义Secret
,您在DataProtectionApplication
CR 中指定。
快照位置的默认Secret
,在DataProtectionApplication
CR 中没有引用。
数据保护应用程序需要一个默认的 如果您不想在安装期间指定备份或快照位置,您可以创建一个包含空 |
如果您的备份和快照位置使用相同的凭据,或者您不需要快照位置,则创建一个默认的Secret
。
Secret
的默认名称为cloud-credentials-azure
。
如果您不想在安装期间使用备份位置凭据,您可以使用空 |
您的对象存储和云存储(如有)必须使用相同的凭据。
您必须为 Velero 配置对象存储。
您必须以正确的格式为对象存储创建一个credentials-velero
文件。
创建一个具有默认名称的Secret
$ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
安装数据保护应用程序时,Secret
会在DataProtectionApplication
CR 的spec.backupLocations.credential
块中引用。
如果您的备份和快照位置使用不同的凭据,则必须创建两个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 。 |
您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。
您可以通过编辑DataProtectionApplication
自定义资源 (CR) 清单来设置Velero
pod 的 CPU 和内存资源分配。
您必须已安装用于数据保护的 OpenShift API (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 API (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 for Data Protection (OADP) 中,我们计划将证书挂载到 Velero pod,以便不需要此步骤。
您可以通过创建 DataProtectionApplication
API 的实例来安装数据保护应用程序 (DPA)。
您必须安装 OADP 运算符。
您必须将对象存储配置为备份位置。
如果您使用快照来备份 PV,您的云提供商必须支持原生快照 API 或容器存储接口 (CSI) 快照。
如果备份和快照位置使用相同的凭据,则必须创建一个名为 cloud-credentials-azure
的默认 Secret
。
如果备份和快照位置使用不同的凭据,则必须创建两个 Secret
具有自定义名称的 Secret
用于备份位置。您将此 Secret
添加到 DataProtectionApplication
CR 中。
具有另一个自定义名称的 Secret
用于快照位置。您将此 Secret
添加到 DataProtectionApplication
CR 中。
如果您不想在安装期间指定备份或快照位置,您可以创建一个包含空 |
单击**运算符** → **已安装的运算符** 并选择 OADP 运算符。
在**提供的 API** 下,单击**DataProtectionApplication** 框中的**创建实例**。
单击**YAML 视图**并更新 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 可用性、卷快照删除和备份存储库可用性)的分钟数。默认为 10m。 |
4 | 将管理请求路由到服务器的管理代理。 |
5 | 如果您要启用 nodeAgent 并执行文件系统备份,请将此值设置为 true 。 |
6 | 输入 kopia 或 restic 作为您的上传器。安装后您无法更改选择。对于内置 DataMover,您必须使用 Kopia。nodeAgent 部署了一个守护程序集,这意味着 nodeAgent pod 在每个工作节点上运行。您可以通过将 spec.defaultVolumesToFsBackup: true 添加到 Backup CR 来配置文件系统备份。 |
7 | 指定 Kopia 或 Restic 可用的节点。默认情况下,Kopia 或 Restic 在所有节点上运行。 |
8 | 指定 Azure 资源组。 |
9 | 指定 Azure 存储帐户 ID。 |
10 | 指定 Azure 订阅 ID。 |
11 | 如果您不指定此值,则使用默认名称 cloud-credentials-azure 。如果您指定自定义名称,则自定义名称将用于备份位置。 |
12 | 指定一个 bucket 作为备份存储位置。如果 bucket 不是 Velero 备份的专用 bucket,则必须指定前缀。 |
13 | 指定 Velero 备份的前缀,例如 velero ,如果 bucket 用于多种用途。 |
14 | 如果您使用 CSI 快照或 Restic 来备份 PV,则不需要指定快照位置。 |
15 | 指定您创建的 Secret 对象的名称。如果您不指定此值,则使用默认名称 cloud-credentials-azure 。如果您指定自定义名称,则自定义名称将用于备份位置。 |
单击**创建**。
通过运行以下命令查看 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 backupstoragelocations.velero.io -n openshift-adp
NAME PHASE LAST VALIDATED AGE DEFAULT
dpa-sample-1 Available 1s 3d16h true
突发设置决定在应用限制之前可以发送到 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。 |
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: ""
为了备份具有CSI快照的持久卷,您需要在DataProtectionApplication
自定义资源 (CR) 中启用容器存储接口 (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 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中运行任务”。