安装migrate-controller备份服务组件并配置权限

备份中心可用于应用的备份、恢复与迁移,通过安装migrate-controller备份服务组件并配置相关权限以开启备份能力,实现多集群和混合环境中应用的数据容灾和应用迁移。

前提条件

背景信息

随着越来越多的应用运行在Kubernetes中,对应用进行定时的备份就显得格外重要。备份中心可以有效防护由于意外情况导致服务长时间中断而无法恢复的情况。区别于传统的备份单机、备份磁盘的方案,基于Kubernetes的应用备份,主要关注于运行在Kubernetes中的应用及其数据、资源对象、配置及整个命名空间等。

注意事项

  • ACK Serverless集群Pro版ACK Edge集群使用备份中心时,与ACK托管集群安装及权限配置的要求一致,具体操作,请参见ACK托管集群

    ACK Serverless集群基础版暂不支持使用。

  • ACK Serverless集群Pro版ACK Edge集群使用备份中心时,不支持备份存储卷。

  • 对于ACK Edge集群,migrate-controller备份服务组件默认安装在云上节点并通过内网访问OSS。

ACK托管集群

步骤一:安装migrate-controller备份服务组件

说明

首次使用备份中心功能,需安装备份服务组件;如果您已安装,可忽略此步骤。

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 应用备份

  3. 应用备份页面,单击开始安装

    系统会自动检测备份仓库,若您未创建备份仓库,请先创建备份仓库,具体操作,请参见创建备份仓库

    • 备份服务组件安装完之后,会生成csdr的命名空间,在使用备份过程中,请勿删除该命名空间。

    • 若您已安装该组件,但备份服务组件不是最新版本,请在应用备份页面单击开始升级,系统会自动将应用备份服务组件升级至最新版本。

步骤二:配置相关权限

  • OSS权限

    ACK托管集群建议以cnfs-oss-***名称开头的OSS Bucket作为备份中心的备份仓库,无需配置OSS权限。使用其他Bucket时需要参见下文ACK专有集群配置相关OSS权限,请参见步骤一:配置相关权限

  • 云盘快照和云备份权限

    ACK托管集群无需配置云盘快照和云备份权限。

ACK专有集群

步骤一:配置相关权限

重要

