When JupyterHub starts a server for a user, it will dynamically configure a
proxy server so that accessing jupyterhub.example.com/user/<user>
routes to
the individual Jupyter server.
This project enables JupyterHub to dynamically configure the routes of a traefik proxy server!
There are two main implementations of the JupyterHub proxy API, depending on how traefik stores its routing configuration.
For smaller, single-node deployments:
- TraefikFileProviderProxy
For distributed setups:
- TraefikRedisProxy
Other implementations are maintained on a best-effort basis due to a lack of well-maintained Python clients:
- TraefikEtcdProxy
- TraefikConsulProxy
The documentation contains a complete installation guide with examples for all implementations, including the recommended TraefikRedisProxy.
You can then run the all the test suite from the traefik-proxy directory with:
$ pytest
Or you can run a specific test file with:
$ pytest tests/<test-file-name>
There are some tests that use etcdctl command line client for etcd. Make sure
to set environment variable ETCDCTL_API=3
before running the tests if etcd
version 3.3 or older is used, so that the v3 API to be used, e.g.:
$ export ETCDCTL_API=3