我正在关注下面的博客,它解释了如何创建操作员并将另一个CR导入到现有的CR中。http://heidloff.net/article/accessing-third-party-custom-resources-go-operators/
此处为https://github.com/nheidloff/operator-sample-go/blob/aa9fd15605a54f712e1233423236bd152940f238/operator-application/controllers/application_controller.go#L276,spec是使用硬编码属性创建的。
我想在我的运算符中导入spark运算符类型。https://github.com/GoogleCloudPlatform/spark-on-k8s-operator/blob/master/pkg/apis/sparkoperator.k8s.io/v1beta2/types.go
这个spark操作符有100多个类型/属性。通过上面的博客,我可以创建Go对象,但它是硬编码的。我想基于用户在CR YAML中提供的值创建动态对象。例如,客户可以提供25个属性,有时spark应用程序可以提供50个属性。我需要基于用户YAML创建动态对象。有人能帮我吗?
1条答案
按热度按时间hyrbngr71#
如果你把spec类型设置为json对象,你可以让Spec包含任意的json/yaml。你不必有一个强类型的Spec对象,你的操作员可以解码它,然后在你的协调操作中对它做任何你想做的事情,只要你可以从json序列化和反序列化它。我想应该可以把它设置为
json.RawMesage
吧?