in cmd/controller/main.go [30:84]
func main() {
ctx, op := operator.NewOperator(coreoperator.NewOperator())
awsCloudProvider := cloudprovider.New(
op.InstanceTypesProvider,
op.InstanceProvider,
op.EventRecorder,
op.GetClient(),
op.AMIProvider,
op.SecurityGroupProvider,
op.CapacityReservationProvider,
)
cloudProvider := metrics.Decorate(awsCloudProvider)
clusterState := state.NewCluster(op.Clock, op.GetClient(), cloudProvider)
if karpoptions.FromContext(ctx).FeatureGates.ReservedCapacity {
v1.CapacityReservationsEnabled = true
}
op.
WithControllers(ctx, corecontrollers.NewControllers(
ctx,
op.Manager,
op.Clock,
op.GetClient(),
op.EventRecorder,
cloudProvider,
clusterState,
)...).
WithControllers(ctx, controllers.NewControllers(
ctx,
op.Manager,
op.Config,
op.Clock,
op.EC2API,
op.GetClient(),
op.EventRecorder,
op.UnavailableOfferingsCache,
op.SSMCache,
op.ValidationCache,
cloudProvider,
op.SubnetProvider,
op.SecurityGroupProvider,
op.InstanceProfileProvider,
op.InstanceProvider,
op.PricingProvider,
op.AMIProvider,
op.LaunchTemplateProvider,
op.VersionProvider,
op.InstanceTypesProvider,
op.CapacityReservationProvider,
op.AMIResolver,
)...).
Start(ctx)
}