In DNSRR there is no Endpoint.VirtualIPs - use Spec.TaskTemplate.Networks

This commit is contained in:
2023-02-03 00:11:24 +01:00
parent c757750ff3
commit 1c0b30963b

View File

@@ -510,17 +510,17 @@ func (p *Provider) parseService(ctx context.Context, service swarmtypes.Service,
if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeDNSRR { if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeDNSRR {
if dData.ExtraConf.Docker.LBSwarm { if dData.ExtraConf.Docker.LBSwarm {
dData.NetworkSettings.Networks = make(map[string]*networkData) dData.NetworkSettings.Networks = make(map[string]*networkData)
for _, virtualIP := range service.Endpoint.VirtualIPs { for _, net := range service.Spec.TaskTemplate.Networks {
networkService := networkMap[virtualIP.NetworkID] networkService := networkMap[net.Target]
if networkService != nil { if networkService != nil {
network := &networkData{ network := &networkData{
Name: networkService.Name, Name: networkService.Name,
ID: virtualIP.NetworkID, ID: net.Target,
Addr: "tasks." + service.Spec.Name, Addr: "tasks." + service.Spec.Name,
} }
dData.NetworkSettings.Networks[network.Name] = network dData.NetworkSettings.Networks[network.Name] = network
} else { } else {
logger.Debug().Msgf("Network not found, id: %s", virtualIP.NetworkID) logger.Debug().Msgf("Network not found, id: %s", net.Target)
} }
} }
} else { } else {