Mission réaliséeMigration et mise à jour de GitLab Community Edition

Migration et mise à jour de GitLab Community Edition
Type d'entreprise
Startup
Durée d'intervention
2 jours

Résumé de la mission

Pour une startup avec de gros enjeux de confidentialité, Cloud Algebra est intervenu afin de fiabiliser la migration et mise à jour d’une instance GitLab Community Edition, hébergée sur leur propre infrastructure privée. Après une migration de +300 Go, plusieurs services et 20 mises à jour successives (dont 7 majeures), le client dispose maintenant d’un environnement de travail sain et moderne.

Détails de l'intervention

Contexte

Le client, startup soucieuse de la confidentialité de son savoir-faire, héberge son code source sur ses propres infrastructures, grâce à GitLab CE (Community Edition). GitLab CE est une plateforme open source de gestion, versionnage et revue de code source qui inclut des fonctionnalités d’automatisation et de CI/CD. L’instance GitLab CE du client et son système d’exploitation n’étaient plus à jour depuis plusieurs années et leur date de fin de support était dépassée. Par ailleurs, les équipes de développement étant coincées sur une vieille version, elles ne pouvaient malheureusement pas profiter des dernières fonctionnalités et autres nouveautés.

Pour s’éviter tout risque cyber, se mettre en conformité réglementaire et moderniser son environnement de développement, le client a décidé de s’attaquer à cette dette technique en se faisant accompagner pour fiabiliser l’opération.

Périmètre d’intervention

La mission consistait à migrer et mettre à jour une instance GitLab Community Edition Self-Hosted :

  • d’une part : migrer l’instance GitLab (service et données) d’un ancien serveur mutualisé à un nouveau serveur virtuel dédié ;
  • d’autre part : mettre à jour la version historique de GitLab (v13.7.3) et de l’OS (Ubuntu 20.04 LTS) vers GitLab v18.1.1 sur Ubuntu 24.04 LTS.

Problématiques rencontrées

Le client a rencontré quelques difficultés pour procéder à une migration et mise à jour aussi conséquente de GitLab CE :

  • Disque source saturé car l’instance GitLab CE est trop volumineuse (beaucoup de répertoires, pièces jointes et métadonnées) ;
  • Risques de corruption à cause :
    • de données migrées sans prendre les bonnes précautions liées aux services internes sensibles de GitLab CE (Gitaly, Redis, Prometheus, PostgreSQL) ;
    • des mises à jour majeures d’Ubuntu (2 mises à jour majeures) ;
    • des dépendances entre les mises à jour intermédiaires à effectuer. En effet, 18 mises à jour doivent être effectuées, une par une, afin de passer de GitLab CE 13.7.3 à 18.1.1.
  • Difficultés d’interprétation des changelogs pour savoir si leurs usages de GitLab CE sont impactés ou non, et pour savoir comment procéder pour s’adapter ;
  • Manque d’expertise, de méthodologie et surtout de temps pour attaquer ces sujets eux-mêmes en interne.

Mode opératoire de Cloud Algebra

  • Audit de l’instance GitLab CE existante : services utilisés, intégrations, configurations, consommations, … ;
  • Préparation du système cible : virtualisation, OS, mises à jour, configuration réseau, accès utilisateurs ;
  • Test en amont de la procédure de sauvegarde et de restauration de GitLab CE ;
  • Test en amont de la procédure de mise à jour de GitLab CE ;
  • Planification de la bascule vers la nouvelle instance GitLab CE, puis bascule ;
  • Contrôle qualité : recette de tests post-migration et post-mise-à-jour ;
  • Rapport d’intervention : documentation et préconisations générales ;
  • Garantie et support : 10 jours ouvrés.

Points clés de la migration

Tout d’abord, quelques informations chiffrées pour appréhender le problème :

  • Nombre de machines : 1
  • Type d’installation : Omnibus
  • Réplication / Distribution : aucune
  • Nombre d’utilisateurs : +20
  • Nombre de répertoires : +150
  • Volumétrie des données (hors répertoires) : +500 Mo
  • Volumétrie des répertoires : +300 Go
  • Nombre de stockages Gitaly source : 3
  • Runners : 1

