mirror of
https://github.com/sablierapp/sablier.git
synced 2026-01-02 19:17:33 +01:00
61 lines
2.1 KiB
Markdown
61 lines
2.1 KiB
Markdown
# Traefik Ondemand Plugin
|
|
|
|
Traefik plugin to scale down to zero containers on docker swarm.
|
|
|
|
## Description
|
|
|
|
A container may be a simple nginx server serving static pages, when no one is using it, it still consume CPU and memory.
|
|
|
|
With this plugin you can scale down to zero when there is no request for the service.
|
|
It will scale back to 1 when there is a user requesting the service.
|
|
|
|
## Configuration
|
|
|
|
- `serviceUrl` the traefik-ondemand-service url (e.g. http://ondemand:1000)
|
|
- `name` the service to sclae on demand name (docker service ls)
|
|
- *`timeout` (default: 60)* timeout in seconds for the service to be scaled down to zero after the last request
|
|
|
|
See `config.yml` and `docker-compose.yml` for full configuration.
|
|
|
|
## Demo
|
|
|
|
The service **whoami** is scaled to 0. We configured a **timeout of 10** seconds.
|
|
|
|

|
|
|
|
## Run the demo
|
|
|
|
- `docker swarm init`
|
|
- `export TRAEFIK_PILOT_TOKEN=your_traefik_pilot_token`
|
|
- `docker stack deploy -c docker-compose.yml TRAEFIK_HACKATHON`
|
|
|
|
## Limitations
|
|
|
|
### Cannot use service labels
|
|
|
|
You cannot set the labels for a service inside the service definition.
|
|
|
|
Otherwise when scaling to 0 the specification would not be found because there is no more task running. So you have to write it under the dynamic configuration file.
|
|
|
|
### The need of "traefik-ondemand-service"
|
|
|
|
We are running "traefik-ondemand-service" to interact freely with the docker deamon and manage an independant lifecycle from traefik.
|
|
|
|
*We may try to update this plugin to embed the scaling behavior in a future.*
|
|
|
|
-> The source is available at https://github.com/acouvreur/traefik-ondemand-service
|
|
|
|
## TODO
|
|
|
|
- [ ] Embed "traefik-ondemand-service" inside the plugin directly
|
|
- [ ] Scale **up** service (max replica, threshold)
|
|
- [ ] Scale down from N to 1 (threshold)
|
|
- [ ] Kubernetes integration
|
|
- [ ] Add configuration sample with plugin in non dev mode
|
|
|
|
## Authors
|
|
|
|
[Alexis Couvreur](https://www.linkedin.com/in/alexis-couvreur/) (left) and [Alexandre Hiltcher](https://www.linkedin.com/in/alexandre-hiltcher/) (right)
|
|
|
|

|