diff --git a/content/60_situation_de_travail.md b/content/60_situation_de_travail.md index 79d74aa..db0c51a 100644 --- a/content/60_situation_de_travail.md +++ b/content/60_situation_de_travail.md @@ -1,23 +1,109 @@ \newpage -# Situation de travail : TODO (compléter sujet) +# Situation de travail -TODO : compléter par un sujet avec une mise en situation +L'exercice demandé dans ce chapitre est particulier pour moi. Il est demandé, je cite, « une description d'une situation de travail ayant nécessité une recherche effectuée par le candidat durant le projet ». +Pour bien saisir ma façon de travailler, je pense qu'il est nécessaire de décrire une situation complète. Nous allons poser le contexte, faire l'état des lieux puis suivre le cheminement parcouru pour atteindre l'objectif. -* charts/.gitlab-ci.yml pour cm-push -* ET infra/modules/app-backend/main.tf avec helm_release pour récupérer tout ça +## Contexte -Doc gitlab pour helm : https://docs.gitlab.com/ee/user/packages/helm_repository/ -et : https://docs.gitlab.com/ee/api/packages/helm.html +Du projet émane un besoin d'avoir du temps de calcul pour les pipelines. +Il est nécessaire de réfléchir et trouver une solution viable pour l'environnement de test. L'objectif est donc de préparer un environnement de test pour l'ensemble des éléments du projet. Nous utilisons Gitlab, ce sont donc des Gitlab Runner que nous visons. +Où les installer ? Comment ? De quelles ressources disposons-nous ? +## État des lieux -TODO: (Idées) +Nous utilisons Gitlab qui propose, dans sa version gratuite, un limite de temps de calcul. Une fois le seuil atteint : il faut trouver une solution alternative aux machines de Gitlab. Payantes. -* promotion logicielle (mais énoncée déjà dans un autre chapitre) -* renseignements sur EKS sous AWS (antonputra, vidéos, tests, Terraform, etc.) -* gitlab-runner dans un Kubernetes maison pour avoir des runners ? => demande recherche, essais, mise en place, etc. -* autre ? (sujets à venir et renseignements courants ?) -* Terraform sur Gitlab CI (stockage sur un dépôt) => recherches dans la doc Gitlab pour savoir comment migrer +Autre environnement disponible : AWS. Mais avec un budget limité qui mangerait dans le budget alloué à nos 2 environnements : la production et la pré-production. + +Il n'y a pas le choix : il faut envisager autre chose. Avec les ressources à disposition du groupe, autrement dit : avec le matériel de chacun. + +L'idée ? Utiliser une machine disponible, y installer un serveur et un environnement Kubernetes pour déployer des Gitlab Runner. + +Après en avoir discuté en groupe, je me suis attelé à la tâche. Régulièrement. + +## Cheminement + +### Retranscription préalable + +Étant donné que j'allais passer du temps à faire des recherches, il fallait un lieu où synthétiser les résultats. J'ai opté pour l'utilisation d'un site **gitlab.io** généré automatiquement par les pipelines de Gitlab en utilisant comme moteur statique un outil nommé **Hugo**. Le résultat est disponible sur [odtre.gitlab.io](https://odtre.gitlab.io/) afin qu'il puisse être consulté par mes collaborateurs. + +Ce site va contenir principalement 2 choses : + +* posts : les réflexions sur différents sujets/thèmes de l'environnement de test, +* doc : de la documentation sur l'installation effectuée des outils en place. + +Maintenant qu'un système de retranscription est en place, la recherche commence ! + +### Méthode de renseignement + +Je procède souvent de la même manière : + +* contact avec des **personnes de mon entourage déjà dans le métier** et pouvant m'indiquer des pistes à suivre, +* recherche de **livres existants** sur le sujet, +* passage à la **médiathèque**, +* recherches sur **Internet d'articles** sur le sujet (support textuel uniquement). + +Et c'est ce que j'ai fait : + +* demande à un ami DevSecOps si je pouvais l'interpeller de temps en temps sur l'un ou l'autre sujet, +* achat du livre « Kubernetes - Guide pratique » aux éditions \textsc{O'Reilly}, +* recherche, infructueuse, à la médiathèque : le rayon informatique est maigre, +* recherche sur le domaine du DevOps avec une grande lecture initiale de [Stéphane Robert (Devenez expert DevOps et maîtrisez ses outils)](https://blog.stephane-robert.info/){#stephane-robert} (j'ai repris le titre du site tel quel). + +![Première de couverture du livre O'Reilly, Kubernetes - Guide pratique](./media/livre-oreilly.jpg){height=35%}\ + +### Point de départ + +Grâce à la lecture de quantité d'articles sur le blog de [Stéphane Robert](#stephane-robert), notamment la [série d'article sur « Mon nouveau Homelab DevOps](https://blog.stephane-robert.info/docs/homelab/introduction/) (Cf. https://blog.stephane-robert.info/docs/homelab/introduction/) et la **Roadmap de son parcours de formation DevSecOps** (Cf. https://blog.stephane-robert.info/docs/#la-roadmap), j'ai pu établir des objectifs à court terme et des étapes de sujets à aborder comme : + +* le sujet de la virtualisation, +* le GitOps avec un outil tel que FluxCD. + +![Apparence de la page d'accueil du blog de Stéphane Robert](./media/screenshot_stephane-robert.png){width=100%}\ + +### Recherches + +#### Sujet de la virtualisation + +Je pars souvent de sites de référence ou de sites que j'ai déjà utilisé plusieurs fois dans le passé. Le sujet de la virtualisation a donc donné lieu à quelques recherches sur des sites déjà connus : + +* Le wiki d'ArchLinux et sa catégorie « Virtualization » : https://wiki.archlinux.org/title/Category:Virtualization, +* Le blog précédemment cité de [Stéphane Robert](#stephane-robert). + +Je me suis concentré sur l'outil conseillé par **mon contact DevSecOps** qui utilise QEMU/KVM/Libvirt pour l'émulation d'une machine complète. J'ai lu et appliqué : + +* La page Wiki d'ArchLinux sur QEMU, Cf. https://wiki.archlinux.org/title/QEMU, +* La page Wiki d'ArchLinux sur libvirt, Cf. https://wiki.archlinux.org/title/Libvirt, +* et un message de forum (forums.debian.net) concernant les bonnes pratiques sur l'usage de virt-manager, Cf. https://forums.debian.net/viewtopic.php?t=158967. + +**J'ai ainsi rédigé 2 articles sur le sujet de la virtualisation**, disponibles sur odtre.gitlab.io (outil de retranscription) : + +* réflexion sur le sujet de la virtualisation, Cf. https://odtre.gitlab.io/post/002-virtualisation/, +* et exemple de virtualisation avec QEMU/KVM/Libvirt sous Linux, Cf. https://odtre.gitlab.io/doc/virtualisation/. + +La virtualisation permet, dans notre situation, de tester un ou plusieurs systèmes d'exploitation avant de les adopter et les déployer sur notre infrastructure. + +![odtre.gitlab.io](./media/screenshot_odtre_doc.png){width=100%}\ + +#### Sujet sur FluxCD + +Concernant des outils spécifiques tels que FluxCD, **je favorise avant tout la documentation du site officiel**. Cf. https://fluxcd.io/flux/. + +C'est ainsi que plusieurs éléments de documentation m'ont été nécessaires pour déployer et utiliser FluxCD : + +* la page d'installation officielle, Cf. https://fluxcd.io/flux/installation/, +* les différents « bootstrap » possibles en fonction d'un fournisseur de dépôt Git choisi, Cf. https://fluxcd.io/flux/installation/bootstrap/, +* et des explications sur le contrôleur de sources, Cf. https://fluxcd.io/flux/installation/bootstrap/ pour se mettre à jour « tout seul ». + +Comme auparavant, ceci a donné lieu à **la rédaction d'un article sur notre outil de retranscription**, Cf. https://odtre.gitlab.io/doc/fluxcd/. + +![Documentation de FluxCD sur le site officiel](./media/screenshot_fluxcd_doc.png){width=100%}\ + +## Conclusion + +Que les recherches soient fructueuses ou non, le projet a avancé. Les recherches ne donnent pas tous les savoirs, parfois il faut tester aussi. Bien que pour la plupart des outils, une fois choisis, la documentation officielle de ces outils semble suffire pour leur installation et leur utilisation. Les bonnes pratiques restant dans les articles des blogueurs et autres joyeux rédacteurs en tous genres. diff --git a/media/livre-oreilly.jpg b/media/livre-oreilly.jpg new file mode 100644 index 0000000..3cd952b Binary files /dev/null and b/media/livre-oreilly.jpg differ diff --git a/media/screenshot_fluxcd_doc.png b/media/screenshot_fluxcd_doc.png new file mode 100644 index 0000000..7242de7 Binary files /dev/null and b/media/screenshot_fluxcd_doc.png differ diff --git a/media/screenshot_odtre_doc.png b/media/screenshot_odtre_doc.png new file mode 100644 index 0000000..40fdb93 Binary files /dev/null and b/media/screenshot_odtre_doc.png differ diff --git a/media/screenshot_stephane-robert.png b/media/screenshot_stephane-robert.png new file mode 100644 index 0000000..4273e28 Binary files /dev/null and b/media/screenshot_stephane-robert.png differ