首页 容器服务 ACK 分布式云容器平台ACK One 备份中心 安装备份服务组件并配置权限

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

阿里云容器服务备份中心为无状态或有状态应用的备份、恢复与迁移提供了一站式的解决方案,特别是对混合云,多集群的有状态应用提供了数据容灾和应用迁移能力。本文介绍如何开启集群备份能力及不同类型集群的相关授权配置。

前提条件

背景信息

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

当前备份中心仅使用阿里云OSS存储备份的应用。在使用阿里云对象存储OSS前,您需要配置OSS权限。若是在混合云场景中使用备份中心,您在开通HBR服务后,还需要配置HBR权限。开启集群备份服务,您首先需要安装migrate-controller备份服务组件。下文主要介绍ACK托管版集群、ACK专有版集群与注册集群的migrate-controller备份服务组件安装及相关权限配置。

ACK托管版集群

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

说明

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

  1. 登录容器服务管理控制台,在左侧导航栏选择集群
  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 应用备份
  3. 应用备份页面单击开始安装

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

    • 首次安装完成后,显示以下界面,说明备份服务组件安装成功。应用备份组件

      说明

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

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

步骤二:配置OSS与HBR权限

  • 配置OSS权限

    ACK托管版集群必须以cnfs-oss-***名称开头的OSS Bucket作为备份中心的备份仓库,您无需再为其配置OSS权限。

  • 配置HBR权限

    对于ACK托管版集群,您无需再为其配置HBR权限。

ACK专有版集群与注册集群

方式一:使用onectl安装组件并配置权限(推荐)

onectl是阿里云注册集群的命令行工具,可以帮您一键安装和配置包括migrate-controller在内的Addon组件。ACK专有版集群同样可以借助onectl快速开启集群备份功能。更多信息,请参见使用onectl配置注册集群

步骤一:安装onctl

  1. 执行以下命令,安装onectl。
    支持macOS和Linux系统安装。
    curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh |bash
  2. 执行以下命令,验证onectl是否安装成功。
    onectl version

    预期输出:

    onectl: v1.0.0+435cb69
      BuildDate: 2023-02-16T07:55:15Z
      GitCommit: 435cb69c9efdf369f036e3f5864c07ae871a793d
      GitTreeState: clean
      GoVersion: go1.18.9
      Compiler: gc
      Platform: linux/amd64

步骤二:为RAM用户授权

阿里云账号管理员首先需要完成RAM用户的授权操作,该授权用于访问migrate-controller备份服务组件相关的云资源。

您可以通过以下两种方式为RAM用户授权。

通过onectl方式为RAM用户授权
  • 对于新建RAM用户,需要先创建RAM用户,然后生成AK并授权。
    执行以下命令,创建RAM用户,生成AK并授权。
    onectl  subuser create --name <subaccount_name> --main-access-key <main_access_key> --main-access-secret <main_access_secret>
    预期输出:
    Successfully create subuser account:
    name: ****
    new accessKeyId: LTAI5tRf5ipP1h81PL****
    new accessKeySecret: ****
  • 对于已有RAM用户,需要执行以下命令,为RAM用户授权。
    onectl  subuser grant --name <subaccount_name> --new-ak=false --main-access-key <main_access_key> --main-access-secret <main_access_secret>
    预期输出:
    Successfully grant init ram policy subuser account
    granted rampolicy name: externalK8sPolicy-init
说明 您在使用完onectl之后,建议将此自定义的权限策略externalK8sPolicy-tmp从RAM用户账号授权中移除。
通过控制台方式为RAM用户授权
  1. 创建RAM用户。具体操作,请参见创建RAM用户
  2. 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey
  3. 创建自定义权限策略externalK8sPolicy-tmp,具体权限策略内容如下。具体操作,请参见创建自定义权限策略
    {
      "Statement": [
        {
          "Action": [
            "cs:InstallClusterAddons"
          ],
          "Effect": "Allow",
          "Resource": [
            "acs:cs:*:*:cluster/*"
          ]
        },
        {
          "Action": [
            "ram:GetPolicy",
            "ram:CreatePolicy",
            "ram:AttachPolicyToUser"
          ],
          "Effect": "Allow",
          "Resource": [
            "*"
          ]
        }
      ],
      "Version": "1"
    }
  4. 为RAM用户添加权限。具体操作,请参见为RAM用户授权
