Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cloud Blaster : nettoyez facilement votre projet Google Cloud

By Joshua FoxOct 31, 20215 min read

Cette page est également disponible en English, Deutsch, Español, Italiano, 日本語 et Português.

Comment désencombrer vos environnements GCP de développement et de test

Tester Google Cloud, expérimenter de nouvelles idées et créer une multitude de ressources cloud pour des POC peut vite tourner au désordre. Et laisser tout cela en place finit par coûter cher. Sans compter la charge mentale que représente la compréhension de cet environnement à chaque fois que vous reprenez le projet.

Que faire ? On fait sauter tout ça !

On fait sauter tout ça !

Si vous êtes client de DoiT International, vous pouvez utiliser les Sandbox Projects, autonomes et automatiquement supprimés pour faire place nette.

Petit aparté DoiT : si vous achetez vos services GCP via DoiT, vous ne payez pas un centime de plus. Vous bénéficiez en prime d'un accompagnement gratuit par des architectes comme moi, ainsi que d'un accès aux meilleurs outils de maîtrise des coûts.

Si vous n'êtes pas encore client DoiT, ou si vos projets de développement contiennent des ressources que vous souhaitez conserver tout en supprimant le reste, jetez un œil à Cloud Blaster, un nouveau projet open source dont je vais parler dans cet article. En résumé : Cloud Blaster identifie et supprime les ressources indésirables en toute sécurité.

Cloud Blaster vs Safe Scrub

Safe Scrub est un projet que j'ai écrit en Bash. Il fait essentiellement la même chose. N'hésitez pas à lire cet article de blog pour en savoir plus.

Les avantages de Safe Scrub :

  • Safe Scrub vous garantit qu'aucune ressource n'est réellement supprimée. Il génère simplement un script Bash contenant une liste d'instructions delete. Libre à vous de le relire et de l'exécuter quand bon vous semble.
  • Safe Scrub étant écrit en pur Bash, vous pouvez avoir davantage confiance puisque le code exécuté est directement visible, sans étape de compilation.
  • Safe Scrub prend en charge davantage de types de ressources que Cloud Blaster (pour le moment).

Cloud Blaster dispose lui aussi de ses propres garde-fous, comme vous le verrez plus loin. Il prend également en charge les types de ressources les plus courants, avec la possibilité d'en ajouter d'autres.

Comparé à Safe Scrub, Cloud Blaster gère davantage de complexité, puisqu'il est écrit en Kotlin plutôt qu'en Bash. Cela facilite l'ajout de nouveaux types de ressources et de nouvelles fonctionnalités, tout en traitant proprement les cas particuliers. Cloud Scrub atteint la limite de complexité gérable en Bash et a donc peu de chances d'évoluer davantage.

Cas d'usage de Cloud Blaster : identique à Safe Scrub

L'outil cible les projets de développement et de tests informels, où vous souhaitez repartir de zéro à la fin de la journée ou avant un nouveau cycle de tests.

Il est moins adapté aux projets de production ou de pré-production, ni même aux projets de tests partagés en équipe. Pour ces cas-là, mieux vaut utiliser Terraform ou un autre outil d'Infrastructure as Code (IaC) qui assure le suivi des ressources créées. Vous pourrez ensuite supprimer ces ressources lorsque ce sera nécessaire.

La sécurité avant tout

Pour rester sûr et fiable, Cloud Blaster intègre les fonctionnalités suivantes.

  1. La première étape, le Lister, ne supprime aucune ressource. Il se contente de les lister dans un fichier que vous pouvez relire.
  2. Le Lister exige que vous indiquiez explicitement un projet. Il n'utilise pas implicitement votre projet gcloud par défaut.
  3. Le Lister peut être filtré. Vous pouvez spécifier une expression régulière par type de ressource pour ne lister ou n'ignorer que certaines d'entre elles.
  4. Après avoir exécuté le Lister, vous relisez la liste des ressources à supprimer et ajoutez une ligne de commentaire # Ready to delete en haut du fichier. De quoi vous éviter d'oublier l'étape de relecture. (Si vous aimez vivre dangereusement, écrivez un script qui ajoute ce commentaire entre les étapes Lister et Deleter.)
  5. Enfin, exécutez le Deleter, qui supprime exactement les ressources listées dans le fichier.

Instructions

Pour récupérer le code, faites un git clone ou téléchargez-le sous forme d'archive zip.

Consultez le README pour les détails et les options. En résumé :

  • Vous pouvez éditer list-filter.yaml pour mettre en liste blanche ou en liste noire les ressources à inclure ou exclure de la liste de suppression.
  • Exécutez le Lister depuis la ligne de commande.
  • Relisez le fichier de sortie asset-list.txt et ajoutez le commentaire # Ready to delete.
  • Exécutez le Deleter.

Pour découvrir les autres options, exécutez ./lister.sh -h ou ./deleter.sh -h.

Consultez le README de Cloud Blaster pour en savoir plus

Fonctionnalités

Cloud Blaster prend désormais en charge les types de ressources courants et importants, créés puis détruits dans un cycle classique de développement et de QA. Notamment :

  • Instances, disques, pare-feu et adresses Google Compute Engine
  • Topics et abonnements Google Cloud PubSub
  • Clusters régionaux et zonaux Google Kubernetes Engine
  • Métriques de logs Google Cloud Operations
  • Services et versions Google App Engine
  • Google Cloud Functions
  • Services Cloud Run
  • Instances Cloud SQL
  • Buckets Google Cloud Storage

Ajouter des fonctionnalités

Si vous souhaitez davantage de types de ressources ou de nouvelles fonctionnalités, ouvrez une issue sur GitHub ou ajoutez la prise en charge du type de ressource et soumettez une pull request.

C'est simple !

Grâce à la syntaxe concise de Kotlin et à une classe de base pour les deleters, ajouter un deleter pour un nouveau type de ressource est un jeu d'enfant. Le corps du deleter de PubSub Topic, par exemple, ne fait que sept lignes. Depuis la première version de cet article, j'en ai ajouté un pour Cloud SQL et l'ai testé — le tout en 15 minutes et 13 lignes de code.

Voici la marche à suivre :

  • Décommentez le type de ressource dans asset-types.properties et indiquez la classe deleter ici si nécessaire. Les instructions figurent en haut de ce fichier.
  • Ajoutez le type de ressource à list-filter.yaml. (Nous gardons deux fichiers de configuration distincts, car un seul est destiné à être édité par l'utilisateur. Si vous oubliez de modifier ce fichier, un message d'erreur clair vous le rappellera.) Vous pouvez aussi ajouter un filtre par défaut, comme dans l'exemple Firewall du fichier.
  • Implémentez une sous-classe de BaseDeleter aux côtés des classes deleter existantes. Vous pouvez vous en inspirer pour appeler les différentes API Google Cloud.

Autres projets et approches

Pour rester en contact, suivez-nous sur le DoiT Engineering Blog , sur la page LinkedIn de DoiT et sur le compte Twitter de DoiT . Pour découvrir nos opportunités de carrière, rendez-vous sur https://careers.doit-intl.com .