Kubernetes - 实战:一文详解ServiceAccount及RBAC权限控制

在 Kubernetes 中,ServiceAccount 和 RBAC(Role-Based Access Control)是用于控制集群内资源访问权限的重要组成部分。

1. ServiceAccount

ServiceAccount 是 Kubernetes 中的一种资源对象,它代表了一个运行在集群中的进程的身份。每个 Pod 默认都会关联一个 ServiceAccount,如果没有明确指定,Kubernetes 会自动为其分配一个默认的 ServiceAccount。ServiceAccount 用于为集群内部的进程提供访问 API Server 的凭据,这包括一个或多个 API 访问 Token 以及用于挂载 Secrets 的能力。

创建 ServiceAccount 的 YAML 示例:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-service-account

2. RBAC 权限控制

RBAC 是一种基于角色的访问控制机制,用于管理集群内不同用户的权限。在 Kubernetes 中,RBAC 通过以下几个核心概念实现:

  • Role: 定义了一组针对特定命名空间内资源的操作权限。
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: my-namespace
  name: my-role
rules:
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["get", "list", "watch"]
  • ClusterRole: 类似于 Role,但它作用于整个集群而非单个命名空间。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: my-cluster-role
rules:
- apiGroups: [""]
  resources: ["nodes"]
  verbs: ["get", "list", "watch"]
  • RoleBinding: 将 Role 与 ServiceAccount 关联起来,使 ServiceAccount 拥有了 Role 中定义的权限,仅在特定命名空间内有效。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: my-binding
  namespace: my-namespace
subjects:
- kind: ServiceAccount
  name: my-service-account
  namespace: my-namespace
roleRef:
  kind: Role
  name: my-role
  apiGroup: rbac.authorization.k8s.io
  • ClusterRoleBinding: 类似于 RoleBinding,但它将 ClusterRole 与 ServiceAccount 关联起来,使其在整个集群范围内生效。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: my-cluster-binding
subjects:
- kind: ServiceAccount
  name: my-service-account
  namespace: my-namespace
roleRef:
  kind: ClusterRole
  name: my-cluster-role
  apiGroup: rbac.authorization.k8s.io

通过这样的组合,Kubernetes 管理员可以根据业务需求创建不同的角色,并将这些角色赋予不同的 ServiceAccount,从而实现细粒度的权限控制。在实践中,开发人员或运维人员在编写 YAML 配置文件时,会根据他们的服务需要哪些资源访问权限,创建相应的 ServiceAccount 和 RBAC 规则。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值