k8s流控平台apiserver详解

一、简单理解认识apiserver

1.主要功能

认证
鉴权
准入
    · mutating
    · validating
    · admission
限流

2.概念

apiserver保护etcd,缓存机制,有缓存直接返回,没缓存再去查看etcd,apiserver是担任和其他平台同信并认证

3.访问控制概览

在进入之后,先注册api handler,然后会进入到认证(判断用户有没有访问我的权限)和鉴权(判定用户对我服务有没有请求权限),鉴权完之后,如果你对这个属性有其他设置,就进入到准入环节mutaing环节,这个环节要对对象进行变形,如:要设置一个pod,pod没有lables,在mutaing环节,development要控制rs,rs控制pod,rs去创建pod要求名称不能重复,所以要对pod进行随机数。可以简化通过webhook单独将mutating拎出来,自己开发mutaing插件完成资源的处理,将对象处理完成之后返回给下面流程(具体实践:传输数据时是以json格式去传输,在传输时,这个json字符串不去向api server传输,向webhook传输,在webhook里面将字符串进行二次处理,处理完之后,将字符串进行回传,然后让这个字符串继续进行后续动作),在进行突变之后查看名称、内容等是否合法,然后对一些附加值进行校验(数据范围是否合理、字符串类型是否合理,如果有很多集群,可以单拎出来,写一个插件,通过webhook进行统一实现回传),通过校验进入etcd实现落盘。

4.访问控制细节

图解:

当代码进入首先执行panic recovery(作用是写一个服务的时候,不会因为一个问题导致你全部进行崩掉),然后进入request-timeout状态(请求的超时时间,会对请求设置一个缓存,设置缓存保存多长时间就是它决定的), 然后进入认证authentication,然后进入audit 审计,然后impersonation 开始做数据传输是http协议,针对header过来的时候加一点信息,集群联邦过来的时候改一点信息,max-in-flight做限流的,多少在路上,上限是多少,是否拒绝,然后是鉴权(某些用户对某些资源进行相应的操作),然后kube-aggregator&crds这里是判断request是不是标准的k8s对象,判断不是的话进入其他处理,是的话,先默认进入decoding

总结:

panic处理,不会因为某个携程panic干掉进程
audit 审计的必要性
impersonation暂时理解为一大堆k8s集群, 开始做数据传输是http协议,header过来的时候加一点信息,集群联邦过来的时候改一点信息
max-in-flight:做限流的,多少在路上,上限是多少,是否拒绝
鉴权
kube-aggregator&crds这里是判断request是不是标准的k8s对象,是的话,判断不是的话
json做反序列化为go的对象
做conversion
internal version
external version
先internel,然后admission,先webhook,没就内置validating
然后内部处理
附加validating 看有没有webhook
准入后进入etcd,然后还有个restlogic是做缓存的

二、apiserver的认证机制(你谁啊你)

1.认证概念

insecure port(认证鉴权都是不走的,直接进行准备控制)
secure port

2.认证插件

serviceaccount在进行认证时用的是token

生产化落地--认证集成

 

3.认证方式演示

4.基于webhook的认证服务集成
参考链接https://github.com/kubeguard/guard

集于webhook集成的一段代码

做数据传输时,apiversion这段是实际获取的东西,实际获取的东西是从外部的webhook获取的,从webhook读取到认证信息之后,根据用户和身份信息生成一个bearertoken,在注回到原来的信息中,在将其传回本地的api server中。

外部使用webhook使用的代码:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值