Commit f4dd2b3c authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Merge branch 'dev' into 'master'

Elimina ruta /metrics de Traefik, añade red metric

See merge request redmic-project/mqtt/vernemq!1
parents 45d13a90 3161313b
Loading
Loading
Loading
Loading

.gitlab-ci.yml

0 → 100644
+94 −0
Original line number Diff line number Diff line
stages:
  - deploy

image: registry.gitlab.com/redmic-project/docker/docker-deploy:latest

variables:
  DOCKER_DRIVER: overlay2
  STACK: mqtt
  SERVICES_TO_CHECK: mqtt_${CI_PROJECT_NAME} mqtt_vmq-redis
  STATUS_CHECK_DELAY: 60
  IMAGE_TAG: ${VERNEMQ_IMAGE_TAG:-latest}

services:
  - docker:dind

deploy-supporting-branch-develop:
  stage: deploy
  variables:
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    PUBLIC_HOSTNAME: ${DEV_PUBLIC_HOSTNAME}
    DOCKER_VERNEMQ_ALLOW_ANONYMOUS: ${DEV_DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
    DOCKER_VERNEMQ_DISTRIBUTED_COOKIE: ${DEV_DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  script:
    - >
      deploy.sh IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS=${DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
      DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=${DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  environment:
    name: dev
  only:
    - branches
  except:
    - master
  when: manual

deploy-stable-branch-develop:
  stage: deploy
  variables:
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    PUBLIC_HOSTNAME: ${DEV_PUBLIC_HOSTNAME}
    DOCKER_VERNEMQ_ALLOW_ANONYMOUS: ${DEV_DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
    DOCKER_VERNEMQ_DISTRIBUTED_COOKIE: ${DEV_DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  script:
    - >
      deploy.sh IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS=${DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
      DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=${DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  environment:
    name: dev
  only:
    - master
  when: manual

deploy-supporting-branch-production:
  stage: deploy
  variables:
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    PUBLIC_HOSTNAME: ${PRO_PUBLIC_HOSTNAME}
    DOCKER_VERNEMQ_ALLOW_ANONYMOUS: ${PRO_DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
    DOCKER_VERNEMQ_DISTRIBUTED_COOKIE: ${PRO_DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  script:
    - >
      deploy.sh IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS=${DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
      DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=${DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  environment:
    name: pro
  only:
    - branches
  except:
    - master
  when: manual

deploy-stable-branch-production:
  stage: deploy
  variables:
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    PUBLIC_HOSTNAME: ${PRO_PUBLIC_HOSTNAME}
    DOCKER_VERNEMQ_ALLOW_ANONYMOUS: ${PRO_DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
    DOCKER_VERNEMQ_DISTRIBUTED_COOKIE: ${PRO_DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  script:
    - >
      deploy.sh IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE} PUBLIC_HOSTNAME=${PUBLIC_HOSTNAME}
      DOCKER_VERNEMQ_ALLOW_ANONYMOUS=${DOCKER_VERNEMQ_ALLOW_ANONYMOUS}
      DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=${DOCKER_VERNEMQ_DISTRIBUTED_COOKIE}
  environment:
    name: pro
  only:
    - master
  when: manual

deploy/.env

0 → 100644
+11 −0
Original line number Diff line number Diff line
SUBDOMAIN=mqtt
DOCKER_VERNEMQ_ALLOW_ANONYMOUS=off
DOCKER_VERNEMQ_LISTENER__HTTP__DEFAULT=127.0.0.1:8889
DOCKER_IP_ADDRESS=0.0.0.0
DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=changeme
DOCKER_VERNEMQ_PLUGINS__VMQ_PASSWD=off
DOCKER_VERNEMQ_PLUGINS__VMQ_ACL=off
DOCKER_VERNEMQ_PLUGINS__VMQ_DIVERSITY=on
DOCKER_VERNEMQ_VMQ_DIVERSITY__AUTH_REDIS__ENABLED=on
DOCKER_VERNEMQ_VMQ_DIVERSITY__REDIS__HOST=vmq-redis
DOCKER_VERNEMQ_VMQ_DIVERSITY__REDIS__PORT=6379
+5 −0
Original line number Diff line number Diff line
version: '3.5'

volumes:
  redis-data-vol:
    name: ${REDIS_DATA_VOL_NAME:-vernemq-redis-data-vol}
+17 −0
Original line number Diff line number Diff line
version: '3.5'

services:
  vernemq:
    deploy:
      placement:
        constraints:
          - node.role == worker

volumes:
  redis-data-vol:
    name: ${REDIS_DATA_VOL_NAME:-vernemq-redis-data-vol}
    driver: 'cloudstor:aws'
    driver_opts:
      backing: relocatable
      size: 1
      ebstype: gp2
+93 −0
Original line number Diff line number Diff line
version: '3.5'

services:
  vernemq:
    image: erlio/docker-vernemq:${IMAGE_TAG:-latest}
    environment:
      - DOCKER_VERNEMQ_ALLOW_ANONYMOUS
      - DOCKER_VERNEMQ_LISTENER__HTTP__DEFAULT
      - DOCKER_IP_ADDRESS
      - DOCKER_VERNEMQ_DISTRIBUTED_COOKIE
      - DOCKER_VERNEMQ_PLUGINS__VMQ_PASSWD
      - DOCKER_VERNEMQ_PLUGINS__VMQ_ACL
      - DOCKER_VERNEMQ_PLUGINS__VMQ_DIVERSITY
      - DOCKER_VERNEMQ_VMQ_DIVERSITY__AUTH_REDIS__ENABLED
      - DOCKER_VERNEMQ_VMQ_DIVERSITY__REDIS__HOST
      - DOCKER_VERNEMQ_VMQ_DIVERSITY__REDIS__PORT
    networks:
      - vernemq-net
      - traefik-net
      - metric-net
    ports:
      - target: 1883
        published: 1883
        protocol: tcp
        mode: host
      - target: 8883
        published: 8883
        protocol: tcp
        mode: host
    volumes:
      - vernemq-data-vol:/vernemq/data
      - vernemq-etc-vol:/vernemq/etc
      - vernemq-log-vol:/vernemq/log
    deploy:
      mode: replicated
      replicas: 1
      labels:
        traefik.frontend.rule: Host:${SUBDOMAIN}.${PUBLIC_HOSTNAME}
        traefik.backend: vernemq
        traefik.port: '8080'
      restart_policy:
        delay: 10s
        window: 2m
      resources:
        limits:
          cpus: '1'
          memory: 256M
        reservations:
          memory: 205M

  vmq-redis:
    image: redis:${REDIS_IMAGE_TAG:-latest}
    command: redis-server --appendonly yes
    networks:
      - vernemq-net
    volumes:
      - redis-data-vol:/data
    deploy:
      mode: replicated
      replicas: 1
      restart_policy:
        delay: 10s
        window: 1m
      resources:
        limits:
          cpus: '0.1'
          memory: 64M
        reservations:
          memory: 32M

networks:
  vernemq-net:
    name: ${VERNEMQ_NET_NAME:-vernemq-net}
    driver: overlay
    attachable: ${VERNEMQ_NET_ATTACHABLE:-true}

  traefik-net:
    name: ${TRAEFIK_NET_NAME:-traefik-net}
    external: true

  metric-net:
    name: ${METRIC_NET_NAME:-metric-net}
    external: true

volumes:
  vernemq-data-vol:
    name: ${VERNEMQ_DATA_VOL_NAME:-vernemq-data-vol}

  vernemq-etc-vol:
    name: ${VERNEMQ_ETC_VOL_NAME:-vernemq-etc-vol}

  vernemq-log-vol:
    name: ${VERNEMQ_LOG_VOL_NAME:-vernemq-log-vol}