Backport DNSRR routing to v2.9 #3

Merged
rv merged 6 commits from rv/traefik:v2.9 into v2.9 2023-02-03 17:35:29 +00:00
2 changed files with 33 additions and 1 deletions

17
.drone.yml Normal file
View File

@@ -0,0 +1,17 @@
kind: pipeline
name: default
steps:
- name: docker
image: plugins/docker
settings:
dockerfile: exp.Dockerfile
registry: https://git.ivasoft.cz
username:
from_secret: repo_user
password:
from_secret: repo_pass
repo: git.ivasoft.cz/sw/traefik
tags:
- latest
- ${DRONE_TAG:-latest}

View File

@@ -507,7 +507,22 @@ 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 _, net := range service.Spec.TaskTemplate.Networks {
networkService := networkMap[net.Target]
if networkService != nil {
network := &networkData{
Name: networkService.Name,
ID: net.Target,
Addr: "tasks." + service.Spec.Name,
}
dData.NetworkSettings.Networks[network.Name] = network
} else {
logger.Debugf("Network not found, id: %s", net.Target)
}
}
} else {
// Each service task IP will get extracted later on in parseTasks
}
} else if service.Spec.EndpointSpec.Mode == swarmtypes.ResolutionModeVIP {
dData.NetworkSettings.Networks = make(map[string]*networkData)