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