in pkg/controller/ingress/reconcile/applier/server.go [49:101]
func (s *serverApplier) Apply(ctx context.Context) error {
traceID := ctx.Value(util.TraceID)
servers, err := s.albProvider.ListALBServers(ctx, s.serverGroupID)
if err != nil {
return err
}
s.logger.V(util.SynLogLevel).Info("apply servers",
"endpoints", s.endpoints,
"traceID", traceID)
// todo matched endpoints need check and update weight
_, unmatchedResEndpoints, unmatchedSDKEndpoints := matchEndpointWithTargets(s.endpoints, servers, s.trafficPolicy)
if len(unmatchedResEndpoints) != 0 {
s.logger.V(util.SynLogLevel).Info("apply servers",
"unmatchedResEndpoints", unmatchedResEndpoints,
"traceID", traceID)
}
if len(unmatchedSDKEndpoints) != 0 {
s.logger.V(util.SynLogLevel).Info("apply servers",
"unmatchedSDKEndpoints", unmatchedSDKEndpoints,
"traceID", traceID)
}
if len(unmatchedResEndpoints) == 0 && len(unmatchedSDKEndpoints) == 0 {
return nil
}
// If the number of servers to be added and deleted is less than 40, please call the replacement method, and the others are called separately
if len(unmatchedResEndpoints) != 0 && len(unmatchedResEndpoints) < util.BatchReplaceServersMaxNum &&
len(unmatchedSDKEndpoints) != 0 && len(unmatchedSDKEndpoints) < util.BatchReplaceServersMaxNum {
if err := s.albProvider.ReplaceALBServers(ctx, s.serverGroupID, unmatchedResEndpoints, unmatchedSDKEndpoints); err != nil {
return err
}
// TODO print err
updateTargetHealthPodCondition(ctx, s.kubeClient, k8s.BuildReadinessGatePodConditionType(), s.endpoints)
return nil
}
if len(unmatchedSDKEndpoints) != 0 {
if err := s.albProvider.DeregisterALBServers(ctx, s.serverGroupID, unmatchedSDKEndpoints); err != nil {
return err
}
}
if len(unmatchedResEndpoints) != 0 {
if err := s.albProvider.RegisterALBServers(ctx, s.serverGroupID, unmatchedResEndpoints); err != nil {
return err
}
updateTargetHealthPodCondition(ctx, s.kubeClient, k8s.BuildReadinessGatePodConditionType(), s.endpoints)
}
return nil
}