Skip to content
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,7 @@ repos:
always_run: true
language: script
files: '^(.*\/Makefile.*)|(.*\.deploy_everything_locally.bash)|(.*\/services/.*\/.*\.((sh)|(bash)))$'
require_serial: true
- id: helm-update-dependencies
name: Helm Dependency Update
description: Make sure all Chart.lock files are up-to-date
Expand Down
20 changes: 20 additions & 0 deletions services/rabbit/docker-compose.loadbalancer.yml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,23 @@ services:
reservations:
cpus: "0.1"
memory: "128M"
labels:
- traefik.enable=true
- traefik.swarm.network=${PUBLIC_NETWORK}
- traefik.http.services.rabbit_dashboard.loadbalancer.server.port=${RABBIT_MANAGEMENT_PORT}
- traefik.http.routers.rabbit_dashboard.rule=Host(`${MONITORING_DOMAIN}`) && PathPrefix(`/rabbit`)
- traefik.http.routers.rabbit_dashboard.entrypoints=https
- traefik.http.routers.rabbit_dashboard.tls=true
- traefik.http.middlewares.rabbit_dashboard_replace_regex.replacepathregex.regex=^/rabbit/(.*)$$
- traefik.http.middlewares.rabbit_dashboard_replace_regex.replacepathregex.replacement=/$${1}
- traefik.http.routers.rabbit_dashboard.middlewares=rabbit_dashboard_replace_regex@swarm, ops_gzip@swarm
{%- if RABBIT_EXPOSE_INTERNALLY|lower == "true" %}
- traefik.tcp.routers.rabbit.rule=ClientIP(`10.0.0.0/8`) || ClientIP(`172.16.0.0/12`) || ClientIP(`192.168.0.0/16`)
- traefik.tcp.routers.rabbit.entrypoints=rabbitmq
- traefik.tcp.routers.rabbit.tls=false
- traefik.tcp.routers.rabbit.service=rabbit
- traefik.tcp.services.rabbit.loadbalancer.server.port=${RABBIT_PORT}
{%- endif %}
healthcheck: # https://stackoverflow.com/a/76513320/12124525
test: bash -c 'echo "" > /dev/tcp/127.0.0.1/32087 || exit 1'
start_period: 5s
Expand All @@ -39,6 +56,9 @@ networks:
rabbit:
name: ${RABBIT_NETWORK}
external: true
public:
name: ${PUBLIC_NETWORK}
external: true

configs:
haproxy.cfg:
Expand Down
2 changes: 2 additions & 0 deletions services/rabbit/template.env
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
RABBIT_CLUSTER_NODE_COUNT=${RABBIT_CLUSTER_NODE_COUNT}
RABBIT_QUORUM_QUEUE_DEFAULT_REPLICA_COUNT=${RABBIT_QUORUM_QUEUE_DEFAULT_REPLICA_COUNT}
RABBIT_EXPOSE_INTERNALLY=${RABBIT_EXPOSE_INTERNALLY}

RABBIT_USER=${RABBIT_USER}
RABBIT_PASSWORD=${RABBIT_PASSWORD}
Expand All @@ -11,3 +12,4 @@ RABBIT_LB_REPLICAS=${RABBIT_LB_REPLICAS}
RABBIT_NETWORK=${RABBIT_NETWORK}

PUBLIC_NETWORK=${PUBLIC_NETWORK}
MONITORING_DOMAIN=${MONITORING_DOMAIN}
156 changes: 111 additions & 45 deletions services/simcore/docker-compose.deploy.master.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,122 @@
services:
autoscaling:
deploy:
replicas: 0
agent:
networks:
- rabbit
volumes:
- /docker/volumes/:/docker/volumes/

api-server:
networks:
- rabbit

api-worker:
networks:
- rabbit

autoscaling:
deploy:
replicas: 0

catalog:
networks:
- rabbit

clusters-keeper:
deploy:
replicas: 0

dask-scheduler:
networks:
- rabbit

dask-sidecar:
networks:
- rabbit
environment:
- SIDECAR_LOGLEVEL=INFO

director-v2:
networks:
- rabbit

dynamic-schdlr:
networks:
- rabbit

notifications:
networks:
- rabbit

