---
title: "Trusted Runtime 部署指南"
language: "zh"
url: "https://docs.testany.io/zh/docs/deployment-guide/"
markdown_url: "https://docs.testany.io/zh/docs/deployment-guide.md"
translation: "https://docs.testany.io/en/docs/deployment-guide.md"
last_updated: "2026-04-20T15:53:41+08:00"
---

# Trusted Runtime 部署指南

> **警告**
>
> **📌 本指南适用对象**
>
> 本指南适用于需要在**自己管理的云环境**中部署 **Trusted Runtime** 的企业客户。
>
> **✅ 您需要阅读本指南，如果：**
> - 您的测试目标位于企业防火墙或 VPN 内网
> - 您有合规要求（数据不出境、私有化部署）
> - 您需要在自己的云环境中运行自定义测试环境
>
> **❌ 如果您使用 Testany 托管的 Runtime，无需阅读本指南。**
>
> → 直接跳转：[测试用例管理](https://docs.testany.io/zh/docs/managing-test-case.md) | [创建第一个测试](https://docs.testany.io/zh/docs/test-case-writing-guidelines-and-examples-python-u.md)
>
> 不确定？[联系我们](https://testany.io/cn/contact?type=support&source=docs)


---

## 概述

本文档描述如何在云平台上部署 Testany Trusted Runtime。

### 下载部署包

开始部署前，请先下载部署包：

**[下载 AWS 部署包](/downloads/testany-tr-aws.zip)**

部署脚本会自动完成以下任务：

1. 部署云基础设施（VPC、Kubernetes 集群、数据库、缓存、对象存储）
2. 配置 kubectl 连接集群
3. 渲染并部署 Helm Charts
4. 注册到 Testany SaaS 平台
5. 配置 Ingress 和 TLS 证书

**预计部署时间**: 30-45 分钟（不含 DNS 配置等待时间）

---

## 前置条件

### 工具依赖

在开始部署前，请确保以下工具已安装并可用：

#### 核心工具（必需）

| 工具 | 最低版本 | 说明 | 验证命令 |
| --- | --- | --- | --- |
| AWS CLI | 2.x | AWS 资源管理 | `aws --version` |
| Terraform | 1.5+ | 基础设施即代码 | `terraform --version` |
| kubectl | 1.28+ | Kubernetes 集群管理 | `kubectl version --client` |
| Helm | 3.x | Kubernetes 包管理器 | `helm version` |
| jq | 1.6+ | JSON 数据处理 | `jq --version` |
| gomplate | 3.x | 模板渲染工具 (macOS) | `gomplate --version` |
| gotemplate | - | 模板渲染工具 (Linux) | `gotemplate --version` |

#### 部署脚本依赖（必需）

| 工具 | 最低版本 | 说明 | 验证命令 |
| --- | --- | --- | --- |
| grpcurl | 1.8+ | gRPC 命令行客户端，用于 Bootstrap 注册 | `grpcurl --version` |
| openssl | 1.1+ | 证书和密钥生成 | `openssl version` |
| kapp | 0.50+ | Carvel 工具，用于 Kubernetes 资源部署 | `kapp --version` |

### 云平台操作权限 - AWS

确保 AWS 凭证已配置，且具有以下权限：

- **VPC**: 创建/管理 VPC、子网、路由表、NAT Gateway、Internet Gateway
- **EKS**: 创建/管理 EKS 集群、节点组
- **RDS**: 创建/管理 RDS 实例
- **ElastiCache**: 创建/管理 ElastiCache 集群
- **S3**: 创建/管理 S3 存储桶
- **IAM**: 创建 EKS 所需的 IAM 角色和策略
- **EC2**: 创建安全组、管理 EC2 资源

<!-- TODO 云平台操作权限 - Azure -->

### Testany 提供的凭证

在部署前，请联系 Testany 支持团队获取以下信息：

| 凭证项 | 说明 | 示例 |
| --- | --- | --- |
| ECR Registry URL | 容器镜像仓库地址 | `123456789012.dkr.ecr.cn-northwest-1.amazonaws.com.cn/testany` |
| Access Key ID | Secrets Manager 访问密钥 | `AKIAXXXXXXXXXXXXXXXXXX` |
| Secret Access Key | Secrets Manager 密钥 | `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx` |
| Secrets Region | Secrets Manager 区域 | `cn-north-1` (中国) / `us-west-2` (海外) |
| Secrets Name | Secret 名称 | `testany/customers/YOUR_ACCOUNT_ID/appsecrets` |
| SaaS Endpoint | SaaS 平台地址 | `YOUR_SAAS_ENDPOINT` |

---

## 配置

### 配置 Terraform 变量

```bash
# 进入 Terraform 目录
cd aws/terraform

# 复制示例配置文件
cp terraform.tfvars.example terraform.tfvars

# 编辑配置文件
vi terraform.tfvars
```

### 必须修改的配置项

```hcl
# AWS 区域
aws_region = "cn-northwest-1"

# 项目名称（用于所有资源命名）
project_name = "testany"

# === Testany 提供的凭证（必填）===
ecr_registry              = "123456789012.dkr.ecr.cn-northwest-1.amazonaws.com.cn/testany"
testany_secrets_region    = "cn-northwest-1"
testany_secrets_name      = "testany/customers/YOUR_CUSTOMER_ID/appsecrets"
testany_saas_endpoint     = "tr.testany.com.cn"
```


> **警告**
>
> 敏感凭证（Access Key ID 和 Secret Access Key）请通过环境变量设置，不要写入配置文件。


---

## 安装

### AWS

#### 步骤 1: 设置 AWS Profile（如果需要）

```bash
export AWS_PROFILE=your-profile-name
```

#### 步骤 2: 设置 Testany 凭证环境变量

```bash
export TF_VAR_testany_access_key_id="AKIAXXXXXXXXXXXXXXXXXX"
export TF_VAR_testany_secret_access_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

#### 步骤 3: 执行安装脚本

```bash
cd scripts
bash install.sh
```

![安装脚本执行](https://docs.testany.io/docs/images/zh/deployment-install-script.png)

脚本会自动执行以下步骤：

1. **[自动]** 检查前置条件
2. **[自动]** 部署 AWS 基础设施（约 15-20 分钟）
3. **[自动]** 配置 kubectl
4. **[自动]** 渲染 Helm 模板
5. **[自动]** 部署基础组件
6. **[需要用户操作]** Bootstrap 注册
7. **[自动]** 部署应用服务
8. **[自动]** 配置 Ingress
9. **[等待用户]** 创建 TLS 证书

#### Bootstrap 注册流程

当脚本执行到 Bootstrap 注册步骤时，会暂停等待用户确认。

![Bootstrap 等待确认](https://docs.testany.io/docs/images/zh/deployment-bootstrap-prompt.png)


> **说明**
>
> 注册码有效期为 5 分钟，请确保 Testany 全局管理员已准备好后再继续。


1. **获取注册码**: 按 Enter 后，命令行会显示注册码：

![注册码显示](https://docs.testany.io/docs/images/zh/deployment-registration-code.png)

2. **登录 SaaS 管理平台**: 使用全局管理员账号登录 Testany SaaS 管理界面

3. **输入注册码**: 在 SaaS 管理界面找到 Runtime 注册入口，输入命令行显示的注册码

![输入注册码](https://docs.testany.io/docs/images/zh/deployment-registration-fillcode.png)

4. **设置 Runtime 名称**: 为这个新的 Runtime 实例设置一个易于识别的名称

5. **完成注册**: 管理员在 SaaS 平台确认后，命令行脚本会自动继续执行


> **提示**
>
> 如果注册码超时，可以重新运行 `bash install.sh bootstrap` 获取新的注册码。


#### DNS 配置

脚本执行到证书创建步骤时会暂停，提示配置 DNS。

![DNS 配置提示](https://docs.testany.io/docs/images/zh/deployment-dns-prompt.png)

1. 获取 Ingress 的 Load Balancer 地址：
   ```bash
   kubectl get ingress -n testany-app
   ```

2. 联系 Testany 支持团队，提供 Load Balancer 地址，完成 DNS 配置

3. 验证 DNS 解析：
   ```bash
   nslookup your-domain.testany.com.cn
   ```

4. DNS 配置完成后，按 Enter 继续执行脚本，创建 TLS 证书

![证书创建完成](https://docs.testany.io/docs/images/zh/deployment-cert-complete.png)

<!-- TODO ### Azure 部署指南 -->

---

## 安装验证

完成安装后，通过以下步骤验证部署是否成功。

### AWS Secrets 数据准备

1. 获取 Secrets Manager 服务端点地址：

   | 区域 | 端点地址 |
   |------|----------|
   | AWS Global | 参考 [AWS 文档](https://docs.aws.amazon.com/general/latest/gr/asm.html) |
   | AWS China (宁夏) | `secretsmanager.cn-northwest-1.amazonaws.com.cn` |
   | AWS China (北京) | `secretsmanager.cn-north-1.amazonaws.com.cn` |

2. 创建一个 Secret。在 Secrets Manager 管理页面，点击 "Store a new secret"：

   ![创建 Secret](https://docs.testany.io/docs/images/zh/deployment-secretsmanager-1.png)

3. 选中 "Other type of secret"，在 Plaintext 里输入 `123`（可以输入任意内容），点击 "Next"：

   ![填写 Secret 值](https://docs.testany.io/docs/images/zh/deployment-secretsmanager-2.png)

4. 在 Secret name 中输入 `testany-env-secret-test-YOUR_ACCOUNT_ID`，点击 "Next"：

   ![填写 Secret Name](https://docs.testany.io/docs/images/zh/deployment-secretsmanager-3.png)

5. 保持默认配置，点击 "Next"：

   ![配置轮换](https://docs.testany.io/docs/images/zh/deployment-secretsmanager-4.png)

6. 确认信息无误，点击 "Store"：

   ![存储 Secret](https://docs.testany.io/docs/images/zh/deployment-secretsmanager-5.png)

<!-- ### Azure Secrets 数据准备

1. 访问 Azure Key Vault，获取 Key Vault 的访问地址：

![Key Vault 地址](https://docs.testany.io/docs/images/zh/deployment-keyvault-1.png)

2. 创建一个 secret。在 Azure Key Vault 管理页面，展开 "Objects"，点击 "Secrets"，在右侧页面中，点击 "Generate/Import"：

![创建 Secret](https://docs.testany.io/docs/images/zh/deployment-keyvault-2.png)

3. 在 Name 中输入 `testany-env-secret-test`，在 Secret value 中输入 `123`（可以输入任意内容），点击 "Create"：

![填写 Secret 信息](https://docs.testany.io/docs/images/zh/deployment-keyvault-3.png)

4. 确保 Key Vault 的 Access control (IAM) 中，已将 **Key Vault Secrets User** 权限授予 Kubernetes 的 agentpool：

![IAM 权限配置](https://docs.testany.io/docs/images/zh/deployment-keyvault-4.png) -->

### 方式一：界面操作

适合需要详细了解配置过程的用户。

#### 1. 创建 Credential Safe 及 Credential


> **说明**
>
> 该步骤需要 Workspace Admin 权限，请联系团队的 Workspace Admin 协助添加。


1. 访问 Workspace Settings 页面，点击左下角 "Workspace Settings"，在右侧页面中，点击 "Credential" 标签，选择新注册的 Runtime，点击 "Add credential safe" 按钮：

![添加 Credential Safe](https://docs.testany.io/docs/images/zh/deployment-credential-1.png)

2. 填写 Credential Safe 信息：
   - **Instance name**: 设置一个名称
   - **Instance URL**: Secrets 管理的访问地址（根据你的云部署环境，填写 Key Vault 的访问地址或 AWS Secrets Manager 的访问地址）

![填写 Credential Safe 信息](https://docs.testany.io/docs/images/zh/deployment-credential-2.png)

3. 创建完成后，展开 Credential Safe：

![展开 Credential Safe](https://docs.testany.io/docs/images/zh/deployment-credential-3.png)

4. 点击 "+" 添加 Credential（如展开后未看到 "+"，刷新一下当前页面）：

![添加 Credential](https://docs.testany.io/docs/images/zh/deployment-credential-4.png)

5. 填写 Credential 信息：
   - **Credential name**: 设置一个名称
   - **Type**: 选择对应的类型
   - **Key**: Secrets 管理中的 secret 名称（如 `testany-env-secret-test`）

![填写 Credential 信息](https://docs.testany.io/docs/images/zh/deployment-credential-5.png)

6. 保存后记录以下信息（后续配置 Case 时会用到）：
   - Credential Safe Key（如 `WKS-CS-0001`）
   - Credential Key（如 `testany-env-secret-test`）

![Credential 保存完成](https://docs.testany.io/docs/images/zh/deployment-credential-6.png)

#### 2. 创建 Case

**Case 1: 测试环境变量传递**

1. 登录 Testany，选择 "Test Case Library"，点击 "Register Test Case"：

![注册 Test Case](https://docs.testany.io/docs/images/zh/deployment-case1-1.png)

2. 输入 Case 信息：
   - Name: `testany-deploy-check-case1`
   - Runtime: 选择新注册的 Runtime

   点击 "Register & Next"：

![填写 Case 信息](https://docs.testany.io/docs/images/zh/deployment-case1-2.png)

3. 在跳转的页面中，点击 "JSON" 标签页：

![切换到 JSON 视图](https://docs.testany.io/docs/images/zh/deployment-case1-3.png)

4. 将环境变量配置贴到编辑框中，并点击 "Save Changes"：

```json
[
  {"name": "URL", "value": "www.baidu.com", "type": "env"},
  {"name": "RELAY_NEW_URL", "value": "www.bing.com", "type": "env"},
  {"name": "AAA", "value": "-", "type": "output"},
  {"name": "NEW_URL", "value": "-", "type": "output"}
]
```

![保存环境变量](https://docs.testany.io/docs/images/zh/deployment-case1-4.png)

5. 准备代码文件，将 `testany-env-check-case1-postman.json` 压缩为 zip 文件：

![准备代码文件](https://docs.testany.io/docs/images/zh/deployment-case1-5.png)

6. 点击 "Upload" 图标上传代码：

![点击上传](https://docs.testany.io/docs/images/zh/deployment-case1-6.png)

7. 选择压缩文件完成上传：

![选择文件](https://docs.testany.io/docs/images/zh/deployment-case1-7.png)

8. 等待上传完毕：

![上传完成](https://docs.testany.io/docs/images/zh/deployment-case1-8.png)

9. 选择 Executor 为 `postman`：

![选择 Executor](https://docs.testany.io/docs/images/zh/deployment-case1-9.png)

10. 设置 Trigger path 为 `testany-env-check-case1-postman.json`：

![设置 Trigger path](https://docs.testany.io/docs/images/zh/deployment-case1-10.png)

**Case 2: 测试 Secrets 获取**

1. 注册新 Case，点击 "Register Test Case"：

![注册 Case 2](https://docs.testany.io/docs/images/zh/deployment-case2-1.png)

2. 输入 Case 信息：
   - Name: `testany-deploy-check-case2`
   - Runtime: 选择新注册的 Runtime

![填写 Case 2 信息](https://docs.testany.io/docs/images/zh/deployment-case2-2.png)

3. 在跳转的页面中，点击 "JSON" 标签页：

![切换到 JSON 视图](https://docs.testany.io/docs/images/zh/deployment-case2-3.png)

4. 将环境变量配置贴到编辑框中：

```json
[
  {"name": "AAA", "value": "-", "type": "env"},
  {"name": "URL", "value": "-", "type": "env"},
  {"name": "SAFE_KEY", "value": "WKS-CS-0001", "type": "env"},
  {"name": "KEY", "value": "testany-env-secret-test", "type": "env"}
]
```

![保存环境变量](https://docs.testany.io/docs/images/zh/deployment-case2-4.png)

5. 切换到 Form 视图，修改 "SAFE_KEY" 的值为实际的 Credential Safe Key：

![编辑 SAFE_KEY](https://docs.testany.io/docs/images/zh/deployment-case2-5.png)

![保存 SAFE_KEY](https://docs.testany.io/docs/images/zh/deployment-case2-6.png)

6. 准备代码文件，将 `testany-env-check-case2-postman.json` 压缩为 zip 文件：

![准备代码文件](https://docs.testany.io/docs/images/zh/deployment-case2-7.png)

7. 点击 "Upload" 图标上传代码：

![上传代码](https://docs.testany.io/docs/images/zh/deployment-case2-8.png)

8. 选择压缩文件完成上传：

![选择文件](https://docs.testany.io/docs/images/zh/deployment-case2-9.png)

9. 等待上传完毕：

![上传完成](https://docs.testany.io/docs/images/zh/deployment-case2-10.png)

10. 选择 Executor 为 `postman`：

![选择 Executor](https://docs.testany.io/docs/images/zh/deployment-case2-11.png)

11. 设置 Trigger path 为 `testany-env-check-case2-postman.json`：

![设置 Trigger path](https://docs.testany.io/docs/images/zh/deployment-case2-12.png)

12. 配置凭证引用：在 Case 的 **Environment variables** 中新增一条 `Secret` 类型记录，然后选择创建好的 `Credential Safe` 和 `Credential`：

![绑定 Credential](https://docs.testany.io/docs/images/zh/deployment-case2-13.png)

13. Case 2 创建完毕，查看详情确认配置正确：

![Case 2 详情](https://docs.testany.io/docs/images/zh/deployment-case2-14.png)

#### 3. 创建 Pipeline

1. 切换到 Workspace 页面，点击 "+ Assemble pipeline"，输入 Pipeline 信息：
   - Name: `deploy-test-pipeline`
   - Description: `测试新部署 Runtime`

![创建 Pipeline](https://docs.testany.io/docs/images/zh/deployment-pipeline-1.png)

2. 点击展开按钮：

![展开 Pipeline](https://docs.testany.io/docs/images/zh/deployment-pipeline-2.png)

3. 选择 "YAML View"，配置 Pipeline 规则：

```yaml
kind: rule/v1.3
spec:
  rules:
    - run: 'CASE1_KEY'
    - run: 'CASE2_KEY'
      whenPassed: 'CASE1_KEY'
      relay:
        - key: AAA
          refKey: CASE1_KEY/AAA
          nonSecret: true
        - key: URL
          refKey: CASE1_KEY/NEW_URL
          nonSecret: true
```


> **备注**
>
> 将 `CASE1_KEY` 和 `CASE2_KEY` 替换为实际的 Case Key（8位字符）。



> **备注**
>
> 对于这里新建的 Pipeline，推荐使用 `rule/v1.3`。`rule/v1.2` 仅用于兼容历史 Pipeline。


![配置 Pipeline YAML](https://docs.testany.io/docs/images/zh/deployment-pipeline-3.png)

4. 刷新 Pipeline 页面，点击 "Trigger" 按钮执行 Pipeline：

![触发 Pipeline](https://docs.testany.io/docs/images/zh/deployment-pipeline-4.png)

#### 4. 查看执行结果

1. 查看 Pipeline 执行状态：

![执行状态](https://docs.testany.io/docs/images/zh/deployment-verify-1.png)

![执行完成](https://docs.testany.io/docs/images/zh/deployment-verify-2.png)

2. 点击 Case 2 的 "View log" 按钮查看执行日志：

![查看日志](https://docs.testany.io/docs/images/zh/deployment-verify-3.png)

3. 验证 Case 1 信息是否传递给 Case 2：
   - AAA 的值应显示为 `200`（HTTP 状态码）

![验证 AAA 值](https://docs.testany.io/docs/images/zh/deployment-verify-4.png)

   - URL 的值应为 `http://www.bing.com`

![验证 URL 值](https://docs.testany.io/docs/images/zh/deployment-verify-5.png)

4. 验证 Secrets 是否正确获取：
   - 返回 secret 的长度为 `3`（值 `123` 的长度）

![验证 Secret 长度](https://docs.testany.io/docs/images/zh/deployment-verify-6.png)

### 方式二：脚本操作

适合快速验证部署的用户。


> **说明**
>
> 该脚本需要 Testany Workspace Admin 权限。


#### 1. 定位脚本目录

验证脚本已包含在部署包中，位于 `deploy-checker` 目录：

```
deploy-checker
├── linux
│   ├── env.txt
│   └── register.sh
├── windows
│   ├── env.txt
│   └── register.ps1
├── requirements.txt
├── testany-env-check-case1-postman.json.zip
├── testany-env-check-case2-postman.json.zip
└── tr_deploy_check.py
```

#### 2. 配置环境变量

**Linux/macOS**:
```bash
export BASE_URL=YOUR_SAAS_URL
export RUNTIME_UUID=YOUR_RUNTIME_UUID
export WORKSPACE_KEY=AAA
export ACCESS_TOKEN=XXXXXXXXXXX
export KEY_VAULT_URL=https://xxx.vault.azure.cn
```

**Windows (PowerShell)**:
```powershell
$env:BASE_URL="YOUR_SAAS_URL"
$env:RUNTIME_UUID="YOUR_RUNTIME_UUID"
$env:WORKSPACE_KEY="AAA"
$env:ACCESS_TOKEN="XXXXXXXXXXX"
$env:KEY_VAULT_URL="https://xxx.vault.azure.cn"
```

#### 3. 执行脚本

**Linux/macOS**:
```bash
cd linux
bash register.sh
```

**Windows**:
```powershell
cd windows
.\register.ps1
```

执行完成后，控制台会输出：
```
********************************************************************************
All Related information:
Credential Safe Key: XXX-CS-XXXX
Credential Key: testany-env-secret-test
Case 1 Key: XXXXXXXX
Case 2 Key: XXXXXXXX
Pipeline Key: XXX-XXXXX
********************************************************************************
```

#### 4. 触发 Pipeline 验证

1. 在 Testany 界面找到新建的 Pipeline（命名规则：`runtime-<runtime名称>-deploy-check`），点击 "Trigger" 按钮：

![触发 Pipeline](https://docs.testany.io/docs/images/zh/deployment-script-verify-1.png)

2. 查看执行状态：

![执行状态](https://docs.testany.io/docs/images/zh/deployment-script-verify-2.png)

3. 等待执行完成：

![执行完成](https://docs.testany.io/docs/images/zh/deployment-script-verify-3.png)

4. 点击 Case 2 的 "View log" 按钮查看执行日志：

![查看日志](https://docs.testany.io/docs/images/zh/deployment-script-verify-4.png)

5. 验证 AAA 值为 `200`：

![验证 AAA](https://docs.testany.io/docs/images/zh/deployment-script-verify-5.png)

6. 验证 URL 值为 `http://www.bing.com`：

![验证 URL](https://docs.testany.io/docs/images/zh/deployment-script-verify-6.png)

7. 验证 Secret 长度为 `3`：

![验证 Secret](https://docs.testany.io/docs/images/zh/deployment-script-verify-7.png)

---

## 联系支持

如遇到无法解决的问题，请联系 Testany 支持团队：

- **邮箱**: customer-support@testany.io
- **文档**: https://docs.testany.io

## 本页术语

- [环境 (Environment)](https://docs.testany.io/zh/docs/glossary.md#environment)
- [受信任的运行时 (Trusted Runtime)](https://docs.testany.io/zh/docs/glossary.md#trusted-runtime)
- [运行时 (Runtime)](https://docs.testany.io/zh/docs/glossary.md#runtime)
- [命令 (Command)](https://docs.testany.io/zh/docs/glossary.md#command)
- [执行 (Execution)](https://docs.testany.io/zh/docs/glossary.md#execution)
- [用户 (User)](https://docs.testany.io/zh/docs/glossary.md#user)
- [全局管理员 (Global Administrator)](https://docs.testany.io/zh/docs/glossary.md#global-admin)
- [凭证保险箱 (Credential Safe)](https://docs.testany.io/zh/docs/glossary.md#credential-safe)
- [工作区管理员 (Workspace Admin)](https://docs.testany.io/zh/docs/glossary.md#workspace-admin)
- [工作区 (Workspace)](https://docs.testany.io/zh/docs/glossary.md#workspace)
- [测试用例库（Test Case Library）](https://docs.testany.io/zh/docs/glossary.md#test-case-library)
- [测试用例 (Test Case)](https://docs.testany.io/zh/docs/glossary.md#test-case)
- [执行器（Executor）](https://docs.testany.io/zh/docs/glossary.md#executor)
