创建备份仓库

本页面介绍了如何在 Google Distributed Cloud (GDC) 气隙环境中为虚拟机 (VM) 创建备份存储库。

在创建备份或快照之前,您必须定义至少一个可在多个备份或快照之间共享的备份代码库。备份代码库用于告知备份系统在何处存储或检索备份。 虚拟机的备份代码库仅限于管理 API 服务器。

准备工作

在创建备份代码库之前,您必须预配底层存储空间并配置必要的权限,包括:

  • 对象存储桶和与 S3 兼容的端点。
  • 已获授予存储桶访问权限的服务账号及其 S3 凭据
  • 必要的 IAM 角色:

    • 组织备份管理员:管理用户集群中的备份和恢复计划等备份资源。
    • Secret 查看器:查看项目中的 Kubernetes Secret。

    请让您的组织 IAM 管理员向您授予组织备份管理员 (organization-backup-admin) 和 Secret 查看者 (secret-viewer) 角色。如需了解详情,请参阅角色定义

创建备份仓库

使用 GDC 控制台或 API 创建代码库。

控制台

  1. 登录 GDC 控制台。
  2. 在导航菜单中,依次点击虚拟机备份 > 代码库
  3. 点击创建代码库
  4. 输入代码库名称和可选说明。
  5. 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'
    
  6. 存储桶名称字段中,输入存储桶的完全限定域名。您可以在 GDC 控制台的存储分区详情页面中获取此名称,也可以通过运行以下命令从 Bucket 自定义资源中获取该值:

    kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.fullyQualifiedName'
    
  7. 存储桶区域字段中,输入创建存储桶的区域,并通过运行以下命令从存储桶自定义资源中获取相应值:

    kubectl get Bucket BUCKET_NAME -n NAMESPACE -o json | jq -r '.status.region'
    
  8. 访问密钥 ID访问密钥字段中,输入访问密钥 ID 和私有访问密钥。如需详细了解如何获取这些凭据,请参阅授予和获取存储桶访问权限

  9. 点击创建

API

使用您的 S3 凭据创建 BackupRepository 自定义资源。

  1. 获取包含 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:用于访问对象存储的服务账号的名称。
  2. 如需获取存储桶详细信息(例如 FQDN 和端点),请从输出中提取 fullyQualifiedNamezonalEndpoints 值:

    kubectl get buckets -n PROJECT_NAME BUCKET_NAME -o yaml
    
  3. 在 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 字段强制为对象使用路径样式网址。此字段的值必须为 truefalse
    • IMPORT_POLICY:设置为以下某一项:
      • ReadWrite:此代码库可用于安排或创建备份、备份方案和恢复。
      • ReadOnly:此代码库只能用于导入和查看备份。无法在此代码库中创建新的备份或资源,但恢复可以使用只读备份并引用只读备份进行恢复。备份代码库用作 ReadOnly 的频率不受限制。

    BackupRepository 会在管理 API 服务器中创建一个具有相同名称的启用读写功能的 BackupRepository 资源。

后续步骤