Mesos-Compose Framework für Apache Mesos


Mit Mesos-Compose entwickeln wir eine Alternative zu Mesosphere Marathon. Hierbei ist das Ziel, docker-compose files in MesosTasks zu übersetzten.

Ziel ist es die Arbeitsweise mit Mesos näher an den Workflow der Entwickler anzupassen. Es ist unstrittig, dass der Großteil der Entwickler im Microservice Umfeld sich mit der docker-compose Syntax auskennen und den Workload ggfs in einer lokalen Docker Umgebung testen. Die gleiche docker-compose.yaml kann via curl (in Zukunft via eigenständige CLI) an mesos-compose geschickt werden. Das Framework scheduled daraufhin die entsprechenden Container in Apache Mesos.

Als Docker-Compose Syntax nutzen wir die Aktuelle Version 3.9. Dabei sind bislang folgende Parameter umgesetzt:

version: '3.9'

services:
  app:
    image: alpine:latest
    command: ["sleep", "1000"]
    restart: always
    volumes:
      - "12345test:/tmp"
    environment:
      - MYSQL_HOST=test
    labels:
      biz.aventer.mesos_compose.container_type: "DOCKER"
      biz.aventer.mesos_compose.contraint_hostname: "worker-1"
      traefik.enable: "true"
      traefik.http.routers.test.entrypoints: "web"
      traefik.http.routers.test.service: "mc_test_app_80"
      traefik.http.routers.test.rule: "HostRegexp(`example.com`, `{subdomain:[a-z]+}.example.com`)"
    network_mode: "BRIDGE"
    ports:
      - "8080:80"
      - "9090"
      - "8081:81/tcp"
      - "8082:82/udp"
    network:
      - default
    deploy:
      resources:
        limits:
          cpus: "0.01"
          memory: "50"

networks:
  default:
    external: true
    name: weave

volumes:
  12345test:
    driver: local

Die Docker Labels nutzen wir sowohl für die Konfiguration von traefik (falls vorhanden), aber auch des mesos-compose Frameworks.