Operator 开发实践 六 (API分组)

API分组

有时我们会在一个Operator项目中实现多个控制器来管理不同的API资源组。比如如果要实现一个ai-operator项目,其中可能包含模型训练相关的控制器trainjob-controller和推理服务相关的控制器atom-controller。那么如何将API分别放到apps组和batch组中呢。

首先通过Operator做一些简单工作:

operator-sdk edit --multigroup=true

这个命令的能力其实非常有限,它只是在Dockerfile文件中将api目录变成了 apis/目录,然后在 PROJECT文件 中加了一行multigroup:true

接下来手动创建

cd ~/MyOperatorProjects/application-operator
mdkir -p apis/apps
mv api/v* apis/apps/
rm -rf api/

这时旧版的API就被挪动到合适的目录了。接着还需要挪动controllers目录内的控制器相关源文件:

mkdir -p controllers/apps
mv controllers/*.go controllers/apps/

目录结构移动好了。接下来就是对应源文件内的import部分引用的更新了。如果是用IDE做的重构,这些引用应该会自动更新。import的更新非常简单,这里不再赘述,
还有一个细节就是suite_test.go中和envtest相关的代码要做一个小更新,因为将这个源文件放到了更深一层的目录中,所以这行代码如下:

# CRDDirectoryPaths:   []string{filepath.Join("..", "config", "crd", "bases")],
# 更新为
CRDDirectoryPaths:     []string{filepath.Join("..", "..", "config", "crd", "bases")],

到这里就完成了API分组支持的配置。记得PROJECT文件中多出来的一行multigroup: true配置吗?这行配置会告诉Operator后面新增的API不要放到api/目录下,而是放到 apis/目录下;另外控制器的代码也不再放到controllers目录下而是放到controllers/目录下

结尾

自此operator系列就完结了,希望整个流程会让大家对自定义资源有一个很好的入门体验。当然,kubernetes的内容还是比较多的,有兴趣的伙伴可以自己深挖一下,祝你们乘风破浪!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦苇浮绿水

觉得还不错请博主喝杯饮料

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值