kubernetes

why does controller-runtime say resource 'not found' while updating resource that exists?


I have written a k8s controller with kubebuilder which reconciles my CustomResource object (MyResource).

During update, controller-runtime gives me an error 'not found' even though my resource exists on the cluster.

func (r *MyResourceReconciler) updateStatus(ctx context.Context, myResource *myResourcev1.MyResource, neoStatus *myResourcev1.MyResourceStatus) error {
    if !reflect.DeepEqual(&myResource.Status, neoStatus) {
        myResource.Status = *neoStatus
        err := r.Status().Update(ctx, myResource)
        return err

    }
    return nil
}

Can someone please help me troubleshoot this error? I'm stuck because I can do a GET on the resource using kubectl on the cluster & yet controller-runtime says 'not found'.


Solution

  • I was able to resolve this issue myself using:

    r.Update(ctx, myResource) instead of r.Status().Update(ctx, myResource)