Mostra la pàginaRevisions anteriorsQuè hi enllaçaExporta a PDFTorna dalt Aquesta pàgina és només de lectura. Podeu veure'n el codi font, però no podeu canviar-la. Consulteu el vostre administrador si penseu que això és degut a algun error. = DevOps Sesión 5 (2022-02-23) Swarm == Documentación relacionada <callout type="info" icon="true"> 1-Despliegue de Aplicaciones Docker/ </callout> == Clase <callout type="info" icon="true"> ./2-Docker Swarm.pdf pag 17 </callout> * modo replicado * para no usar modo malla por defecto (solo abre puerto en el lugar (nodo) que se coloca), especificar **mode=host** en **published** * ''docker service create %%--%%replicas 1 %%--%%name web4 %%--%%publish published=8580,target=80,mode=host dockercloud/hello-world'' * modo global * se crea un servicio en cada nodo * no permite escalar, ni permite ''%%--%%replicas'' * ''docker service create %%--%%mode global %%--%%name servicio4 %%--%%limit-memory 128MB %%--%%publish 8083:80 httpd'' === nodos * ''docker node ...'' * ''demote'': degrada un manager a worker * ''promote'': promueve un worker a manager * ''inspect'': información detallada * ''ls'': listado de nodos * ''ps'': servicios * ''rm'': eliminar nodo (''docker swarm leave'' para salir del SWARM) * ''update'': actualizar el estado del nodo * ''%%--%%availability active'': modo normal de trabajo * ''%%--%%availability drain'': deja de recibir tareas, va vaciando las que tiene * ''%%--%%availability pause'': deja de recibir nuevas tareas, mantiene las actuales * ''%%--%%label-add'': añade etiqueta key=value * ''%%--%%label-remove'' * ''%%--%%role'': worker/manager * ''docker swarm join-token worker'' * [[https://docs.docker.com/engine/swarm/admin_guide/]] * pag 20 === etiquetar nodo * relacionado con **constrains** * ''node.role'' * ''node.hostname'' * ''node.platform.os'' * se pueden crear etiquetas sobre los nodos para aplicar constrains * ''docker nodes update %%--%%label-add etiqueta=valor'' * ''docker service create %%--%%name servicio --constraint 'node.labels.etiqueta==valor'' * ''docker service create %%--%%name servicio --constraint 'node.labels.etiqueta!=valor'' === stacks <callout type="info" icon="true"> ./Ficheros Laboratorio Stack de servicios swarm/stack-wordpress-swarm </callout> * problema de almacenamiento (volúmenes) * [[https://docs.portainer.io/v/ce-2.11/start/install/server/swarm/linux]] * ''curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml'' * networks -> attachable: permite que contenedores lanzados fuera del SWARM se puedan añadir a esa red * ''docker stack deploy -c portainer-agent-stack.yml portainer'' * ''docker stack ls'' * ''docker stack ps portainer'' * ''docker service ls'' === rolling === cluster * primera máquina es Master/Worker a la vez * otros nodos se pueden unir como Master o Worker * otros nodos Master no tienen rol worker (no ejecutan contenedores) <- FALSE * todos tienen rol Master/Worker, aunque se recomienda que los master solo hagan de master (haciendo un ''docker node update %%--%%availability drain'') * mejor 1 Master + 2 Workers que 3 Master/Worker === secret * ''docker secret...'' * create * inspect * ls * rm * las imágenes han de estar preparadas para usar swarm secrets * se añade **_FILE** a las variables de entorno "reales" * crea un fichero con la contraseña en plano en **/run/secrets/<secreto>** * definir los secrets en el servicio y en un apartado específico:<code yaml>version: '3.1' services: db: image: postgres restart: always environment: POSTGRES_USER_FILE: /run/secrets/pg_user POSTGRES_PASSWORD_FILE: /run/secrets/pg_password POSTGRES_DB_FILE: /run/secrets/pg_database secrets: - pg_password - pg_user - pg_database adminer: image: adminer ports: - 8680:8080 secrets: pg_user: external: true pg_password: external: true pg_database: external: true</code> * ''echo "11111111" | docker secret pg_password -'' * ''docker secret inspect pg_password'' == Extras * ''docker system'' * eliminar contenedores intermedios: * NO: [[https://nickjanetakis.com/blog/docker-tip-32-automatically-clean-up-after-docker-daily ]] * en cron, docker prune * [[https://docs.docker.com/config/pruning/ ]] -> ''docker container prune %%--%%filter "until=24h"'' info/cursos/pue/devops2022/s5.txt Darrera modificació: 09/03/2022 09:18per mate