Requirement:
When we build a K8S operator via kubebuilder, we often need to interact with Control Plane. By default, we use controller-runtime client
However, when we use this client to fulfil some functions of kubectl i.e. drain, we hit an error:
cannot use r.Client (variable of type client.Client) as kubernetes.Interface value in struct literal: missing method AdmissionregistrationV1
Solution:
The error indicates the controller-runtime client does not implement method AdmissionregistrationV1, so we can't use it, instead, we init a new GO Client in the reconcile(). Sample code is like
"k8s.io/client-go/kubernetes"ctrlconfig "sigs.k8s.io/controller-runtime/pkg/client/config"cfg, err := ctrlconfig.GetConfig()if err != nil {log.Log.Error(err, "unable to get kubeconfig")return err}kubeclientset, err := kubernetes.NewForConfig(cfg)if err != nil {return err}
No comments:
Post a Comment