v1.7.7及以上版本的migrate-controller组件支持阿里云云盘类型存储备份跨地域恢复。如果需要使用该功能,请按如下自定义权限策略模板,为原RAM用户补充授权ECS云盘快照相关权限策略。

  1. 创建RAM用户。具体操作,请参见创建RAM用户

  2. 创建如下自定义权限策略。具体操作,请参见通过脚本编辑模式创建自定义权限策略

    以下策略脚本中,oss:****为OSS权限策略,ecs:****为ECS云盘快照相关权限策略,hbr:****云备份权限策略。

    展开查看自定义权限策略

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "oss:PutObject",
            "oss:GetObject",
            "oss:DeleteObject",
            "oss:GetBucket",
            "oss:ListObjects",
            "oss:ListBuckets",
            "oss:GetBucketStat"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ecs:CreateSnapshot",
            "ecs:DeleteSnapshot",
            "ecs:DescribeSnapshotGroups",
            "ecs:CreateAutoSnapshotPolicy",
            "ecs:ApplyAutoSnapshotPolicy",
            "ecs:CancelAutoSnapshotPolicy",
            "ecs:DeleteAutoSnapshotPolicy",
            "ecs:DescribeAutoSnapshotPolicyEX",
            "ecs:ModifyAutoSnapshotPolicyEx",
            "ecs:DescribeSnapshots",
            "ecs:DescribeInstances",
            "ecs:CopySnapshot",
            "ecs:CreateSnapshotGroup",
            "ecs:DeleteSnapshotGroup"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "hbr:CreateVault",
            "hbr:CreateBackupJob",
            "hbr:DescribeVaults",
            "hbr:DescribeBackupJobs2",
            "hbr:DescribeRestoreJobs",
            "hbr:SearchHistoricalSnapshots",
            "hbr:CreateRestoreJob",
            "hbr:AddContainerCluster",
            "hbr:DescribeContainerCluster",
            "hbr:DescribeRestoreJobs2"
          ],
          "Resource": "*"
        }
      ]
    }

    上述权限策略授予了所有OSS Bucket的权限。如果您需要指定OSS的读写权限,请按以下示例修改权限策略,将以下策略脚本中的mybackups替换为您的OSS名称。更多OSS细粒度授权配置信息,请参见通过RAM对OSS进行权限管理

    展开查看自定义权限策略

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "oss:PutObject",
            "oss:GetObject",
            "oss:DeleteObject",
            "oss:GetBucket",
            "oss:ListObjects",
            "oss:ListBuckets",
            "oss:GetBucketStat"
          ],
          "Resource": [
            "acs:oss:*:*:mybackups",
            "acs:oss:*:*:mybackups/*"
          ],
          "Effect": "Allow"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ecs:CreateSnapshot",
            "ecs:DeleteSnapshot",
            "ecs:DescribeSnapshotGroups",
            "ecs:CreateAutoSnapshotPolicy",
            "ecs:ApplyAutoSnapshotPolicy",
            "ecs:CancelAutoSnapshotPolicy",
            "ecs:DeleteAutoSnapshotPolicy",
            "ecs:DescribeAutoSnapshotPolicyEX",
            "ecs:ModifyAutoSnapshotPolicyEx",
            "ecs:DescribeSnapshots",
            "ecs:DescribeInstances",
            "ecs:CopySnapshot",
            "ecs:CreateSnapshotGroup",
            "ecs:DeleteSnapshotGroup"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "hbr:CreateVault",
            "hbr:CreateBackupJob",
            "hbr:DescribeVaults",
            "hbr:DescribeBackupJobs2",
            "hbr:DescribeRestoreJobs",
            "hbr:SearchHistoricalSnapshots",
            "hbr:CreateRestoreJob",
            "hbr:AddContainerCluster",
            "hbr:DescribeContainerCluster",
            "hbr:DescribeRestoreJobs2"
          ],
          "Resource": "*"
        }
      ]
    }
  3. 为RAM用户添加上述自定义的权限。具体操作,请参见为RAM用户授权

  4. 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey

  5. ACK专有集群中创建Secret。

    为了保证您的AccessKey信息只在您的集群内安全使用,您需要先在集群中使用AccessKey信息部署一个名为alibaba-addon-secret的Secret资源,以降低泄露风险。

    1. 执行以下命令,创建命名空间csdr

      kubectl create ns csdr
    2. 执行以下命令,创建名为alibaba-addon-secret的Secret资源。

      kubectl -n csdr create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'

      您需要将上述代码中的<your AccessKey ID><your AccessKey Secret>替换为您在上一步获取的AccessKey信息。

      说明

      如果您在安装migrate-controller备份服务组件后补充创建的Secret,请完成该创建后重启kube-system下的migrate-controller组件。

步骤二:安装migrate-controller备份服务组件

安装migrate-controller备份服务组件。具体操作,请参见步骤一:安装migrate-controller备份服务组件

注册集群

重要

v1.7.7及以上版本的migrate-controller组件支持阿里云云盘类型存储备份跨地域恢复。如果需要使用该功能,请更新onectl版本至v1.1.0,并执行onectl ram-user revoke --addon migrate-controller命令,为原RAM用户补充授权ECS云盘快照相关权限策略。

