
# 使用Pulumi自动化部署应用
[Pulumi](https://www.pulumi.com/docs/)是一款基础设施即代码（IaC）自动化工具，依赖Terraform构建。支持使用主流编程语言Python、TypeScript、C#和Go来完成云基础设施的构建、部署与全生命周期管理。
本文介绍使用Pulumi部署应用的流程，并通过一个具体的示例演示该过程。
#### 准备工作
- 创建一个CCE集群，并确保节点已绑定弹性公网IP（EIP），用于下载镜像和外部访问。
- 准备一台ECS服务器，绑定EIP并配置kubectl连接集群，详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
 
#### 安装Pulumi
1. 登录ECS服务器。
2. 通过以下命令安装Pulumi，您也可以前往[Pulumi官网](https://www.pulumi.com/docs/install/)按照指示手动安装。
   
   ```
   curl -fsSL https://get.pulumi.com | sh
   ```
   
   
3. 通过以下命令查看Pulumi是否安装成功。 
   ```
   pulumi version
   ```
   
   
4. 前往[Pulumi官网](https://www.pulumi.com/docs/install/)注册Pulumi的账号。
5. 创建Pulumi的Access Token。 
   登录[Pulumi控制台](https://app.pulumi.com/)，单击用户头像，选择"Settings"。进入设置页，单击"Access Tokens" 菜单，单击"Create token" 按钮进行创建。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002630005752.png "点击放大")
   
   
6. 设置Pulumi Access Token环境变量。 
   ```
   export PULUMI_ACCESS_TOKEN=pul-xxxx
   ```
   
   
 
#### 使用Pulumi部署应用
1. 初始化Pulumi项目，以python语言为例。 
   ```
   mkdir pulumi-demo && cd pulumi-demo
   pulumi new kubernetes-python
   ```
   执行后交互式填写：
   - project name：项目名（如 pulumi-cce-demo）
   
   - description：项目描述
   
   - stack name：环境栈（默认 dev，区分开发 / 测试 / 生产环境）
   
   
   初始完成后自动生成核心文件：
   ```
   pulumi-demo/
   ├── Pulumi.yaml       # 项目元数据
   ├── Pulumi.dev.yaml   # dev 环境配置
   ├── __main__.py       # 基础设施主代码
   └── venv/             # Python 虚拟环境
   ```
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002630007718.png "点击放大")
   
   
2. 编写测试代码__main__.py，部署一个nginx应用。 
   ```
   """A Kubernetes Python Pulumi program"""
   import pulumi
   from pulumi_kubernetes.apps.v1 import Deployment
   app_labels = { "app": "nginx" }
   deployment = Deployment(
       "nginx",
       spec={
           "selector": { "match_labels": app_labels },
           "replicas": 1,
           "template": {
               "metadata": { "labels": app_labels },
               "spec": { "containers": [{ "name": "nginx", "image": "nginx" }] }
           },
       })
   pulumi.export("name", deployment.metadata["name"])
   ```
   
   
3. 在终端中，执行以下命令部署您的基础设施。 
   ```
   pulumi up
   ```
   回显将要创建的资源，输入yes确认。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002630009788.png "点击放大")
   
   
4. 查看部署是否成功。 
   ```
   kubectl get pod
   ```
   回显如下，部署成功。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002630169704.png "点击放大")
   
   
 
#### 常见问题
- 初始化Pulumi时安装依赖超时： ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002630009794.png "点击放大")
  可以将下载源替换为国内源。
  ```
  mkdir -p ~/.pip
  cat > ~/.pip/pip.conf <<EOF
  [global]
  index-url = https://xxx
  timeout = 120
  trusted-host = xxx
  EOF
  ```
  然后重新安装。
  ```
  pulumi install
  ```
  
 
