Pulumi - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Pulumi

Pulumi 是一个 IaC 平台,并不是专门为之设计的。 GitOps但是,它可以有效地用于实施 GitOps 原则,特别是对于云基础设施和 Kubernetes 部署。

GitOps 支持

区域图 工具功能

IaC

Pulumi 允许你使用通用编程语言(例如 Python 和 Go)来定义基础架构。 TypeScript这种基于代码的方法符合对版本化、声明性配置的 GitOps 重视。

Git 是唯一的真相来源

Pulumi 中的基础设施代码可以存储在 Git 存储库中并进行版本控制。这可确保 Git 充当基础架构定义的单一事实来源。

声明式期望状态

尽管 Pulumi 使用编程语言,但它仍然以声明方式描述了所需的基础设施状态。该代码定义了基础架构应该是什么样子,而不是创建它的 step-by-step过程。

自动同步

Pulumi 可以与 CI/CD 管道集成,以便在 Git 中更新代码时自动应用更改。这样可以持续部署基础架构变更,这是一项关键 GitOps 原则。

多云和 Kubernetes 支持

Pulumi 支持各种云提供商和 Kubernetes,因此您可以在不同的环境中遵循 GitOps 实践。该工具支持跨不同平台对资源进行一致的管理。

状态管理

Pulumi 管理基础设施的状态,可以远程安全地存储。这种状态管理对于 GitOps 实践至关重要,它可以确保基础架构的定义状态与实际状态之间的一致性。

漂移检测和对账

Pulumi 可以检测所需状态(在代码中)和基础设施的实际状态之间的差异。它按照持续和解 GitOps 的原则调和这些分歧。

政策即代码

您可以使用 Pulumi CrossGuard 将策略定义为代码并强制执行。这样可以对合规性和安全策略进行版本控制 GitOps式的管理。

密钥管理

Pulumi 提供了安全的方式来管理基础设施代码中的敏感信息。它支持与外部机密管理系统的集成,这对于 GitOps安全实践至关重要。

模块化和可重复使用的组件

Pulumi 支持创建可重复使用的组件和模块。这种模块化符合管理复杂的多环境部署的 GitOps 实践。

预览和计划

Pulumi 提供了在应用更改之前对其进行预览的功能。这支持对基础设施进行安全、可预测的变更 GitOps 的原则。

回滚和历史记录

Pulumi 保留了部署历史并支持回滚到以前的状态。这符合可追溯性和可逆性 GitOps 原则。

基础设施的持续交付

Pulumi 可以集成到 CI/CD 管道中,以持续交付基础设施变更。它支持基础设施代码的自动测试和验证。

RBAC 和访问控制

Pulumi 提供基于角色的访问控制,用于管理谁可以更改基础架构。这支持 GitOps安全和治理实践。

可观察性和日志

Pulumi 为基础设施变更提供日志和监控功能。这些功能支持 GitOps 实践的可观察性方面。

与其他工具集成

Pulumi 可以与云端的各种工具集成。这种灵活性可以实现全面 GitOps的工作流程。

环境管理

Pulumi 支持使用具有不同配置的相同代码库来管理多个环境(开发、暂存、生产)。这符合一致的多环境管理 GitOps 实践。

依赖关系管理

Pulumi 处理资源之间的依赖关系,并确保操作顺序正确。这对于涉及相互依赖组件的复杂 GitOps 部署至关重要。

自定义资源提供者

Pulumi 允许您创建自定义提供商来管理任何 API 驱动的服务。这将 GitOps 实践扩展到标准云产品之外的各种资源。

协作功能

Pulumi 通过共享状态和访问控制支持团队协作。这简化了团队环境中的 GitOps 工作流程。

通过使用这些 Pulumi 功能,组织可以对其基础设施实施 GitOps 实践,尤其是在他们需要精细控制或复杂逻辑,或者想要在单一、一致的框架内管理各种云和本地资源的场景中。

Pulumi 的方法 GitOps 是独一无二的,因为它在遵守原则的同时,将通用编程语言的强大功能和灵活性带到了基础设施管理中。 GitOps 对于喜欢使用熟悉的编程语言并希望将软件工程最佳实践应用于基础设施管理的团队来说,这可能特别有利。

Pulumi的主要区别 GitOps 在于它使用标准编程语言来定义基础架构。传统 GitOps 工具通常使用 YAML 或特定领域的语言,而 Pulumi 允许更复杂的逻辑、更好的代码重用以及更轻松地与现有开发工作流程集成。

有关更多信息,请参阅 Pulumi 文档