Skip to content

Commit

Permalink
docs: update deployment k8s
Browse files Browse the repository at this point in the history
Signed-off-by: Florian Amsallem <[email protected]>
  • Loading branch information
flomonster committed Jan 17, 2025
1 parent e89b0c6 commit c279c2e
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 54 deletions.
62 changes: 33 additions & 29 deletions content/docs/guides/deploy/kubernetes/_index.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,16 @@ Before proceeding with the deployment, ensure that you have the following instal
- A PostgreSQL database with PostGIS
- A Valkey server (used for caching)

## The tileserver
## Stateful editoast

Tileserver is the component responsible for generating vector map tiles. It is recommended to separate it from standard Editoast while running a production setup since Editoast cannot be scaled horizontally (it is stateful).
Editoast is a service that is **almost** capable of horizontal scaling (stateless). However, part of the application requires consistent RAM storage and therefore doesn't support scaling. This small part is called **stateful editoast**.

You can visualize the recommended deployment here:
The Helm Chart deploys two OSRD services:

- The first one `editoast` (stateless) which uses a [Horizontal Pod Autoscaler (hpa)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/).
- The second one `stateful-editoast` which has a single replica to ensure data consistency in RAM.

You can view the recommended deployment here:

```mermaid
flowchart TD
Expand All @@ -27,42 +32,42 @@ flowchart TD
gw -- local file --> front
browser --> gw
gw -- HTTP --> editoast
gw -- HTTP --> tileserver-1
gw -- HTTP --> tileserver-2
gw -- HTTP --> tileserver-n...
editoast -- HTTP --> core
gw -- HTTP --> stateful-editoast
gw -- HTTP --> editoast-1
gw -- HTTP --> editoast-2
gw -- HTTP --> editoast-N
stateful-editoast -- AMQP --> RabbitMQ
editoast-1 -- AMQP --> RabbitMQ
editoast-2 -- AMQP --> RabbitMQ
editoast-N -- AMQP --> RabbitMQ
RabbitMQ -- AMQP --> Core-X
Osrdyne -- HTTP/AMQP --> RabbitMQ
Osrdyne -- Control --> Core-X
```

The Helm chart leverages Kubernete's [HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) in order to spawn as much tileserver as required for the current workload.

## Chart Values Overview

The Helm Chart is configurable through the following values:

### Core Service
### Editoast

- `core`: Configuration for the core OSRD service.
- `internalUrl`: Internal URL for service communication.
- `image`: Docker image to use.
- `pullPolicy`: Image pull policy.
- `replicaCount`: Number of replicas.
- `service`: Service type and port configuration.
- `resources`, `env`, `annotations`, `labels`, `nodeSelector`, `tolerations`, `affinity`: Various Kubernetes deployment options.
- `editoast`: Configuration for the Editoast service.
- `init`: Initialization configuration.
- `replicaCount`: Number of replicas, enabling horizontal scaling.
- `hpa`: Horizontal Pod Autoscaler configuration.
- Other standard Kubernetes deployment options.

### Editoast Service
### Stateful Editoast

- `editoast`: Configuration for the Editoast service.
- Includes similar options as `core` for Kubernetes deployment.
- `init`: Initialization configuration.
- `stateful-editoast`: Specialized Editoast service for `/infra/{infra_id}` requests
- `image`: Docker image to use (usually the same as Editoast).
- Other standard Kubernetes deployment options.

### Tile Server
### Osrdyne

- `tileServer`: Specialized Editoast service that serves only vector map tiles.
- `enabled`: Set to `true` to enable tile server functionality.
- `image`: Docker image to use (typically the same as Editoast).
- `replicaCount`: Number of replicas, allowing for horizontal scaling.
- `hpa`: Horizontal Pod Autoscaler configuration.
- `osrdyne`: Osrdyne service that controls the cores.
- `image`: Docker image to use.
- `amqp`: RabbitMQ connection
- Other standard Kubernetes deployment options.

### Gateway
Expand All @@ -85,4 +90,3 @@ To deploy the OSRD services using this Helm Chart:
```bash
helm install osrd oci://ghcr.io/OpenRailAssociation/charts/osrd -f values.yml
```

57 changes: 32 additions & 25 deletions content/docs/guides/deploy/kubernetes/_index.fr.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,14 @@ Avant de procéder au déploiement, assurez-vous que vous avez installé :
- Une base de données PostgreSQL avec PostGIS
- Un serveur Valkey (utilisé pour le cache)

## Le serveur de tuiles
## Stateful editoast

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).
Editoast est un service **quasiement** capable d'être mis à l'échelle horizontalement (stateless). Cependant, une partie de l'application nécessite un stockage en RAM cohérent et donc ne supporte pas la mise à l'échelle. Cette petite partie est appelé **editoast stateful**.

Le Helm Chart déploie deux service OSRD:

- Le premier `editoast` (stateless) qui utilise un [Horizontal Pod Autoscaler (hpa)](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/).
- Le deuxieme `stateful-editoast` qui à une seule réplique pour assurer la cohérence des données en RAM.

Vous pouvez visualiser le déploiement recommandé ici :

Expand All @@ -28,42 +33,44 @@ flowchart TD
gw -- fichier local --> front
navigateur --> gw
gw -- HTTP --> editoast
gw -- HTTP --> tileserver-1
gw -- HTTP --> tileserver-2
gw -- HTTP --> tileserver-n...
editoast -- HTTP --> core
gw -- HTTP --> stateful-editoast
gw -- HTTP --> editoast-1
gw -- HTTP --> editoast-2
gw -- HTTP --> editoast-N
stateful-editoast -- AMQP --> RabbitMQ
editoast-1 -- AMQP --> RabbitMQ
editoast-2 -- AMQP --> RabbitMQ
editoast-N -- AMQP --> RabbitMQ
RabbitMQ -- AMQP --> Core-X
Osrdyne -- HTTP/AMQP --> RabbitMQ
Osrdyne -- Control --> Core-X
```

Le Helm Chart utilise le[HorizontalPodAutoscaler](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) 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

- `editoast` : Configuration pour le service Editoast.
- Comprend des options similaires à `core` pour le déploiement Kubernetes.
- `init` : Configuration d'initialisation.
- `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.

### Serveur de tuiles
### Stateful Editoast

- `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.
- `stateful-editoast` : Service Editoast spécialisé dans les requêtes `/infra/{infra_id}`
- `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.


### Osrdyne

- `osrdyne` : Service osrdyne qui permet de controller les cores.
- `image` : Image Docker à utiliser.
- `amqp` : Connection au rabbitMQ
- Autres options standard de déploiement Kubernetes.

### Gateway
Expand Down

0 comments on commit c279c2e

Please sign in to comment.