func NewControllers()

in pkg/controllers/controllers.go [64:108]


func NewControllers(
	ctx context.Context,
	mgr manager.Manager,
	cfg aws.Config,
	clk clock.Clock,
	ec2api sdk.EC2API,
	kubeClient client.Client,
	recorder events.Recorder,
	unavailableOfferings *awscache.UnavailableOfferings,
	ssmCache *cache.Cache,
	validationCache *cache.Cache,
	cloudProvider cloudprovider.CloudProvider,
	subnetProvider subnet.Provider,
	securityGroupProvider securitygroup.Provider,
	instanceProfileProvider instanceprofile.Provider,
	instanceProvider instance.Provider,
	pricingProvider pricing.Provider,
	amiProvider amifamily.Provider,
	launchTemplateProvider launchtemplate.Provider,
	versionProvider *version.DefaultProvider,
	instanceTypeProvider *instancetype.DefaultProvider,
	capacityReservationProvider capacityreservationprovider.Provider,
	amiResolver amifamily.Resolver,
) []controller.Controller {
	controllers := []controller.Controller{
		nodeclasshash.NewController(kubeClient),
		nodeclass.NewController(clk, kubeClient, cloudProvider, recorder, cfg.Region, subnetProvider, securityGroupProvider, amiProvider, instanceProfileProvider, instanceTypeProvider, launchTemplateProvider, capacityReservationProvider, ec2api, validationCache, amiResolver),
		nodeclaimgarbagecollection.NewController(kubeClient, cloudProvider),
		nodeclaimtagging.NewController(kubeClient, cloudProvider, instanceProvider),
		controllerspricing.NewController(pricingProvider),
		controllersinstancetype.NewController(instanceTypeProvider),
		controllersinstancetypecapacity.NewController(kubeClient, cloudProvider, instanceTypeProvider),
		ssminvalidation.NewController(ssmCache, amiProvider),
		status.NewController[*v1.EC2NodeClass](kubeClient, mgr.GetEventRecorderFor("karpenter"), status.EmitDeprecatedMetrics),
		controllersversion.NewController(versionProvider, versionProvider.UpdateVersionWithValidation),
		capacityreservation.NewController(kubeClient, cloudProvider),
		metrics.NewController(kubeClient, cloudProvider),
	}
	if options.FromContext(ctx).InterruptionQueue != "" {
		sqsAPI := servicesqs.NewFromConfig(cfg)
		prov, _ := sqs.NewSQSProvider(ctx, sqsAPI)
		controllers = append(controllers, interruption.NewController(kubeClient, cloudProvider, clk, recorder, prov, sqsAPI, unavailableOfferings))
	}
	return controllers
}