k8s之用户和用户组

在k8s中同样也有用户和组的概念

新建一个k8s用户大概可以分为以下几步:

  • 生成用户的证书key
  • 通过用户的证书key,生成用户的证书请求
  • 通过k8s的api的ca证书去签发用户的证书请求,生成用户的证书
  • 配置kubectl config

具体操作如下:

1、创建用户证书key, 执行命令如下:

(umask 077; openssl genrsa -out guan.key 2048)

2、创建用户证书请求,–subj制定组和用户,0是组名,CN是用户名,如图:

openssl req -new -key guan.key -out guan.csr -subj "/O=Guan/CN=guan"

注意:如果提示如下错误:

Can't load /root/.rnd into RNG
140247102853568:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd


解决办法:
cd /root
openssl rand -writerand .rnd

3、使用k8s的ca签发用户证书:

openssl x509 -req -in guan.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out guan.crt -days 3650

4、用户配置:

kubectl config set-credentials guan --client-certificate=guan.crt --client-key=guan.key --embed-certs=true

5、上下文(context)设置,默认的命名空间:

kubectl config set-context guan@kubernetes --cluster=kubernetes --user=guan

6、切换用户,但是可以发现没有任何权限,如图:

kubectl config use-context guan@kubernetes

7、查看当前上下文(context):

8、查看所有的上下文(context):

上图中的kubernetes-admin@kubernetes为k8s安装后默认的上下文,也是最大权限的

用户创建完成后,即可进行用户授权,目前常用的就是RBAC–基于角色的授权机制

  • 某个用户属于某个角色
  • 某个角色拥有某些操作
  • 某些操作板顶到某些资源上

最终的结果就是:某个用户对某些资源具有某些权限,详细使用可参考k8s之rbac权限控制https://blog.ywdevops.cn/index.php/2021/12/17/rbac/

标签