Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cloud Blaster: ripulisci facilmente il tuo progetto Google Cloud

By Joshua FoxOct 31, 20215 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

Come fare ordine negli ambienti GCP di sviluppo e test

Sperimentare con Google Cloud, provare nuove idee e creare numerosi asset cloud per i POC può generare parecchio disordine. Lasciare tutto com'è può diventare costoso. In più, questa confusione si traduce nello sforzo di dover capire ogni volta com'è strutturato l'ambiente mentre si continua a lavorare al progetto.

Cosa fare? Spazzare via tutto!

Spazza via tutto!

Se è cliente di DoiT International, può ricorrere ai Sandbox Projects: ambienti isolati che vengono eliminati per fare piazza pulita.

Una breve presentazione di DoiT: se acquista i servizi GCP tramite DoiT, non spende un centesimo in più rispetto a quanto pagherebbe altrimenti. Riceve inoltre consulenza gratuita da architetti come me e l'accesso ai migliori strumenti per il controllo dei costi.

Se invece non è ancora cliente DoiT, oppure se nei suoi progetti di sviluppo ci sono asset che preferisce conservare eliminando solo il resto, dia un'occhiata a Cloud Blaster, un nuovo progetto open source di cui parlerò in questo articolo. In sintesi, Cloud Blaster individua ed elimina in tutta sicurezza gli asset indesiderati.

Cloud Blaster vs Safe Scrub

Safe Scrub è un progetto che ho scritto in Bash. Fa sostanzialmente la stessa cosa. Per saperne di più, può leggere questo articolo.

I vantaggi di Safe Scrub:

  • Safe Scrub offre la garanzia di non eliminare effettivamente nulla. Si limita a generare uno script Bash con un semplice elenco di istruzioni delete, che può poi rivedere ed eseguire a sua discrezione.
  • Trattandosi di puro Bash, può sentirsi più tranquillo perché vede direttamente il codice che viene eseguito, senza alcuna fase di compilazione.
  • Safe Scrub supporta più tipi di asset rispetto a Cloud Blaster (per ora).

Cloud Blaster ha le proprie funzioni di sicurezza, come vedrà più avanti. Supporta inoltre i tipi di asset più comuni, con la possibilità di aggiungerne altri.

Rispetto a Safe Scrub, Cloud Blaster gestisce un grado di complessità maggiore, perché è scritto in Kotlin anziché in Bash. Questo rende più semplice aggiungere nuovi tipi di asset e funzionalità, gestendo in modo solido i casi particolari. Safe Scrub è ormai al limite della complessità sostenibile in Bash, quindi è improbabile che evolva ulteriormente.

Caso d'uso di Cloud Blaster: lo stesso di Safe Scrub

Lo strumento è pensato per progetti di sviluppo e test informali, in cui si vuole ripartire da zero a fine giornata o prima di una nuova esecuzione di test.

È meno indicato per progetti di produzione o staging, o per i progetti di test condivisi tra team. In quei contesti è meglio affidarsi a Terraform o ad altri strumenti di Infrastructure as Code (IaC), che tengono traccia degli asset creati e permettono poi di eliminarli quando serve.

La sicurezza prima di tutto

Per garantire un funzionamento sicuro e affidabile, Cloud Blaster offre le seguenti caratteristiche.

  1. Il primo passaggio, il Lister, non elimina alcun asset: si limita a elencarli in un file che può rivedere.
  2. Il Lister richiede di indicare esplicitamente un progetto. Non utilizza in modo implicito il progetto predefinito di gcloud.
  3. Il Lister può essere filtrato. Può specificare un'espressione regolare per ciascun tipo di asset, in modo che vengano elencati o esclusi soltanto determinati elementi.
  4. Dopo aver eseguito il Lister, rivede l'elenco degli asset da eliminare e aggiunge in cima una riga di commento # Ready to delete. In questo modo non rischia di saltare la fase di revisione. (Se ama vivere pericolosamente, può scrivere uno script che aggiunga questo commento in automatico tra il passaggio del Lister e quello del Deleter.)
  5. Infine, esegue il Deleter, che elimina esattamente gli asset elencati nel file.

Istruzioni

Per ottenere il codice, esegua git clone oppure scarichi il file zip.

Per dettagli e opzioni consulti il README. In sintesi:

  • Se vuole, modifichi list-filter.yaml per inserire in whitelist o blacklist gli asset da includere o escludere dall'elenco delle eliminazioni.
  • Esegua il Lister da riga di comando.
  • Riveda il file di output asset-list.txt e aggiunga il commento # Ready to delete.
  • Esegua il Deleter.

Per vedere le altre opzioni, esegua ./lister.sh -h oppure ./deleter.sh -h.

Per saperne di più consulti il README di Cloud Blaster

Funzionalità

Cloud Blaster supporta oggi i tipi di asset più comuni e rilevanti che vengono creati e dismessi nelle tipiche attività di sviluppo e QA. Tra questi:

  • Istanze, dischi, firewall e indirizzi di Google Compute Engine
  • Topic e sottoscrizioni di Google Cloud PubSub
  • Cluster regionali e zonali di Google Kubernetes Engine
  • Metriche di log di Google Cloud Operations
  • Servizi e versioni di Google App Engine
  • Google Cloud Functions
  • Servizi Cloud Run
  • Istanze Cloud SQL
  • Bucket di Google Cloud Storage

Aggiungere funzionalità

Se desidera ulteriori tipi di asset o nuove funzionalità, apra una issue su GitHub oppure aggiunga il supporto per il tipo di asset e invii una pull request.

È semplicissimo!

La sintassi concisa di Kotlin e una classe deleter di base le permettono di aggiungere senza fatica un deleter per un nuovo tipo di asset. Il corpo del deleter per i Topic PubSub, ad esempio, è composto da appena sette righe. Da quando ho scritto la prima bozza di questo articolo, ne ho aggiunto uno per Cloud SQL e l'ho testato — in soli 15 minuti e 13 righe di codice.

Ecco come procedere:

  • Decommenti il tipo di asset in asset-types.properties e, se necessario, indichi qui la classe deleter. Le istruzioni si trovano in cima al file.
  • Aggiunga il tipo di asset a list-filter.yaml. (Manteniamo due file di configurazione separati perché solo uno è destinato a essere modificato dall'utente. Se dimentica di aggiornare questo file, un messaggio di errore chiaro glielo ricorderà.) Se vuole, aggiunga un filtro predefinito come nell'esempio Firewall presente nel file.
  • Implementi una sottoclasse di BaseDeleter accanto alle classi deleter già esistenti. Può usarle come esempio per richiamare le varie API di Google Cloud.

Altri progetti e approcci

Per restare in contatto, ci segua sul DoiT Engineering Blog , sul canale LinkedIn di DoiT e sul canale Twitter di DoiT . Per scoprire le opportunità di carriera, visiti https://careers.doit-intl.com .