说明 您在使用完onectl之后,建议将此自定义的权限策略externalK8sPolicy-tmp从RAM用户账号授权中移除。

步骤三:配置onectl

  1. 执行以下命令,配置onectl。

    配置内容包括AK、RAM用户名、集群ID和集群的KubeConfig路径信息。

    onectl configure

    预期输出:

    Configuring profile 'default' ...
    Access Key Id [LTAI5tRf5ipP1h81PL****]: 
    Access Key Secret [****]: 
    Default SubAccount Username [xxxx]: 
    Default Cluster Id (ClusterId of ACK Regitry Cluster) [c696eaff87cd44d2ea8c18cd54e6****]: 
    Default Kubeconfig Path (default is ~/.kube/config) []: 
    Saving profile[default] ...
    Done.

    参数

    说明

    Access Key Id

    RAM用户的AccessKey信息。onectl使用AK的两个用途如下:

    • 调用OpenAPI查询和创建自定义权限策略、授予RAM用户自定义权限策略以及安装migrate-controller组件。

    • 您安装的migrate-controller组件将使用该AK访问云上资源,确保此RAM用户的AK为最小RAM权限,并妥善保管好AK信息。

    Access Key Secret

    SubAccount Username

    RAM用户的用户名。例如,您RAM用户的登录名称为shuwei@18807*****.onaliyun.com,此处SubAccount Usernameshuwei

    Cluster Id

    注册集群的Cluster ID。

    Kubeconfig Path

    IDC自建集群的KubeConfig路径,默认为~/.kube/config。

步骤四:使用onectl一键安装migrate-controller组件并配置OSS与HBR权限

执行以下命令,一键安装migrate-controller组件并配置OSS与HBR权限。

onectl addon install migrate-controller

预期输出:

Addon migrate-controller installed

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

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

说明
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "hbr:CreateVault",
                "hbr:CreateBackupJob",
                "hbr:DescribeVaults",
                "hbr:DescribeBackupJobs2",
                "hbr:DescribeRestoreJobs",
                "hbr:SearchHistoricalSnapshots",
                "hbr:CreateRestoreJob",
                "hbr:AddContainerCluster",
                "hbr:DescribeContainerCluster",
                "hbr:DescribeRestoreJobs2"
            ],
            "Resource": "*"
        },
        {
            "Action": [
                "oss:PutObject",
                "oss:GetObject",
                "oss:DeleteObject",
                "oss:GetBucket",
                "oss:ListObjects",
                "oss:ListBuckets"
            ],
            "Resource": [
                "acs:oss:*:*:mybackups",
                "acs:oss:*:*:mybackups/*"
            ],
            "Effect": "Allow"
        }
    ]
}

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

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

方式二:手动安装组件并配置权限

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

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

步骤二:配置HBR及OSS权限

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

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

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

    • OSS权限策略内容

      说明
      • 如果您想要所有OSS的权限,请按以下示例设置权限策略:

        {
            "Version": "1",
            "Statement": [
                {
                    "Action": [
                        "oss:PutObject",
                        "oss:GetObject",
                        "oss:DeleteObject",
                        "oss:GetBucket",
                        "oss:ListObjects",
                        "oss:ListBuckets",
                        "oss:GetBucketStat"
                    ],
                    "Resource": [
                        "*"
                    ],
                    "Effect": "Allow"
                }
            ]
        }
      • 如果您只想要指定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"
                }
            ]
        }
    • HBR权限策略内容

      {
          "Version": "1",
          "Statement": [
              {
                  "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用户添加OSS和HBR权限。具体操作,请参见为RAM用户授权

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

  5. 在专有版集群或注册集群中创建Secret。

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

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

      kubectl create ns csdr
    • 执行以下命令,创建名为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信息。

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

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

阿里云首页 容器服务Kubernetes版 相关技术圈