Trusted Runtime 部署指南
概述
本文档描述如何在云平台上部署 Testany Trusted Runtime。
下载部署包
开始部署前,请先下载部署包:
部署脚本会自动完成以下任务:
- 部署云基础设施(VPC、Kubernetes 集群、数据库、缓存、对象存储)
- 配置 kubectl 连接集群
- 渲染并部署 Helm Charts
- 注册到 Testany SaaS 平台
- 配置 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 资源
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(如果需要)
Bashexport AWS_PROFILE=your-profile-name
步骤 2: 设置 Testany 凭证环境变量
Bashexport TF_VAR_testany_access_key_id="AKIAXXXXXXXXXXXXXXXXXX" export TF_VAR_testany_secret_access_key="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
步骤 3: 执行安装脚本
Bashcd scripts bash install.sh

脚本会自动执行以下步骤:
- [自动] 检查前置条件
- [自动] 部署 AWS 基础设施(约 15-20 分钟)
- [自动] 配置 kubectl
- [自动] 渲染 Helm 模板
- [自动] 部署基础组件
- [需要用户操作] Bootstrap 注册
- [自动] 部署应用服务
- [自动] 配置 Ingress
- [等待用户] 创建 TLS 证书
Bootstrap 注册流程
当脚本执行到 Bootstrap 注册步骤时,会暂停等待用户确认。

注册码有效期为 5 分钟,请确保 Testany 全局管理员已准备好后再继续。
- 获取注册码: 按 Enter 后,命令行会显示注册码:

-
登录 SaaS 管理平台: 使用全局管理员账号登录 Testany SaaS 管理界面
-
输入注册码: 在 SaaS 管理界面找到 Runtime 注册入口,输入命令行显示的注册码

-
设置 Runtime 名称: 为这个新的 Runtime 实例设置一个易于识别的名称
-
完成注册: 管理员在 SaaS 平台确认后,命令行脚本会自动继续执行
如果注册码超时,可以重新运行 bash install.sh bootstrap 获取新的注册码。
DNS 配置
脚本执行到证书创建步骤时会暂停,提示配置 DNS。

-
获取 Ingress 的 Load Balancer 地址:
Bashkubectl get ingress -n testany-app -
联系 Testany 支持团队,提供 Load Balancer 地址,完成 DNS 配置
-
验证 DNS 解析:
Bashnslookup your-domain.testany.com.cn -
DNS 配置完成后,按 Enter 继续执行脚本,创建 TLS 证书

安装验证
完成安装后,通过以下步骤验证部署是否成功。
AWS Secrets 数据准备
-
获取 Secrets Manager 服务端点地址:
区域 端点地址 AWS Global 参考 AWS 文档 ↗ AWS China (宁夏) secretsmanager.cn-northwest-1.amazonaws.com.cnAWS China (北京) secretsmanager.cn-north-1.amazonaws.com.cn -
创建一个 Secret。在 Secrets Manager 管理页面,点击 "Store a new secret":

-
选中 "Other type of secret",在 Plaintext 里输入
123(可以输入任意内容),点击 "Next":
-
在 Secret name 中输入
testany-env-secret-test-YOUR_ACCOUNT_ID,点击 "Next":
-
保持默认配置,点击 "Next":

-
确认信息无误,点击 "Store":

方式一:界面操作
适合需要详细了解配置过程的用户。
1. 创建 Credential Safe 及 Credential
该步骤需要 Workspace Admin 权限,请联系团队的 Workspace Admin 协助添加。
- 访问 Workspace Settings 页面,点击左下角 "Workspace Settings",在右侧页面中,点击 "Credential" 标签,选择新注册的 Runtime,点击 "Add credential safe" 按钮:

- 填写 Credential Safe 信息:
- Instance name: 设置一个名称
- Instance URL: Secrets 管理的访问地址(根据你的云部署环境,填写 Key Vault 的访问地址或 AWS Secrets Manager 的访问地址)

- 创建完成后,展开 Credential Safe:

- 点击 "+" 添加 Credential(如展开后未看到 "+",刷新一下当前页面):

- 填写 Credential 信息:
- Credential name: 设置一个名称
- Type: 选择对应的类型
- Key: Secrets 管理中的 secret 名称(如
testany-env-secret-test)

- 保存后记录以下信息(后续配置 Case 时会用到):
- Credential Safe Key(如
WKS-CS-0001) - Credential Key(如
testany-env-secret-test)
- Credential Safe Key(如

2. 创建 Case
Case 1: 测试环境变量传递
- 登录 Testany,选择 "Test Case Library",点击 "Register Test Case":

-
输入 Case 信息:
- Name:
testany-deploy-check-case1 - Runtime: 选择新注册的 Runtime
点击 "Register & Next":
- Name:

- 在跳转的页面中,点击 "JSON" 标签页:

- 将环境变量配置贴到编辑框中,并点击 "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"} ]

- 准备代码文件,将
testany-env-check-case1-postman.json压缩为 zip 文件:

- 点击 "Upload" 图标上传代码:

- 选择压缩文件完成上传:

- 等待上传完毕:

- 选择 Executor 为
postman:

- 设置 Trigger path 为
testany-env-check-case1-postman.json:

Case 2: 测试 Secrets 获取
- 注册新 Case,点击 "Register Test Case":

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

- 在跳转的页面中,点击 "JSON" 标签页:

- 将环境变量配置贴到编辑框中:
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"} ]

- 切换到 Form 视图,修改 "SAFE_KEY" 的值为实际的 Credential Safe Key:


- 准备代码文件,将
testany-env-check-case2-postman.json压缩为 zip 文件:

- 点击 "Upload" 图标上传代码:

- 选择压缩文件完成上传:

- 等待上传完毕:

- 选择 Executor 为
postman:

- 设置 Trigger path 为
testany-env-check-case2-postman.json:

- 配置凭证引用:在 Case 的 Environment variables 中新增一条
Secret类型记录,然后选择创建好的Credential Safe和Credential:

- Case 2 创建完毕,查看详情确认配置正确:

3. 创建 Pipeline
- 切换到 Workspace 页面,点击 "+ Assemble pipeline",输入 Pipeline 信息:
- Name:
deploy-test-pipeline - Description:
测试新部署 Runtime
- Name:

- 点击展开按钮:

- 选择 "YAML View",配置 Pipeline 规则:
YAMLkind: 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 页面,点击 "Trigger" 按钮执行 Pipeline:

4. 查看执行结果
- 查看 Pipeline 执行状态:


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

- 验证 Case 1 信息是否传递给 Case 2:
- AAA 的值应显示为
200(HTTP 状态码)
- AAA 的值应显示为

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

- 验证 Secrets 是否正确获取:
- 返回 secret 的长度为
3(值123的长度)
- 返回 secret 的长度为

方式二:脚本操作
适合快速验证部署的用户。
该脚本需要 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:
Bashexport 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:
Bashcd linux bash register.sh
Windows:
PowerShellcd 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 验证
- 在 Testany 界面找到新建的 Pipeline(命名规则:
runtime-<runtime名称>-deploy-check),点击 "Trigger" 按钮:

- 查看执行状态:

- 等待执行完成:

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

- 验证 AAA 值为
200:

- 验证 URL 值为
http://www.bing.com:

- 验证 Secret 长度为
3:

联系支持
如遇到无法解决的问题,请联系 Testany 支持团队:
还有疑问?
我们的团队随时为您服务。欢迎联系我们,我们会尽快回复。