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
}