Provider for Traefik to use Apache Mesos


Traefik ist ein HTTP, TCP und UDP Reverse Proxy und LoadBalancer für Microservice Umgebungen. Offiziel Unterstützt Traefik 2.x kein Apache Mesos sondern lediglich Marathon. Um auch für die Zukunft einen guten und flexiblen LoadBalancer zu betreiben, welcher nicht nur für bestimmte Mesos Framework funktioniert, haben wir einen entsprechenden Provider entwickelt.

Wie benutzt man das Docker Image?

Die Nutzung unseres Traefik Docker Images ist relativ einfach. Der Unterschied zum Original liegt lediglich darin, dass hier das Verzeichnis in der die traefik.toml Datei liegt, als Volume übergeben wird. Dies hat zum Vorteil, dass (sofern ACME SSL Provider verwendet werden) ACME State Files ebenfalls persistent abgelegt werden.

docker run -p 80:80 -p 443:433 -p 9000:9000 -v <config_toml_directory>:/data:rw avhost/traefik_mesos:<version>

Wie fügt man Mesos in die Traefik Konfiguration hinzu?

Um Apache Mesos als Provider zu nutzen, muß die nachfolgende Konfiguration angepasst und übernommen werden.

[providers.mesos]
endpoint = "<your_mesos_master>"
principal = "<mesos_usernname>"
secret = "<mesos_password>"
SSL = false

Wie werden Traefik routes und services in Mesos verwendet?

Damit Traefik die Services kennt, zu denen entsprechende Routen erzeugt werden sollen, müssen diese in Form von Labels an den jeweiligen Mesos Tasks (oder Marathon Apps) hinzugefügt werden.

Zum Beispiel:

    "traefik.enable": "true",
    "traefik.http.routers.homepage-ssl.tls": "true",
    "traefik.http.routers.homepage.entrypoints": "web",

    "traefik.http.middlewares.homepage.redirectscheme.scheme": "https",

    # The service object with the name "homepage-web" and "homepage-web-ssl" will be generated from the name of the Mesos Task (or Marathon) PortMapping object.
    "traefik.http.routers.homepage-ssl.service": "homepage-web",
    "traefik.http.routers.homepage.service": "homepage-web",

    "traefik.http.routers.homepage.rule": "Host(`your.example.com`)",
    "traefik.http.routers.homepage-ssl.rule": "Host(`your.example.com`)",
    "traefik.http.routers.homepage-ssl.tls.certresolver": "sslcert",
    "traefik.http.routers.homepage-ssl.entrypoints": "websecure"

Anschließend werden die Services und Router entsprechend in der Traefik Umgebung sichtbar.

Changelog

v2.6.1-2022-03-09