kubernetes集群三步安装
引用>概述
kubernetes服务器帐户的令牌很容易获取,但是用户的令牌非常麻烦,本文给出一个极简的用户令牌生成方式,让用户可以一个http请求就能获取到。
标记主要用来干啥
官方仪表板登录时需要。如果通过使用kubeconfig文件登录而文件中又没有令牌的话会失败,现在大部分文章都介绍使用服务帐户的令牌来登录指示板,能通,不过有问题:
第一:绑定角色时要指定类型是服务帐户:<代码> apiVersion: rbac.authorization.k8s.io/v1beta1 :ClusterRoleBinding 元数据: 名称:kubernetes-dashboard 标签: k8s-app: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io :ClusterRole 名称:集群管理员 主题: 类型:ServiceAccount #这里不是用户类型 名称:kubernetes-dashboard 名称空间:kube-system 代码>第二:要理解kubeconfig里是解析证书把CN作为用户名的,这时服务帐户即便与CN一样那还是两个账户,绑定角色时还需要绑定两次,有点像把服务帐户给“人“用,所以把服务帐户的令牌扔给某个开发人员去用往往不合适,服务帐户标记更多时候是给程序用的。
想直接调用https的,没有令牌就会:
<代码> (root@iZj6cegflzze2l7fpcqoerZ ssl) # curl https://172.31.12.61:6443/api/v1/命名空间/违约/豆荚,没有安全感 { “类型”:“状态”, “apiVersion”:“v1”, “元数据”:{ }, “状态”:“失败”, “消息”:“豆荚是被禁止的:用户\”系统:匿名\“不能列出资源\”吊舱\ API组\“\”在名称空间\“默认\ ", “原因”:“禁止”, "详细信息":{ “类型”:“豆荚” }, “代码”:403 }代码>因为没有任何认证信息,所以匿名(匿名)用户没有任何权限
加了令牌是这样的:
<代码> (root@iZj6cegflzze2l7fpcqoerZ ssl) # curl - h”授权:无记名eyJhbGciOiJSUzI1NiIsImtpZCI6IkNnYzRPVEV5TlRVM0VnWm5hWFJvZFdJIn0.eyJpc3MiOiJodHRwczovL2RleC5leGFtcGxlLmNvbTo4MDgwIiwic3ViIjoiQ2djNE9URXlOVFUzRWdabmFYUm9kV0kiLCJhdWQiOiJleGFtcGxlLWFwcCIsImV4cCI6MTU1MTA5NzkwNiwiaWF0IjoxNTUwNzM3OTA2LCJlbWFpbCI6ImZodGpvYkBob3RtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJncm91cHMiOlsiZGV2Il0sIm5hbWUiOiJmYW51eCJ9。ZqKn461UW0aGtyjyqu2Dc5tiUzC-6eYLag542d3AvklUdZuw8i9XwyaUg_f1OAj0ZsEcOybOe9_PeGMaUYzU0OvlKPY-q2zbQVC-m6u6sQw6ZXx8pi0W8k4wQSJnMaOLddCfurlYufmr8kScDBQlnKapSR0F9mJzvpKkHD-XNshQKWhX3n03g7OfFgb4RuhLjKDNQnoGn7DfBNntibHlF9sPo0jC5JjqTZaGvoGmiRE4PAXwxA-RJifsWDNf_jW8lrDiY4NSO_3O081cia4N1GKht51q9W3eaNMvFDD9hje7abDdZoz9KPi2vc3zvgH7cNv0ExVHKaA0-dwAZgTx4g”- k名称空间https://172.31.12.61:6443/api/v1//默认/豆荚 { “类型”:“状态”, “apiVersion”:“v1”, “元数据”:{ }, “状态”:“失败”, “消息”:“禁止豆荚:用户\”https://dex.example.com: 8080 # fanux \“不能列出资源\”吊舱\ API组\“\”在名称空间\“\”“违约, “原因”:“禁止”, "详细信息":{ “类型”:“豆荚” }, “代码”:403 }代码>看,虽然还是403但是已经有了用户信息,只要给该用户授权就可正常访问了,如何授权下文介绍
牌种类介绍
标记的生成方式有很多,主要分成三种:
<李>服务帐户标记这个创建服务帐户就有,存在秘密里获取比较简单,但是要区分好用户和服务帐户区别李> <李>普通的令牌,这种令牌就是个普通的字符串,一般是自己写一个认证的web钩,k8认证时调用这个钩查询令牌是否有效,比较低李> <李>基于openid的智威汤逊(josn web标记)这种令牌,认证中心把用户信息放在json里,用私钥加密,k8拿到令牌后用公钥解密,只要解密成功的令牌就是合法的而且能拿到用户信息,不需要再像认证中心请求李>
基于openid的jwt是本文介绍的重点。
社区用的比较多的就是敏捷,是一个比较完整的实现,但是对于不熟悉该技术的朋友来说还是有点门槛的,容易绕进去,而且还存在一些使用不方便的问题。
如依赖复杂,首先得需要一个真正的用户管理程序,如ldap或者一个auth3服务端,这还可以接受,关键是认证时可能需要依赖浏览器进行跳转授权,这在十分多的场景里就变的十分尴尬,就比如我们的场景压根没有
界面,这样生成令牌就成了一个大问题。其次集成到别的系统中时往往用户已经登录过了,所以需要一个二次授权的过程才能拿到令牌,依赖过重导致系统难以设计。全网最简单的k8用户JWT牌管理器