自定义证书使用kubectl认证接入API Server
kubeconfig是API Server的客户端连入API Server时使用的认证格式的客户端配置文件。
使用kubectl config view查看其配置

 kubectl config view
apiVersion: v1
clusters: #集群列表
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.1.100:6443
name: kubernetes
contexts: #上下文列表(使用哪个账号访问哪个集群)
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes #当前使用的账号
kind: Config
preferences: {}
users: #用户列表
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED

创建、删除集群\用户\上下文列表
kubectl config (set-cluster\delete-cluster)\(set-credentials)\(set-context\delete-context)
创建账号前需要创建账号用于服务器端的认证的证书及密钥
切换用户:kubectl config use-context

使用kubeadm创建的集群,集群的证书及密钥在/etc/kubernetes/pki下。里面的证书和私钥都有各自的功能;
如:apiserver-kubectl-client.crt和apiserver-kubectl-client.key就可以用来给创建的账户所使用。

示例:
使用openssl创建用于自己创建账号所使用的证书及密钥(自签)
使用带有自签证书的用户在集群中创建用户,切换用户查看权限:
1.创建一个smbands的用户私钥:
  (umask 077; openssl genrsa -out smbands.key 2048)
  注意:证书持有者名称就是用户名,所以用户名必须与证书持有者名称一致;
  如:用户名为smbands,那么持有者也应该为smbands。创建完成后会生成一个smbands.key的文件。
2.基于刚生成的私钥去生成一个证书生成请求smbands.csr
   openssl req -new -key smbands.key -out smbands.csr -subj "/CN=smbands"
   会生成一个生成证书请求文件smbands.csr
3.使用ca.crt签署证书
   openssl x509 -req -in smbands.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out smbands.crt -days 365
   生成smbands的用户证书smbands.crt
使用:openssl x509 -in smbands.crt -text -noout查看生成的证书信息

使用创建的用户在集群中创建账户和上下文
1.在集群中创建用户:
  kubectl config set-credentials smbands --client-certficate=URL/smbands.crt --client-key=URL/smbands.key --embed-certs=true
2.在集群中为新建的用户定义上下文,使用户可以切换至创建的用户:
  kubectl config set-context smbands@kubernetes(用户名@集群名) --cluster=kubernetes --user=smbands
3.切换集群账户:
  kubectl config use-context smbands@kubernetes
此时集群账户就切换为smbands了,不过这样默认的用户是没有管理员权限的。下一篇将会写到如何使用RBAC将自定义用户绑定到自定义角色分配自定义权限。
此时的kubeconfig如下显示:

 kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.1.100:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
- context:
cluster: kubernetes
user: smbands
name: smbands@kubernetes
current-context: smbands@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
- name: smbands
user:
client-certificate-data: REDACTED
client-key-data: REDACTED

最新文章

  1. Oracle 11g RAC 环境打PSU补丁的详细步骤
  2. 如何用angularjs给从后台传来数据添加链接
  3. O(1)快速乘注意事项
  4. IC/RFID/NFC 关系与区别
  5. [原创]JavaScript继承详解
  6. IDEA开发spark本地运行
  7. 【CSS3】Advanced10:Gradient
  8. HTML+CSS基础学习笔记(3)
  9. 算法模板——sap网络最大流 3(递归+邻接表)
  10. spring boot 入门操作(二)
  11. java--加强之 jdk1.5简单新特性,枚举,注解
  12. 利用EventHandler系统委托,触发Event
  13. MSSQL sqlserver系统函数教程分享
  14. Flannel网络插件配置
  15. Linux 下如何知道是否有人在使坏?
  16. linux下卸载mysql(rpm)
  17. am335x_y蜂鸣器驱动
  18. PHP设计模式(三):抽象工厂模式
  19. day-16 CNN卷积神经网络算法之Max pooling池化操作学习
  20. AndroidStudio3.0 注解报错Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor.

热门文章

  1. python大战机器学习——数据预处理
  2. 【ACM】一种排序
  3. Abp 添加阿里云短信发送
  4. leetcode--Learn one iterative inorder traversal, apply it to multiple tree questions (Java Solution)
  5. jdbc 操作步骤详解
  6. 基于android-uitableview扩展-uilistview项目
  7. ElasticSearch安装(以Docker的方式)
  8. cms-帖子幻灯图片上传
  9. cms-幻灯片的实现
  10. 谈谈bootstrap在实践中的应用