Skip to content

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

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