我正在使用kubebuilder (1.0.8版)为一个自定义资源开发一个自定义控制器。我有一个场景,我需要获得我的自定义资源的所有实例的列表,以便我可以与外部数据库同步。
我所见过的kubernetes控制器的所有示例要么使用client-go,要么直接通过http调用api服务器。但是,kubebuilder也提供了这个client.Client对象来获取和列出资源。所以我试着利用这一点。
在使用传入的管理器实例创建客户端实例(即执行mgr.GetClient())之后,我尝试编写一些代码来获取我创建的所有环境资源的列表。
func syncClusterWithDatabase(c client.Client, db *dynamodb.DynamoDB) {
// Sync environments
// Step 1 - read all the environments the cluster knows about
clusterEnvironments := &cdsv1alpha1.EnvironmentList{}
c.List(context.Background(), /* what do I put here? */, clusterEnvironments)
}List方法文档中的示例显示:
c.List(context.Background, &result);它甚至不能编译。
我在客户端包中看到了一些方法,用于将搜索限制为特定标签或具有特定值的特定字段,但没有将结果限制为特定资源类型。
有没有办法通过Client对象做到这一点?我应该做一些完全不同的事情吗?
发布于 2019-05-08 06:21:06
所以解决了这个问题-答案是为第二个参数传递nil。输出指针的类型决定了它实际检索的资源类型。
https://stackoverflow.com/questions/55956244
复制相似问题