作为一名自动化工程师和架构师,多年来一直在使用 Terraform 等 IaC 工具。最近开始探索和学习 Pulumi,这是一个让开发者和团队使用熟悉的编程语言创建、部署和管理云资源的基础设施即代码平台。在周末阅读中,遇到了一个关于开源平台 Formae 的新公告。
基础设施即代码的挑战与 Formae 的出现
- 基础设施即代码虽改变了云资源管理方式,但仍存在状态文件损坏、漂移检测复杂、现有基础设施编码痛苦等问题。Formae 是 2025 年 10 月由 Platform Engineering Labs 推出的开源平台,利用 Apple 的 PKL 配置语言,以无状态、自动发现的方式应对这些挑战。
PKL:基础介绍
- 什么是 PKL:PKL 是 Apple 于 2024 年初开源的用于生成配置的编程语言,结合了声明式配置与静态类型编程语言的表达性和安全性,不同于 JSON 或 YAML 等静态格式。
- 基本 PKL 语法:使用简单的键值结构,可通过
-f选项生成不同输出格式,如 JSON。 PKL 的独特之处:
- 类型安全与验证:具有丰富的类型和验证系统,可在部署前捕获配置错误。
- 可编程性:支持类、函数、条件和循环等编程特性,面向配置管理。
- 多格式输出:可生成 JSON、YAML 等多种格式输出,适用于现有工具链。
- 代码生成:可自动生成流行编程语言的配置代码,创建类型安全的绑定。
- 优秀的 IDE 支持:通过插件和扩展提供实时验证、文档访问和指导。
- PKL 的设计哲学:基于键值结构,直观定义配置设置,能处理简单和复杂数据结构,解决配置文件从简单到复杂的维护问题。
PKL 工作流程:从开发到部署的处理过程。
Formae:重新思考基础设施即代码
- 核心架构:完全以代码实现基础设施,无需状态文件,通过“Agent + Metastructure”模型自动发现和编码现有基础设施。
核心原则:
- 代码作为单一真相来源:在代码中实现基础设施,无需维护二级工件。
- 自动发现和编码:自动发现和编码现有基础设施,无论其创建方式如何。
- 构建用于共存:可与其他 IaC 和基础设施管理工具共存。
- Metastructure 概念:将基础设施配置与操作逻辑结合,实现实时监控和同步。
- 双操作模式:包括 reconcile 和 patch 模式,满足不同操作场景。
传统与现代 IaC 方法对比
- Terraform(HCL)方法:需要显式状态配置,有初始化、计划、应用等流程,需手动导入现有资源。
- Formae(PKL)方法:无需状态配置,自动发现现有资源,通过特定语法定义和应用资源。
平台比较:从语言、状态管理、许可证、云支持等方面对 Terraform、OpenTofu、Formae、Pulumi、CloudFormation、Bicep、Crossplane 进行快速比较。
实际应用案例
- 棕地环境:Formae 可消除痛苦的导入过程,自动发现和管理现有 AWS 资源。
- 多环境管理:利用属性进行环境特定配置,轻松部署不同环境。
- 团队工作流程:核心平台工程师管理主基础设施代码,其他工程师通过 patch 模式进行小范围安全更改。
选择指南:根据不同需求选择合适的工具,如 Terraform/OpenTofu 用于最大的提供商覆盖和标准技能,Formae 用于消除状态复杂性等,Pulumi 用于通用语言和基础设施-应用集成等。
结论:Formae 和 PKL 是近十年基础设施即代码工具的重大创新,有望解决现有工具的局限性,对平台工程团队有重要意义。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。