安全地清理Google Cloud项目中昂贵的乱七八糟的东西

2020-07-17 02:13:37

Safe Srub可以帮助您删除Google Cloud Platform项目中不需要的资源,使其远离混乱的杂乱,并为您节省资金。

它适用于开发和QA项目,在这些项目中,您希望在一天结束时或在新的测试运行之前重新开始。

它不太可能对生产项目有用,在生产项目中,您应该在删除任何内容之前确定组件之间的潜在依赖关系。

安全擦除不会删除资源;相反,它只生成一个删除资源的简单脚本。删除脚本只是一个DELETE语句列表,这样您就可以很容易地了解它将对您的云做什么。

安全清理要求您显式声明项目,以避免意外列出来自默认项目的资源。

安全脚本在删除脚本中指定项目,因此不会针对当前默认项目运行删除。

Safe Srub需要具有服务帐户凭据的JSON密钥文件;它不使用您登录的用户帐户。服务帐户应该具有没有写入功能的角色,如Project Viewer。基本脚本生成脚本不需要或不使用写入功能。

如果您只想删除某些类型的资源,则可以赋予更有限的角色。如果无法访问某些资源(例如,如果给定的GCP API未启用,或者如果服务帐户的角色没有读取这些资源的权限),安全擦除将继续运行。

safe Srub支持用于过滤的-f命令行选项,因此您可以只选择您想要的资源,按标签、名称、创建日期等进行过滤。该实现使用来自gcloud的--filter选项。有关语法的完整文档,请运行gcloud主题过滤器。

但云存储存储桶只支持简单的单键标签相等过滤器(key=value1)。否则,将忽略该筛选器。

安全擦洗支持exclusions.txt中的排除列表。URI中包含这些字符串的资源将不会包括在删除脚本中。

要使用此功能,请运行Safe Srub,记下将来不应删除的项,并将给定的URI或URI的标识部分添加到exclusions.txt。

对于Cloud函数,使用名称而不是URI,因为gcloud中有一个bug。

Safe Srub会在删除脚本前面加上set-x,这样您就可以在运行时看到它在做什么。

Safe Srub生成一个普通的顺序脚本,以便在执行时更容易监控。但是,您可以使用-b开关将其设置为生成后台(异步)命令,以便同时删除多个资源。这样做速度更快,但更难跟踪,而且可能会因为过多的并行调用而使系统超载。

生成删除脚本后,检查该脚本并删除要保留的任何资源的行。

使用不同的角色来运行它,一个具有相关写入权限的角色,如Project Editor。

要在一个步骤中生成并运行删除脚本,只需将输出通过管道传输到bash,如Dangge-Usage-example.sh所示。

在这种情况下,您的服务帐户应该具有读写权限,例如Project Editor。

我重点介绍了在典型开发和QA中设置和拆卸的常见重要资源类型。

这包括来自许多服务的资源类型,包括GCE实例和防火墙规则、PubSub主题和订阅等。

一些尚不支持的服务:DataProc、Composer、Tasks、Spanner、BigTable、BigQuery、Dataflow、ML、Redis、Memcache、Filestore、Scheduler、KMS、Secrets、Firebase、Data Catalog、Container Registry和IAM(尽管您可能不想删除IAM对象!)。

不一定支持每个服务中的所有资源类型。目前还不支持任何需要--region规范的内容。

如果您需要更多服务或资源类型,请在giHub提交拉流请求或问题。

请参阅use-example.sh。此示例显示命令行选项以及如何生成可执行删除脚本。

GCP Cleaner、Travis CI GCloud Cleanup和Bazookadelee GCE资源。这些都是“安全擦洗”的灵感来源,它还涵盖了GCP的其他部分,并增加了安全功能。

gcloud alpha资源列表--uri|grep&34;项目\/$project\/&34;(截至2020年6月,以alpha显示),并可能提供真正捕获所有资源的重新实现。尽管如此,可能需要像这里一样显式实现每个服务,因为存在略微不同的删除命令。