Passer au contenu principal

Production (GitLab)

Sauvegardes et restauration

La sauvegarde GitLab couvre plusieurs types de donnees avec des mecanismes differents : la base PostgreSQL, les depots Git (via Gitaly), les uploads/artefacts CI, le fichier de configuration et les secrets.

Rake task de backup

GitLab fournit une rake task qui produit une archive comprenant PostgreSQL, les depots Git (via Gitaly), les uploads, les pages GitLab, les packages et les donnees CI :

# Backup complet
gitlab-backup create

# Backup sans les artefacts CI (gain de temps/espace)
gitlab-backup create SKIP=artifacts

# Backup vers un bucket S3
# Configurer dans gitlab.rb :
gitlab_rails['backup_upload_connection'] = {
  'provider' => 'AWS',
  's3_endpoint_url' => 'https://s3.example.com',
  ...
}
gitlab_rails['backup_upload_remote_directory'] = 'gitlab-backups'

Backup de la configuration et des secrets

La rake task ne sauvegarde pas /etc/gitlab/gitlab.rb ni les secrets (/etc/gitlab/gitlab-secrets.json). Ces fichiers doivent etre sauvegardes separement. Sans gitlab-secrets.json, les donnees chiffrees (variables CI, 2FA, tokens) sont irrécuperables meme avec un backup complet de la base.

# Fichiers critiques hors rake task
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
/var/opt/gitlab/nginx/  # si certifs custom

Restauration

La restauration necessite une instance GitLab avec la meme version que celle qui a produit le backup :

# 1. Installer GitLab a la meme version
# 2. Copier gitlab.rb et gitlab-secrets.json
# 3. Executer reconfigure
gitlab-ctl reconfigure

# 4. Restaurer le backup
gitlab-backup restore BACKUP=TIMESTAMP_gitlab_backup

# 5. Reconfigurer et redemarrer
gitlab-ctl reconfigure
gitlab-ctl restart

Strategie de backup

En production : backup journalier minimum, avec retention d'au moins 7 jours (30 recommandes). Tester la restauration regulierement (trimestriel minimum) : un backup non teste est un backup non fiable. Stocker les backups hors site : objet storage S3, bucket dans un autre datacenter, ou transfert vers un serveur distinct.

Le backup Gitaly (depots Git) peut etre couteux en temps sur de grandes instances. L'option BACKUP=incremental (experimental) permet un backup differentiel.

Sources