@@ -26,16 +26,16 @@ import (
2626 "github.com/pkg/errors"
2727 apierrors "k8s.io/apimachinery/pkg/api/errors"
2828 v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
29- "k8s.io/client-go/tools/clientcmd "
29+ "k8s.io/apimachinery/pkg/runtime "
3030 clusterv1 "sigs.k8s.io/cluster-api/api/v1alpha3"
3131 bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1alpha2"
3232 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/cloudinit"
3333 internalcluster "sigs.k8s.io/cluster-api/bootstrap/kubeadm/internal/cluster"
3434 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/internal/locking"
3535 kubeadmv1beta1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/types/v1beta1"
36+ "sigs.k8s.io/cluster-api/controllers/remote"
3637 capierrors "sigs.k8s.io/cluster-api/errors"
3738 "sigs.k8s.io/cluster-api/util"
38- "sigs.k8s.io/cluster-api/util/kubeconfig"
3939 "sigs.k8s.io/cluster-api/util/patch"
4040 "sigs.k8s.io/cluster-api/util/secret"
4141 ctrl "sigs.k8s.io/controller-runtime"
@@ -59,9 +59,10 @@ type KubeadmConfigReconciler struct {
5959 Client client.Client
6060 KubeadmInitLock InitLocker
6161 Log logr.Logger
62+ scheme * runtime.Scheme
6263
6364 // for testing
64- remoteClient func (client.Client , * clusterv1.Cluster ) (client.Client , error )
65+ remoteClient func (client.Client , * clusterv1.Cluster , * runtime. Scheme ) (client.Client , error )
6566}
6667
6768// SetupWithManager sets up the reconciler with the Manager.
@@ -70,10 +71,12 @@ func (r *KubeadmConfigReconciler) SetupWithManager(mgr ctrl.Manager) error {
7071 r .KubeadmInitLock = locking .NewControlPlaneInitMutex (ctrl .Log .WithName ("init-locker" ), mgr .GetClient ())
7172 }
7273 if r .remoteClient == nil {
73- r .remoteClient = defaultRemoteClient
74+ r .remoteClient = remote . NewClusterClient
7475 }
7576
76- return ctrl .NewControllerManagedBy (mgr ).
77+ r .scheme = mgr .GetScheme ()
78+
79+ err := ctrl .NewControllerManagedBy (mgr ).
7780 For (& bootstrapv1.KubeadmConfig {}).
7881 Watches (
7982 & source.Kind {Type : & clusterv1.Machine {}},
@@ -88,6 +91,12 @@ func (r *KubeadmConfigReconciler) SetupWithManager(mgr ctrl.Manager) error {
8891 },
8992 ).
9093 Complete (r )
94+
95+ if err != nil {
96+ return errors .Wrap (err , "failed setting up with a controller manager" )
97+ }
98+
99+ return nil
91100}
92101
93102// Reconcile handles KubeadmConfig events.
@@ -156,8 +165,7 @@ func (r *KubeadmConfigReconciler) Reconcile(req ctrl.Request) (_ ctrl.Result, re
156165 case config .Status .Ready && (config .Spec .JoinConfiguration != nil && config .Spec .JoinConfiguration .Discovery .BootstrapToken != nil ):
157166 token := config .Spec .JoinConfiguration .Discovery .BootstrapToken .Token
158167
159- // TODO replace with remote.NewClusterClient once it returns a client.Client
160- remoteClient , err := r .remoteClient (r .Client , cluster )
168+ remoteClient , err := r .remoteClient (r .Client , cluster , r .scheme )
161169 if err != nil {
162170 log .Error (err , "error creating remote cluster client" )
163171 return ctrl.Result {}, err
@@ -493,8 +501,7 @@ func (r *KubeadmConfigReconciler) reconcileDiscovery(cluster *clusterv1.Cluster,
493501
494502 // if BootstrapToken already contains a token, respect it; otherwise create a new bootstrap token for the node to join
495503 if config .Spec .JoinConfiguration .Discovery .BootstrapToken .Token == "" {
496- // TODO replace with remote.NewClusterClient once it returns a client.Client
497- remoteClient , err := r .remoteClient (r .Client , cluster )
504+ remoteClient , err := r .remoteClient (r .Client , cluster , r .scheme )
498505 if err != nil {
499506 return err
500507 }
@@ -562,23 +569,3 @@ func (r *KubeadmConfigReconciler) reconcileTopLevelObjectSettings(cluster *clust
562569 log .Info ("Altering ClusterConfiguration" , "KubernetesVersion" , config .Spec .ClusterConfiguration .KubernetesVersion )
563570 }
564571}
565-
566- // TODO remove this when remote.NewClusterClient returns a client.Client
567- func defaultRemoteClient (c client.Client , cluster * clusterv1.Cluster ) (client.Client , error ) {
568- kubeConfig , err := kubeconfig .FromSecret (c , cluster )
569- if err != nil {
570- return nil , errors .Wrapf (err , "failed to retrieve kubeconfig secret for Cluster %s/%s" , cluster .Namespace , cluster .Name )
571- }
572-
573- restConfig , err := clientcmd .RESTConfigFromKubeConfig (kubeConfig )
574- if err != nil {
575- return nil , errors .Wrapf (err , "failed to create client configuration for Cluster %s/%s" , cluster .Namespace , cluster .Name )
576- }
577-
578- ret , err := client .New (restConfig , client.Options {})
579- if err != nil {
580- return nil , errors .Wrapf (err , "failed to create client for Cluster %s/%s" , cluster .Namespace , cluster .Name )
581- }
582-
583- return ret , nil
584- }
0 commit comments