本页面介绍了如何在 Google Distributed Cloud (GDC) 网闸隔离配置中为集群工作负载创建备份仓库。
备份仓库代表备份的兼容存储位置。备份仓库还用于存储备份、备份方案、恢复方案和恢复的记录。
准备工作
如需创建备份仓库,您必须具备以下条件:- 兼容的端点:对象存储区网站的完全限定域名。
- 存储桶名称:存储桶的名称,可在 GDC 存储桶自定义资源的状态中找到。
- 存储桶访问权限:为对象存储区存储桶配置的权限。
- 服务身份:用于管理 API 交互的服务账号。将这些说明中的变量
SA_NAME替换为您用于访问对象存储的服务账号的名称。
申请 IAM 角色
请与您的 IAM 组织管理员联系,请求在您的项目中授予以下角色:
- Organization Cluster Backup Admin (
organization-cluster-backup-admin):在用户集群中创建、获取、列出、监视和删除备份资源(例如备份和恢复方案)。
创建代码库
使用 GDC 控制台或 API 创建代码库。
控制台
- 登录 GDC 控制台。
- 在导航菜单中,点击集群备份。确保在项目选择器中未选择任何项目。
- 依次点击代码库 > 创建代码库。
- 输入代码库名称。说明是可选的。
- 在 S3 URI 端点字段中,输入包含对象存储区网站的完全限定域名的端点。例如
https://storagegrid.zone.DOMAIN.SUFFIX:PORT。 - 在存储桶名称字段中,输入存储桶的完全限定名称,该名称可从 GDC 存储桶自定义资源的状态中找到。
- 在存储桶区域字段中,输入存储桶的创建区域。
- 在访问密钥 ID 列表中,输入存储桶 Secret 中的访问密钥 ID。
- 在访问密钥字段中,输入存储桶 Secret 中的访问密钥。
- 点击创建。
API
如需使用备份和恢复 API,您必须配置有效的 ClusterBackupRepository 自定义资源并提供所需的凭据。您还必须使用服务身份(通常称为服务账号)通过 API 创建代码库。
获取包含 S3 凭证的 Secret 的名称:
export PROJECT_NAME=PROJECT_NAME export SA_NAME=SA_NAME kubectl get secrets --namespace $PROJECT_NAME -o json | jq -r --arg USER_NAME "${SA_NAME:?}" '.items[] | select( (.metadata.annotations."object.gdc.goog/subject"==$USER_NAME)) | .metadata.name'请务必记录该命令返回的 Secret 名称,并在创建
ClusterBackupRepository自定义资源时将其用作SECRET_NAME值。替换以下内容:
PROJECT_NAME:您的项目的名称。SA_NAME:用于访问对象存储区的服务账号的名称。
如需获取 FQDN 和端点等存储桶详细信息,请从输出中提取
fullyQualifiedName和zonalEndpoints值:kubectl get buckets -n PROJECT_NAME BUCKET_NAME -o yaml添加
ClusterBackupRepository自定义资源以使用这些凭据,并将新资源应用于 Management API 服务器。备份仓库属于集群级资源:apiVersion: backup.gdc.goog/v1 kind: ClusterBackupRepository metadata: name: CLUSTER_BACKUP_REPOSITORY namespace: PROJECT_NAME spec: secretReference: namespace: PROJECT_NAME name: SECRET_NAME endpoint: END_POINT type: "S3" s3Options: bucket: BUCKET_FQDN region: REGION forcePathStyle: FORCE_PATH_STYLE importPolicy: IMPORT_POLICY替换以下内容:
CLUSTER_BACKUP_REPOSITORY:集群备份仓库的名称。PROJECT_NAME:您的项目的名称。SA_NAME:用于访问对象存储区的服务账号的名称。SECRET_NAME:kubectl get secrets命令返回的 Secret 的名称。ENDPOINT:存储系统的完全限定域名,例如https://objectstorage.google.gdch.test。对于type字段,仅支持S3值。BUCKET_FQDN:存储桶的完全限定名称。REGION:创建存储桶的区域。FORCE_PATH_STYLE:使用forcePathStyle字段强制为对象使用路径样式网址。此字段的值必须为true或false。IMPORT_POLICY:设置为以下某一项:ReadWrite:此代码库可用于安排或创建备份、备份方案和恢复。ReadOnly:此代码库只能用于导入和查看备份。您无法在此代码库中创建新的备份或资源,但恢复操作可以使用和引用只读备份进行恢复。您可以随时将备份仓库用作ReadOnly,没有频率限制。
备份仓库导入政策
所有集群都必须至少有一个 ReadWrite 代码库,才能成功使用备份和恢复功能。ReadOnly 代码库是可选的,没有限制,用于了解其他集群备份,以便进行跨集群恢复。
ReadOnly 代码库不能用作额外备份的存储位置,也不能用作导入这些代码库的集群中的备份方案的存储位置。
将代码库导入为 ReadWrite 会为该集群声明代码库,从而阻止其他集群将同一代码库导入为 ReadWrite。导入 ReadWrite 代码库后,该代码库中之前的所有备份、备份方案和恢复记录都会作为本地自定义资源导入到目标集群中。
将代码库导入为 ReadOnly 不会声明代码库,只会导入备份、备份方案、恢复和恢复方案。只读代码库中的备份方案不会安排备份,它们的存在是为了让您了解要从中导入的集群中存在哪些备份方案。移除 ReadOnly 代码库会清理集群中所有导入的资源,并且不会影响存储位置中的资源,因为不会对只读代码库的对象存储执行任何写入操作。
从集群中移除 ReadWrite 代码库后:
- 与该代码库关联的所有本地自定义资源(例如备份和恢复)都会从当前集群中移除。
- 该集群对代码库的声明会被移除,从而允许其他集群将该代码库用作
ReadWrite。不过,这些资源不会从存储端点中移除。