本页面介绍了如何在 Google Distributed Cloud (GDC) 气隙环境中为虚拟机 (VM) 创建备份存储库。
在创建备份或快照之前,您必须定义至少一个可在多个备份或快照之间共享的备份代码库。备份代码库用于告知备份系统在何处存储或检索备份。 虚拟机的备份代码库仅限于管理 API 服务器。
准备工作
在创建备份代码库之前,您必须预配底层存储空间并配置必要的权限,包括:
- 对象存储桶和与 S3 兼容的端点。
- 已获授予存储桶访问权限的服务账号及其 S3 凭据。
必要的 IAM 角色:
- 组织备份管理员:管理用户集群中的备份和恢复计划等备份资源。
- Secret 查看器:查看项目中的 Kubernetes Secret。
请让您的组织 IAM 管理员向您授予组织备份管理员 (
organization-backup-admin) 和 Secret 查看者 (secret-viewer) 角色。如需了解详情,请参阅角色定义。
创建备份仓库
使用 GDC 控制台或 API 创建代码库。
控制台
- 登录 GDC 控制台。
- 在导航菜单中,依次点击虚拟机备份 > 代码库。
- 点击创建代码库。
- 输入代码库名称和可选说明。
在 S3 URI 端点字段中,输入包含对象存储网站的完全限定域名的端点,例如
https://objectstorage.ORG.ZONE.DOMAIN.SUFFIX:PORT。例如https://objectstorage.org-1.zone1.google.gdch.test。如需从Bucket自定义资源获取值,请运行以下命令:kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.endpoint'在存储桶名称字段中,输入存储桶的完全限定域名。您可以在 GDC 控制台的存储分区详情页面中获取此名称,也可以通过运行以下命令从
Bucket自定义资源中获取该值:kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.fullyQualifiedName'在存储桶区域字段中,输入创建存储桶的区域,并通过运行以下命令从存储桶自定义资源中获取相应值:
kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.region'在访问密钥 ID 和访问密钥字段中,输入访问密钥 ID 和私有访问密钥。如需详细了解如何获取这些凭据,请参阅授予和获取存储桶访问权限。
点击创建。
API
使用您的 S3 凭据创建 BackupRepository 自定义资源。
获取包含 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 名称,并在下一步中将其用作
SECRET_NAME。替换以下内容:
PROJECT_NAME:您的项目的名称。SA_NAME:用于访问对象存储的服务账号的名称。
如需获取存储桶详细信息(例如 FQDN 和端点),请从输出中提取
fullyQualifiedName和zonalEndpoints值:kubectl get buckets -n PROJECT_NAME BUCKET_NAME -o yaml在 Management API 服务器中创建
BackupRepository:apiVersion: backup.gdc.goog/v1 kind: BackupRepository metadata: name: REPOSITORY_NAME spec: secretReference: namespace: PROJECT_NAME name: SECRET_NAME endpoint: ENDPOINT type: "S3" s3Options: bucket: BUCKET_FQDN region: REGION forcePathStyle: FORCE_PATH_STYLE importPolicy: IMPORT_POLICY替换以下内容:
REPOSITORY_NAME:备份代码库的名称。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 的频率不受限制。
BackupRepository会在管理 API 服务器中创建一个具有相同名称的启用读写功能的BackupRepository资源。