基础设施即代码可以为CI/CD做些什么?

使用“基础设施即代码”(IaC)通过命令行在各种环境中一致、高效地提供和部署基础设施,非常适合CI/CD。通过在整个生产线中应用IaC,组织获得了生产力和资源节约方面的收益。

然而,并非所有的IaC解决方案都是如此。潜在的IaC用户应该仔细检查特定的解决方案是否以及如何真正改善CI/CD流程。

IaC解决方案应为CI/CD提供:

——自动化资源调配。

——不可变的版本控制,因此使用单个存储库来创建和删除基础设施。

——测试整个CI/CD的能力。

——设置策略的能力。

——管理安全的能力。

企业管理协会(EMA)分析师Torsten Volk表示,IaC提供的CI/CD的不可变性“是王道”。他说,之所以获得这种地位,是因为它确保了一致性、清晰的审计跟踪以便于回滚、对安全性和合规性的统一控制以及整体效率,

近日的PulumiUP虚拟会议(Pulumi的年度用户会议)期间,与会者讨论了适当的IaC解决方案应该提供什么样的CI/CD以及为什么。

程序设计语言的灵活选择

Pulumi对IaC的做法似乎有助于其采用率的快速增长。根据EMA的数据,尽管其竞争对手Terraform的市场份额是Pulumi的近10倍,但Pulumi市场份额的增长速度约为Terraform的两到三倍。

Pulumi提供的编程语言的灵活性是关键。例如,不幸的是,今天许多用户仅限于将YAML用于他们的部署,而实际上开发人员不应该局限于一种语言。

另一方面,Pulumi声称支持所有主要的编程语言,从而提供了更多的选择自由和更直接的方式来为CI/CD和一般提供基础设施。

Pulumi的首席执行官兼创始人Joe Duffy在主题演讲中表示:“Pulumi就是用你最喜欢的语言来实现IaC——熟悉IaC的人可能有使用领域特定语言甚至标记语言(如YAML或JSON)的其他工具的经验,而且这些工具通常很适合入门。但当扩展到现代云架构时,裂痕开始显现。”

“所以,Pulumi的方法实际上是采取一种不同的方法:用上你最喜欢的编程语言,无论是JavaScript还是TypeScript、Python、Go。Pulumi是多语言的核心。这意味着你可以获得所有丰富的编程语言来表达你的IaC。”

Duffy说,IaC的采用并不意味着你的组织必须放弃使用GitHub或GitLab来处理拉取请求,以及与CI/CD集成的请求。

“如果你已经在为GitLab管道使用GitHub操作进行CI/CD,你可以利用它从仅仅的应用程序交付转变为基础设施交付。当然,还可以与Docker和Okta等身份提供商集成。这样做的最终结果是,云从繁重的工作变成了生产力——你可以在更短的时间内完成更多的工作,而且也更有趣。”

Duffy说,生产力的提高可能“实际上是一个数量级”,并补充说,Pulumi可以用不到15行就在AWS上部署一个Elastic Kubernetes Service集群。

“你会觉得你的编码速度快得多,通过更紧密的内部开发循环可以完成更多的工作。”

用于扩展的IaC

此外,Pulumi旨在使公司能够扩大运维规模。虽然开始使用Pulumi很容易,但其想法是能够支持跨不同环境部署的CI/CD团队。

在这种情况下,IaC应该包括确保跨多云或不同环境的合规性、标准化和安全性等任务。它应该作为一个统一的接口,方便管理,而不需要多个工具或接口。

“也许你有一个开发环境,接下来你会考虑投入生产。“这就是你开始考虑标准化的地方。一个、两个或三个从业者的基础设施即代码与在整个团队中采用基础设施即代码是非常不同的。”

Starburst Data高级首席软件工程师Matt Stephenson表示,在Starburst数据公司,Pulumi主要用于执行复杂的CI/CD工作流。

Starburst支持其部署所需的基础设施复杂而庞大,通过不同的云提供商覆盖了20个不同的云区域。Stephenson说,Pulumi在CI/CD工作流程中帮助支持了非常复杂的回滚过程。

他说:“我们希望基础设施无处不在,触手可及。希望所有工程师都能放心地进行所需的更改,为产品更改提供所需的基础设施。”

人工智能组件

最近,人工智能已经展示了它如何在不久的将来使用IaC进行CI/CD时发挥关键作用。

Volk表示:“人工智能集成让开发人员可以选择他们喜欢的开发语言,并允许他们用简单的英语定义目标基础设施环境,然后使用[Chat]GPT自动生成维护环境所需的代码。”

通过Pulumi Insights,Pulumi充分利用了ChatGPT功能。在Pulumi负责营销的副总裁Aaron Kao展示了用基本会话英语向Pulumi Insights发出的命令如何允许用户在复杂环境中查询和获取有关基础设施的可操作信息,例如部署在多云环境中的Kubernetes集群。

Kao展示了如何用简单的英语输入请求,例如“我想要一个S3存储桶、一个API网关和一个Lambda功能。我想建立一个动态的无服务器网站。但如果你不知道,只需给我一个CDN后面的静态网站即可。”

结果是“它真的会吐出一个能做到80-90%的程序。”

毫无疑问,在不久的将来,人工智能将对CI/CD和IaC产生强大的影响。因此,面向开发人员的IaC工具的外观和感觉应该会大不相同。

Pulumi的首席技术官Luke Hoban表示:“这些系统与我们过去习惯的不同,构建和测试的方式也大不相同。我一直想看看这是如何发展的,以及如何学习一套新的技能来构建不同类型的软件。”

请使用浏览器的分享功能分享到微信等