Par ailleurs, quelques difficultés techniques rencontrées et qui s’écartent du « happy path » traditionnel :

  • La documentation de la version initiale de GitLab était partielle et ne couvrait pas les sauvegardes et restaurations ;
  • La version initiale de GitLab étant trop vieille, les fichiers téléversés dans le Package Registry ne sont pas inclus dans la sauvegarde assistée. Il a fallu détecter ce problème d’une part, et migrer ces fichiers manuellement d’autre part ;
  • Les disques du système source étant saturés, il n’a pas été possible de procéder à la migration de GitLab CE tel que traditionnellement avec les commandes gitlab-backup create et gitlab-backup restore, faute d’espace disponible pour créer une archive. Les répertoires Git ont donc dû être migrés manuellement en prenant toutes les précautions nécessaires pour éviter les corruptions liées à Gitaly et aux UID/GID ;
  • Le système source comprenait plus de stockages Gitaly (3 disques) que le système cible (2 disques). Afin de procéder à la migration, l’équivalent de 2 anciens disques ont été fusionnés sur un seul nouveau disque.

Points clés de la mise à jour de GitLab

Pour des questions de rétro-compatibilité, il n’est pas possible de mettre à jour GitLab d’un seul coup. Il faut procéder itérativement, une mise à jour à la fois, en suivant à la lettre un parcours de mises à jour successives, aussi appelé « Upgrade Path ». Le parcours suivant a été suivi :

  • 13.7.3 > 13.7.9 > 13.8.8 > 13.12.5 > 14.0.12 > 14.3.6 > 14.9.5 > 14.10.5 > 15.0.5 > 15.4.6 > 15.11.13 > 16.3.9 > 16.7.10 > 16.11.10 > 17.1.8 > 17.3.7 > 17.5.5 > 17.8.7 > 17.11.4 > 18.1.1

À chaque étape, des vérifications sont nécessaires et parfois des étapes manuelles, au cas par cas, pour accommoder les changements cassants et les mises à jour non rétro-compatibles. Voici un extrait des écueils rencontrés :

  • Suppression obligatoire de vieilles entrées liées à Elasticsearch ;
  • Réédition des configurations de stockage Gitaly dans le nouveau format, l’ancien ayant été abandonné ;
  • Passage de OpenSSL 1.1 à OpenSSL 3.0 et de TLS 1.1 à TLS 1.2, donc nécessité de mettre à jour tous les clients.

Par chance, le Runner GitLab, lui, a pu être migré et mis à jour plus facilement, d’une traite.

Points clefs des mises à jour majeures d’Ubuntu

Une fois GitLab à jour, nous en avons profité pour mettre à jour Ubuntu afin de simplifier les mises à jour futures de GitLab. Deux mises à jour majeures ont eu lieu :

  • MAJ de la 20.04 à la 22.04
  • MAJ de la 22.04 à la 24.04

Pour chacune des mises à jour, il a fallu intervenir manuellement sur la base de données PostgreSQL qui risquait d’être corrompue par une mise à jour de glibc et des changements de collation non rétro-compatibles. Ainsi, les index de la base de données et les collations ont été intégralement rafraîchis.

Autres informations

En outre des points clefs présentés ci-dessus, il a également fallu :

  • mettre à jour les redirections réseau vers les bonnes adresses IP,
  • mettre à jour les hôtes SSH,
  • renouveler les Personal Access Tokens des utilisateurs,
  • mettre à jour tous les clients curl et git obsolètes.

Pour attester que la nouvelle version migrée et à jour est 100 % fonctionnelle, nous avons conduit un test complet avec les utilisateurs de l’instance, avec succès.

Conclusion

Suite à notre intervention, le client a manifesté sa satisfaction et son intérêt pour un accompagnement sur-mesure.

Une maintenance régulière est essentielle pour :

  • bénéficier d’une modernisation progressive de son environnement de travail ;
  • éviter l’accumulation de dette technique ;
  • se prémunir contre les failles de sécurité et vulnérabilités qui sont découvertes chaque jour.

La maintenance d’infrastructure demande un niveau de veille constant et un effort de préparation qu’il est parfois difficile d’assumer seul en tant qu’entreprise. Une société d’infogérance des infrastructures telle que Cloud Algebra fait sauter ces deux obstacles. Notre veille technologique et notre préparation sont mutualisées pour l’ensemble de nos clients. Cette économie d’échelle nous permet d’être plus compétitifs et de migrer vos systèmes avec plus de fiabilité et de rapidité que des ressources en interne.

Faites-vous accompagner, restez à jour et restez bien protégés contre les risques cyber !

Tous nos projets

Du projet à l'action

Prêt à franchir un cap ?Cloud Algebra sécurise, fiabilise et optimise vos infrastructures cloud.

Profitez de l’expertise de nos équipes pour moderniser, sécuriser et optimiser votre système d’information. Discutons ensemble de votre projet.

Collaborer