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