基本概念
servic account也是k8s资源的一种,它只作用于唯一的命名空间(一对一关系)
servic account创建后,会产生一个自定义的token,与servic account关联
1.创建servic account后,可以在pod创建时指定
spec:
serviceAccountName: foo
2.在该pod定义内部,可以使用token和API服务器进行交互(如ambassador容器)
RBAC插件
该插件将用户角色作为决定能否执行操作的关键因素,从k8s 1.6开始,RBAC插件是绝大多集群应该使用的授权插件。
RBAC授权规则是通过四种资源来进行配置的,可以分为两组
-
Role(角色)和ClusterRole(集群角色):指定了可以操作的行为。
-
RoleBinding(角色绑定)和ClusterRoleBingding(集群角色绑定):将上面的角色绑定到指定的用户,组或者service Accounts上
Role(角色)和RoleBinding(角色绑定)是命名空间级别的资源,而ClusterRole(集群角色)和ClusterRoleBingding(集群角色绑定)是集群级别的资源
使用role和roleBinding
1.创建role
apiVersion: xxx
kind: Role
metadata:
namespace: foo
name: service-reader
rules:
- apiGroups: [""]
verbs: ["get","list"] #获取servce,和列出所有service
resources: ["services"] #资源声明,注意使用复数
kubectl create -f xx.yaml -n foo
2.创建RoleBinding,将角色绑定到实体(default service account)
kubectl create rolebinding test --role=service-reader