为什么要做controller
controller的作用就是监听指定对象的新增、删除、修改等变化,针对这些变化做出相应的响应(例如新增pod的响应为创建docker容器),
如上图,API对象的变化会通过Informer存入队列(WorkQueue),在Controller中消费队列的数据做出响应,响应相关的具体代码就是我们要做的真正业务逻辑;
自动生成代码是什么
从上图可以发现整个逻辑还是比较复杂的,为了简化我们的自定义controller开发,k8s的大师们利用自动代码生成工具将controller之外的事情都做好了,我们只要专注于controller的开发就好。
关于controller的代码我们留待下一章完成,本章关注的是如何自动生成代码的实战,将上图中controller之外的事情都完成了;
开始实战
接下来要做的事情就是编写API对象Student相关的声明的定义代码,然后用代码生成工具结合这些代码,自动生成Client、Informet、WorkQueue相关的代码;
1、在$GOPATH/src/目录下创建一个文件夹k8s_customize_controller:
2、进入文件夹k8s_customize_controller,执行如下命令创建三层目录:
mkdir -p pkg/apis/bolingcavalry
3、在新建的bolingcavalry目录下创建文件register.go,内容如下:
package bolingcavalry
const (
GroupName = "bolingcavalry.k8s.io"
Ve