安装备份服务组件并配置权限
阿里云容器服务备份中心为无状态或有状态应用的备份、恢复与迁移提供了一站式的解决方案,特别是对混合云,多集群的有状态应用提供了数据容灾和应用迁移能力。本文介绍如何开启集群备份能力及不同类型集群的相关授权配置。
前提条件
已开通HBR服务。对NAS、OSS、本地盘类型存储卷进行备份时,以及在混合云场景中,备份中心需要使用HBR进行文件备份。具体操作,请参见混合云备份HBR。
已创建ACK集群。具体操作,请参见创建Kubernetes托管版集群、创建Kubernetes专有版集群或创建注册集群并接入本地数据中心集群。
重要备份中心功能仅支持v1.18及以上版本的ACK集群使用,如集群版本过低请升级集群。具体操作,请参见升级ACK集群K8s版本。
已开通阿里云对象存储(OSS)服务。具体操作,请参见开通OSS服务。
备份中心不支持Flexvolume插件集群,若您需要使用备份功能,可以通过以下方式迁移至CSI。
若是无存储集群的Flexvolume插件,建议您将存储插件迁移至CSI。具体操作,请参见将无存储集群的Flexvolume迁移至CSI。
其它情况,请加入钉钉用户群(钉钉群号:35532895)咨询。
若您使用ACK托管集群,需要创建cnfs-oss-****名称的Bucket,便于权限最小化管理及存储备份的模板,例如cnfs-oss-backup。
已通过kubectl工具连接Kubernetes集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
背景信息
随着越来越多的应用运行在Kubernetes中,对应用进行定时的备份就显得格外重要。备份中心可以有效防护由于意外情况导致服务长时间中断而无法恢复的情况。区别于传统的备份单机、备份磁盘的方案,基于Kubernetes的应用备份,主要关注于运行在Kubernetes中的应用及其数据、资源对象、配置及整个命名空间等。
当前备份中心仅使用阿里云OSS存储备份的应用。在使用阿里云对象存储OSS前,您需要配置OSS权限。若是在混合云场景中使用备份中心,您在开通HBR服务后,还需要配置HBR权限。开启集群备份服务,您首先需要安装migrate-controller备份服务组件。下文主要介绍ACK托管版集群、ACK专有版集群与注册集群的migrate-controller备份服务组件安装及相关权限配置。
ACK托管版集群
步骤一:安装migrate-controller备份服务组件
首次使用备份中心功能,您需安装备份服务组件;如果您已安装,可忽略此步骤。
- 登录容器服务管理控制台,在左侧导航栏选择集群。
- 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在应用备份页面单击开始安装。
系统会自动检测备份仓库,若您未创建备份仓库,请先创建备份仓库,具体操作,请参见创建备份仓库。
首次安装完成后,显示以下界面,说明备份服务组件安装成功。
说明备份服务组件安装完之后,会生成csdr的命名空间,在使用备份过程中,请勿删除该命名空间。
若您已安装该组件,但备份服务组件不是最新版本,请在应用备份页面单击开始升级,系统会自动将应用备份服务组件升级至最新版本。
步骤二:配置OSS与HBR权限
配置OSS权限
ACK托管版集群必须以
cnfs-oss-***
名称开头的OSS Bucket作为备份中心的备份仓库,您无需再为其配置OSS权限。配置HBR权限
对于ACK托管版集群,您无需再为其配置HBR权限。
ACK专有版集群与注册集群
方式一:使用onectl安装组件并配置权限(推荐)
onectl是阿里云注册集群的命令行工具,可以帮您一键安装和配置包括migrate-controller在内的Addon组件。ACK专有版集群同样可以借助onectl快速开启集群备份功能。更多信息,请参见使用onectl配置注册集群。
步骤一:安装onctl
- 执行以下命令,安装onectl。支持macOS和Linux系统安装。
curl https://ack-one.oss-cn-hangzhou.aliyuncs.com/onectl/get-onectl.sh |bash
- 执行以下命令,验证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
通过控制台方式为RAM用户授权
- 创建RAM用户。具体操作,请参见创建RAM用户。
- 为RAM用户创建AccessKey。具体操作,请参见获取AccessKey。
- 创建自定义权限策略externalK8sPolicy-tmp,具体权限策略内容如下。具体操作,请参见创建自定义权限策略。
{ "Statement": [ { "Action": [ "cs:InstallClusterAddons" ], "Effect": "Allow", "Resource": [ "acs:cs:*:*:cluster/*" ] }, { "Action": [ "ram:GetPolicy", "ram:CreatePolicy", "ram:AttachPolicyToUser" ], "Effect": "Allow", "Resource": [ "*" ] } ], "Version": "1" }
- 为RAM用户添加权限。具体操作,请参见为RAM用户授权。
步骤三:配置onectl
执行以下命令,配置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 Username
为shuwei
。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权限:修改已创建的自定义权限策略内容为以下内容。关于修改权限策略的具体操作,请参见修改自定义权限策略内容和备注。
替换以下策略代码中
mybackups
为您的OSS名称。更多OSS细粒度的授权配置信息,请参见通过RAM对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内网网段的路由。
关于线下IDC接入云上VPC的相关内容,请参见接入方式介绍。
关于OSS内网域名与VIP网段对照表,请参见OSS内网域名与VIP网段对照表。
方式二:手动安装组件并配置权限
步骤一:安装migrate-controller备份服务组件
安装migrate-controller备份服务组件。具体操作,请参见步骤一:安装migrate-controller备份服务组件。
步骤二:配置HBR及OSS权限
您需要为专有版集群或注册集群创建RAM用户,为RAM用户添加访问云资源权限,然后创建AccessKey。
创建RAM用户。具体操作,请参见创建RAM用户。
为OSS与HBR创建如下自定义权限策略。具体操作,请参见通过脚本编辑模式创建自定义权限策略。
OSS权限策略内容
说明替换以下代码中
mybackups
为您的OSS名称。更多OSS细粒度授权配置信息,请参见通过RAM对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": "*" } ] }
为RAM用户添加OSS和HBR权限。具体操作,请参见为RAM用户授权。
为RAM用户创建AccessKey。具体操作,请参见获取AccessKey。
在专有版集群或注册集群中创建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内网网段的路由。
关于线下IDC接入云上VPC的相关内容,请参见接入方式介绍。
关于OSS内网域名与VIP网段对照表,请参见OSS内网域名与VIP网段对照表。