controller-runtime解析
一、controller-runtime流程图
- Manager 用户初始化的时候需要创建的,用来启动controller runtime的组件
- Reconciler 自定义业务逻辑
- Cache 缓存,用于建立informer对apiserver进行连接watch资源,并将watch到的object放入queue
- Controller 一方面会像informer注册eventhandler,另一方面会从queue中拿数据并执行Reconcile函数
二、controller-runtime工作流程
- 首先,controller会向Informer注册特定资源的eventHandler
- 然后,Cache会启动Informer,Informer向ApiServer发出请求,建立连接
- 当Informer检测到有资源变动后,使用Controller注册进来的eventHandler判断是否推入queue中
- 当队列中有元素被推入时,Controller将元素取出,并执行用户侧的Reconciler
三、controller-runtime一般用法:
1、初始化Manager,同时生成一个默认配置的Cache
2、初始化Controller
- ctrl.NewControllerManagedBy 创建Controller,同时将第一步生成的Manager的一些配置注入到Controller中
- For 用来指定watch的资源类型
- Owns 某资源是我关心的资源的从属,那么其event也会进入到Controller的Queue中
- Complate 用于生成Controller,将用户的Reconciler注册进Controller,并生成watch资源的默认eventHandler,同时执行Controller的watch函数
- 最后一步就是启动Manager,进一步启动Cache,即启动Informer,Controller