Kubernetes权限要求

本文介绍云效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 资源权限控制其传播范围,是更易上手的方式。