diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 000000000..6b3db3050 --- /dev/null +++ b/.drone.yml @@ -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} \ No newline at end of file diff --git a/pkg/provider/docker/docker.go b/pkg/provider/docker/docker.go index 0516620ce..8dc277b4c 100644 --- a/pkg/provider/docker/docker.go +++ b/pkg/provider/docker/docker.go @@ -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)