如何使用kubebuilder的client.List方法?

时间:2019-05-02 16:00:39

标签: go kubernetes kubebuilder

我正在使用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对象来执行此操作?我应该完全做其他事情吗?

1 个答案:

答案 0 :(得分:0)

所以弄清楚了-答案是传递nil作为第二个参数。输出指针的类型决定了它实际检索的资源类型。