Kubernetes 准入控制 Admission Controller 介绍

1.什么是Admission Controller

Admission Controller(准入控制)是 Kubernetes API Server 用于拦截请求的一种手段。
Admission可以做到对请求的资源对象进行校验,修改。
service mesh最近很火的项目Istio天生支持Kubernetes,利用的就是admission对服务实例自动注入sidecar。

假如对 Kubernetes 有一定的了解的话,应该会知道在 Kubernetes 中还有 authn/authz,为什么还会引入 admission 这种机制?

1): authn/authz 是 Kubernetes 的认证鉴权,运行在 filter 中,只 能获取 http 请求 header 以及证书,并不能获取请求的 body。
所以 authn/authz 只能对客户端进行认证和鉴权,不可以对请求的对象进行任何操作,因为这里根本还获取不到对象。
2): Admission 运行在 API Server 的增删改查 handler 中,可以自然地操作 API resource。

Admission Controller 工作流程详解

1.API Server 接收到客户端请求后首先进行认证鉴权,认证鉴权通过后才会进行后续的endpoint handler处理。

2.当API Server 接收到对象后首先根据 http 的路径可以知道对象的版本号,然后将 request body 反序列化成 versioned object.

3.versioned object 转化为 internal object,即没有版本的内部类型,这种资源类型是所有 versioned 类型的超集。只有转化为 internal 后才能适配所有的客户端 versioned object 的校验。Admission Controller 具体的 admit 操作,可以通过这里修改资源对象,例如为 Pod 挂载一个默认的 Service Account 等。

4.API Server internal object validation,校验某个资源对象数据和格式是否合法,例如:Service Name 的字符个数不能超过63等。

5.Admission Controller validate,可以自定义任何的对象校验规则

6.internal object 转化为 versioned object,并且持久化存储到 etcd

2.如何使用 admission controller

如果使用Kubernetes 1.10之后的版本,–admission-control 已经废弃,建议使用 --enable-admission-plugins --disable-admission-plugins 指定需要打开或者关闭的 Admission Controller。 同时用户指定的顺序并不影响实际 Admission Controllers 的执行顺序,对用户来讲非常友好。

值得一提的是,有些 Admission Controller 可能会使用 Alpha 版本的 API,这时必须首先使能其使用的 API 版本。否则 Admission Controller 不能工作,可能会影响系统功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值