0

我正在使用 kubebuilder(版本 1.0.8)为自定义资源开发自定义控制器。我有一个场景,我需要获取自定义资源的所有实例的列表,以便与外部数据库同步。

我见过的所有关于 kubernetes 控制器的示例都使用 client-go 或直接通过 http 调用 api 服务器。但是,kubebuilder 也给了我这个 client.Client 对象来获取和列出资源。所以我正在尝试使用它。

在使用传入的 Manager 实例(即 do mgr.GetClient())创建客户端实例后,我尝试编写一些代码来获取我创建的所有 Environment 资源的列表。

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对象做到这一点?我应该完全做其他事情吗?

4

1 回答 1

0

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

于 2019-05-07T22:21:05.707 回答