本页面介绍了如何在 Google Distributed Cloud (GDC) 气隙环境中为集群工作负载创建备份代码库。
备份代码库表示与备份兼容的存储位置。备份库还用于存储备份、备份方案、恢复方案和恢复的记录。
准备工作
如需创建备份代码库,您必须具备以下条件:- 有兼容的端点可用。
- 之前创建的存储桶,用作备份代码库。
- 您已为对象存储桶授予访问权限。
必要的身份和访问权限角色:
- 组织集群备份管理员:管理用户集群中的备份资源,例如备份和恢复计划。请让您的组织 IAM 管理员向您授予组织集群备份管理员 (
organization-cluster-backup-admin) 角色。如需了解详情,请参阅角色定义。
- 组织集群备份管理员:管理用户集群中的备份资源,例如备份和恢复计划。请让您的组织 IAM 管理员向您授予组织集群备份管理员 (
创建代码库
使用 GDC 控制台或 API 创建代码库。
控制台
- 登录 GDC 控制台。
- 在导航菜单中,点击 Backup for Clusters。确保在项目选择器中未选择任何项目。
- 点击创建代码库。
- 输入代码库名称。说明是可选的。
- 在主集群(读/写)列表中,选择一个集群。
- 在关联的集群(只读)列表中,选择关联的集群。
- 在 S3 URI 端点字段中,输入包含对象存储网站的完全限定域名 (FQDN) 的端点。
- 在存储桶名称字段中,输入存储桶的完全限定名称,该名称可从 GDC 存储桶自定义资源的状态中找到。
- 在存储桶区域字段中,输入存储桶的创建区域。
- 在访问密钥 ID 列表中,输入访问密钥 ID。
- 在访问密钥字段中,输入访问密钥。
- 点击创建。
API
如需使用备份和恢复 API,您必须配置有效的ClusterBackupRepository自定义资源作为备份位置,并提供所需的凭据。
获取包含 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。不过,这些资源不会从存储端点中移除。