5
5
"fmt"
6
6
7
7
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
8
+ "k8s.io/client-go/kubernetes"
8
9
clientset "k8s.io/client-go/kubernetes"
9
10
cloudprovider "k8s.io/cloud-provider"
10
11
"k8s.io/cloud-provider/app"
@@ -29,16 +30,22 @@ func StartCloudNodeLifecycleControllerWrapper(initContext app.ControllerInitCont
29
30
30
31
//nolint:gocritic // need to follow upstream function signature
31
32
func startCloudNodeLifecycleController (ctx context.Context ,
32
- initContext app.ControllerInitContext ,
33
+ _ app.ControllerInitContext ,
33
34
controlexContext controllermanagerapp.ControllerContext ,
34
35
completedConfig * config.CompletedConfig ,
35
36
cloud cloudprovider.Interface ,
36
37
) (controller.Interface , bool , error ) {
38
+ // Use CCM's kubeconfig to create a clientset for the custom node lifecycle controller because we need permissions
39
+ // to list and delete VolumeAttachments
40
+ ccmClientSet , err := kubernetes .NewForConfig (completedConfig .Kubeconfig )
41
+ if err != nil {
42
+ return nil , false , err
43
+ }
44
+
37
45
// Start the cloudNodeLifecycleController
38
46
cloudNodeLifecycleController , err := NewCloudNodeLifecycleController (
39
47
completedConfig .SharedInformers .Core ().V1 ().Nodes (),
40
- // cloud node lifecycle controller uses existing cluster role from node-controller
41
- completedConfig .ClientBuilder .ClientOrDie (initContext .ClientName ),
48
+ ccmClientSet ,
42
49
cloud ,
43
50
completedConfig .ComponentConfig .KubeCloudShared .NodeMonitorPeriod .Duration ,
44
51
)
0 commit comments