k8s新建用户并授权


k8s中用户与用户组

在k8s中也有用户和组的概念,只是不如openshift那么清晰与好操作。但是原理基本上可以套用,毕竟openshift可以看作是k8s的封装发行版,可参考Openshift用户与权限思维导图

新建用户

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

  • 生成用户的证书key
  • 通过用户的证书key,生成用户的证书请求
  • 通过k8s的api的ca证书去签发用户的证书请求,生成用户的证书
  • 配置kubectl config
    • kubectl config set-cluster                           //集群配置
    • kubectl config set-credentials NAME         //用户配置
    • kubectl config set-context                  //context配置
    • kubectl config use-context                 //切换context

具体操作:

# (umask 077; openssl genrsa -out baison.key 2048)      //创建用户证书key
# openssl req -new -key baison.key -out baison.csr -subj "/O=Baison/CN=baison"      //创建用户证书请求,-subj指定组和用户,其中O是组名,CN是用户名
# openssl x509 -req -in baison.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out baison.crt -days 3650      //使用k8s的ca签发用户证书
# kubectl config set-credentials baison --client-certificate=baison.crt --client-key=baison.key --embed-certs=true      //用户配置
# kubectl config set-context baison@kubernetes --cluster=kubernetes --user=baison      //context设置

# 可以切换到新用户了,但此时用户啥权限都没有
# kubectl config use-context baison@kubernetes

简单说明:

  • 没有使用kubectl config set-cluster ,因为集群就使用本身的集群,也默认使用本集群的默认config文件
  • kubectl config set-cluster --kubeconfig=/PATH/TO/SOMEFILE    ---kubeconfig=/PATH/TO/SOMEFILE用于创建新的配置文件,如果不加此选项,则内容会添加到家目录下.kube/config文件中,可以使用use-context来切换不同的用户管理k8s集群
  • context,就是用什么用户来管理哪个集群,即用户和集群的结合

用户授权

k8s的用户授权有很多种,其中最普遍的是RBAC——基于角色的授权机制。

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

即最终效果是:某个用户对某些资源拥有某些操作。下面以上面创建的baison用户为例,让此用户对default空间拥有查看pod与进入到pod里的权限。

# kubectl create role only-read-pods --verb=get,list,watch,create --resource=pod,pod/exec
# kubectl create rolebinding bind-only-read-pods --role=only-read-pods --user=baison

简单说明:

  • 除了role、rolebinding外,还有cluserrole、clusterrolebinding,他们的区别就是作用域不同,很明显带cluser的作用与整个集群。
  • rolebinding可以绑定role,也可以绑定clusterrole,绑定cluserrole的时候,clusterrole作用域降级为namespace级别。
  • 集群有很多内置role、rolebinding和cluserrole、clusterrolebinding,可以用yaml方式打开作为借鉴。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM