读者朋友们,大家好!在这篇博客中,我们将看看如何用Pulumi部署一个Nginx Web服务器。在你开始使用Pulumi之前,你应该熟悉Kubernetes的工作负载。
什么是Pulumi?
Pulumi是一个开源的基础设施即代码工具,通过利用最流行的编程语言,简化了云资源的配置和管理。
Pulumi成立于2017年,从根本上改变了DevOps团队对待基础设施即代码概念的方式。Pulumi不再依赖特定领域的语言,而是使组织能够使用真正的编程语言来提供和退出云原生基础设施。
什么是基础设施即代码(IaC)?
- 基础设施即代码(IaC)是使用描述性的编码语言来自动化资源配置和管理方案的过程。
- 在基础设施即代码(IaC)之前,系统管理员必须手动配置、部署和管理服务器资源。在他们部署应用程序之前,他们需要配置裸机。由于手动管理基础设施,出现了许多问题。它成本高,速度慢,难以扩展,而且容易出现人为错误。
- 云计算的引入简化了虚拟化环境的部署,但管理员仍然需要手动部署环境。他们需要访问云供应商基于网络的仪表板,点击按钮来部署所需的服务器配置。
它是如何工作的?
由于其多语言和多云功能,Pulumi已成为DevOps环境中首选的基础设施即代码工具。它为DevOps工程师提供了一种熟悉的管理资源的方式。
这是由Pulumi的云对象模型和评估运行时完成的。它接受你的任何语言的程序,确定你要管理的云资源,并执行它。所有这些都是可能的,因为它在本质上是语言中立和云中立的。


Pulumi系统由三部分组成。
- **语言主机:**您的Pulumi程序由语言主机运行,以创建一个环境并向部署引擎注册资源。
- **部署引擎:**它执行大量的检查和计算,以确定是否应该创建、更新、删除或复制资源。
- 资源提供者。Pulumi根据你的语言和云提供商的偏好,在后台下载软件包和插件。
安装Pulumi CLI。
curl -fsSL https://get.pulumi.com | sh
安装Pulumi后,通过运行pulumi CLI来验证一切工作正常。
开始使用Kubernetes
为了快速演示Pulumi如何在Kubernetes上部署基础设施,请按照以下步骤,轻松部署NGINX网络服务器
创建一个新项目。
现在你已经建立了你的环境,让我们来创建你的第一个Pulumi程序。
mkdir demo && cd demo && pulumi new kubernetes-python


最初,你会被要求提供一个项目名称和描述。稍后,你将被要求提供一个堆栈的名称。
命令完成后,项目和堆栈将被准备好。
部署堆栈。
这个命令指示Pulumi确定创建堆栈所需的资源。首先,显示了即将发生的变化的预览
$ pulumi up
Previewing update (dev)
Type Name Plan
+ pulumi:pulumi:Stack nginx-project-dev create
+ └─ kubernetes:apps/v1:Deployment nginx create
Outputs:
name: "nginx-fc09142e"
Resources:
+ 2 to create
Do you want to perform this update?
> yes
> no
选择yes ,将在Kubernetes中创建资源。
Do you want to perform this update? yes
Updating (dev)
Type Name Status
+ pulumi:pulumi:Stack nginx-project-dev created
+ └─ kubernetes:apps/v1:Deployment nginx created
Outputs:
name: "nginx-7076e6df"
Resources:
+ 2 created
Duration: 10s


我们导出的部署的名称被显示为堆栈输出。
销毁堆栈。
现在我们已经看到了如何将变化部署到我们的方案中,让我们去看看如何清理和解构构成我们堆栈的资源。
执行下面的命令来销毁资源。
$ pulumi destroy
要删除堆栈,运行。
$ pulumi stack rm dev
这将从Pulumi服务中完全删除堆栈,以及其所有的更新历史。