Docker Swarm

Por: Artiko
portainerdocker-swarmclusterorquestacion

Docker Swarm

Docker Swarm es el orquestador nativo de Docker para clusters multi-nodo. Portainer lo administra con una vista de cluster completa: servicios replicados, secrets, configs y stacks desplegados sobre todos los nodos.

Server vs Agent en Swarm

En Swarm, el agent se despliega como un servicio global (una réplica por nodo). Los agents se comunican entre sí formando un cluster, de modo que Portainer ve la información de todos los nodos a través de cualquiera de ellos.

flowchart TD
    S["Portainer Server"] --> AG["Agent (servicio global)"]
    AG --> N1["Manager node"]
    AG --> N2["Worker node 1"]
    AG --> N3["Worker node 2"]

Desplegar Portainer en Swarm

Sobre un nodo manager, Portainer ofrece un stack listo. El patrón estándar:

curl -L https://downloads.portainer.io/ce-lts/portainer-agent-stack.yml \
  -o portainer-agent-stack.yml

docker stack deploy -c portainer-agent-stack.yml portainer

Ese stack levanta el Server (en un manager) y el agent como servicio global en todos los nodos, conectados por una red overlay. Accedés a la UI por el puerto 9443 publicado en el cluster.

Si ya tenés el Server corriendo en otro lado, podés desplegar solo el agent como servicio global y luego Add environment → Docker Swarm → Agent.

Services y scaling

En un entorno Swarm, la sección Services reemplaza conceptualmente a “Containers” como unidad principal:

El detalle del service expone update config, restart policy, placement constraints, recursos y redes.

Secrets y configs

Swarm tiene primitivas que el Docker standalone no:

Buena práctica: en Swarm, los secretos van en secrets, no en variables de entorno. Las variables son visibles en inspect; los secrets no.

Stacks en Swarm

Al desplegar un stack en un entorno Swarm, Portainer usa docker stack deploy con tu Compose (versión 3.x con la clave deploy: para réplicas, placement y update policy). El stack se distribuye por el cluster como un conjunto de services.

services:
  api:
    image: midominio/api:1.4
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        order: start-first
      restart_policy:
        condition: on-failure
    networks:
      - backend

networks:
  backend:
    driver: overlay

Nodos del cluster

La vista de Cluster / Nodes muestra cada nodo, su rol (manager/worker), disponibilidad y recursos. Desde acá drenás un nodo para mantenimiento (drain) o lo volvés activo.


AnteriorCapítulo 8: Registries · SiguienteCapítulo 10: Kubernetes