diff --git a/chapitres/chapitre_5.tex b/chapitres/chapitre_5.tex new file mode 100644 index 0000000..dd3a77c --- /dev/null +++ b/chapitres/chapitre_5.tex @@ -0,0 +1,84 @@ +\chapter{Migration des services de jails FreeBSD vers docker} + +\large \paragraph{} L'intégralité des services utilisé par le service +informatique fonctionnaient dans des \textit{jails FreeBSD}\footnote{Système de +conteneur propre aux système BSD. La première version est sortie en mars 2000 +avec FreeBSD 4}. Étant la seule personne au service informatique a avoir des +compétences dans l'administration de serveur FreeBSD, at afin d'anticiper +mon départ prévu début août, nous avons décidé de tout migrer de vers des +conteneurs \textit{Docker}. + +\normalsize +\paragraph{} \textit{Docker} a l'avantage d'être une solution beaucoup plus +répandue et accessible. Notre alternant Lucas la maitrisait déjà, ce qui n' +etait pas mon cas. Nous avons donc travailler ensemble sur ce point. + +\section{Migration de services existants} + +\subsection{Inventaire} + +\paragraph{} Nous avons commencé par faire un inventaire complet de l'existant. +Tous les conteneurs fonctionnaient sur une seule machine physique, il y en avait + 3 en production~: + +\begin{itemize} + \item \textbf{un serveur web} avec dessus GLPI, NextCloud et Dokuwiki + \item \textbf{un serveur MariaDB} pour les bases GLPI et Nextcloud + \item \textbf{une instance Gitea}, utilisant le serveur web comme frontal +\end{itemize} + +\paragraph{} Le tout était sauvegardé sur une machine distante en SSH avec +\link{https://www.borgbackup.org/}{Borg Backup} piloté par un script maison. + +\subsection{Défintion de la nouvelle architecture} + +\paragraph{} Nous sommes partis du principe d'un conteneur par service, et ce +même pour les base de données attachees. En frontal, Træfik a été retenu pour +son intégration poussée avec Docker. Il fera office de reverse-proxy et de +chiffrer le traffic. Un schéma du fonctionnement attendu de la nouvelle +installation est disponible figure \ref{Fig:docker} (page \pageref{Fig:docker}). + +\begin{figure}[H] + \includegraphics[width=\linewidth]{generated/plan_docker} + \caption{Instalation attendue des conteneurs Docker afin de remplacer les + \textit{Jails BSD}} + \label{Fig:docker} +\end{figure} + +\section{L'installation} + +\subsubsection{La machine hôte} + +\paragraph{} Le système retenu pour la machine hôte est \textit{Debian +Stable}\footnote{Debian 10 au moment de l'installation du serveur}. Le +système est installé sur un ensemble en \textit{RAID 1} afin d'être tolérant à +la panne. Il a fallu prendre des précautions afin d'obtenir une vrai tolérance. +Ainsi le chargeur de démarrage est installé \textbf{sur les deux disques}. + +\subsubsection{les conteneurs} + +\paragraph{} La définition des conteneurs s'est faites avec +\textit{Docker-Compose}. Ce fichier contient les paramètres relatifs au +conteneurs~: source des images, variables d'environnement, volumes de données. + +\paragraph{} Lucas s'est chargé de l'écriture du premier jet de ce fichier +pendant que je me chargeait de tester l'importation des données dans des +conteneurs. + +\subsubsection{Le cas GLPI} + +\paragraph{} Le principe des image docker est simple~: il suffit souvent d'aller +faire \textit{\flqq ses courses\frqq} sur le \textit{dockerhub} où l'on trouve +des inages toute faites pour beaucoup de services. \textbf{Problème}~: aucune +des images GLPI testée ne fonctionne. + +\paragraph{} Lucas a donc décidé de créer une image à partir d'une autre de +base. Je suis intervenu ensuite pour intégrer le plugin \textit{Fusion +inventory}, le point d'entrée des agents et des tâches +\textit{cron}\footnote{système de planification des tâches}. + +\subsubsection{Finalisation des configuration} + +\paragraph{} Une fois l'écriture du \textit{Docker-Compose} par Lucas finalisée, +je suis intervenu sur la correction de certains problèmes et le peaufinage des +configurations. diff --git a/images/svg/plan_docker.svg b/images/svg/plan_docker.svg new file mode 100644 index 0000000..45d08de --- /dev/null +++ b/images/svg/plan_docker.svg @@ -0,0 +1,2127 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HTTP 308 + + + + + + + + + + + + + + + + + + + + + + + Træfik + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Applicatif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Base de données + + + + + + + + + + + + + + + + + + + + + Conteneur + + + + + Flux HTTP + + + + Flux HTTPS + + + diff --git a/rapport.tex b/rapport.tex index 1e34b7c..7a3c8a2 100644 --- a/rapport.tex +++ b/rapport.tex @@ -14,6 +14,7 @@ \input{chapitres/chapitre_2} \input{chapitres/chapitre_3} \input{chapitres/chapitre_4} +\input{chapitres/chapitre_5} \appendix \input{annexes/annexe_4} \end{document}