Déployer OSRD
Apprenez à déployer OSRD dans différents environnements
Tout d’abord, nous recommandons de se familiariser sur l’architecture des conteneurs d’OSRD.
Nous allons couvrir comment déployer OSRD dans les configurations suivantes :
Il est également possible de déployer manuellement chaque service d’OSRD sur un système, mais nous ne couvrirons pas ce sujet dans ce guide.
NB
Pour que l’outil STDCM fonctionne, il faut configurer l’environnement de recherche STDCM, une configuration stockée en base de données.
Consultez la
page dédiée pour plus d’informations.
1 - Configuration de l'environnement de recherche STDCM
Comment configurer l’environnement de recherche STDCM
Pour que l’outil STDCM fonctionne, il faut configurer l’environnement de recherche STDCM, une configuration stockée en base de données.
Les champs configurables sont les suivants :
pub struct StdcmSearchEnvironment {
pub infra_id: i64,
pub electrical_profile_set_id: Option<i64>,
pub work_schedule_group_id: Option<i64>,
pub timetable_id: i64,
pub search_window_begin: NaiveDateTime,
pub search_window_end: NaiveDateTime,
}
Cette configuration est récupérée par le frontend afin que les bons objets et bornes temporelles soient utilisés
de manière transparente par l’utilisateur.
Pour configurer cette environnement, vous pouvez soit :
- Utiliser l’API REST prévue à cet effet (voir l’openAPI d’editoast
dans la section stdcm_search_environment)
- Utiliser le CLI editoast (exécutez
editoast stdcm-search-env help
pour plus d’informations)
2 - Docker Compose
Utiliser docker compose pour un déploiement sur un seul nœud
Le projet OSRD inclut un fichier docker-compose.yml conçu pour faciliter le déploiement d’un environnement OSRD pleinement fonctionnel.
Exclusivement destiné à des fins de développement, cette configuration Docker Compose pourrait être adaptée pour des déploiements rapides sur un seul nœud.
Avertissement
Cette configuration est prévue seulement à des fins de développement.
Par exemple, aucune authentification n’est prise en charge et le front-end est déployé en mode développement (reconstruit à la volée).
Si vous souhaitez déployer une version d’OSRD dédiée à un environment de production, veuillez suivre le
déploiement via KubernetesPrérequis
Avant de procéder au déploiement, assurez-vous que vous avez installé :
Vue d’ensemble de la configuration
Le fichier docker-compose.yml
définit les services suivants :
- PostgreSQL : Une base de données PostgreSQL avec l’extension PostGIS.
- Valkey : Un serveur Valkey pour le cache.
- Core : Le service central OSRD.
- Front : Le service front-end pour OSRD.
- Editoast : Un service OSRD responsable de diverses fonctions d’édition.
- Gateway : Sert de passerelle pour les services OSRD.
- Wait-Healthy : Un service utilitaire pour s’assurer que tous les services sont sains avant de procéder.
Chaque service est configuré avec des contrôles de santé, des montages de volumes et les variables d’environnement nécessaires.
Étapes du déploiement
- Cloner le dépôt : Tout d’abord, clonez le dépôt OSRD sur votre machine locale.
- Configuration : La configuration par défaut nécessite le renseignement d’une variable d’environnement pour le service Editoast: ROOT_URL.
Il faut lui donner la valeur de l’URL qui pointe vers le service Editoast par la gateway. Par exemple “http://your-domain.com/api".
Vous pouvez également ajuster d’autres variables d’environnement si nécessaire.
- Construire et exécuter : Naviguez vers le répertoire contenant
docker-compose.yml
et exécutez :
docker-compose up --build
Cette commande construit les images et démarre les services définis dans le fichier Docker Compose.
Accès aux services
Bien que tous les services HTTP soient utilisés via la passerelle (http://localhost:4000
), vous pouvez accéder directement à chaque service en utilisant leurs ports exposés :
- PostgreSQL : Accessible sur
localhost:5432
. - Valkey : Accessible sur
localhost:6379
. - Service Core : Accessible sur
localhost:8080
. - Front-End : Accessible sur
localhost:3000
. - Editoast : Accessible sur
localhost:8090
.
Notes et considérations
- Cette configuration est conçue pour le développement et les déploiements rapides. Pour les environnements de production, des considérations supplémentaires en matière de sécurité, de scalabilité et de fiabilité doivent être abordées.
- Assurez-vous que le
POSTGRES_PASSWORD
et d’autres identifiants sensibles sont gérés en toute sécurité, en particulier dans les déploiements de production.
3 - Kubernetes avec Helm
Utilisation de Helm pour les déploiements Kubernetes
La Helm Chart du projet OSRD fournit une solution pour déployer les services OSRD dans un environnement Kubernetes de manière standardisée. Ce document décrit les options de configuration disponibles dans le Helm Chart.
Prérequis
Avant de procéder au déploiement, assurez-vous que vous avez installé :
- Un cluster Kubernetes opérationnel
- Une base de données PostgreSQL avec PostGIS
- Un serveur Valkey (utilisé pour le cache)
Le serveur de tuiles
Le serveur de tuiles est le composant responsable de la génération des tuiles cartographiques vectorielles. Il est recommandé de le séparer du Editoast standard lors de l’exécution d’une configuration de production, car Editoast ne peut pas être mis à l’échelle horizontalement (il est stateful).
Vous pouvez visualiser le déploiement recommandé ici :
flowchart TD
gw["gateway"]
front["fichier statiques front-end"]
gw -- fichier local --> front
navigateur --> gw
gw -- HTTP --> editoast
gw -- HTTP --> tileserver-1
gw -- HTTP --> tileserver-2
gw -- HTTP --> tileserver-n...
editoast -- HTTP --> core
Le Helm Chart utilise leHorizontalPodAutoscaler de Kubernetes pour lancer autant de serveurs de tuiles que nécessaire en fonction de la charge de travail.
Configuration de la Helm Chart (values)
Le Helm Chart est configurable à travers les valeurs suivantes :
Service Core
core
: Configuration pour le service central OSRD.internalUrl
: URL interne pour la communication entre services.image
: Image Docker à utiliser.pullPolicy
: Politique de récupération de l’image.replicaCount
: Nombre de réplicas.service
: Type de service et configuration des ports.resources
, env
, annotations
, labels
, nodeSelector
, tolerations
, affinity
: Diverses options de déploiement Kubernetes.
Service Editoast
editoast
: Configuration pour le service Editoast.- Comprend des options similaires à
core
pour le déploiement Kubernetes. init
: Configuration d’initialisation.
Serveur de tuiles
tileServer
: Service Editoast spécialisé qui sert uniquement des tuiles cartographiques vectorielles.enabled
: Définir sur true
pour activer la fonctionnalité de serveur de tuiles.image
: Image Docker à utiliser (généralement la même que Editoast).replicaCount
: Nombre de réplicas, permettant la mise à l’échelle horizontale.hpa
: Configuration de l’Horizontal Pod Autoscaler.- Autres options standard de déploiement Kubernetes.
Gateway
gateway
: Configuration pour le gateway OSRD.- Comprend des options de service, d’ingress et d’autres options de déploiement Kubernetes.
config
: Configurations spécifiques pour l’authentification et les proxys de confiance.
Déploiement
Le chart est disponible dans le dépôt OCI ghcr. Vous pouvez trouver 2 versions de la chart :
Pour déployer les services OSRD en utilisant Helm :
Configurer les valeurs : Ajustez les valeurs selon vos besoins de déploiement.
Installer le Chart : Utilisez la commande helm install
pour installer la chart dans votre cluster Kubernetes.
helm install osrd oci://ghcr.io/OpenRailAssociation/charts/osrd -f values.yml