默认情况下,仅阿里云账号(即主账号)和Fleet实例创建者账号拥有Fleet实例内Kubernetes资源的管理员权限。RAM用户需要进行授权操作,才可以进行创建ACK One Fleet实例、添加或删除关联集群、删除ACK One Fleet实例等操作。本文介绍如何为RAM用户授予RAM权限和RBAC权限。
前提条件
授权说明
默认情况下,仅阿里云账号(即主账号)和Fleet实例创建者账号拥有Fleet实例内Kubernetes资源的管理员权限。RAM用户(非Fleet实例创建者)没有Fleet实例内任何Kubernetes资源的访问权限。
管理员或Fleet实例创建者可以通过以下方式为RAM用户授权,允许RAM用户访问和操作多集群Fleet实例。
步骤一:为RAM用户授予RAM权限:授权后,RAM用户可以通过控制台查看或修改Fleet实例。
步骤二:为RAM用户授予Fleet实例的RBAC权限:授权后,RAM用户可以通过kubectl命令行操作Fleet实例,例如应用分发、GitOps、多集群服务等。
步骤一:为RAM用户授予RAM权限
ACK One多集群Fleet实例默认已创建AliyunAdcpFullAccess和AliyunAdcpReadOnlyAccess策略,可直接授权使用。关于授权具体操作,请参见为RAM用户授权。
系统策略 | 系统权限 | 说明 |
AliyunAdcpFullAccess | 具有多集群Fleet实例的所有权限,可以创建Fleet实例、开启Fleet实例功能开关、删除Fleet实例、用户授权和查看Fleet实例。 | 若RAM用户要成为Fleet实例管理员,请授权AliyunAdcpFullAccess。 |
AliyunAdcpReadOnlyAccess | 具有多集群Fleet实例的只读权限,可以查看Fleet实例,获取Fleet实例的KubeConfig。 | 若RAM用户要成为开发者,使用Fleet实例做GitOps、应用下发和多集群服务等,则授权AliyunAdcpReadOnlyAccess。 |
步骤二:为RAM用户授予Fleet实例的RBAC权限
ACK One多集群Fleet实例默认内置admin、dev和gitops-dev的RBAC权限,可直接授权使用。
RBAC权限名称 | 说明 |
admin | 具有集群范围和所有命名空间下资源的读写权限。 |
dev | 具有所选命名空间下的资源读写权限。 |
gitops-dev | 具有argocd命名空间下应用资源的读写权限。 |
集群范围资源列表
Kind
apiVersion
Namespace
v1
Managedcluster
cluster.open-cluster-management.io
MseIngressConfig
mse.alibabacloud.com/v1alpha1
IngressClass
networking.k8s.io/v1
命名空间下资源列表
Kind
apiVersion
Deployment
apps/v1
Service
v1
Ingress
networking.k8s.io/v1
ConfigMap
v1
Secret
v1
StatefulSet
apps/v1
PersistentVolumeClaim
v1
ServiceExport
multicluster.x-k8s.io/v1alpha1
ServiceImport
multicluster.x-k8s.io/v1alpha1
HorizontalPodAutoscaler
autoscaling/v1
Application
ApplicationSet
Appproject
argoproj.io
Application
core.oam.dev
argocd命名空间下应用资源
Kind
apiVersion
Application
argoproj.io
为RAM用户授予Fleet实例管理员admin、dev和gitops-dev权限方法如下。
admin权限的授权类型必须为
cluster
Fleet实例维度,不可以为命名空间维度。dev和gitops-dev权限的授权类型必须为
namespace
命名空间维度,不可以为Fleet实例维度。
授予Fleet实例管理员admin权限
aliyun adcp GrantUserPermission --UserId 2176*** --ClusterId <clusterid> --RoleType cluster --RoleName admin
授予Fleet实例命名空间dev权限
aliyun adcp GrantUserPermission --UserId 2176*** --ClusterId <your-fleet-id> --RoleType namespace --Namespace default --RoleName dev
授予Fleet实例argocd命名空间gitops-dev权限
aliyun adcp GrantUserPermission --UserId 2176*** --ClusterId <your-fleet-id> --RoleType namespace --Namespace argocd --RoleName gitops-dev
入参说明
字段 | 类型 | 是否必选 | 备注 |
UserId | string | 是 | RAM用户ID。 |
ClusterId | string | 是 | 授权目标Fleet实例ID。 |
RoleType | string | 是 | 授权类型,取值:
说明 admin权限的授权类型必须为 dev和gitops-dev权限的授权类型必须为 |
RoleName | string | 是 | 预置的角色名称,取值:
说明 gitops-dev权限的授权类型必须为 |
Namespace | string | 否 | 命名空间名称,授权维度为Fleet实例时为空。 |
相关操作
查询RAM用户RBAC权限
CLI示例
aliyun adcp DescribeUserPermissions --UserId 2176***
入参说明
字段 | 类型 | 是否必选 | 备注 |
UserId | string | 是 | RAM用户ID。 |
出参说明
字段 | 类型 | 备注 | 示例 |
RequestId | string | 请求ID。 | EA06613B-37A3-549E-BAE0-E4AD8A6E93D7 |
Permissions | Object | 无 | 无 |
RoleType | string | 预置的角色类型。取值:
| dev |
ResourceType | string | 授权类型。取值:
| namespace |
ResourceId | string | Fleet实例访问配置。
| cffef3c9c7ba145b083292942a2c3****/test |
取消RAM用户RBAC权限
CLI示例
aliyun adcp DeleteUserPermission --UserId 2176*** --ClusterId <clusterid>
入参说明
字段 | 类型 | 是否必选 | 备注 |
UserId | string | 是 | RAM用户ID。 |
ClusterId | string | 是 | 授权Fleet实例ID。 |
出参说明
字段 | 类型 | 备注 | 示例 |
RequestId | string | 请求ID。 | EA06613B-37A3-549E-BAE0-E4AD8A6E93D7 |
- 本页导读 (1)