kubernetes 配置示例 - RBAC
3个基本概念:
(1) Role: 角色。它其实是一组规则,定义了一组对 kubernetes API 对象的操作权限 。
(2)Subject:被作用者。可以是“人”,也可以是“机器”。
(3)RoleBinding: 定义了 subject 和 role 间的绑定关系。
Role 的定义示例如下:
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: mynamespace # 定义了 examle-role 这个 Role 的作用域
name: example-role # Role 的名称
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
注: rules 是 Role 定义的权限。此例中这个Role 的含义就是: 允许 Subject 对 mynamespace 下面的 Pod 对象进行 get,watch, list 操作。
使用 RoleBinding 把 Role 和 Subject 进行绑定:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: example-rolebinding
namespace: mynamespace
subjects:
- kind: User
name: example-user
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: example-role
apiGroup: rbac.authorization.k8s.io
这里的“被作用者”的类型是 User(即k8s 里的用户,只是授权系统的一个逻辑概念),这个用户的名字是 example-user。
Role 和 RoleBinding 都是 Namespace 对象,所以它们对权限的限制规则仅在它们自己的 Namespace 内有效, roleRef 也只能引用当前Namespace 里的 Role 对象。如果想要作用于所有的 Namespace,则需要使用 ClusterRole 和 ClusterRoleBinding。
大多数时候,我们不太使用 User 这个功能,而是直接使用 k8s 里的 “内置用户”,即 ServiceAccount
---
# 定义一个名为 example-sa 的 ServiceAccount
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: mynamespace
name: example-sa
--
# SeviceAccount 和 Role 进行绑定
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: sa-rb
subjects:
- kind: ServiceAccount
name: example-sa
namespace: mynamespace
roleRef:
kind: Role
name: example-role
apiGroup: rbac.authorization.k8s.io
---
#声明使用 ServiceAccount
apiVersion: v1
kind: Pod
metadata:
namespace: mynamespace
name: sa-token-test
spec:
containers:
- name: nginx
image: nginx:1.7.9
serviceAccountName: example-sa
运行上面的 yaml 后,运行下面的命令
kubectl get sa -n mynamespace -o yaml
可以看到 k8s 自动为 ServiceAccount 创建并分配了一个 Secret 对象。
当 Pod 运行起来之后,该 ServiceAccount 的 Token,被 k8s 自动挂载到了容器的 /var/run/secrets/kubernetes.io/serviceaccount 目录下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-01-24 hortonworks docker 安装