Un outil en ligne de commande pour analyser et comparer les stacks Docker Swarm à travers différents contextes et notifier des changements via une API externe.
- Supporte plusieurs contextes Docker pour la surveillance de multiples clusters
- Capture l'état des stacks Docker Swarm (services, configurations, secrets)
- Compare les états entre deux exécutions
- Génère des rapports de différences détaillés par contexte
- Traitement parallèle des contextes pour de meilleures performances
- Envoie des notifications via une API externe configurable
- Nettoyage automatique des anciens snapshots et diffs
- Timeout configurable pour les opérations Docker
- Support des formats de notification JSON et texte
- Docker en mode Swarm
- jq (pour le traitement JSON)
- curl (pour les notifications API)
- Contextes Docker configurés pour les clusters cibles
- Clonez le dépôt :
git clone https://github.com/votre-repo/dkst_diff.git
cd dkst_diff- Rendez les scripts exécutables :
chmod +x src/dkst_diff.sh src/lib/utils.sh- Créez votre configuration locale :
cp src/config.sh src/config.local.sh- Éditez src/config.local.sh pour configurer :
- Les contextes Docker à surveiller
- L'URL de l'API de notification
- Le token d'authentification
- Le format des notifications (json/text)
- Le répertoire de données
- La période de rétention des fichiers
- Le nombre maximum de contextes à traiter en parallèle
- Le timeout des opérations Docker
Exemple de configuration dans config.local.sh :
# Contextes Docker à surveiller
DOCKER_CONTEXTS="prod-cluster1 prod-cluster2 staging-cluster"
# Configuration des notifications
NOTIFICATION_API_URL="https://api.exemple.com/notifications"
NOTIFICATION_API_TOKEN="votre-token-api"
NOTIFICATION_FORMAT="json" # ou "text"
# Paramètres avancés
MAX_PARALLEL_CONTEXTS=3
TIMEOUT_SECONDS=300./src/dkst_diff.shLe script va :
- Traiter en parallèle chaque contexte Docker configuré
- Capturer l'état actuel des stacks pour chaque contexte
- Comparer avec le dernier état sauvegardé
- Générer un rapport des différences si des changements sont détectés
- Envoyer une notification si configuré
.
├── src/
│ ├── dkst_diff.sh # Script principal
│ ├── config.sh # Configuration par défaut
│ ├── config.local.sh # Configuration locale (ignorée par git)
│ └── lib/
│ └── utils.sh # Fonctions utilitaires
├── data/ # Répertoire de données (créé automatiquement)
│ ├── snapshots/ # États des stacks (par contexte)
│ │ ├── cluster1/
│ │ └── cluster2/
│ └── diffs/ # Rapports de différences (par contexte)
│ ├── cluster1/
│ └── cluster2/
└── README.md
{
"title": "Docker Stack Changes - prod-cluster1",
"content": "... contenu du diff ...",
"context": "prod-cluster1",
"timestamp": "2025-06-19T10:30:00Z"
}Docker Stack Changes - prod-cluster1
Timestamp: 2025-06-19 10:30:00
... contenu du diff ...
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir une issue ou une pull request.