payments:
networks:
- rabbit
deploy:
replicas: 1

postgres:
labels:
- "pgbackup.enable=true"
deploy:
placement:
constraints:
- node.labels.postgres==true
dask-sidecar:
environment:
- SIDECAR_LOGLEVEL=INFO

resource-usage-tracker:
networks:
- rabbit

sto-worker:
networks:
- rabbit

sto-worker-cpu-bound:
networks:
- rabbit

storage:
networks:
- rabbit

wb-api-server:
networks:
- rabbit
deploy:
replicas: 3

wb-db-event-listener:
networks:
- rabbit

wb-garbage-collector:
networks:
- rabbit

webserver:
networks:
- rabbit
deploy:
replicas: 3

redis:
networks:
- public
deploy:
labels:
- traefik.enable=true
- io.simcore.zone=${TRAEFIK_SIMCORE_ZONE}
- traefik.swarm.network=${SWARM_STACK_NAME}_default
- "traefik.tcp.routers.${SWARM_STACK_NAME}_redis.rule=ClientIP(`10.0.0.0/8`) || ClientIP(`172.16.0.0/12`) || ClientIP(`192.168.0.0/16`)"
- traefik.tcp.routers.${SWARM_STACK_NAME}_redis.entrypoints=redis
- traefik.tcp.routers.${SWARM_STACK_NAME}_redis.tls=false
- traefik.tcp.routers.${SWARM_STACK_NAME}_redis.service=${SWARM_STACK_NAME}_redis
- traefik.tcp.services.${SWARM_STACK_NAME}_redis.loadbalancer.server.port=${REDIS_PORT}

rabbit:
# rabbit is already exposed via ops traefik
# adding one more route to this configuration
deploy:
replicas: 0 # use standalone (cluster) rabbit stack

traefik:
command:
- "--api=true"
Expand Down Expand Up @@ -71,43 +173,7 @@ services:
- traefik.tcp.services.${SWARM_STACK_NAME}_redisRoute.loadbalancer.server.port=${REDIS_EXTERNAL_PORT}
- "traefik.tcp.routers.${SWARM_STACK_NAME}_redisRoute.rule=HostSNI(`*`)"

clusters-keeper:
deploy:
replicas: 0

payments:
deploy:
replicas: 1

webserver:
deploy:
replicas: 3

wb-api-server:
deploy:
replicas: 3

redis:
networks:
- public
deploy:
labels:
- traefik.enable=true
- io.simcore.zone=${TRAEFIK_SIMCORE_ZONE}
- traefik.swarm.network=${SWARM_STACK_NAME}_default
- "traefik.tcp.routers.${SWARM_STACK_NAME}_redis.rule=ClientIP(`10.0.0.0/8`) || ClientIP(`172.16.0.0/12`) || ClientIP(`192.168.0.0/16`)"
- traefik.tcp.routers.${SWARM_STACK_NAME}_redis.entrypoints=redis
- traefik.tcp.routers.${SWARM_STACK_NAME}_redis.tls=false
- traefik.tcp.routers.${SWARM_STACK_NAME}_redis.service=${SWARM_STACK_NAME}_redis
- traefik.tcp.services.${SWARM_STACK_NAME}_redis.loadbalancer.server.port=${REDIS_PORT}

networks:
rabbit:
# rabbit is already exposed via ops traefik
# adding one more route to this configuration
deploy:
labels:
- "traefik.tcp.routers.${SWARM_STACK_NAME}_rabbitmq.rule=ClientIP(`10.0.0.0/8`) || ClientIP(`172.16.0.0/12`) || ClientIP(`192.168.0.0/16`)"
- traefik.tcp.routers.${SWARM_STACK_NAME}_rabbitmq.entrypoints=rabbitmq
- traefik.tcp.routers.${SWARM_STACK_NAME}_rabbitmq.tls=false
- traefik.tcp.routers.${SWARM_STACK_NAME}_rabbitmq.service=${SWARM_STACK_NAME}_rabbitmq
- traefik.tcp.services.${SWARM_STACK_NAME}_rabbitmq.loadbalancer.server.port=${RABBIT_PORT}
name: ${RABBIT_NETWORK}
external: true
Loading