创建您的第一个 Pulumi 程序, pulumi new 命令创建一个新的 Pulumi 项目,其中包含一些基于指定云和语言的基本脚手架。
# 以自托管方式为例 :# 创建本地目录
mkdir pulumi-typescript && cd pulumi-typescript # 登录到本地目录
pulumi login file:///Users/daizhe/Desktop/myself/pulumi-typescript# 检查登录的用户
pulumi whoami -v
User: daizhe
Backend URL: file:///Users/daizhe/Desktop/myself/pulumi-typescript
warning: A new version of Pulumi is available. To upgrade from version '3.10.3' to '3.54.0', run$ brew upgrade pulumi
or visit https://pulumi.com/docs/reference/install/ for manual instructions and release notes.# Pulumi New Kubernetes Provider交互填写名称和项目描述
pulumi new kubernetes-typescript
This command will walk you through creating a new Pulumi project.
Enter a value or leave blank to accept the (default), and press <ENTER>.
Press ^C at any time to quit.
project name: (pulumi-typescript)
project description: (A minimal Kubernetes TypeScript Pulumi program)
Created project 'pulumi-typescript'
stack name: (dev)
Created stack 'dev'
Installing dependencies...
added 165 packages in 16s
npm notice
npm notice New major version of npm available! 8.13.0 -> 9.4.2
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.4.2
npm notice Run npm install -g npm@9.4.2 to update!
npm notice
Finished installing dependencies
Your new project is ready to go! ✨
To perform an initial deployment, run 'pulumi up'
warning: A new version of Pulumi is available. To upgrade from version '3.10.3' to '3.54.0', run$ brew upgrade pulumi
or visit https://pulumi.com/docs/reference/install/ for manual instructions and release notes.
4.3.4、查看新项目
Pulumi New Stack 生成的一些项目文件:
Pulumi.yaml 定义项目。
Pulumi.dev.yaml 包含我们初始化的堆栈的配置值。
index.ts 是定义堆栈资源的 Pulumi 程序。
Pulumi 程序创建一个 Nginx Pod部署并导出部署的名称;
import * as k8s from "@pulumi/kubernetes";
import * as kx from "@pulumi/kubernetesx";const appLabels = { app: "nginx" };
const deployment = new k8s.apps.v1.Deployment("nginx", {spec: {selector: { matchLabels: appLabels },replicas: 1,template: {metadata: { labels: appLabels },spec: { containers: [{ name: "nginx", image: "nginx" }] }}}
});
export const name = deployment.metadata.name;
4.3.5、部署Stack
# Set K8s Config
pulumi config set kubernetes:context arn:aws-cn:eks:cn-northwest-1:xxx:cluster/eks-cluster-pulumi# 部署 stack, Pulumi 确定创建堆栈所需的资源。首先,显示将要进行的更改的预览
pulumi up
Previewing update (dev):Type Name Plan+ pulumi:pulumi:Stack quickstart-dev create+ └─ kubernetes:apps:Deployment nginx createResources:+ 2 to createDo you want to perform this update? yes
Updating (dev):Type Name Status+ pulumi:pulumi:Stack quickstart-dev created+ └─ kubernetes:apps:Deployment nginx createdOutputs:name: "nginx-xw231xdt"Resources:+ 2 createdDuration: 11s
如若使用状态资源托管方式还可以看到如下实时资源变动
4.3.6、销毁Stack
若要销毁资源,请运行以下命令:
pulumi destroy# 系统将提示你确保确实要删除这些资源。
Previewing destroy (dev):Type Name Plan- pulumi:pulumi:Stack quickstart-dev delete- ├─ kubernetes:core:Service nginx delete- └─ kubernetes:apps:Deployment nginx deleteOutputs:- ip: "10.105.234.140"Resources:- 3 to deleteDo you want to perform this destroy? yes
Destroying (dev):Type Name Status- pulumi:pulumi:Stack quickstart-dev deleted- ├─ kubernetes:core:Service nginx deleted- └─ kubernetes:apps:Deployment nginx deletedOutputs:- ip: "10.105.234.140"Resources:- 3 deletedDuration: 1s