= DevOps Sesión 4 (2022-02-21) Traefik, Swarm
== Documentación relacionada
* 1-Despliegue de Aplicaciones Docker
* ./Traefik1.7.txt
* ./Laboratorio Traefik Docker/Docker Traefik.pdf
* ./Laboratorios docker-compose/Lab Docker-Compose-miaplicacion/*
* ./Laboratorios docker-compose/Lab Docker-Compose-miaplicacion/docker-compose acciones.txt
== Clase
=== traefik
* https://traefik.io
* https://doc.traefik.io/traefik/v1.7/
* ''docker run -d -p 8580:8080 -p 80:80 --network traefik --name traefik -v $PWD/traefik.toml:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock traefik:1.7''
* sticky sesion: en el caso de balanceo, fija una sesión a un contenedor
* escalar:
* ''docker-compose scale =3''
* ''docker-compose up %%--%%scale =3 -d''
* ''docker compose up -d %%--force-recreate%% %%--%%build ...''
* ./Laboratorio Traefick Docker/traefik.toml
* [[https://www.avante.es/video-killed-the-radio-star-o-como-kubernetes-ha-matado-a-docker-o-no/ ]]
=== swarm
* ./2-Docker Swarm.pdf
* ./Clase explicacion Swarm.txt
* ./Seminario Orquestadores de Contenedores Swarn kubernetes .pdf
* [[https://www.youtube.com/channel/UCaL3Poyh7AWECpI5Ee_38xw/featured]]
* orquestador
* ejecución contenedores en varios nodos
* stacks ≡ docker-compose.yml
* servicios = unidad mínima
* master/esclavo
* bdd:
* **etcd**
* distribuida (entre los masters)
* clave=valor
* protocolo ralph para escoger master
* servidor DNS
* **/var/lib/docker/swarm**: información del swarm, por cada nodo.
* ''docker swarm init''
* ''docker swarm join-token worker''
* ''docker swarm join-token master''
* creación red **overlay** -> ''docker network ls''
* ''docker node inspect [--pretty]]''
* ''docker network inspect ingress''
* servicios
* modos:
* replicado (por defecto)
* global: entornos de monitorización. se crea un contenedor en cada nodo. no permite escalado
* técnicas desplagado
* blue-green: cambio en ingress de versiones (implica tener las 2 versiones en marcha)
* canary: cambio progresivo
* A/B
* ''docker node update --availabilty''
* active: modo normal de funcionamiento
* pause: no acepta nuevos servicios
* drain: se va vaciando el nodo de servicios
* constrains
* ''docker service create --name cluster1 --constraint "node.role == worker" -p:81:80/tcp russmckendrick/cluster''
* ''-p:8080:80'' -> ''%%--%%publish published=8080,target=80''
== Extra
* Rancher Desktop -> https://rancherdesktop.io
* sustituto de docker Desktop (licencia)
* docker, compose, kubernetes
* nip.io
* traefik.me