From dfb69146f530e33f81fdcdac979045dc45cd1843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Van=C3=AD=C4=8Dek?= Date: Thu, 26 Jan 2023 09:40:23 +0100 Subject: [PATCH] Use DDNS for swarm load balancing (cherry picked from commit d1899ff25030c348d96fbe5a3a721be7e99ad3fc) # Conflicts: # pkg/provider/docker/docker.go --- pkg/provider/docker/docker.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/pkg/provider/docker/docker.go b/pkg/provider/docker/docker.go index 0516620ce..938c6466f 100644 --- a/pkg/provider/docker/docker.go +++ b/pkg/provider/docker/docker.go @@ -507,7 +507,20 @@ func (p *Provider) parseService(ctx context.Context, service swarmtypes.Service, if service.Spec.EndpointSpec != nil { if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeDNSRR { if dData.ExtraConf.Docker.LBSwarm { - logger.Warnf("Ignored %s endpoint-mode not supported, service name: %s. Fallback to Traefik load balancing", swarmtypes.ResolutionModeDNSRR, service.Spec.Annotations.Name) + dData.NetworkSettings.Networks = make(map[string]*networkData) + for _, virtualIP := range service.Endpoint.VirtualIPs { + networkService := networkMap[virtualIP.NetworkID] + if networkService != nil { + network := &networkData{ + Name: networkService.Name, + ID: virtualIP.NetworkID, + Addr: "tasks." + service.Spec.Name, + } + dData.NetworkSettings.Networks[network.Name] = network + } else { + logger.Debug().Msgf("Network not found, id: %s", virtualIP.NetworkID) + } + } } } else if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeVIP { dData.NetworkSettings.Networks = make(map[string]*networkData)