Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Cloud Blaster: limpe seu projeto no Google Cloud sem complicação

By Joshua FoxOct 31, 20215 min read

Esta página também está disponível em English, Deutsch, Español, Français, Italiano e 日本語.

Aprenda a organizar seus ambientes de desenvolvimento e testes no GCP

Experimentar o Google Cloud, testar novas ideias e criar vários recursos para POCs costuma gerar muita bagunça. E deixar tudo isso largado pode sair caro. Sem contar o trabalho extra de entender seu próprio ambiente conforme o projeto avança.

O que fazer? Detone tudo!

Detone tudo!

Se você é cliente da DoiT International, pode usar os Sandbox Projects, que são autocontidos e podem ser excluídos para acabar com a bagunça.

Um recado rápido da DoiT: se você contrata seus serviços do GCP pela DoiT, não paga nada além do que pagaria normalmente. E ainda ganha consultoria gratuita com arquitetos como eu, além de acesso às melhores ferramentas de controle de custos.

Mas se você ainda não é cliente da DoiT, ou se seus projetos de desenvolvimento têm recursos que você prefere manter enquanto apaga o resto, dá uma olhada no Cloud Blaster, um novo projeto open source que vou apresentar neste artigo. Em poucas palavras: o Cloud Blaster encontra e exclui com segurança os recursos indesejados.

Cloud Blaster vs. Safe Scrub

O Safe Scrub é um projeto que escrevi em Bash. Na prática, faz a mesma coisa. Se quiser saber mais, leia este post do blog.

As vantagens do Safe Scrub:

  • O Safe Scrub não exclui nada de fato. Ele só gera um script Bash com uma lista simples de comandos delete. Você revisa e executa quando quiser.
  • Como o Safe Scrub é puro Bash, você ganha mais confiança ao ver o código rodando, sem etapa de compilação.
  • O Safe Scrub aceita mais tipos de recursos do que o Cloud Blaster (por enquanto).

O Cloud Blaster tem seus próprios recursos de segurança, como você verá a seguir. Ele também cobre os tipos de recursos mais comuns, e dá pra adicionar outros.

Em comparação ao Safe Scrub, o Cloud Blaster dá conta de mais complexidade, já que é escrito em Kotlin, e não em Bash. Isso facilita a inclusão de novos tipos de recursos e funcionalidades, com tratamento robusto de casos especiais. O Cloud Scrub está no limite da complexidade que o Bash comporta, então dificilmente vai muito mais longe.

Caso de uso do Cloud Blaster: o mesmo do Safe Scrub

O caso de uso é voltado para projetos de desenvolvimento e testes informais, em que você quer começar do zero ao final do dia ou antes de uma nova rodada de testes.

Dificilmente vai ser útil em projetos de produção, staging ou até mesmo em projetos de testes em equipe. Para esses casos, o ideal é usar Terraform ou outra ferramenta de Infrastructure as Code (IaC), que rastreia os recursos criados. Assim, dá pra excluir esses recursos sempre que precisar.

Segurança em primeiro lugar

Para manter tudo seguro, o Cloud Blaster conta com estes recursos:

  1. A primeira etapa, o Lister, não exclui nenhum recurso. Ele só lista os recursos em um arquivo que você pode revisar.
  2. O Lister exige que você informe explicitamente um projeto. Ele não usa implicitamente o projeto padrão do seu gcloud.
  3. O Lister pode ser filtrado. Você pode definir uma expressão regular por tipo de recurso, para que apenas determinados itens sejam listados ou ignorados.
  4. Depois de rodar o Lister, você revisa a lista de recursos a serem excluídos e adiciona uma linha de comentário # Ready to delete no topo. Isso garante que você não pule a etapa de revisão. (Se você gosta de viver perigosamente, escreva um script que adicione esse comentário automaticamente entre o Lister e o Deleter.)
  5. Por fim, execute o Deleter, que apaga exatamente os recursos listados no arquivo.

Instruções

Para obter o código, faça git clone ou baixe-o como arquivo zip.

Veja o README para detalhes e opções. Em resumo:

  • Se quiser, edite o list-filter.yaml para incluir ou excluir recursos da lista de exclusão por meio de allowlist ou blocklist.
  • Execute o Lister pela linha de comando.
  • Revise o arquivo de saída asset-list.txt e adicione um comentário # Ready to delete.
  • Execute o Deleter.

Para conhecer outras opções, execute ./lister.sh -h ou ./deleter.sh -h.

Veja o README do Cloud Blaster para mais detalhes

Funcionalidades

O Cloud Blaster já cobre os tipos de recursos comuns e importantes que costumam ser criados e descartados em rotinas típicas de desenvolvimento e QA. Entre eles:

  • Instâncias, discos, firewalls e endereços do Google Compute Engine
  • Tópicos e assinaturas do Google Cloud PubSub
  • Clusters regionais e zonais do Google Kubernetes Engine
  • Métricas de log do Google Cloud Operations
  • Serviços e versões do Google App Engine
  • Google Cloud Functions
  • Serviços do Cloud Run
  • Instâncias do Cloud SQL
  • Buckets do Google Cloud Storage

Adicionando funcionalidades

Se você quiser mais tipos de recursos ou novas funcionalidades, abra uma issue no GitHub ou implemente o suporte ao tipo de recurso e envie um pull request.

É fácil!

A sintaxe concisa do Kotlin e uma classe base de deleter facilitam muito a criação de um deleter para um novo tipo de recurso. O corpo do deleter de PubSub Topic, por exemplo, tem só sete linhas. Desde que escrevi o primeiro rascunho deste artigo, criei e testei um para Cloud SQL — em apenas 15 minutos e 13 linhas de código.

Veja como:

  • Descomente o tipo de recurso em asset-types.properties e, se necessário, especifique a classe do deleter. As instruções estão no topo desse arquivo.
  • Adicione o tipo de recurso ao list-filter.yaml. (Mantemos dois arquivos de configuração separados porque só um deve ser editado pelo usuário. Se você esquecer de editar este arquivo, uma mensagem de erro clara vai te avisar.) Se quiser, adicione um filtro padrão, como no exemplo de Firewall que está no arquivo.
  • Implemente uma subclasse de BaseDeleter junto com as classes de deleter já existentes. Use-as como exemplo de como chamar as diferentes APIs do Google Cloud.

Outros projetos e abordagens

Para ficar por dentro, acompanhe o DoiT Engineering Blog , o canal da DoiT no LinkedIn e o canal da DoiT no Twitter . Para conhecer oportunidades de carreira, acesse https://careers.doit-intl.com .