diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index 7bca362..0aad549 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -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` diff --git a/docs/src/compositions/opensearch-mono.md b/docs/src/compositions/opensearch-mono.md index d19a8ba..643da67 100644 --- a/docs/src/compositions/opensearch-mono.md +++ b/docs/src/compositions/opensearch-mono.md @@ -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 @@ -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 diff --git a/docs/src/compositions/opensearch-multi.md b/docs/src/compositions/opensearch-multi.md index 66842e2..253aae3 100644 --- a/docs/src/compositions/opensearch-multi.md +++ b/docs/src/compositions/opensearch-multi.md @@ -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 diff --git a/docs/src/nxc/erreurs.md b/docs/src/nxc/erreurs.md index 0ad81a9..8873037 100644 --- a/docs/src/nxc/erreurs.md +++ b/docs/src/nxc/erreurs.md @@ -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