Gestion du cycle de vie des ressources

Ce document explique comment les ressources sont créées, mises à jour et supprimées dans la plateforme Atlas, ainsi que les dépendances entre les différentes ressources.

Cycle de vie des ressources

Dans Atlas, les ressources suivent un cycle de vie bien défini, de la création à la suppression, en passant par les mises à jour.

Création des ressources

Les ressources sont créées en ajoutant des fichiers YAML dans les dépôts GitOps appropriés :

  1. Zones et Organisations : Créées par les administrateurs de la plateforme.
  2. Workspaces : Créés en ajoutant un fichier YAML dans le dossier resources/ du dépôt de l'organisation.
  3. DeploymentTargets, Buckets, DatabaseClusters : Créés en ajoutant des fichiers YAML dans le dossier resources/ du dépôt du workspace.
  4. Ressources Kubernetes : Créées en ajoutant des fichiers YAML dans le dossier deployment-targets/<nom-du-deployment-target>/ du dépôt du workspace.

Une fois les fichiers YAML ajoutés et poussés vers le dépôt, ArgoCD détecte les changements et crée les ressources correspondantes.

Mise à jour des ressources

Les ressources sont mises à jour en modifiant les fichiers YAML correspondants dans les dépôts GitOps. Cependant, certains champs sont immuables et ne peuvent pas être modifiés après la création de la ressource.

Champs immuables

  • Bucket :
  • spec.parameters.name : Le nom du bucket ne peut pas être modifié après la création.
  • spec.parameters.versioned : Une fois activé, le versionnement ne peut pas être désactivé.

  • DatabaseCluster :

  • spec.parameters.name : Le nom du DatabaseCluster ne peut pas être modifié après la création.
  • spec.parameters.implementation : L'implémentation (cnpg ou managed) ne peut pas être modifiée après la création.

Processus de mise à jour

  1. Modifiez le fichier YAML correspondant à la ressource que vous souhaitez mettre à jour.
  2. Poussez les changements vers le dépôt.
  3. ArgoCD détecte les changements et met à jour la ressource.

Suppression des ressources

Les ressources sont supprimées en supprimant les fichiers YAML correspondants des dépôts GitOps ou en utilisant l'annotation argocd.argoproj.io/sync-options: Delete=true pour les ressources qui ne doivent plus être synchronisées.

Processus de suppression

  1. Supprimez le fichier YAML correspondant à la ressource que vous souhaitez supprimer.
  2. Poussez les changements vers le dépôt.
  3. ArgoCD détecte les changements et supprime la ressource.

Suppression forcée

Pour les buckets, le champ spec.parameters.forceDestroy détermine si la suppression de la ressource entraînera également la suppression du bucket et de toutes les données qu'il contient. Par défaut, ce champ est défini sur false, ce qui signifie que la suppression de la ressource ne supprimera pas le bucket sous-jacent.

Attention : L'activation de forceDestroy est dangereuse et peut entraîner une perte de données. Utilisez cette option avec prudence.

Dépendances entre ressources

Les ressources dans Atlas ont des dépendances les unes avec les autres. Ces dépendances déterminent l'ordre de création et de suppression des ressources.

Hiérarchie des dépendances

  1. Zone : Les zones sont indépendantes.
  2. Organisation : Les organisations sont indépendantes.
  3. Workspace : Les workspaces dépendent de leur organisation.
  4. DeploymentTarget : Les DeploymentTargets dépendent de leur workspace et de leur zone.
  5. Bucket et DatabaseCluster : Ces ressources dépendent de leur workspace et de leur zone, et peuvent avoir des dépendances vers des DeploymentTargets via secretDeliveryTargets.
  6. Ressources Kubernetes : Ces ressources dépendent de leur DeploymentTarget.

Gestion des dépendances

Lors de la création, de la mise à jour ou de la suppression de ressources, il est important de respecter ces dépendances :

  • Création : Créez d'abord les ressources dont dépendent d'autres ressources.
  • Exemple : Créez d'abord un DeploymentTarget avant de créer un Bucket qui lui livre des secrets.

  • Suppression : Supprimez d'abord les ressources qui dépendent d'autres ressources.

  • Exemple : Supprimez d'abord les Buckets qui livrent des secrets à un DeploymentTarget avant de supprimer ce DeploymentTarget.

Références entre ressources

Les ressources peuvent faire référence à d'autres ressources via des champs spécifiques :

  • Bucket et DatabaseCluster :
  • spec.parameters.zoneRef.name : Référence à une Zone.
  • spec.parameters.secretDeliveryTargets[].name : Référence à un DeploymentTarget.

  • DeploymentTarget :

  • spec.parameters.zoneRef.name : Référence à une Zone.

Gestion des erreurs

Lorsqu'une erreur se produit lors de la création, de la mise à jour ou de la suppression d'une ressource, ArgoCD affiche l'erreur dans son interface. Voici quelques erreurs courantes et comment les résoudre :

Erreurs de création

  • Ressource déjà existante : Assurez-vous que le nom de la ressource est unique.
  • Champ requis manquant : Vérifiez que tous les champs requis sont présents dans le fichier YAML.
  • Valeur invalide : Vérifiez que les valeurs des champs sont valides.

Erreurs de mise à jour

  • Champ immuable : Certains champs ne peuvent pas être modifiés après la création. Vérifiez la documentation pour savoir quels champs sont immuables.
  • Dépendance manquante : Assurez-vous que toutes les ressources référencées existent.

Erreurs de suppression

  • Ressource en cours d'utilisation : Assurez-vous que la ressource n'est pas utilisée par d'autres ressources avant de la supprimer.
  • Suppression forcée requise : Pour certaines ressources, comme les buckets, vous devrez peut-être activer forceDestroy pour supprimer la ressource et ses données.

Bonnes pratiques

  • Versionnez vos ressources : Utilisez Git pour versionner vos ressources et suivre les changements.
  • Utilisez des branches : Pour les changements importants, utilisez des branches et des pull requests pour permettre la revue de code.
  • Testez les changements : Testez vos changements dans un environnement de développement avant de les appliquer en production.
  • Documentez vos ressources : Ajoutez des commentaires dans vos fichiers YAML pour expliquer le but et les dépendances de chaque ressource.
  • Suivez les dépendances : Respectez les dépendances entre les ressources lors de la création, de la mise à jour et de la suppression.
  • Sauvegardez vos données : Avant de supprimer des ressources, assurez-vous de sauvegarder toutes les données importantes.

Conclusion

La gestion du cycle de vie des ressources dans Atlas est basée sur l'approche GitOps, où les ressources sont définies dans des fichiers YAML stockés dans des dépôts Git. En comprenant les dépendances entre les ressources et en suivant les bonnes pratiques, vous pouvez gérer efficacement le cycle de vie de vos ressources.

Paramètres d’affichage

Choisissez un thème pour personnaliser l’apparence du site.