Aller au contenu

BackupPolicy

Une configuration BackupPolicy de base se présente comme suit :

apiVersion: k8sbackup.afi.ai/v1alpha1
kind: BackupPolicy
metadata:
  name: gold
spec:
  selectors: []
  repoRef: cloud
  schedule:
    fixed:
      hours: [4, 12, 20]
      daysOfWeek: [0, 1, 2, 3, 4, 5, 6]
  encryptionKey: default-encryption-key
  • selectors est une liste de règles qui sélectionnent les manifestes à inclure dans une sauvegarde. Une liste vide de sélecteurs signifie que tous les fichiers YAML d’un espace de noms sont inclus dans les sauvegardes.`
  • repoRef est le nom d’un référentiel qui stocke les archives. À l’heure actuelle, un référentiel par défaut pour les archives de sauvegarde (cloud) est créé lors de l’intégration du locataire et sert à stocker les données dans le cloud Afi. De prochaines mises à jour permettront d’utiliser des référentiels de sauvegarde personnalisés gérés par l’utilisateur.
  • schedule demande l’exécution périodique des sauvegardes. Un champ schedule vide signifie que les sauvegardes ne sont exécutées que lorsqu’elles sont déclenchées manuellement. Lors de la configuration d’une planification, vous pouvez définir un ensemble de fenêtres de sauvegarde au cours de la journée (avec la liste hours) et un ensemble de jours de la semaine pendant lesquels les sauvegardes doivent être effectuées (avec la liste daysOfWeek). L’énumération hours commence à 0 pour minuit (0–23) et l’énumération daysOfWeek commence à 0 pour le dimanche (0 – dimanche, 1 – lundi, …, 6 – samedi). Les valeurs hours sont interprétées selon le fuseau horaire indiqué lors de l’intégration du cluster. Les sauvegardes planifiées pour une heure donnée doivent être lancées dans une fenêtre de sauvegarde de 15 minutes (par exemple, les sauvegardes planifiées pour l’heure 0, minuit, doivent être lancées entre 00:00 et 00:15).
  • encryptionKey est le nom d’une clé de chiffrement utilisée par cette stratégie de sauvegarde. Les clés de chiffrement de sauvegarde sont affichées et gérées dans l’onglet Service → Settings → Secrets du portail Afi. La clé de chiffrement créée par Afi lors de l’intégration d’un cluster est nommée default-encryption-key (il s’agit du nom par défaut, qui peut être modifié par la suite).

Vous pouvez répertorier les stratégies de sauvegarde configurées dans un cluster Kubernetes en exécutant la commande suivante (backup-agent est l’espace de noms dans lequel l’agent de sauvegarde Afi est installé) :

kubectl get backuppolicies

Vous pouvez créer une stratégie de sauvegarde en exécutant la commande suivante (un exemple de configuration YAML de stratégie de sauvegarde figure ci-dessus) :

kubectl apply -f my-custom-backup-policy.yaml

Sélecteurs

Cette partie d’une stratégie de sauvegarde est une liste de filtres appliqués aux objets d’un espace de noms protégé afin de sélectionner les fichiers YAML à inclure dans les sauvegardes. Chaque sélecteur prend l’une des formes suivantes :

include:
  namespaced: ...
  apiVersion: ...
  kind: ...
  name: ...
  labelSelector: ...

ou

exclude:
  namespaced: ...
  apiVersion: ...
  kind: ...
  name: ...
  labelSelector: ...

Un sélecteur include ajoute des objets à un instantané, tandis qu’un sélecteur exclude les en retire. Les sélecteurs sont appliqués dans l’ordre où ils sont définis.

Chaque champ d’un sélecteur (apiVersion, kind, etc.) est facultatif. S’il est vide, il correspond à n’importe quel objet.

Le fonctionnement des sélecteurs est mieux illustré par quelques exemples concrets.

Sauvegarder uniquement les Secrets

selectors:
  - include:
      apiVersion: v1
      kind: Secret

Sauvegarder les Secrets et les ConfigMaps

selectors:
  - include:
      apiVersion: v1
      kind: Secret
  - include:
      apiVersion: v1
      kind: ConfigMap

Sauvegarder uniquement la configuration de l’application, sans inclure les données persistantes

selectors:
  - include: {} # d’abord, tout inclure
  - exclude:    # puis exclure les éléments inutiles
      apiVersion: v1
      kind: PersistentVolumeClaim

Ou, à l’inverse, sauvegarder uniquement les données persistantes

selectors:
  - include:
      apiVersion: v1
      kind: PersistentVolumeClaim

Sauvegarder uniquement les manifestes portant l’étiquette app.kubernetes.io/name: apache-spark-0

selectors:
  - include:
      labelSelector:
        matchLabels:
          - app.kubernetes.io/name: apache-spark-0

Pour plus d’informations sur les sélecteurs d’étiquettes, consultez https://kubernetes.io/fr/docs/concepts/overview/working-with-objects/labels/ et https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.25/#labelselector-v1-meta.