我使用AWS的EKS,即Kubernetes v1.10,我使用的是client-go v7.0.0。
我尝试做的是解析一个.yml文件,其中包含多个Kubernetes资源定义,并将这些资源提交给Kubernetes API。我可以使用以下代码scheme.Codecs.UniversalDeserializer().Decode
成功解析文件,并返回一个runtime.Object
数组。
我知道所有Kubernetes资源都符合runtime.Object
接口,但我找不到将通用接口提交给API的方法。我见过的大多数方法都使用具体类型上的方法,如Deployment,Pod等。
我已经看到了一些围绕通用RESTClient的代码,比如clientset.RESTClient().Put().Body(obj).Do()
,但这不起作用,我无法弄清楚。
我知道我的clientset配置正确,因为我可以成功列出所有Pod。
2条答案
按热度按时间4ktjp1zp1#
如果你有一个“通用”
runtime.Object
,你可以在client-go中使用dynamic client来实现这个目标。动态客户端处理unstructured.Unstructured
对象,所有runtime.Object
都可以转换为它。下面是一个示例:字符串
idfiyjo82#
这是正确的,你需要动态客户端,但要保持运行时的通用性。对象,你需要使用DiscoveryRESTMapper,它需要使用类型化的客户端来发现可用的API版本:
字符串