为了账号安全,请及时绑定邮箱和手机立即绑定

使用自定义 fieldSelector 列出来自缓存客户端的自定义资源

使用自定义 fieldSelector 列出来自缓存客户端的自定义资源

Go
慕婉清6462132 2023-07-04 16:54:10
我正在使用Operator SDK构建自定义 Kubernetes Operator。我使用相应的 Operator SDK 命令创建了自定义资源定义和控制器:operator-sdk add api --api-version example.com/v1alpha1 --kind=Exampleoperator-sdk add controller --api-version example.com/v1alpha1 --kind=Example在主协调循环中(对于上面的示例,自动生成的ReconcileExample.Reconcile方法),我有一些自定义业务逻辑,需要我在 Kubernetes API 中查询具有特定字段值的同类其他对象。我突然想到,我也许可以使用默认的 API 客户端(由控制器提供)和自定义字段选择器:func (r *ReconcileExample) Reconcile(request reconcile.Request) (reconcile.Result, error) {    ctx := context.TODO()    listOptions := client.ListOptions{        FieldSelector: fields.SelectorFromSet(fields.Set{"spec.someField": "someValue"}),        Namespace:     request.Namespace,    }    otherExamples := v1alpha1.ExampleList{}    if err := r.client.List(ctx, &listOptions, &otherExamples); err != nil {        return reconcile.Result{}, err    }    // do stuff...    return reconcile.Result{}, nil}当我运行该运算符并创建新Example资源时,该运算符失败并显示以下错误消息:{"level":"info","ts":1563388786.825384,"logger":"controller_example","msg":"Reconciling Example","Request.Namespace":"default","Request.Name":"example-test"}{"level":"error","ts":1563388786.8255732,"logger":"kubebuilder.controller","msg":"Reconciler error","controller":"example-controller","request":"default/example-test","error":"Index with name field:spec.someField does not exist","stacktrace":"..."}最重要的部分是名称字段索引:spec.someField 不存在我已经搜索了关于默认 API 客户端的 Operator SDK 文档,并了解了一些有关客户端内部工作原理的信息,但没有详细解释此错误或如何修复它。此错误消息是什么意思,如何创建此缺失索引以按此字段值有效列出对象?
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信