bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


docker_swarm_stacks

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
docker_swarm_stacks [2021/12/04 17:36]
enrique_mieza_sanchez [Sticky sessions]
docker_swarm_stacks [2023/11/14 18:34] (actual)
enric_mieza_sanchez [Sticky sessions]
Línia 5: Línia 5:
 Els //stacks// son arxius de configuració de serveis per a Docker Swarm, amb la mateixa sintaxi que el ''docker-compose'' però amb alguns paràmetres afegits, en particular a través de l'**etiqueta //deploy//**. Els //stacks// son arxius de configuració de serveis per a Docker Swarm, amb la mateixa sintaxi que el ''docker-compose'' però amb alguns paràmetres afegits, en particular a través de l'**etiqueta //deploy//**.
  
-{{tag> #Ceti #CetiMp03 #Ciber #CiberMp03 docker swarm stack contenidors traefik load_balancer DevOps}}+{{ docker-swarm-3.png }} 
 + 
 +{{tag> #FpInfor #Ceti #CetiMp03 #Ciber #CiberMp03 docker swarm stack contenidors traefik load_balancer DevOps}}
  
 \\ \\
Línia 12: Línia 14:
  
 Anem a posar en marxa una xarxa amb dos serveis: Anem a posar en marxa una xarxa amb dos serveis:
-  * whoami: container que mostra la IP i algunes dades internes per a fer proves. +  * **whoami** : container que mostra la IP i algunes dades internes per a fer proves. 
-  * traefik: conegut load balancer per gestionar el balanceig de càrrega.+  * **traefik** : conegut //load balancer// i proxy invers per gestionar el balanceig de càrrega.
  
-Podràs visualitzar 2 frontends (l'exemple és amb la IP que tenim configurada al Vagrantfile de [[Docker Swarm]]:+ 
 +<WRAP tip> 
 +[[https://doc.traefik.io/traefik/|Traefik]] és un balancejador de càrrega i proxy invers basat en el llenguatge de programació Go! de Google molt emprat en orquestradors de contenidors. 
 + 
 +{{ traefik-architecture.png?400 }} 
 +</WRAP> 
 + 
 + 
 +<WRAP info> 
 +Podràs visualitzar 2 webs (l'exemple és amb la IP que tenim configurada al Vagrantfile de [[Docker Swarm]]:
   * 10.100.199.200:8080 : veuràs el panell d'administració de //traefik//.   * 10.100.199.200:8080 : veuràs el panell d'administració de //traefik//.
-  * 10.100.199.200 : port 80 on podràs veure el frontend de traefik, però de moment ens mostra un ''Error 404: page not found''+  * 10.100.199.200 : port 80 on podràs veure el //frontend// de traefik, però de moment ens mostra un ''Error 404: page not found''
-    * Si volem veure la web, caldrà que configureu l'arxiu ''/etc/hosts'' i apuntar el domini whoami.docker.local a la IP de la màquina //swarm//.+    * **Si volem veure la web, caldrà que configureu l'arxiu ''/etc/hosts'' i apuntar el domini ''whoami.docker.local'' a la IP de la màquina //swarm//**. 
 +    * OJU perquè el ''/etc/hosts'' que s'ha d'actualitzar és el de la màquina on estiguem executant el //browser//, probablement serà la teva màquina física. 
 +    * Ara sí que podem visualitzar la web de ''whoami'' al navegador a: <code>http://whoami.docker.local</code> 
 +</WRAP>
  
 <file yaml whoami.stack.yml> <file yaml whoami.stack.yml>
Línia 61: Línia 75:
 </file> </file>
  
-Per posar en marxa el //stack//: +Per posar en marxa el //stack// ho podem fer d'aquestes dues maneres (amb una basta!)
-  docker stack deploy --compose-file whoami.stack.yml hello +  docker stack deploy --compose-file whoami.stack.yml who 
-  docker stack deploy -c whoami.stack.yml hello +  docker stack deploy -c whoami.stack.yml who 
-  docker stack scale hello_whoami=5+ 
 +I ara, escalem el servei ''whoami'': 
 +  docker service scale who_whoami=5
   docker stack ls   docker stack ls
  
Línia 77: Línia 93:
   * Quan refresques t'apareix ara una IP diferent?   * Quan refresques t'apareix ara una IP diferent?
   * Canvia la IP si accedeixes a la web via ''curl''?   * Canvia la IP si accedeixes a la web via ''curl''?
 +    * **ULL SPOILER ;) amb el ''curl'' la IP ha de variar. Si no ho fa pot ser que no hagis escalat el servei ''whoami'' (o que hagis actualitzat amb ''docker stack deploy'' i s'haurà resetejat a 1 instància).**
 +    * Assegura't que tens diverses instàncies del servei ''whoami''.
   * Què creus que significa el paràmetre //sticky// i perquè creus que funciona al //browser// però no amb ''curl''?   * Què creus que significa el paràmetre //sticky// i perquè creus que funciona al //browser// però no amb ''curl''?
  
Línia 82: Línia 100:
  
 \\ \\
 +
 +===== Wordpress en swarm =====
 +Anem a fer una implementació de Wordpress amb Docker Swarm seguint l'arquitectura proposada en aquest diagrama:
 +
 +{{ wordpress_swarm.png?580 }}
 +
 +<WRAP todo>
 +Elabora un //stack// per allotjar una configuració de Wordpress.
 +
 +Tingues en compte que **la BD cal que estigui fixa al mateix node**, ja que **els volums NO es comparteixen entre màquines**. Busca quina restricció ens ho permet realitzar.
 +
 +Com a //load balancer// pots optar entre fer servir el propi de Docker Swarm (no cal crear cap servei específic, el mateix sistema ho facilita) o bé pots afegir un //load balancer// propi com //traefik// (en aquest cas sí que cal crear un servei, tens un exemple en l'anterior configuració).
 +
 +  * Escala a, al menys, 3 instàncies del contenidor wp.
 +  * Instal·la el Wordpress i entra al panell d'administració.
 +  * Entra Penja un post amb una imatge.
 +  * Comprova què passa si visualitzem el post des de diferents finestres privades. Què creus que està passant?
 +  * Explica perquè es dona aquest error i proposa alguna solució raonant-la.
 +
 +</WRAP>
 +
 +\\
 +
 +===== Docker secrets =====
 +Docker Swarm ens permet no deixar la contrasenya en els arxius de configuració, utilitzant [[https://docs.docker.com/engine/swarm/secrets/|DOCKER SECRETS]]. Mitjançant aquest mecanisme posarem les contrasenyes, claus i altres dades sensibles a la RAM del Swarm, el què significarà un nivell més alt de seguretat.
 +
 +Aquest és un exemple:
 +  $ echo "micontraseña" | docker secret create mysql_password -
 +
 +Els contenidors poden veure les contrasenyes accedint a, per exemple: ''/run/secrets/mysql_password''.
 +
 +Les podem utilitzar al fitxer de //stack// així:
 +  services:
 +    ...
 +    db:
 +      ...
 +      environment:
 +        ...
 +        MYSQL_USER: wordpress
 +        MYSQL_PASSWORD_FILE: /run/secrets/mysql_password
 +      secrets:
 +        - mysql_password
 +  ...
 +  secrets:
 +    - mysql_password
 +      - external: true
 +
 +\\
 +
 +===== Gluster Filesystem =====
 +Per tal de facilitar la interoperativitat dels nodes en un Swarm es pot utilitzar un sistema d'arxius distribuit com GlusterFS.
 +
 +Tens aquí algunes referències per instal·lar-lo:
 +  * https://thenewstack.io/tutorial-create-a-docker-swarm-with-persistent-storage-using-glusterfs/
 +  * [[https://docs.gluster.org/en/v3/Administrator%20Guide/Start%20Stop%20Daemon/|Documentació oficial Gluster FS]].
 +
 +\\
 +
 +
  
docker_swarm_stacks.1638639419.txt.gz · Darrera modificació: 2021/12/04 17:36 per enrique_mieza_sanchez