Du contenu pour exemples #26
2 changed files with 382 additions and 0 deletions
101
data/miam/ateliers/001-infra-debug-synapse.md
Normal file
101
data/miam/ateliers/001-infra-debug-synapse.md
Normal file
|
@ -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
|
||||
|
||||
|
281
data/miam/ateliers/002-atelier-tedomum-gitlab-runner.md
Normal file
281
data/miam/ateliers/002-atelier-tedomum-gitlab-runner.md
Normal file
|
@ -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.
|
Loading…
Reference in a new issue