Higlo

Higlo est notre opérateur kubernetes de gestion de données, en particulier sur S3. Il est surtout capable à ce stade de synchroniser des buckets S3 sur des backends rclone à des fins de sauvegarde.

Cette page décrit notre configuration Higlo pour la sauvegarde.

Le remote de sauvegarde

Sur le Minio hébergé dans fr-halfa1, nous disposons d’un bucket garage pour les sauvegardes générées par Higlo depuis les buckets S3 de Kity.

Un remote Higlo nommé halfa-encrypted est configuré dans le namespace tedomum-backups. Il est appuyé sur un second remote, en clair, nommé halfa-plain. Si Higlo supporte des remotes et synchronisations planifiées dans multiples buckets, nous avons choisi de concentrer celles de TeDomum dans un unique namespace pour simplifier la gestion.

Le remote utilise un overlay de chiffrement rclone pour chiffrer les données avant envoi.

Le remote de sauvegarde garage

Sur le cluster Garage de Kity, nous disposons d’une clé tedomum-backups, en lecture sur l’ensemble des buckets ayant besoin de sauvegarde.

Un remote nommé backups-garage est configuré dans le namespace tedomum-backups.

Ajouter une synchronisation

Pour synchroniser un nouveau bucket de Garage, une synchronisation planifiée doit être ajoutée dans le namespace tedomum-backups :

apiVersion: higlo.acides.org/v1alpha1
kind: Sync
metadata:
  name: bucket-name
  namespace: tedomum-backups
spec:
  source:
    remote: backups-garage
    path: /bucket-name/path/eventuel
  destination:
    remote: halfa-encrypted
    path: /bucket-name/path/eventuel
  # s'assurer que les backups sont étalés dans le temps
  schedule: "0 4 * * *"
  # conserve les différences
  backup: true

Consulter l’état des synchronisations

L’état des remotes et des synchronisations Higlo peut déjà être consulté via les objets Higlo :

kubectl get remote -n tedomum-backups
kubectl get sync -n tedomum-backups

Sinon, Higlo génère en réalité des CronJob et donc des Job pour chaque backup :

kubectl get cronjob -n tedomum-backups
kubectl get job -n tedomum-backups

Les jobs de backup et les pods associés remontent en erreur explicite en cas de problème.