一 ServiceAccount
sa也是'ns级别'的
顺序
(1)创建一个 ServiceAccount
对象
'命令行的方式'
kubectl create sa wzj-sa -n kube-system
apiVersion: v1
kind: ServiceAccount
metadata:
name: wzj-sa
namespace: kube-system
思考:自己创建的sa有啥特性
kubectl api-resources -->也可以看资源对应的'APIGROUP',没有显示则表示是'core'
+++++++++++++++++++ '分割线' +++++++++++++++++++
说明: 常见是'v1',后续可能是v2或'更高级'
kubectl get --raw /api/v1 | jq . -->'看到core核心的资源对象'
core -->/api/v1/${resource_name}
由于'历史原因',是 /api/v1 下的所有内容而不是在 /apis/core/v1 下面
其他 -->/api/${api_group}/v1/
(2)进行绑定
1 kind: Role
2 apiVersion: rbac.authorization.k8s.io/v1
3 metadata:
4 name: wzj-role
5 namespace: kube-system
6 rules:
7 - apiGroups: ["","apps"]
8 resources: ["pods","deploy"]
9 verbs: ["watch","list","get"]
10 ---
11 kind: RoleBinding
12 apiVersion: rbac.authorization.k8s.io/v1
13 metadata:
14 name: wzj-rolebinding
15 namespace: kube-system
16 roleRef:
17 apiGroup: rbac.authorization.k8s.io
18 kind: Role
19 name: wzj-role
20 subjects:
21 - kind: ServiceAccount
22 name: wzj-sa
23 namespace: kube-system
(3)如何验证
我们知道'一个 ServiceAccount' 会生成一个 'Secret 对象'和它进行'映射',这个 Secret 里面包含'一个token',我们可以利用这个 token 去'登录 Dashboard',然后我们就可以在 'Dashboard 中来验证'我们的功能'是否符合预期'
利用该token登录Dashboard
上面的'提示信息'说我们现在使用的这个 ServiceAccount '没有权限'获取当前命名空间下面的资源对象,这是因为我们登录进来后'默认跳转到' default 命名空间,我们'切换到 kube-system 命名空间'下面就可以了
现象: UI默认显示的是'default'的资源,显然不能显示,并且无法切换到'kube-system'命名空间,查看资源
原因: 'ns'也是命名空间的,如果要切换'命名空间',首先要'list namespace-->看有才会尝试切换',所以不能
做法: 在对应的'pods-->资源对象'下面加上'delete'的动作即可
根据自己的需求来对'访问用户'的权限进行限制,可以自己通过 Role 定义更加'细粒度的权限',也可以使用'系统内置'的一些权限
------------- '分割线' -------------
'程序'要访问api-server中对应的'资源对象',就需要声明一个对应的'service_account',sa要'绑定'一个对应的权限
需求:希望有一个全局访问的ServiceAccount
操作所有的'namespace'下所有的资源 --> 'CURD' --> 'cluster scope'
集群级别的 --> 'ClusterRole' 和 'ClusterRoleinding' 过程'省略'
cluster-admin '权限最大'
Group的描述
表示ceshi命名空间中的'所有ServiceAccount'
subjects:
- kind: Group
name: system:serviceaccounts:ceshi
apiGroup: rbac.authorization.k8s.io
+++++++++++'分割线'++++++++++++
'表示整个系统中的所有ServiceAccount'
subjects:
- kind: Group
name: system:serviceaccounts
apiGroup: rbac.authorization.k8s.io
(4)用户帐号和服务帐号的区别
(5)Token管理器