in pkg/csi/controller.go [98:146]
func NewManager(cfg *rest.Config, namespace, volumeTypeConfigMap string, attach Attacher, pdStorageClass string) (ctrl.Manager, error) {
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
Scheme: scheme.Scheme,
Cache: cache.Options{
DefaultNamespaces: map[string]cache.Config{
namespace: {},
},
},
})
if err != nil {
return nil, fmt.Errorf("unable to create manager: %w", err)
}
k8sClient, err := kubernetes.NewForConfig(cfg)
if err != nil {
return nil, fmt.Errorf("unable to create k8s client: %w", err)
}
rec := &reconciler{
Client: mgr.GetClient(),
k8sClient: k8sClient,
Scheme: mgr.GetScheme(),
namespace: namespace,
volumeTypeConfigMap: volumeTypeConfigMap,
pdStorageClass: pdStorageClass,
attacher: attach,
}
if err := ctrl.NewControllerManagedBy(mgr).
Named("node").
Watches(&corev1.Node{}, &handler.EnqueueRequestForObject{}).
Complete(rec); err != nil {
return nil, err
}
if rec.attacher != nil {
if err := ctrl.NewControllerManagedBy(mgr).
Named("pvc").
Watches(&corev1.PersistentVolumeClaim{}, &handler.EnqueueRequestForObject{}).
Complete(&pvcReconciler{rec}); err != nil {
return nil, err
}
}
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
return nil, fmt.Errorf("Unable to set up health check: %w", err)
}
if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
return nil, fmt.Errorf("Unable to set up ready check: %w", err)
}
return mgr, nil
}