1. 初始化工程

1
2
3
4
5
mkdir -p $HOME/GolandProjects/microservice-operator
cd $HOME/GolandProjects/microservice-operator
# we'll use a domain of unclejoke.cn
# so all API groups will be <group>.unclejoke.cn
operator-sdk init --domain unclejoke.cn --repo github.com/senbird/microservice-operator

![image-20230214165501838](/Users/liuchu/Library/Application Support/typora-user-images/image-20230214165501838.png)

执行命令后需要等待一会,依赖网速,等到命令执行完成。

![image-20230214165843874](/Users/liuchu/Library/Application Support/typora-user-images/image-20230214165843874.png)

这一步对工程的依赖包进行了拉取,初始化工程后的所有初始文件如下入所示:

![image-20230214170056717](/Users/liuchu/Library/Application Support/typora-user-images/image-20230214170056717.png)

2. 创建API和控制器Controller

1
operator-sdk create api --group app --version v1alpha1 --kind Microservice --resource --controller

这一步将会创建api和controllers目录及下面的api定义以及Controller。

注意:group会拼接上第一步的 domain,注意不要重复配置了,比如domain设置unclejoke.cn,group设置app.unclejoke.cn,在CRD中会体现为app.unclejoke.cn.unclejoke.cn,出现了就删掉目录,重新来过。

3. 调整crd定义结构体

修改api/v1alpha1/microservice_types.go文件,自定义 MicroserviceSpecMicroserviceStatus 结构体,然后执行make manifests命令,生成config/crd/bases目录下的crd定义文件资源对象。

4. 重新生成deepCopy 和 crd定义

1
make generate && make manifests

5. 执行install操作,将crd安装到本地集群(.kube/config)

1
make install