- 1. K8S证书
- 2. RBAC
- 一般只需要指定serviceaccount的名称即可
# 除了基础字段之外的其它字段很少使用,需要时手动查询
apiVersion: v1
kind: ServiceAccount
metadata
name # 在一个名称空间不能重复
namespace # 指定名称空间,默认defalut
labels - kubectl 的配置文件读取顺序:—kubeconfig 参数指定 > $KUBECONFIG 环境变量指定 > ${HOME}/.kube/config
# 此次以集群的CA证书为本,签署并创建一个新的 user account:
# 10.4.7.201 只拷贝了一个二进制命令 kubectl 到 /root/bin/ 下,未拷贝其它任何内容K8S配置
[root@hdss7-200 ~]# cd /opt/certs
[root@hdss7-200 certs]# cat duduniao-csr.json # 模仿 kubelet-csr.json 来修改
{
“CN”: “duduniao”,
“hosts”: [
“127.0.0.1”,
“10.4.7.10”,
“10.4.7.21”,
“10.4.7.22”,
“10.4.7.23”,
“10.4.7.24”,
“10.4.7.25”,
“10.4.7.26”,
“10.4.7.27”,
“10.4.7.28”
],
“key”: {
“algo”: “rsa”,
“size”: 2048
},
“names”: [
{
“C”: “CN”,
“ST”: “beijing”,
“L”: “beijing”,
“O”: “od”,
“OU”: “ops”
}
]
}
[root@hdss7-200 certs]# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client duduniao-csr.json | cfssl-json -bare duduniao
[root@hdss7-200 certs]# scp duduniao* ca.pam 10.4.7.201:/root/certs - 3. DashBoard账户授权
1. K8S证书
1.1. 证书知识储备
06-1-密码学基础1. 摘要摘要算法是通过对原始数据使用非线性函数(无法通过输出推断输入)进行多轮运算,最终输出指定长的字符串的算法。常用的摘要算法有 MD类(md4,md5等)和 SHA 类(sha256,sha512等)。1.1. md5摘要算法原理计算原始数据长度。如果长度不满足 512n + 448,则…Nginx
1.2. k8s 证书
该图细节不是很充分,仅作为参考使用,可以对照 k8s 集群安装章节各个证书进行比对和研究.
2. RBAC
2.1. RBAC概述
2.1.1. RBAC实现的原理
RBAC(Role Base Access Controller),基于角色的访问控制,是目前Kubernetes最常用的权限控制插件。
Kubernetes的用户分为两种:User Account,用户账号,给Kubernetes操作人员使用的账号;Service Account,服务账号,给Kubernetes中Pod使用的账号。Kubernetes管理员查看和操作Kubernetes对象都是通过User Account 账号实现,而Pod去访问集群中的资源时使用的是Service Account。Kubernetes中一切皆对象,权限其实是对特定对象操作,如对某个名称空间中Pod的 GET/DELETE/POST 等操作。
不同的权限就是不同Permission的集合,将权限关联到Role上,再通过RoleBinding关联账户和权限,这就是RBAC实现方式。

2.1.2. 不同类型的授权方式
Role和RoleBinding属于名称空间资源,而Cluster和ClusterRoleBinding是集群层面的资源,Kubernetes允许三种绑定权限的方式(如图):
- RoleBinding 关联 Role 和 User
User 具备当前NameSpace空间中的权限,不具备跨名称空间权限
- RoleBinding 关联 ClusterRole 和 User
ClusterRole权限降级,只能对当前名称空间中的资源具备权限,不具备跨名称空间的权限。该方式的意义在于:对不同名称空间管理员授权时,只需要定义一个ClusterRole即可,不需要定义多个基于名称空间的Role
- ClusterRoleBinding 关联 ClusterRole 和 User
User 具备集群级别权限,可以跨名称空间操作资源对象
2.2. 模板
2.2.1. Role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name # 在一个名称空间不能重复
namespace # 指定名称空间,默认defalut
labels # 标签
annotations # 注释
rules: <[]Object # role权限
resources <[]string> # 指定资源名称资源对象列表
apiGroups <[]string> # 指定API资源组
resourceNames <[]string> # 指定具体资源的白名单,默认允许所有
nonResourceURLs <[]string> # 一种特殊的k8s对象
verbs <[]string> -required- # 权限列表(actions)
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name # 在一个集群内不能重复
labels # 标签
annotations # 注释
rules <[]Object # 定义权限
resources <[]string> # 指定资源名称资源对象列表
apiGroups <[]string> # 指定API资源组
resourceNames <[]string> # 指定具体资源的白名单,默认允许所有
nonResourceURLs <[]string> # 一种特殊的k8s对象
verbs <[]string> -required- # 权限列表(actions)
aggregationRule