$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
您可以通过安装 OADP 运算符并配置备份位置和快照位置来安装用于数据保护的 OpenShift API (OADP) 与 OpenShift Data Foundation。然后,安装数据保护应用程序。
从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本只能用作容器迁移工具包运算符的依赖项,不能作为独立运算符使用。 |
您可以将多云对象网关或任何与 AWS S3 兼容的对象存储配置为备份位置。
有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围。 |
您可以为备份位置创建Secret
,然后安装数据保护应用程序。有关更多详细信息,请参阅安装 OADP 运算符。
要在受限网络环境中安装 OADP 运算符,您必须首先禁用默认的 OperatorHub 源并镜像运算符目录。有关详细信息,请参阅在脱机环境中使用运算符生命周期管理器。
您在DataProtectionApplication
自定义资源 (CR) 中指定备份和快照位置及其密钥。
您可以将与 AWS S3 兼容的对象存储指定为备份位置,例如多云对象网关;Red Hat 容器存储;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 中引用。
数据保护应用程序需要一个默认 如果您不想在安装过程中指定备份或快照位置,您可以创建一个包含空 `credentials-velero` 文件的默认 `Secret`。 |
如果您的备份和快照位置使用相同的凭据,或者您不需要快照位置,则可以创建一个默认的 `Secret`。
Secret
的默认名称是 `cloud-credentials`,除非您的备份存储提供商具有默认插件,例如 `aws`、`azure` 或 `gcp`。在这种情况下,默认名称在特定于提供商的 OADP 安装过程中指定。
如果您不想在安装过程中使用备份位置凭据,可以使用空 `credentials-velero` 文件创建一个具有默认名称的 `Secret`。 |
您的对象存储和云存储(如有)必须使用相同的凭据。
您必须为 Velero 配置对象存储。
您必须以适当的格式为对象存储创建一个 `credentials-velero` 文件。
创建具有默认名称的 `Secret`
$ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
安装数据保护应用程序时,会在 `DataProtectionApplication` CR 的 `spec.backupLocations.credential` 块中引用 `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`。 |
您可以通过设置 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
。
如果备份和快照位置使用不同的凭据,则必须创建两个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:
- 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虚拟化一起使用。 |
4 | 如果您使用CSI快照备份PV,请指定csi 默认插件。csi 插件使用Velero CSI beta快照API。您无需配置快照位置。 |
5 | openshift 插件是必须的。 |
6 | 指定在超时发生前等待多个Velero资源(例如Velero CRD可用性、卷快照删除和备份存储库可用性)的分钟数。默认值为10分钟。 |
7 | 将管理请求路由到服务器的管理代理。 |
8 | 如果您想启用nodeAgent 并执行文件系统备份,请将此值设置为true 。 |
9 | 输入kopia 或restic 作为您的上传器。安装后无法更改选择。对于内置DataMover,必须使用Kopia。nodeAgent 部署了一个DaemonSet,这意味着nodeAgent Pod在每个工作节点上运行。您可以通过向Backup CR添加spec.defaultVolumesToFsBackup: true 来配置文件系统备份。 |
10 | 指定Kopia或Restic可用的节点。默认情况下,Kopia或Restic在所有节点上运行。 |
11 | 指定备份提供程序。 |
12 | 指定Secret 的正确默认名称,例如,如果您使用备份提供程序的默认插件,则为cloud-credentials-gcp 。如果指定自定义名称,则自定义名称将用于备份位置。如果您没有指定Secret 名称,则使用默认名称。 |
13 | 指定一个bucket作为备份存储位置。如果该bucket不是专门用于Velero备份的bucket,则必须指定一个前缀。 |
14 | 如果bucket用于多种用途,请指定Velero备份的前缀,例如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
突发设置决定在应用限制之前可以发送到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: ""
如果您在OpenShift Data Foundation上使用集群存储作为您的多云对象网关(MCG)桶backupStorageLocation
,请使用OpenShift Web控制台创建对象桶声明(OBC)。
未能配置对象桶声明(OBC)可能会导致备份不可用。 |
除非另有说明,“NooBaa”指提供轻量级对象存储的开源项目,而“多云对象网关(MCG)”指Red Hat的NooBaa发行版。 有关MCG的更多信息,请参阅使用您的应用程序访问多云对象网关。 |
如使用OpenShift Web控制台创建对象桶声明中所述,使用OpenShift Web控制台创建一个对象桶声明(OBC)。
您可以在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 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中运行任务”。