内容提要
本文介绍如何用Backstage、ArgoCD和Crossplane构建内部开发者平台(IDP),实现开发者自助式基础设施部署。架构分三层:Backstage作为开发者门户,ArgoCD负责GitOps持续交付,Crossplane将云资源定义为Kubernetes资源。核心流程是开发者通过模板提交请求,生成Git提交,ArgoCD自动同步,Crossplane配置云资源,全程可审计、可回滚。文章还涵盖成本归属、平台成熟度模型及最佳实践。
延伸解读
架构顺序为何重要
文章强调按ArgoCD、Crossplane、Backstage的顺序构建IDP,因为每层依赖前一层。先有GitOps交付层,才能将基础设施变更纳入Git审计;Crossplane作为基础设施控制平面,由ArgoCD管理;最后Backstage作为门户,通过模板生成Git提交,而非直接调用云API。这种间接路径确保了所有变更可审计、可回滚,是设计的关键。
成本归属的强制机制
成本归属不是靠开发者自觉,而是在Crossplane Composition层强制打标签。开发者提交的claim无法覆盖这些标签,从而确保每个资源都带有团队和成本中心信息。这样,AWS Cost Explorer就能按团队查询费用,实现自动化的成本分摊。文章指出,如果归属可被绕过,就会被绕过,因此必须由平台层强制执行。
平台成熟度的衡量陷阱
文章引用CNCF平台工程成熟度模型,指出达到Level 3的标志是自助服务门户、GitOps和文档化的黄金路径,但常见错误是只增加功能而不衡量采用率。如果模板很少被使用,实际成熟度仍停留在Level 2。因此,应优先关注模板采用率,通过用户访谈改进体验,而非盲目扩展功能。
Q&A
什么是内部开发者平台(IDP)?它解决什么问题?
内部开发者平台(IDP)是一套工具、工作流和抽象层的集合,由平台团队构建和维护,使应用开发者无需直接管理基础设施即可自助部署和配置资源。它解决了传统流程中开发者需要提交工单等待平台团队手动配置环境的问题,通过提供自助服务、一致性和可审计性,减少等待时间和配置漂移。
Backstage、ArgoCD和Crossplane在IDP中分别扮演什么角色?
Backstage作为开发者门户,提供软件目录、软件模板和文档,是开发者与平台交互的界面。ArgoCD作为GitOps持续交付引擎,负责将Git仓库中的配置自动同步到Kubernetes集群,确保集群状态与Git一致。Crossplane作为基础设施控制平面,将云资源(如数据库、存储)定义为Kubernetes自定义资源,并负责将这些资源实际创建在云提供商上。
为什么Backstage不应该直接调用云API,而应该通过Git提交来触发基础设施变更?
直接调用云API会导致缺乏审计跟踪、无法回滚、没有持续协调机制,如果调用中途失败,会留下部分基础设施且没有记录。而通过Git提交,所有变更都有作者、时间戳、PR和审查,审计跟踪自动生成,回滚只需git revert,并且ArgoCD和Crossplane会持续协调确保最终状态与Git一致。
如何通过Backstage模板自助申请一个PostgreSQL数据库?
开发者在Backstage中填写软件模板表单,指定数据库名称、团队、环境、存储大小和实例类型。提交后,Backstage生成一个Crossplane claim的YAML文件,并创建Pull Request到GitOps仓库。合并PR后,ArgoCD检测到变更并应用claim到集群,Crossplane根据Composition定义创建RDS实例,并自动应用加密、备份等平台标准。
Crossplane的Composite Resource和Composition有什么作用?
Composite Resource(通过XRD定义)为开发者提供简化的API,例如PostgreSQLDatabase,隐藏了底层RDS的复杂配置。Composition则定义了如何将简化的claim扩展为实际的云资源,并强制应用平台标准(如加密、备份、删除保护),开发者无法绕过这些标准。
如何在IDP中实现成本归属(FinOps)?
在Crossplane Composition中强制添加成本归属标签(如team、cost-centre、environment),这些标签会传递到实际的AWS资源标签中。这样,所有通过IDP创建的资源都带有团队和成本中心信息,可以通过AWS Cost Explorer按团队查询成本,实现自动化的成本归属和chargeback。
CNCF平台工程成熟度模型有哪些级别?如何评估自己的平台?
模型分为五个级别:1. Provisional(临时脚本、手动配置);2. Operational(标准化工具、部分自动化);3. Scalable(自助服务门户、GitOps交付、文档化黄金路径);4. Optimising(成本归属、平台SLO、用户反馈循环);5. Optimised(AI辅助、预测性扩展、全面FinOps)。一个完整的Backstage+ArgoCD+Crossplane实现,带有成本归属和常用模板,通常处于第3级。
构建IDP时有哪些常见错误需要避免?
常见错误包括:将Backstage直接连接到云API(缺乏审计和回滚);让开发者直接使用Crossplane XRD(绕过Composition抽象,无法强制标准);在隔离环境中构建IDP而不与用户迭代(平台工程是产品工程,需要用户反馈);以及过早构建过多模板而不关注采用率。