Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Curso de Swarm

Curso de Swarm

Guido Vilariño

Guido Vilariño

Reverse proxy: muchas aplicaciones, un sólo dominio

20/24
Recursos

Reverse proxy es una técnica, es un servicio que está escuchando y que toma una decisión con la petición que esta entrando y hace un proxy hacia uno de los servicios que tiene que atender esa petición.

Existe una herramienta llamada traefik, el cual es un intermediario entre las peticiones que vienen del internet a nuestra infraestructura.

Aportes 16

Preguntas 5

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Me funciono en mi entrono de pruebas

docker network create --driver overlay proxy-net
docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net traefik:1.7 --docker --docker.swarmmode --docker.domain=dbz.com --docker.watch --api
docker service create  --name app1 --network proxy-net --label traefik.port=3000 baezdavidsan/swarm-hostname
curl -H "Host: app1.dbz.com" http://localhost
docker service create  --name app2 --network proxy-net --label traefik.port=3000 baezdavidsan/swarm-hostname
curl -H "Host: app2.dbz.com" http://localhost
docker service update --image baezdavidsan/networking app2
curl -H "Host: app1.dbz.com" http://localhost
curl -H "Host: app2.dbz.com" http://localhost
http://192.168.5.152:9090/dashboard/

Que tal, tuve un pequeño problema. Cuando intente correr el comando, se quedan como en un ciclo, entonces cancele y revise los logs con

docker service logs proxy 

Y me mandaba este mensaje.

2019/10/21 00:26:42 command traefik error: failed to decode configuration from flags: field not found, node: docker

Y para arreglarlo, solo tuve que definir la versión de traefik y cambiar esta parte

  --docker.swarmMode

Por

--docker.swarmmode

El comando final quedo así:

docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net traefik:1.5 --docker --docker.swarmmode --docker.domain=domain.ca --docker.watch --api

docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net traefik --docker --docker.swarmMode --docker.domain=domain.loc --docker.watch --api

Lo que hace Traefik es que va a detectar que servicios hay en el swarm y los va a incorporar a su lista de reverse proxy en fucnión de algunas etiquetas que pondremos en los servicios, para que eso pase, Traefik va a tener que escuhar los eventos del Swarm, y para que Traefik pueda escuchar los eventos del Swarm va a tener que tener accesso al sokcet del Docker Deamon del Manager, por lo que debe correr en un nodo Manager.

Excelente !!
Grande Docker Swarm

docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 \ --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net \ --label "traefik.http.routers.proxy.rule=Host \ (\guido.com`\ )" traefik
–providers.docker --providers.docker.watch --providers.docker.swarmMode=true --api.insecure=true`

Les dejo el comando largo para crear el servicio de Traefik. En 2021 sigue sin funcionar si no le pones un tag a la imagen de traefik, le puse la version 1.7 y me funcionó sin problema.

docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net traefik:1.7 --docker --docker.swarmmode --docker.domain=dbz.com --docker.watch --api

Me ha salido un error al ejecutar el comando para crear el servicio proxy

docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net traefik --docker --docker.swarmMode --docker.domain=domain.loc --docker.watch --api
verify: Detected task failure 

Sale un error si colocal la imagen sin un tag . Al parecer la última versión no funciona. Traten con la version 1.7
… --network proxy-net traefik:1.7 --docker --docker.swarmMode --docker.domain=g u i do .com --docker.watch --api

Porque no me funciona el traefik cuando al servicio le agrego la etiqueta port

sudo docker service create --name app2 --network proxy-net --label traefik.port=3000 -p 3000:3000 gvilarino/swarm-hostname

Alguien me puede decir como hago para poder conectar mi servicio al traefik y a su vez conectarme por la ip al puerto 3000

Esto se puede probar de manera local , estoy con windows ?

docker service create --name proxy --constraint=node.role==manager -p 81:80 -p 9091:8080 --net
work proxy-net traefik --docker --docker.swarmMode --docker.domain=maccevedor.com --docker.watch --api
n5n9nhgigf8ybc9zeujkea4oo
overall progress: 0 out of 1 tasks
1/1: starting
verify: Detected task failure
Operation continuing in background.
Use docker service ps to check progress.

Si quiero usar mis certificados SSL/TLS adquiridos en aws o cualquier otro proveedor con treafik, se puede y de que manera ?, hasta al momento se que funciona muy facil con letsencrypt pero en he podido encontrar algo donde explique dicha configuracion con mis certificado.

It returns

verify: Detected task failure

Podría usar traefik con muchos nombres de dominio?

Si quisiera crear un servicio que corra en el domain.com y no en sub.domain.com como seria.

Creación del servicio de Traefik funcional:

docker service create --name proxy --constraint=node.role==manager -p 80:80 -p 9090:8080 --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock --network proxy-net traefik:1.7 --docker --docker.swarmMode --docker.domain=guido.com --docker.watch --api