一、k8认证
我们知道apiserver有以下几种认证方式:
-
<李> X509客户确实的事情李>
<李>静态标记文件李>
<李>引导标记李>
<李>静态密码文件李>
<李>服务帐户标记李>
<李> 李> OpenID连接令牌
<李> Webhook令牌认证李>
<李>身份验证代理李>
一般我们使用二进制自建k8集群,或者使用kubeadm创建的集群,集群的管理者,也就是k8中用户这个对象,都是使用的X509证书进行验证,如果属于同一个CA签发的,就认可这个用户;
企业为了减少用户管理的复杂程度,需要想办法如何把我的用户集成到的集群中,这样我们就不需要耽误为的创建用户,减少一套用户的维护工作,那这是如何集成的呢,是通过了美丽的Webhook令牌认证,其认证过程架构图如下:
我们可以从图中看到多了身份验证这一部分,通过aws-iam-authenticator,我们可以知道,这是运行在的控制平面中的一组DaemonSet仓,用来接收apiserver的认证请求。
二、解剖的
2.1,创建的
我们使用eksctl这个命令创建的集群,默认eksctl会调用awscli的配置,所以我们需要先配置好awscli,相关的用户或者角色具有创建的集群的权限即可:
<代码> eksctl us-east-1 \创建集群——名字的区域 ——节点类型=t2。小,节点1——ssh公共密钥. ssh/id_rsa。酒吧\ ——管理——区域us-east-1f us-east-1c——vpc-nat-mode禁用代码>
集群创建好之后,会自动帮我们配置好kubeclt需要的配置文件,并且集群的创建者会自动获取集群集群管理员的角色,拥有最高权限。
2.2,引入aws-iam-authenticator
我们首先可以通过监测日志去查看kube-apiserver的启动参数,我们可以看到有这样一组启动参数:
<代码>——authentication-token-webhook-config-file="/etc/kubernetes/身份/apiserver-webhook-kubeconfig.yaml”代码>
说明我们已经启动了webhook方式的认证,那参数后面的yaml文件里面是什么呢,我们可以通过aws-iam-authenticator的github文档可以看的到,我们使用如下命令进行生成:
<代码> wangzan: ~/美元k8 aws-iam-authenticator init - openssl兰德16个十六进制的 信息(2020 - 01 - 07 t07:50:54z)生成一个新的私钥和证书certBytes=804 keyBytes=1192 信息(2020 - 01 - 07 t07:50:54z)保存新密钥和证书certPath=cert。pem keyPath=key.pem 信息(2020 - 01 - 07 t07:50:54z)加载现有密钥对certPath=cert。pem keyPath=key.pem 信息(2020 - 01 - 07 t07:50:54z)写作webhook kubeconfigPath=aws-iam-authenticator.kubeconfig kubeconfig文件 信息(2020 - 01 - 07 t07:50:54z)复制cert.pem/var/aws-iam-authenticator/证书。pem alt="如何深入理解的我身份的实现机制">如何深入理解的我身份的实现机制