通过onectl安装组件并配置权限(推荐)

  1. 在本地安装配置onectl。具体操作,请参见通过onectl管理注册集群

  2. 执行以下命令,为migrate-controller组件配置RAM权限。

    onectl ram-user grant --addon migrate-controller

    预期输出:

    Ram policy ack-one-registered-cluster-policy-migrate-controller granted to ram user ack-one-user-ce313528c3 successfully.
  3. 执行以下命令,安装备份服务组件。

    onectl addon install migrate-controller

    预期输出:

    Addon migrate-controller, version **** installed.

    使用onectl配置的OSS权限范围为所有的OSS Bucket,若您仅需要配置指定OSS Bucket的权限,您可以通过以下方式修改onectl生成的OSS权限,或者选择手动方式安装组件并配置权限。具体操作,请参见下文手动安装组件并配置权限

    修改OSS权限:修改已创建的自定义权限策略内容为以下内容。关于修改权限策略的具体操作,请参见修改自定义权限策略内容和备注

    说明

    替换以下策略代码中mybackups为您的OSS名称。更多OSS细粒度的授权配置信息,请参见通过RAM对OSS进行权限管理

    展开查看自定义权限策略

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "oss:PutObject",
            "oss:GetObject",
            "oss:DeleteObject",
            "oss:GetBucket",
            "oss:ListObjects",
            "oss:ListBuckets",
            "oss:GetBucketStat"
          ],
          "Resource": [
            "acs:oss:*:*:mybackups",
            "acs:oss:*:*:mybackups/*"
          ],
          "Effect": "Allow"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ecs:CreateSnapshot",
            "ecs:DeleteSnapshot",
            "ecs:DescribeSnapshotGroups",
            "ecs:CreateAutoSnapshotPolicy",
            "ecs:ApplyAutoSnapshotPolicy",
            "ecs:CancelAutoSnapshotPolicy",
            "ecs:DeleteAutoSnapshotPolicy",
            "ecs:DescribeAutoSnapshotPolicyEX",
            "ecs:ModifyAutoSnapshotPolicyEx",
            "ecs:DescribeSnapshots",
            "ecs:DescribeInstances",
            "ecs:CopySnapshot",
            "ecs:CreateSnapshotGroup",
            "ecs:DeleteSnapshotGroup"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "hbr:CreateVault",
            "hbr:CreateBackupJob",
            "hbr:DescribeVaults",
            "hbr:DescribeBackupJobs2",
            "hbr:DescribeRestoreJobs",
            "hbr:SearchHistoricalSnapshots",
            "hbr:CreateRestoreJob",
            "hbr:AddContainerCluster",
            "hbr:DescribeContainerCluster",
            "hbr:DescribeRestoreJobs2"
          ],
          "Resource": "*"
        }
      ]
    }
  4. (可选)配置指向注册集群与OSS同一地域的OSS内网网段的路由。

    已通过CEN、高速通道、专线、VPN等方式与云上VPC互通的注册集群,为提高备份数据的拉取速度,当注册集群与OSS处于同一地域时,备份中心会自动选择以内网方式访问OSS域名,此时,您需要配置指向该地域OSS内网网段的路由。

通过控制台安装组件并配置权限

步骤一:配置相关权限

