我正在使用kubebuilder(版本1.0.8)为自定义资源开发自定义控制器。在一种情况下,我需要获取自定义资源的所有实例的列表,以便可以与外部数据库同步。
我为kubernetes控制器看到的所有示例都使用client-go或直接通过http调用api服务器。但是,kubebuilder还给了我这个client.Client对象来获取和列出资源。所以我正在尝试使用它。
在使用传入的Manager实例创建客户端实例(即执行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
对象来执行此操作?我应该完全做其他事情吗?
答案 0 :(得分:0)
所以弄清楚了-答案是传递nil
作为第二个参数。输出指针的类型决定了它实际检索的资源类型。