@@ -24,16 +24,19 @@ import (
24
24
"google.golang.org/grpc/codes"
25
25
"google.golang.org/grpc/status"
26
26
corev1 "k8s.io/api/core/v1"
27
+ v1 "k8s.io/api/core/v1"
27
28
apierrors "k8s.io/apimachinery/pkg/api/errors"
28
29
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
29
30
"k8s.io/apimachinery/pkg/labels"
30
31
"k8s.io/apimachinery/pkg/runtime"
31
32
"k8s.io/apimachinery/pkg/selection"
33
+ "k8s.io/apimachinery/pkg/types"
32
34
kerrors "k8s.io/apimachinery/pkg/util/errors"
33
35
"k8s.io/apiserver/pkg/storage/names"
34
36
"k8s.io/utils/pointer"
35
37
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
36
38
"sigs.k8s.io/cluster-api/controllers/external"
39
+ "sigs.k8s.io/cluster-api/controllers/remote"
37
40
"sigs.k8s.io/cluster-api/util"
38
41
"sigs.k8s.io/cluster-api/util/annotations"
39
42
"sigs.k8s.io/cluster-api/util/conditions"
@@ -66,6 +69,7 @@ type TalosControlPlaneReconciler struct {
66
69
APIReader client.Reader
67
70
Log logr.Logger
68
71
Scheme * runtime.Scheme
72
+ Tracker * remote.ClusterCacheTracker
69
73
}
70
74
71
75
func (r * TalosControlPlaneReconciler ) SetupWithManager (mgr ctrl.Manager , options controller.Options ) error {
@@ -309,19 +313,21 @@ func (r *TalosControlPlaneReconciler) scaleDownControlPlane(ctx context.Context,
309
313
310
314
r .Log .Info ("Found control plane machines" , "machines" , len (machines ))
311
315
312
- kubeclient , err := r .kubeconfigForCluster (ctx , cluster )
316
+ client , err := r .Tracker . GetClient (ctx , cluster )
313
317
if err != nil {
314
318
return ctrl.Result {RequeueAfter : 20 * time .Second }, err
315
319
}
316
320
317
- defer kubeclient .Close () //nolint:errcheck
318
-
319
321
deleteMachine := machines [0 ]
320
322
for _ , machine := range machines {
321
323
if ! machine .ObjectMeta .DeletionTimestamp .IsZero () {
322
324
r .Log .Info ("machine is in process of deletion" , "machine" , machine .Name )
323
325
324
- node , err := kubeclient .CoreV1 ().Nodes ().Get (ctx , machine .Status .NodeRef .Name , metav1.GetOptions {})
326
+ var node v1.Node
327
+
328
+ name := types.NamespacedName {Name : machine .Status .NodeRef .Name , Namespace : machine .Status .NodeRef .Namespace }
329
+
330
+ err := client .Get (ctx , name , & node )
325
331
if err != nil {
326
332
// It's possible for the node to already be deleted in the workload cluster, so we just
327
333
// requeue if that's that case instead of throwing a scary error.
@@ -333,7 +339,7 @@ func (r *TalosControlPlaneReconciler) scaleDownControlPlane(ctx context.Context,
333
339
334
340
r .Log .Info ("Deleting node" , "machine" , machine .Name , "node" , node .Name )
335
341
336
- err = kubeclient . CoreV1 (). Nodes (). Delete (ctx , node . Name , metav1. DeleteOptions {} )
342
+ err = client . Delete (ctx , & node )
337
343
if err != nil {
338
344
return ctrl.Result {RequeueAfter : 20 * time .Second }, err
339
345
}
@@ -408,7 +414,11 @@ func (r *TalosControlPlaneReconciler) scaleDownControlPlane(ctx context.Context,
408
414
409
415
r .Log .Info ("deleting node" , "machine" , deleteMachine .Name , "node" , node .Name )
410
416
411
- err = kubeclient .CoreV1 ().Nodes ().Delete (ctx , node .Name , metav1.DeleteOptions {})
417
+ n := & v1.Node {}
418
+ n .Name = node .Name
419
+ n .Namespace = node .Namespace
420
+
421
+ err = client .Delete (ctx , n )
412
422
if err != nil {
413
423
return ctrl.Result {RequeueAfter : 20 * time .Second }, err
414
424
}
@@ -657,23 +667,23 @@ func (r *TalosControlPlaneReconciler) updateStatus(ctx context.Context, tcp *con
657
667
return nil
658
668
}
659
669
660
- kubeclient , err := r .kubeconfigForCluster (ctx , util .ObjectKey (cluster ))
670
+ c , err := r .Tracker . GetClient (ctx , util .ObjectKey (cluster ))
661
671
if err != nil {
662
672
r .Log .Info ("failed to get kubeconfig for the cluster" , "error" , err )
663
673
664
674
return nil
665
675
}
666
676
667
- defer kubeclient .Close () //nolint:errcheck
668
-
669
677
nodeSelector := labels .NewSelector ()
670
678
req , err := labels .NewRequirement (constants .LabelNodeRoleMaster , selection .Exists , []string {})
671
679
if err != nil {
672
680
return err
673
681
}
674
682
675
- nodes , err := kubeclient .CoreV1 ().Nodes ().List (ctx , metav1.ListOptions {
676
- LabelSelector : nodeSelector .Add (* req ).String (),
683
+ var nodes v1.NodeList
684
+
685
+ err = c .List (ctx , & nodes , & client.ListOptions {
686
+ LabelSelector : nodeSelector .Add (* req ),
677
687
})
678
688
679
689
if err != nil {
0 commit comments