HashiCorp Nomad
Vue d'ensemble
HashiCorp Nomad est un orchestrateur de workloads flexible et simple qui se positionne comme une alternative pragmatique à Kubernetes. Contrairement à K8s, Nomad peut orchestrer des conteneurs, des applications natives, des VMs et des tâches batch avec une complexité réduite.
Philosophie
"Simple, flexible et production-ready dès l'installation - sans la complexité de Kubernetes."
Avantages clés
Simplicité
- Installation : Binaire unique, aucune dépendance
- Configuration : Fichiers HCL simples et lisibles
- Courbe d'apprentissage : Beaucoup plus accessible que K8s
- Maintenance : Moins de composants à gérer
Flexibilité
- Multi-workload : Conteneurs, binaires, VMs, Java, etc.
- Multi-platform : Linux, Windows, macOS
- Multi-cloud : AWS, Azure, GCP, on-premise
- Hybrid : Mix conteneurs/VMs dans même cluster
Performance
- Léger : Consommation mémoire/CPU réduite
- Rapide : Déploiements plus rapides que K8s
- Efficace : Bin packing intelligent des ressources
- Scalable : Jusqu'à 10k nodes facilement
Architecture
Composants principaux
- Servers : Gèrent l'état du cluster (consensus Raft)
- Clients : Exécutent les workloads
- Jobs : Définitions des applications à déployer
- Allocations : Instances des jobs sur les clients
Intégration HashiCorp Stack
- Consul : Service discovery et health checking
- Vault : Gestion sécurisée des secrets
- Terraform : Provisioning infrastructure
Cas d'usage typiques
Idéal pour
- Workloads mixtes : Conteneurs + VMs + binaires
- Équipes moyennes : 5-50 développeurs
- Multi-cloud/hybrid : Déploiement uniforme
- Edge computing : Ressources limitées
- Simplicité d'exploitation : Équipe ops réduite
Moins adapté pour
- Écosystème riche : Operators, Helm charts (K8s meilleur)
- Grandes équipes : 100+ développeurs
- Besoins spécialisés : Service mesh complexe, CRDs
Ressources
- Documentation officielle : nomadproject.io
- Tutoriels : learn.hashicorp.com/nomad
- Communauté : discuss.hashicorp.com
Exemple pratique : Premier cluster Nomad
Infrastructure de développement complète
Ce projet démontre comment déployer une infrastructure de développement avec Nomad, incluant :
- Docker Registry privé (port 5000) + Interface UI (port 5001)
- Gitea (port 3000) - Serveur Git auto-hébergé
- Dashboard (port 8005) - Tableau de bord des services
Architecture du projet
nomad-infra/
├── jobs/ # Jobs Nomad
│ ├── registry/ # Registre Docker + UI
│ ├── gitea/ # Service Git
│ ├── front/ # Dashboard
│ └── silverbullet/ # Wiki/Notes
├── scripts/ # Scripts d'automatisation
│ ├── setup-volumes.sh # Configuration volumes
│ ├── deploy-all.sh # Déploiement complet
│ └── cleanup.sh # Nettoyage
├── volumes/ # Définitions volumes
└── docs/ # Documentation services
Guide de démarrage rapide
1. Préparation des volumes
# Créer les répertoires de données
sudo mkdir -p /opt/nomad/volumes/{registry_data,gitea_data}
sudo chmod 777 /opt/nomad/volumes/{registry_data,gitea_data}
# Configuration volume Nomad
cat <<EOF > registry_volume.hcl
id = "registry_data"
name = "registry_data"
type = "host"
plugin_id = "host_volume"
host_volume {
path = "/opt/nomad/volumes/registry_data"
}
EOF
nomad volume create registry_volume.hcl
2. Déploiement
# Déployer tous les services
./scripts/deploy-all.sh
# Ou individuellement
nomad job run jobs/registry/docker-registry.nomad
nomad job run jobs/registry/docker-registry-ui.nomad
nomad job run jobs/gitea/gitea.nomad
nomad job run jobs/front/front.nomad
3. Utilisation du registre
# Pousser une image
docker pull nginx:latest
docker tag nginx:latest localhost:5000/nginx:latest
docker push localhost:5000/nginx:latest
# Tirer depuis le registre
docker pull localhost:5000/nginx:latest
Services disponibles
- Registry API : http://localhost:5000/v2/
- Registry UI : http://localhost:5001/
- Gitea : http://localhost:3000/
- Dashboard : http://localhost:8005/
Bonnes pratiques démontrées
- ✅ Volumes persistants pour toutes les données
- ✅ Health checks intégrés
- ✅ Scripts d'automatisation pour le déploiement
- ✅ Organisation modulaire par service
- ✅ Documentation complète de chaque composant
Voir aussi
- Code source : Premier cluster Nomad
- Article détaillé : Voir notre guide complet sur Nomad
- Implémentation : Utilisé dans notre plateforme de compliance
- Formation : Ressources d'apprentissage HashiCorp