Fixed swarm network mapping and default docker network type to swarm (overlay)

This commit is contained in:
frikky
2022-01-02 00:37:50 +01:00
parent b17e10886e
commit 1b0d517fec
3 changed files with 44 additions and 6 deletions
+5 -3
View File
@@ -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
+34 -3
View File
@@ -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,
)
}
}
}
+5
View File
@@ -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{