TL;DR: This document will be useful when you extend third-party resources into your kubernetes cluster e.g. CustomResourceDefinition and try to program java to operate the extended APIs. The generation process requires your CRD to be defined with structral-schema.
hello。
我们公司的开发语言是java。目前使用的是官方的sdk。https://github.com/kubernetes-client/java
官方对众多编程语言的sdk是通过openapi规范来自动生成的。昨天我找到了官方指导怎样生成crd对应的object实体类的文章。https://github.com/kubernetes-client/java/blob/e679a13248cfdf437460292cab0635c5cd54adcc/docs/generate-model-from-third-party-resources.md
然后我按照官方的指导方法进行了测试。下面是生成的类文件。
关于captain相关的只有list相关的类,没有具体的类文件。
然后我回过头读官方的说明
TL;DR: This document will be useful when you extend third-party resources into your kubernetes cluster e.g. CustomResourceDefinition and try to program java to operate the extended APIs. The generation process requires your CRD to be defined with structral-schema.
我认为可能是crd定义不是特别严格的原因。我对比了 官方示例(crontabs.stable.example.com)和HelmRequest(helmrequests.app.alauda.io)的定义的yaml文件。
很大的嫌疑应该是这里
然后我按照官方的demo执行了一次。一共生成了3个文件
然后再查看
ComExampleStableV1CronTabSpec.java
文件。里面的三个属性就是crd定义中validation.openAPIV3Schema.properties.spec
里面的内容所以,希望官方可以把crd的validation补充的更详细一点,然后就可以生成各种语言的sdk了。