From a89a644ad77c66d9df3b0ff266ae814e73aad9db Mon Sep 17 00:00:00 2001 From: reminec Date: Thu, 30 Mar 2023 15:56:56 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=202=20ateliers=20=C3=A0=20manger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/miam/ateliers/001-infra-debug-synapse.md | 101 +++++++ .../002-atelier-tedomum-gitlab-runner.md | 281 ++++++++++++++++++ 2 files changed, 382 insertions(+) create mode 100644 data/miam/ateliers/001-infra-debug-synapse.md create mode 100644 data/miam/ateliers/002-atelier-tedomum-gitlab-runner.md diff --git a/data/miam/ateliers/001-infra-debug-synapse.md b/data/miam/ateliers/001-infra-debug-synapse.md new file mode 100644 index 0000000..79c3565 --- /dev/null +++ b/data/miam/ateliers/001-infra-debug-synapse.md @@ -0,0 +1,101 @@ +# CR-2023-03-17 | Synapse | Tedomum.net + +## Très courte description + +Infra | Debug | Synapse - Pic d'utilisation CPUs + + +## Courte description + + > _À L'occasion d'une session improvisée de **documentation croisée** : kaiyou debug l'instance synapse de (tedomum.net) qui rencontre des pics CPU. reminec prends des notes pour engrenger du savoir sur synapse / Matrix._ + + +## Description + +### Salons #Synapse + +**#Synapse** modèlise la **relation** entre les **salons** via un **Graphe Orienté Acyclique** (DAG)[Voir plus bas]. + +Celui-ci se voit **distribué** et **répliqué** sur les différents serveurs. + +> ⚠️ De temps en temps, ce processus peut occasionner des nécessités d'**opérations de maintenance**. + +![Schéma de Graphe Orienté Acyclique](https://upload.wikimedia.org/wikipedia/commons/thumb/f/fe/Tred-G.svg/220px-Tred-G.svg.png) + +_Ne boucle pas sur lui même (Ex: les noeuds ne peuvent former un cercle)_ + + +Voir [Wikipedia - Graphe Orienté Acyclique](https://fr.wikipedia.org/wiki/Graphe_orient%C3%A9_acyclique) + + +#### En savoir plus +* #Synapse Room DAG Concept (https://github.com/matrix-org/synapse/blob/develop/docs/development/room-dag-concepts.md) +* #Matrix - Rooms (https://spec.matrix.org/unstable/rooms/) + +### Opérations de maintenance +#### Nettoyage des 'extremites' des salons + +#Synapse peut rencontrer quelques défauts dus à la nature distribuée du **DAG** répliqué. +Des **pics de CPUs** interviennent lors de la résolution d'état des salons (room). +Une opération de maintenance peut être nécessaire. + +Pour récupérer **la liste des salons à nettoyer**, executer cette requette SQL : +```sql +select room_id, count(*) c from event_forward_extremities group by room_id order by c desc limit 20; +``` +Puis appeler l'API dédiée à cette effet +```sh +synadm DELETE 'v1/rooms/!fzfHhoTplYBEXfWOaI:matrix.org/forward_extremities' +``` + + +### Bug connu + +#### #Synapse - 'Extremites' des salons qui grossissent +Status : Ouvert + +##### Description +_Le souci est toujours celui-là : https://github.com/matrix-org/synapse/issues/1760_ + +Il y a toujours des **défauts** dus à la nature distribuée du DAG répliqué, et l'algo de résolution d'état pour une room qui **explose en performances quand le nombre d'extrémités** (occurrences du défaut si l'on veut) **grandit**. + +##### Correction +* **opération de maintenance** régulière : Nettoyage des extremities des salons + +##### Détection +* pic de CPUs + +### Définitions + +#### Graphe Orienté Acyclique +**English** : _Directed acyclic graph_ +Grosso modo un DAG c'est un arbre dont les branches peuvent se croiser, mais qui va dans une direction globale et ne boucle pas sur lui même. + + +[Illustration d'un DAG Graphe Orienté Acyclique] + +##### Exemples +Un historique git. + +##### En savoir plus +https://fr.wikipedia.org/wiki/Graphe_orient%C3%A9_acyclique + + +## Licenses + +CC-BY-SA + +## Auteurices +* kaiyou @ acides.org (Tedomum.net) +* reminec @ acides.org (Tedomum.net) + +## Versions +### v1.0.1 +_Date: 18 mars 2023 | Temps : 5min_ +* Corrections mineurs sur le formatage + +### v1.0.0 +_Date : 17 mars 2023 | Temps rédaction : 1h_ +* Initialisation du document & formatage + + diff --git a/data/miam/ateliers/002-atelier-tedomum-gitlab-runner.md b/data/miam/ateliers/002-atelier-tedomum-gitlab-runner.md new file mode 100644 index 0000000..fc63abb --- /dev/null +++ b/data/miam/ateliers/002-atelier-tedomum-gitlab-runner.md @@ -0,0 +1,281 @@ +# Atelier 18 mars 2023 + +## Très courte description + +CR | Atelier | Gestion de communauté (Mastodon/Matrix), gitlab runner + +## Participant⋅es + +* ✅ kaiyou 🧪 [ACIDES.org](https://acides.org) 🏴‍☠️🌈 [Tedomum.net](https://tedomum.net) +* ✅ reminec 🤪 | 🧪 [ACIDES.org](https://acides.org) 🏴‍☠️🌈 [Tedomum.net](https://tedomum.net) + + +## Ordre Du Jour (ODJ) + +* 👋 Tour de table +* 📌 reminec présente et **candidate** pour un projet **ACIDES.org** +* 📌 **mise en place d'un salon vocal** dans l'**espace Matrix** Tedomum +* 📌 **mise en place** d'un **runner gitlab** sur le cluster kubernetes **kity** +* 📌 **Build** de l'image Element via le runner +* 📌 **M.à.j** du service Element +* 👋 Conclusion | 🕑 0-10min + + +## Description + +L'atelier a durée ~1h15 + + +### 📝 #Candidature #ACIDES +> * reminec **présente** l'ébauche de son initiative qu'il veut animer au sein du labo [ACIDES.org](https://acides.org). +> * kaiyou **approuve l'initiative** et le fait de la ranger sous le labo [ACIDES.org](https://acides.org) + +L'ébauche se compose pour le moment d'une équipe ```lost-in-learn``` sur une instance cryptpad(😍) hébergée chez deuxfleur.fr + + +#### Présentation +[Voir le index.md](https://git.deuxfleurs.fr/ACIDES-hlilo/hlilo-website/src/branch/develop/data/pages/index.md) + + +#### A faire + +* 📌 Trouver un nom qui respecte la convention posée par acides.org +* 📌 Mettre en place un espace Matrix + +### 📝 #Tedomum + +💡 Tedomum possède un **salon public** pour les **alertes de monitoring**. + +#### 📝 #Tedomum - Gestion de communauté (#COMA) + +_⚠️ Attention à ne pas diluer le contenu tant qu'il n'y pas nécessité de segmenter_ + +##### 📝 #Mastodon + +###### Tâches à réaliser +* 📌 Il faut au moins distinguer 2 comptes + * **Compte COMA** : Utiliser pour la communication externe + * **Compte status des services** : Utiliser pour annoncer les interruptions de services, les services actuellement en défaut. + +###### Idées + +* ⚖️ Il doit être possible de brancher les alertes de monitoring sur le compte mastodon dédiés au suivis des services. + * ⚠️ _Attention toutefois à ce que le monitoring ne flood pas les envois_ + +##### 📝 Salons Matrix + +###### Tâches abouties + +* ✅ **Salon vocal/visio créé** (Le salon vocal possède une zone de tchat écrit) + * ⚠️ Le **partage d'écran** ne marche que dans le **client Web** +* ✅ Salon ajouté à l'espace matrix Tedomum +* ✅ **Ajout des droits d'admins** de reminec sur les espaces Tedomum et ACIDES. + +###### Tâches à réaliser + +* 📌 Revoir la consistence dans le nommage des Espaces / Salons (et leur alias) | _S'inspirer de NixOS qui joue avec une arborescence de nommage._ + +Le but recherché est de **favoriser la distinction** entre le **salon général**, et l'**espace d'accueil**. + + +#### 📝 #Tedomum #K8s #Kity + +* 💡 Le noeud Bambino est le moins sollicité. + +##### Tâches effectuées + +* ✅ Nouveau namespace ```tedomum-runner``` +* ✅ Push du travail en l'état sur le repo FluxCD (HelmChart gitlab-runner) +* ✅ Nous avons **désactivé le runner global** pour taper sur le runner nouvellement mis en place. + * 💡_Nous avons un **runner global** hébergé en **dehors kity** (sur Japet, un dédié OVH pour les builds)._ + +~~**runner non fonctionnel en l'état**~~ + +### 📝 #K8s, #Gitlab & #GitlabRunner + +> * 📝 Version déployée chez Tedomum au jours de l'écriture : gitlab-v15.9.3 +> * 🔗 https://docs.gitlab.com/runner/executors/kubernetes.html + +#### 📝 #HelmChart | gitlab-runner + +* 🔗 https://artifacthub.io/packages/helm/gitlab/gitlab-runner + + +##### values.yaml +* ✅ Personnalisation des valeurs suivantes : + * gitlabUrl + * runnerRegistrationToken + * runnerToken + * concurrent + * nodeSelector + +_WARNING: Support for registration tokens and runner parameters in the 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with support for authentication tokens._ + +#### Difficultés rencontrés +##### Documentation & dépréciations + +La documentation gitlab est un tantinet brouillonne : +* 🚨 L'ancienne façon d'enregistrer un runner est **dépréciée**. +* ⚠️ La nouvelle façon est documentée, mais **pas encore livrée dans l'interface** (prévu pour v15.10.x) + +##### Vrac de la séance +###### 🪚 Premier essai - build Element via le runner + +❌ Échec - Le build est plannifié sur le noeud chez Orlinum. + +💡 #Tedomum #Kity Pas de traffic sortant depuis le noeud Orlinum. + +> WARNING: The 'register' command has been deprecated in GitLab Runner 15.6 and will be replaced with a 'deploy' command. For more information, see #380872 (closed) + +> The register command will be preserved with some changes, which should limit the impact to users. + + +_nodeSelector : Page de doc en 404 https://kubernetes.io/docs/user-guide/node-selection/_ + +###### 🪚 Deuxieme essai + +* ⚠️ Échoué car il cherche à dialoguer via ipv6, non dispo pour le moment dans le cluster. + +Après investigation, c'est la résolution DNS du cluster qui échouait pour 1/3 requtes, puisqu'un des pods du cluster-dns était sur un noeud dont le DNS était configuré en IPv6 mais ne disposant pas d'IPv6. + +✅ En corrigeant le resolv.conf du noeud pour fournir un nameserver en IPv4, l'ensemble est reparti. + + +## Connaissances + +### Vocabulaire +#### 👩‍🎓 Race condition + +L'un dépend de l'autre mais la dépendance n'est pas respectée pendant l'execution. + + +#### 👩‍🎓 COMA - COmmunity MAnagement + +Gestion de communauté + + +### 👩‍🎓 SOPS - Secrets OPerationS (by Mozilla) + +#### Très courte definition +Permets de **chiffrer/déchiffrer** du texte ou du binaire. + +#### Description + +Il gère nativement les formats de fichiers suivants en **préservant les clefs** : +* json +* yaml +* env +* ini + +Alternative à : +* ansible-vault +* HashiCorp vault + +#### Voir plus loin +* https://blog.stephane-robert.info/post/devops-secret-sops/ + +### 👩‍🎓 lunarVim + +Une configuration de neoVIM + +### 👩‍🎓 bat + +#### Courte Description + +Clone de ```cat```, avec : +* La gestion de coloration de syntaxique +* l'intégration de git +* l'affichage des caractères non imprimable +* pagination automatique + +#### Voir plus loin +* https://github.com/sharkdp/bat + +## FAQ + +### #Gitlab & #GitlabRunner + +###### ❓ Est-ce que le nodeSelector est pour les builds ou pour le runner lui même ? + +###### ❓ Comment choisir les noeuds sur lesquels les builds seront lancées ? + +###### ❓ Comment on crée un runner via l'interface ? +L'ancienne façon est encore disponible, mais dépréciée. +La nouvelle est documenté mais pas encore livrée dans l'interface. + +https://docs.gitlab.com/ee/architecture/blueprints/runner_tokens/ + +> Gitlab 15.9.x ne possède pas encore l'UI pour faire face à la dépréciation de l'ancienne façon. +> _Prévue pour v15.10.x_ + +###### ❓ Comment on configure un #GitlabRunner via le #HelmChart ? + +* ✅ Il faut écrire un ```config.toml```, +* 🚨 c'est **déprécié** via le ```values.yaml```. + + +## #Astuces +### #Matrix +#### 💡 Salon de monitoring +Comme les salons sont distribués et répliqués entre les instances, il est recommandé de **rejoindre le salon de monitoring** avec un **2e compte hébergé ailleurs** que sur l'instance monitorée. Ainsi, les **messages seront consultable** via cette autre instance. + +## Post-Scriptum +### 🤔 Evaluer la valeur ajoutée de l'atelier et du rendu +* la **pertinence d'un tel document** +* la pertinence de **prendre un temps imprévu** pour aborder des **sujets connexes** à l'atelier si ça **consomme du temps précieux** pour la réalisation de la **tâche initialement prévue** + +### ⚖️ Réutilisation du contenu +Il y a t'il moyen de nourrir, extraire, et faciliter une curation de contenu via une convention qui se dessine : +* Objet +* Duree +* Topos +* Tâches + * aboutie + * effectuée + * à réaliser +* Difficultés +* Connaissances +* Vocabulaire +* Astuces +* FAQ + + +Dans l'idée, ça nourrit au moins une section 'Quoi de neuf chez Tedomum' via l'```objet``` qui se transformerait en ```titre``` et le ```topos``` en ```description```. + + +### ❓ Est-ce pertinent de vouloir s'approcher d'une documentation croisée dans un atelier où il est prévu de tomber des tâches ? +Choix cornélien qui se dessine : +* Peut-être opportun de ralentir un chouilla le rythme ? +* Au contraire, laisser filer +* Peut-être un mélange des 2 au cas par cas ? + + +## Licenses + +CC-BY-SA + +## Crédits + +### Auteurices +* reminec 🤪 | 🧪 [ACIDES.org](https://acides.org) 🏴‍☠️🌈 [Tedomum.net](https://tedomum.net) + + +### Relectures +* kaiyou + + +## Versions + +### v1.1.0 +_Date: 30 mars 2023 | Temp rédaction : 30min | reminec_ +* reformatage avant publication + +### v1.0.0 +_Date : 18 mars 2023 | Temps rédaction : 3h30 | reminec_ +* Prise de notes durant l'atelier +* Interviews de kaiyou pour approfondir +* Enrichissement +* Formatage + +## Remerciements +**kaiyou @ acides.org (Tedomum.net)** | Pour son expertise et le temps pris pour s'arrêter sur des sujets connexes à l'atelier.