From 00973014bed20634951b287ad45b729206a91941 Mon Sep 17 00:00:00 2001 From: groales Date: Sun, 30 Nov 2025 12:10:13 +0100 Subject: [PATCH] =?UTF-8?q?Wiki:=20a=C3=B1adir=20Pol=C3=ADtica=20de=20Actu?= =?UTF-8?q?alizaciones=20(criterios,=20flujo,=20rollback,=20auditor=C3=ADa?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Politica-Actualizaciones.md | 80 +++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 Politica-Actualizaciones.md diff --git a/Politica-Actualizaciones.md b/Politica-Actualizaciones.md new file mode 100644 index 0000000..8d024c5 --- /dev/null +++ b/Politica-Actualizaciones.md @@ -0,0 +1,80 @@ +# Política de Actualizaciones + +Esta política define qué contenedores se actualizan automáticamente con Watchtower y cuáles requieren revisión manual. + +## Clasificación de Servicios +| Categoría | Ejemplos | Estrategia | +|-----------|----------|-----------| +| Críticos (estado + clientes) | Base de datos, Nextcloud, Vaultwarden | Manual (no auto) | +| Importancia media | Portainer, Paneles internos | Auto con etiqueta + monitorización | +| Baja criticidad / stateless | Reverse proxies, utilidades, exportadores | Auto (enable=true) | + +## Criterios para AUTO (enable=true) +- Contenedor es stateless o reconstruible fácilmente. +- Cambios de imagen backward compatible (semantic versioning respetado). +- Rollback sencillo (tag previo disponible). +- Ventana de mantenimiento definida (horario cron 03:30). + +## Criterios para EXCLUSIÓN (enable=false) +- Datos críticos sin snapshot reciente. +- Imagen con cambios mayores (major version) pendientes de pruebas. +- Dependencias delicadas (plugins, integraciones externas). + +## Flujo de Decisión +1. Clasifica servicio: crítico / medio / bajo. +2. ¿Tiene backups o es stateless? Si NO y crítico → excluir. +3. ¿Versiones recientes probadas en staging? Si NO → excluir temporalmente. +4. Etiqueta con `enable=true` solo tras cumplir condiciones. + +## Procedimiento de Revisión Semanal +- Lunes: revisar logs de Watchtower (`docker logs watchtower --tail=200`). +- Validar que no hubo reinicios fallidos. +- Añadir o retirar etiquetas según incidencias. + +## Rollback Rápido +1. Identificar imagen previa: `docker image ls `. +2. Forzar pull de versión estable anterior: `docker pull repo:tag_anterior`. +3. Recrear contenedor: `docker compose up -d --force-recreate `. +4. (Opcional) Quitar etiqueta auto hasta resolver. + +## Versionado y Tags Recomendados +- Evitar `latest` en servicios críticos; usar tags fijos (`1.2.3`). +- Para servicios auto-actualizados, preferir tags de rama estable (`1.2`, `stable`) evaluando changelog. + +## Uso de Staging (si disponible) +- Replicar compose en entorno staging. +- Activar etiqueta auto primero allí. +- Observar 24h y luego promover a producción. + +## Notificaciones +- Configurar Shoutrrr para recibir evento de actualización crítica. +- Nivel recomendado: `info` y reportes finales. + +## Auditoría Mensual +- Exportar lista de contenedores etiquetados: `docker inspect --format='{{.Name}} {{index .Config.Labels "com.centurylinklabs.watchtower.enable"}}' $(docker ps -q)`. +- Revisar que clasificación sigue vigente. + +## Ejemplo de Etiquetado Mixto +```yaml +services: + traefik: + labels: + - "com.centurylinklabs.watchtower.enable=true" + portainer: + labels: + - "com.centurylinklabs.watchtower.enable=true" + nextcloud: + labels: + - "com.centurylinklabs.watchtower.enable=false" # crítico, actualizar manual + db-postgres: + labels: + - "com.centurylinklabs.watchtower.enable=false" # requiere backups previos +``` + +## Buenas Prácticas Generales +- Documentar excepciones (por qué un servicio está excluido). +- Revisar changelog antes de permitir major updates. +- Mantener automatización para lo repetitivo y foco humano en lo crítico. + +--- +Última actualización: Nov 2025