参考
- Kubernetes 源码剖析(书籍)
- kube-apiserver的设计与实现 - 自记小屋
kube-apiserver 核心思想
-
APIGroupInfo 记录 GVK 与 Storage 的对应关系
- 将 GVK 转换成,Restful HTTP Path
- 将 Storage 封装成 HTTP Handler
- 将上面两个形成映射,实现相关的路由处理
-
发起请求并处理的流程
- 发送请求:通过 GVK 对应的 Restful HTTP Path 发送请求(对 k8s 资源的操作)
- 认证:经过认证插件,判断是否为合法用户
- 鉴权(或叫授权):经过鉴权插件,判断该用户是否有权限操作此资源
- 准入控制:先执行已配置的 mutating 变更准入控制插件(修改用户提交的资源对象信息,如新增 label 等),再执行已配置 Validating 验证准入控制插件(验证用户提交的资源对象信息,如是否具有某个 label 等)
- 在此过程中好像涉及 Schema Validation,不清楚此处作用(没有定位到,后续若找到,再补充)