diff --git a/docker-compose.yml b/docker-compose.yml index a7bd17b2..f1c7ff7c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -59,9 +59,9 @@ services: - HTTPS_PROXY=${HTTPS_PROXY} - SHUFFLE_PASS_WORKER_PROXY=${SHUFFLE_PASS_WORKER_PROXY} - SHUFFLE_PASS_APP_PROXY=${SHUFFLE_PASS_APP_PROXY} + - SHUFFLE_SWARM_NETWORK_NAME=shuffle_swarm_executions - SHUFFLE_SCALE_REPLICAS=1 - - SHUFFLE_SWARM_CONFIG=runn - - SHUFFLE_SWARM_NETWORK_NAME=shuffle-executions + - SHUFFLE_SWARM_CONFIG=run restart: unless-stopped opensearch: image: opensearchproject/opensearch:1.2.3 @@ -93,4 +93,6 @@ services: restart: unless-stopped networks: shuffle: - driver: bridge + driver: overlay + +#driver: bridge diff --git a/functions/onprem/orborus/orborus.go b/functions/onprem/orborus/orborus.go index 3c9da79b..84c5fff8 100644 --- a/functions/onprem/orborus/orborus.go +++ b/functions/onprem/orborus/orborus.go @@ -199,7 +199,8 @@ func deployServiceWorkers(image string) { //docker network create --driver=overlay workers networkCreateOptions := types.NetworkCreate{ - Driver: "overlay", + Driver: "overlay", + Attachable: true, } _, err := dockercli.NetworkCreate( ctx, @@ -209,21 +210,27 @@ func deployServiceWorkers(image string) { if err != nil { if strings.Contains(fmt.Sprintf("%s", err), "already exists") { + // Try patching for attachable } else { log.Printf("[DEBUG] Failed to create network %s for workers: %s. This is not critical, and containers will still be added", networkName, err) } } - //containerId = strings.TrimSpace(string(out)) + defaultNetworkAttach := false if containerId != "" { - log.Printf("\n\nShould connect orborus container to worker network as it's running in Docker with name %#v!\n\n", containerId) + log.Printf("[WARNING] Should connect orborus container to worker network as it's running in Docker with name %#v!", containerId) // https://pkg.go.dev/github.com/docker/docker@v20.10.12+incompatible/api/types/network#EndpointSettings networkConfig := &network.EndpointSettings{} err := dockercli.NetworkConnect(ctx, networkName, containerId, networkConfig) if err != nil { log.Printf("[WARNING] Failed connecting to Orborus to docker network %s: %s", networkName, err) } + + if len(containerId) == 64 && baseUrl == "http://shuffle-backend:5001" { + log.Printf("[WARNING] Network MAY not work due to backend being %s and container length 64. Will try to attach shuffle_shuffle network", baseUrl) + defaultNetworkAttach = true + } } //serviceOptions := types.ServiceCreateOptions{} @@ -329,6 +336,15 @@ func deployServiceWorkers(image string) { }, } + if defaultNetworkAttach == true { + serviceSpec.Networks = append(serviceSpec.Networks, swarm.NetworkAttachmentConfig{ + Target: "shuffle_shuffle", + }) + + // FIXM: Remove this if deployment fails? + serviceSpec.TaskTemplate.ContainerSpec.Env = append(serviceSpec.TaskTemplate.ContainerSpec.Env, fmt.Sprintf("SHUFFLE_SWARM_OTHER_NETWORK=shuffle_shuffle")) + } + if dockerApiVersion != "" { serviceSpec.TaskTemplate.ContainerSpec.Env = append(serviceSpec.TaskTemplate.ContainerSpec.Env, fmt.Sprintf("DOCKER_API_VERSION=%s", dockerApiVersion)) } @@ -351,6 +367,21 @@ func deployServiceWorkers(image string) { } else { if !strings.Contains(fmt.Sprintf("%s", err), "Already Exists") && !strings.Contains(fmt.Sprintf("%s", err), "is already in use by service") { log.Printf("[ERROR] Failed making service: %s", err) + } else { + log.Printf("[WARNING] Failed deploying workers: %s", err) + if len(serviceSpec.Networks) > 1 { + serviceSpec.Networks = []swarm.NetworkAttachmentConfig{ + swarm.NetworkAttachmentConfig{ + Target: "shuffle_shuffle", + }, + } + + _, _ = dockercli.ServiceCreate( + ctx, + serviceSpec, + serviceOptions, + ) + } } } diff --git a/functions/onprem/worker/worker.go b/functions/onprem/worker/worker.go index 906e35be..e1ac3b8a 100644 --- a/functions/onprem/worker/worker.go +++ b/functions/onprem/worker/worker.go @@ -2542,6 +2542,11 @@ func deploySwarmService(dockercli *dockerclient.Client, name, image string, depl }, } + if len(os.Getenv("SHUFFLE_SWARM_OTHER_NETWORK")) > 0 { + serviceSpec.Networks = append(serviceSpec.Networks, swarm.NetworkAttachmentConfig{ + Target: "shuffle_shuffle", + }) + } /* Mounts: []mount.Mount{ mount.Mount{