Crossplane 经常被比作 HashiCorp 的 Terraform。对于企业平台团队来说随着平台增长寻找替代方案过程中,通常会用 Crossplane替代Terraform。这两个项目之间有相似之处:
两者都允许工程师将他们的基础设施建模为声明风格的配置
两者都支持使用Provider插件管理无数不同的基础设施
两者都是具有强大社区的开源工具
关键区别在于 Crossplane 是一个控制平面,而 Terraform 是一个命令行工具——控制平面的客户端。这篇文章触及了企业在扩展 Terraform 时通常面临的一些痛点,并强调了 Crossplane 如何解决这些问题。
一、协作
企业通常通过其运维团队采用 Terraform。对于一个小型团队来说,这是管理的基础设施的好方法。将基础设施表示为声明性配置允许运维团队从软件工程最佳实践中获益——将配置通过Git等工具管理,在必要时可以引入代码评审和回滚机制。
Terraform 是个人运维的瑞士军刀,但是在较多工程师需要协作的环境就有点力不从心了。因为Terraform 依赖于一个单一的状态文件来将记录基础设施的状态映射。在应用配置时必须Lock状态文件,因此这是一个阻塞过程时间可能需要几分钟。在此期间,没有其他工程师只能进行摸鱼操作。此外Terraform 使用的是梭哈的方式部署基础设施——因此没有推荐的方法来修改配置中的某一个基础设施。比如缓存和数据库的配置只