Pilot es una nueva plataforma SaaS que lanzó Containous para simplificar el manejo de Traefik en producción y en este artículo, te muestro como configurarlo.
Monitorear nuestros sistemas es clave, no solo para saber si están funcionando, sino que también para verificar su salud y performance. En el caso de Pilot, no solo se queda en el monitoreo, sino que es capaz de darles más funcionalidades a Traefik con Plugins.
Como les comenté en la bajada, Pilot es un Software como Servicio y para usarlo debemos conectar nuestro Traefik a este servicio.
Para eso, lo primero que vamos a hacer es ir a pilot.traefik.io:
Y haremos un clic donde dice Connect with Traefik Pilot
![](https://cduser.com/content/images/2020/08/pilot.png)
Lo siguiente que haremos es autenticarnos, si es la primera vez que entramos, hacemos un clic en "SIGN UP" pero si ya estamos registrados, con que nos autentiquemos con nuestro usuario y contraseña o usando Google o Github, estamos bien.
![](https://cduser.com/content/images/2020/08/pilot2.png)
Una vez autenticado, veremos una pantalla como esta, en la que haremos clic en el botón "Register New Instance"
![](https://cduser.com/content/images/2020/08/pilot3.png)
Lo siguiente que veremos será esta pantalla, donde debemos definir el nombre de nuestro token, también hay que elegir como vamos a configurarlo, en mi caso, voy a elegir "CLI" para pasarle este token a través de los parámetros en un docker-compose.yml.
![](https://cduser.com/content/images/2020/08/image.png)
Otra cosa que hay que entender es que necesitamos desplegar la versión de Traefik 2.3 RC. En mi caso, el docker-compose.yml queda así:
version: "3.3"
services:
traefik:
container_name: traefik
image: "traefik:v2.3.0-rc3"
command:
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --providers.docker
- --experimental.pilot.token=04196125-bfa5-4413-bf1c-8cebed72b11b
- --api
- --api.dashboard=true
- --log.level=DEBUG
- --certificatesresolvers.leresolver.acme.httpchallenge=true
- --certificatesresolvers.leresolver.acme.email=tu@email.com
- --certificatesresolvers.leresolver.acme.storage=./traefik-data/acme.json
- --certificatesresolvers.leresolver.acme.httpchallenge.entrypoint=web
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./traefik-data/acme.json:/acme.json"
labels:
# global redirect to https
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)"
- "traefik.http.routers.http-catchall.entrypoints=web"
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https"
# triying to make work dashboard
- "traefik.enable=true"
- "traefik.http.routers.traefik.rule=Host(`url-dashboard`)"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.tls.certresolver=leresolver"
- "traefik.http.routers.traefik.entrypoints=web"
- "traefik.http.routers.traefik.middlewares=authtraefik"
- "traefik.http.middlewares.authtraefik.basicauth.users=<user:password>"
# middleware redirect
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
Lo ejecutamos con lo siguiente:
docker-compose up -d
La terminal nos debería devolver algo como esto:
Creating network "traefik_default" with the default driver
Pulling traefik (traefik:v2.3.0-rc3)...
v2.3.0-rc3: Pulling from library/traefik
cbdbe7a5bc2a: Already exists
f16506d32a25: Already exists
66ff3ca89287: Pull complete
e7e137e3eecd: Pull complete
Digest: sha256:778681d67906a68b30b996bed899d3dd06bc703f9e526abcbc53a6325562eb33
Status: Downloaded newer image for traefik:v2.3.0-rc3
Creating traefik ... done
Una vez que esta listo. Veremos en Pilot nuestra instancia.
![](https://cduser.com/content/images/2020/08/image-1.png)
Como ven, esta hace 11 minutos corriendo, esta UP y esto corriendo la versión
2.3.0-rc3 de Traefik.
Por último, podemos configurar una notificación para que nos mande un email cada vez que encuentre un problema de seguridad en nuestra instancia o bien, detecte que la misma esta caida.
Para eso, vamos a nuestro perfil, el cual se verá de esta manera:
![](https://cduser.com/content/images/2020/08/image-2.png)
En mi caso, tengo configurado para que me avise cada vez que cualquiera de las dos cosas suceda.
Las notificaciones, se deberían ver más o menos así:
![](https://cduser.com/content/images/2020/08/image-3.png)
Para hacer una prueba, tiré Traefik y al cabo de unos minutos en Pilot, veremos lo siguiente:
![](https://cduser.com/content/images/2020/08/image-7.png)
![](https://cduser.com/content/images/2020/08/image-5.png)
Ese signo amarillo en el "status" significa que está instancia de Traefik no esta siendo alcanzada en los últimos 5 minutos.
Para ir cerrando
¿Cómo ven Pilot? ¿Lo ven útil? Particularmente creo que si es útil, sobre todo porque podemos darle funcionalidades extras a Traefik con Plugins (De los que ya hablaremos más adelante) y nos da avisos de vulnerabilidades de seguridad que pueda a llegar a tener el contenedor.
Te invito a que le pegues una probada y me cuentes qué te pareció.