
Dans ce tutoriel, je vais vous expliquer comment stocker les données du Container registry de Gitlab sur un stockage de type S3.
Pour commencer, vous aurez besoin d’avoir un Gitlab fonctionne avec la fonctionnalité container registry d’activée.
- Gitlab : déployer avec Docker et docker compose
- Gitlab : héberger vos images Docker avec Container Registry
Vous aurez aussi besoin d’un espace de stockage compatible S3, pour cela vous pouvez déployer Minio.
Sommaire
Création du bucket sur Minio
Sur Minio, créer un Bucket dédié, si vous venez d’installer Minio, cliquer sur Create a Bucket 1.

Nommer le butcket (gitlab-registry) 1 puis cliquer sur le bouton Create Bucket 2.

Le but est créé.


Création d’une clé d’accès – Access Key
Nous allons créer un Access Key que l’on va indiquer par la suite dans la configuration de Gitlab pour l’accès au Bucket.
Depuis le menu, cliquer sur Access Keys 1 puis sur le bouton Create access key + 2.

La clé et le secret (mot de passe) sont affichés 1, copier les dans un fichier pour la configuration de Gitlab et cliquer sur Create 2.

La clé et le secret s’affiche une nouvelle fois en vous indiquant que le secret ne sera disponible qu’une seule fois, ensuite fermer la fenêtre modale.

Vous avez aussi la possibilité de télécharger le fichier JSON qui contient la clé et le secret.
Pour Minio, la configuration est terminée.
Configuration de Gitlab
Editer le fichier docker-compose.yml de votre déploiement de Gitlab et ajouter les lignes suivantes dans la configuration GITLAB_OMNIBUS_CONFIG en adaptant à votre environnement.
Redémarrer le conteneur Girtlab pour la prise en compte :
sudo docker compose down && sudo docker compose up -dLe contenu Container registry sera dans le Bucket S3
Migration de contenu existant vers le bucket S3
Pour cela on va utiliser le client Minio (mc) pour faire la migration.
Sur le serveur Gitlab installer le client :
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc && mv mc /usr/local/bin/Ajouter le serveur MinIO au client :
mc alias set minio https://s3.domain.tld accesskey secretkeyCopier le contenu local (Gitlab) vers le Bucket :
# Adapter le chemin local à votre environnement
mc mirror /containers/gitlab/data/gitlab-rails/shared/registry minio/gitlab-registryPatienter pendant la copie … puis redémarrer Gitlab
sudo docker compose down && sudo docker compose up -dUne fois Gitlab de nouveau opérationnel vérifier que les images soient disponibles.
Si vous avez l’erreur : invalid digest sur vos images, la solution va être depuis un hôte ou docker est installé, de télécharger toutes les images ce qui implique un retour au stockage local puis de renvoyer toutes les images après réactivé la configuration S3 et vider le Bucket.
Vous savez comment stocker le données du registre d’image de conteneur Gitlab sur un stockage S3 avec MinIO.
