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