Terraform & Pulumi & Crossplane 对比介绍

关于 IaC IaC 的历史 2000 年之后,随着 IT 技术发展,用户的需求越来越复杂,软件系统以及基础设施也变的越来越复杂。最早的运维都是手工式的,面临着几个问题: 交互式变更所引入的人的因素太大,导致了变更的不可控性 基础设施变化越来越快,手工操作成本高且效率低 交互式变更难以管控,且无法实现版本控制 IaC 就是在这个时期出现的想要解决这些问题的概念,维基百科定义的 IaC 指通过 machine-readable 的定义文件,而不是物理硬件配置或交互式配置工具来管理和配置计算机数据中心的过程。该过程管理的 IT 基础设施包括物理设备(如 Bare-metal 或 VM),以及相关的配置资源。定义文件可能在版本控制系统 VCS 中,文件中代码可能使用脚本或者声明式定义,但IaC 通常使用声明式方法管理基础设施。 IaC 有几个核心特征: 最终产物为 machine-readable 的文件,可以是脚本、声明式代码或者配置文件。 基于最终产物,可以利用 VCS(Git、SVN) 实现版本管理。 利用 CI/CD 系统(如 Jenkins、GitLab CI)实现持续集成/持续交付。 基于同样的定义文件,最终表现出来的行为是一致且幂等的。 这个时期出现了一些 IaC 工具,典型的如 Puppet、Chef、Ansible,实际上这些工具,可能设计上各有所取舍(比如 Pull/Push 模型的取舍),但是其核心的特征不会变化: 框架内部提供了常见的比如 SSH 链接管理,多机并行执行,auto retry 等功能。 基于上面描述的这一套基础功能,提供了一套 DSL 封装。让开发者更专注于 IaC 的逻辑,而非基础层面的细节。 其开源开放,并形成了一套完善的插件机制。社区可以基于这一套提供更丰富的生态。比如 SDN 社区基于 Ansible 提供了各种交换机的 playbook;Ansible 官方提供的 AWS playbook 等。 云上资源编排 2006 年 8 月 Amazon 正式发布了 EC2 服务,从这时整个基础设施开始快步向 Cloud 时代迈进。截止目前,各家云厂商提供了各种各样的服务,经过十多年的演进,诞生出了诸如 IaaS,PaaS,DaaS,FaaS 等等各种各样的服务模式。这些服务模式,让我们的基础设施的构建,变得更加的简单,更加的快速。但是这些服务模式,也带来了一些问题:...

2023-06-11 · 6 min · 1249 words · zhenran

Pulumi 工作运行原理

简介 Pulumi 是一个基础设施即代码(IaC,Infrastructure as Code)平台,支持使用如 Go、Java、Python、JavaScript、C# 等常见编程语言及相关工具,以实现云基础设施的构建、部署和管理。 使用及基本结构 基本概念 Project:包含 Pulumi.yaml 配置文件的目录。可以通过 pulumi new 使用各个语言的模板创建新的 project。 Stack:每个 Pulumi 程序都部署到一个 Stack。Stack 是 Pulumi 程序的一个相互隔离、可独立配置的实例,Stack 通常用于表示不同的开发阶段(如 dev、staging、production)或功能分支(如 feature-x-dev)。一个 Project 下可以有多个 Stack,当使用 pulumi new 创建 project 时,默认会创建一个 dev Stack。 Program:Project 中包含的资源编排代码以及运行程序的元数据信息。在 project 目录中执行pulumi up命令,pulumi 会创建一个隔离、可配置的 stack 实例,Stack 类似在测试和线上应用程序使用的不同部署环境。 示例 安装 pulumi 插件 brew install pulumi/tap/pulumi 初始化 project,第一次使用会要求登陆 Pulumi Cloud(状态等元数据默认存储在 Pulumi Cloud) mkdir pulumi-example && cd pulumi-example pulumi new go 执行完成后,pulumi 会创建一个 pulumi-example project,同时默认创建一个名为 dev的 stack。...

2023-05-26 · 2 min · 407 words · zhenran