Skip to content

Commit

Permalink
Update the docs
Browse files Browse the repository at this point in the history
  • Loading branch information
elegaanz committed Mar 14, 2024
1 parent 471396b commit 6be6fed
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 10 deletions.
1 change: 0 additions & 1 deletion docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
- [OpenSearch mono-nœud](compositions/opensearch-mono.md)
- [OpenSearch multi-nœud](compositions/opensearch-multi.md)
- [K3S](compositions/k3s.md)
- [Garage](compositions/garage.md)

# Travailler avec `nxc`

Expand Down
27 changes: 22 additions & 5 deletions docs/src/compositions/opensearch-mono.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,17 @@ Dossier de la composition : `opensearch-mono/`.
Cette composition fait tourner sur un même nœud :

- l'agrégateur de logs [Vector](https://vector.dev/).
- l'outil de monitoring [Colmet](https://github.com/oar-team/colmet)
- un serveur [OpenSearch](https://opensearch.org/).
- un serveur [OpenSearch Dashboards](https://opensearch.org/docs/latest/dashboards/quickstart/)

Vector récupère les logs `systemd` de tous les services de la machine
et les stockes dans une base de données (« index ») OpenSearch (une par jour en fait).

Colmet fait de même, en agrégeant des données depuis plusieurs machines.
Ces données sont des métriques à propos de l'utilisation d'un système
distribué, pas des logs. Elles sont stockés dans un autre index.

OpenSearch Dashboards vient ensuite se connecter à l'API REST d'OpenSearch
et propose une interface graphique pour consulter les données qui sont
stockées dans OpenSearch par Vector. On peut notamment définir des visualisations
Expand All @@ -22,36 +27,48 @@ OpenSearch Dashboards écoute sur le port `5601` : il faut penser à
[forward ce port](../nxc/cheatsheet.md#port-forwarding) (c'est le cas
automatiquement avec Docker).

## Sécurité

Une grande partie du code de la composition est dédié à la configuration
du plugin sécurité d'OpenSearch. Ce plugin est désactivé par défaut dans
le module NixOS, mais OpenSearch Dashboards en a besoin pour authentifier
et autoriser les utilisateurs.

On crée un certificat auto-signé (stocké dans `ssl-keystore.p12`) pour le
On crée un certificat racine (derivation `opensearch-root-cert`) et on
signe un autre certificat avec (stocké dans `ssl-keystore.p12`) pour le
serveur OpenSearch, qui servira à chiffrer les connexions à l'API REST et
les échanges entre nœuds. On crée également une liste de certificats de
confiance (dans `ssl-truststore.p12`) qui ne contient qu'un seul certificat :
celui du nœud lui-même.
le certificat racine. Cette mise en place est un peu plus complexe que ce
qu'elle pourrait être, mais elle a l'avantage de bien s'adapter si on veut
[déployer un cluster de plusieurs nœuds](./opensearch-multi.md), ce qui nous
permet de partager du code entre nos différentes compositions.

On crée ces fichiers principalement parce qu'ils sont demandés par le plugin
`security`, en pratique ils ne sont pas (ou très peu) utilisés. En effet,
il n'y a pas de traffic inter-nœuds, et on demande à OpenSearch Dashboards
de ne pas vérifier les certificats.

## Grid5000

Pour lancer cette composition sur Grid5000, il faut utiliser le flavour g5k-nfs-store.
Il est possible que l'ouverture des ports SSH prenne quelques dizaines de secondes.

Le flavour g5k-ramdisk fonctionne aussi mais les nœuds ne sont pas accessibles via nxc
connect ou ssh dans ce cas de figure.

## API REST

Pour interagir avec l'API REST en ligne de commande, on peut utiliser :

```bash
curl -k -u admin:admin https://localhost:9200/
curl -u admin:admin https://localhost:9200/
```
`-u admin:admin` permet de s'authentifier et d'avoir tous les droits.

`-k` demande d'ignorer les certificats, et `-u admin:admin` permet
de s'authentifier et d'avoir tous les droits.
Si jamais des problèmes de certificats sont rencontrés, il est possible
d'ajouter l'option `-k` à cURL pour les ignorer. Mais si tout va bien,
il devraient être configurés comme il faut.

## Utiliser OpenSearch Dashboards

Expand Down
31 changes: 28 additions & 3 deletions docs/src/compositions/opensearch-multi.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,39 @@
# OpenSearch multi-nœud


=======
Quatre rôles existent :

- `vector` qui fait tourner vector, connecté à OpenSearch
- `manager`, nœud OpenSearch manager
- `manager`, nœud OpenSearch manager, qui fait aussi tourner OpenSearch Dashboards
- `ingest`, nœud OpenSearch ingest (uniquement, pas de data)
- `data`, nœud OpenSearch data

*Note : nous n'avons pas eu le temps de finir l'intégration de Colmet
dans cette configuration, mais les premiers pas on été faits dans la
branche `multi_colmet`.*

La plupart des informations valable pour [Opensearch mono-nœud](./opensearch-mono.md)
sont aussi valable pour cette composition (connexion à OpenSearch Dashboards et
à l'API, tunnel SSH, dashboards par défaut).

## Sécurité

Les échanges entre les nœuds sont chiffrés avec TLS. Pour celà, nous avons
mis en place une chaîne de certification. Un certificat racine est
généré au moment de la compilation (derivation `opensearch-root-cert`
dans l'overlay `opensearch-security.nix`). Grâce à des scripts bash
exécutés par Systemd au lancement d'OpenSearch, des certificats pour chaque
nœuds sont ensuite générés et configurés lors du démarrage des machines.
Ces certificats de nœuds sont signés par le certificat racine (et placés
dans le `keystore`). Le certificat racine est listé comme étant de confiance
(en étant copié dans le `truststore` de chaque nœud, mais aussi en étant
ajouté à la liste des certificats du système).

Sur le nœud manager, un script pour configurer les permissions et utilisateurs
par défaut est également lancé (`wait-and-run-secyrityadmin`). Afin d'avoir
des droits d'administration, ce script a également besoin d'un certificat pour
s'authentifier. Nous en générons donc un et le signons avec le même certificat
racine.

## Note pour Docker

Le cluster peut ne pas démarrer avec Docker, avec le message d'erreur
Expand Down
12 changes: 11 additions & 1 deletion docs/src/nxc/erreurs.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,17 @@ experimental-features = nix-command flakes

## CGroups V2

*À rédiger*
Avec Docker, il arrive que les containers ne se lancent pas, sans faire de
message d'erreur.

[Ce problème est connu](https://gitlab.inria.fr/nixos-compose/nixos-compose/-/issues/9).

Pour contourner le problème, il faut désactiver `cgroups` V2 en
[ajoutant ces options au Noyau Linux](https://wiki.archlinux.org/title/Kernel_parameters),
sur la machine hôte: `systemd.unified_cgroup_hierarchy=0`.

Cette solution a marché pour des machines sous ArchLinux, mais semble insuffisante
si on est sous Ubuntu (dans ce cas nous avons préféré utiliser les VM Qemu).

## Beaucoup de paquets sont recompilés

Expand Down

0 comments on commit 6be6fed

Please sign in to comment.