本实验没有达到目标,稍后再整理
User Account应该是被创造出来的概念,我不确定Kubernetes中是否有这个概念。
Kubernetes不管理用户,但是在接受API请求时,是可以认知到发出请求的用户的。实际上,所有对Kubernetes的API请求都需要绑定身份信息(UserAccount或者ServiceAccount),这就意味着,可以为User配置Kubernetes集群中的请求权限。
Kubernetes不会管理User,所以User的创建、编辑、注销等都需要依赖外部的管理机制,Kubernetes所能认知的只有一个用户名。
尽管Kubernetes认知用户靠的只有用户的名字,但是只需要一个名字就能请求Kubernetes的API显然是不合理的,所以依然需要验证此用户的身份。Kubernetes中有如下验证方式:
-
X509客户端证书
客户端证书验证通过为API Server指定–client-ca-file=xxx选项启动,API Servier通过此ca文件来验证API请求中携带的客户端证书的有效性,一旦验证成功,API Server就会将客户端证书Subject里的CN属性作为此次请求的用户名。
-
静态Token文件(暂不研究)
-
静态密码文件(暂不研究)
为用户生成证书
假设我们操作的用户名为Tom
- 为用户创建一个私钥
|
|
- 为此私钥创建一个csr(证书签名请求)文件,需要在subject里带上用户信息(CN为用户名,O为用户组)
|
|
- 找到Kubernetes集群(API Server)的CA证书文件(/etc/kubernetes/pki/ca.crt),通过集群的CA证书和之前创建的csr文件来为用户颁发证书:
|
|
/etc/kubernetes/pki
下会有两个文件,一个是CA证书(ca.crt),一个是CA私钥(ca.key)。
为用户添加基于角色的访问控制
这儿我采用使用Kubernetes集群中内置的admin的ClusterRole的方式:
|
|