本文介绍云效AppStack对用户Kubernetes集群的权限要求。
术语解释
全部权限 - 至少包含以下 RBAC verbs:
get
list
watch
create
update
patch
delete
读权限 - 至少包含以下 RBAC verbs:
get
list
watch
最小权限
在不使用分批发布的情况下,至少要具备以下权限:
Namespace 读权限,用于实时联通性校验等场景;
ControllerRevision (apps/v1/ControllerRevision) 全部权限,部署 Kubernetes 对象时将借助 ControllerRevision 建立不可变快照元数据;
待部署的 Kubernetes 对象全部权限。
分批发布增强所需权限
分批发布借助 Rollout CRD 及其控制器体系实现。在最小权限的基础上,需要提供安装分批发布体系所需的权限,以及实施分批发布时所需的对象访问权限。
实施分批发布时所需的权限
Rollout (standard.oam.dev/v1alpha1)全部权限;
待部署的工作负载对象全部权限。
安装分批发布增强体系所需的权限
CRD (apiextensions.k8s.io/v1/CustomResourceDefinition)全部权限,用于安装 Rollout CRD;
以下的对象用于维持 Rollout 控制器的运行,执行安装时需要全部权限:
ServiceAccount (core/v1/ServiceAccount);
ClusterRole (rbac.authorization.k8s.io/v1/ClusterRole);
ClusterRoleBinding (rbac.authorization.k8s.io/v1/ClusterRoleBinding);
Role (rbac.authorization.k8s.io/v1/Role);
RoleBinding (rbac.authorization.k8s.io/v1/RoleBinding);
Deployment (apps/v1/Deployment);
以下的对象被 Rollout 控制器的安装后 E2E 测试使用,执行安装时需要全部权限:
Pod (core/v1/Pod).
备注
CICD 系统通常需要具备变更各类业务系统及其支撑组件的能力,只推荐对 Kubernetes RBAC 及其治理实践掌握程度较高的用户进行 RBAC 细化配置。通常情况下,使用管理员级别的证书并通过 AppStack 资源权限控制其传播范围,是更易上手的方式。