您需要为注册集群创建RAM用户,为RAM用户添加访问云资源的权限,然后创建AccessKey。

  1. 创建RAM用户。具体操作,请参见创建RAM用户

  2. 创建如下自定义权限策略。具体操作,请参见通过脚本编辑模式创建自定义权限策略

    以下策略脚本中,oss:****为OSS权限策略,ecs:****为ECS云盘快照相关权限策略,hbr:****云备份权限策略。

    展开查看自定义权限策略

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "oss:PutObject",
            "oss:GetObject",
            "oss:DeleteObject",
            "oss:GetBucket",
            "oss:ListObjects",
            "oss:ListBuckets",
            "oss:GetBucketStat"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ecs:CreateSnapshot",
            "ecs:DeleteSnapshot",
            "ecs:DescribeSnapshotGroups",
            "ecs:CreateAutoSnapshotPolicy",
            "ecs:ApplyAutoSnapshotPolicy",
            "ecs:CancelAutoSnapshotPolicy",
            "ecs:DeleteAutoSnapshotPolicy",
            "ecs:DescribeAutoSnapshotPolicyEX",
            "ecs:ModifyAutoSnapshotPolicyEx",
            "ecs:DescribeSnapshots",
            "ecs:DescribeInstances",
            "ecs:CopySnapshot",
            "ecs:CreateSnapshotGroup",
            "ecs:DeleteSnapshotGroup"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "hbr:CreateVault",
            "hbr:CreateBackupJob",
            "hbr:DescribeVaults",
            "hbr:DescribeBackupJobs2",
            "hbr:DescribeRestoreJobs",
            "hbr:SearchHistoricalSnapshots",
            "hbr:CreateRestoreJob",
            "hbr:AddContainerCluster",
            "hbr:DescribeContainerCluster",
            "hbr:DescribeRestoreJobs2"
          ],
          "Resource": "*"
        }
      ]
    }

    上述权限策略授予了所有OSS Bucket的权限。如果您需要指定OSS的读写权限,请按以下示例修改权限策略,将以下策略脚本中的mybackups替换为您的OSS名称。更多OSS细粒度授权配置信息,请参见通过RAM对OSS进行权限管理

    展开查看自定义权限策略

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "oss:PutObject",
            "oss:GetObject",
            "oss:DeleteObject",
            "oss:GetBucket",
            "oss:ListObjects",
            "oss:ListBuckets",
            "oss:GetBucketStat"
          ],
          "Resource": [
            "acs:oss:*:*:mybackups",
            "acs:oss:*:*:mybackups/*"
          ],
          "Effect": "Allow"
        },
        {
          "Effect": "Allow",
          "Action": [
            "ecs:CreateSnapshot",
            "ecs:DeleteSnapshot",
            "ecs:DescribeSnapshotGroups",
            "ecs:CreateAutoSnapshotPolicy",
            "ecs:ApplyAutoSnapshotPolicy",
            "ecs:CancelAutoSnapshotPolicy",
            "ecs:DeleteAutoSnapshotPolicy",
            "ecs:DescribeAutoSnapshotPolicyEX",
            "ecs:ModifyAutoSnapshotPolicyEx",
            "ecs:DescribeSnapshots",
            "ecs:DescribeInstances",
            "ecs:CopySnapshot",
            "ecs:CreateSnapshotGroup",
            "ecs:DeleteSnapshotGroup"
          ],
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": [
            "hbr:CreateVault",
            "hbr:CreateBackupJob",
            "hbr:DescribeVaults",
            "hbr:DescribeBackupJobs2",
            "hbr:DescribeRestoreJobs",
            "hbr:SearchHistoricalSnapshots",
            "hbr:CreateRestoreJob",
            "hbr:AddContainerCluster",
            "hbr:DescribeContainerCluster",
            "hbr:DescribeRestoreJobs2"
          ],
          "Resource": "*"
        }
      ]
    }
  3. 为RAM用户添加已创建的自定义权限。具体操作,请参见为RAM用户授权

  4. 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey

  5. 在集群中创建Secret。

    为了保证您的AccessKey信息只在您的集群内安全使用,您需要先在集群中使用AccessKey信息部署一个名为alibaba-addon-secret的Secret资源,以降低泄露风险。

    1. 执行以下命令,创建命名空间csdr

      kubectl create ns csdr
    2. 执行以下命令,创建名为alibaba-addon-secret的Secret资源。

      kubectl -n csdr create secret generic alibaba-addon-secret --from-literal='access-key-id=<your AccessKey ID>' --from-literal='access-key-secret=<your AccessKey Secret>'

      您需要将上述代码中的<your AccessKey ID><your AccessKey Secret>替换为您在上一步获取的AccessKey信息。

步骤二:安装migrate-controller备份服务组件

安装migrate-controller备份服务组件。具体操作,请参见步骤一:安装migrate-controller备份服务组件

(可选)步骤三:配置指向注册集群与OSS同一地域的OSS内网网段的路由

已通过CEN、高速通道、专线、VPN等方式与云上VPC互通的注册集群,为提高备份数据的拉取速度,当注册集群与OSS处于同一地域时,备份中心会自动选择以内网方式访问OSS域名,此时,您需要配置指向该地域OSS内网网段的路由。