Trusted Runtime 部署指南

⚠️

📌 本指南适用对象

本指南适用于需要在**自己管理的云环境**中部署 Trusted Runtime 的企业客户。

✅ 您需要阅读本指南,如果:

  • 您的测试目标位于企业防火墙或 VPN 内网
  • 您有合规要求(数据不出境、私有化部署)
  • 您需要在自己的云环境中运行自定义测试环境

❌ 如果您使用 Testany 托管的 Runtime,无需阅读本指南。

→ 直接跳转:测试用例管理 | 创建第一个测试

不确定?联系我们


概述

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

下载部署包

开始部署前,请先下载部署包:

下载 AWS 部署包

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

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

预计部署时间: 30-45 分钟(不含 DNS 配置等待时间)


前置条件

工具依赖

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

核心工具(必需)

工具最低版本说明验证命令
AWS CLI2.xAWS 资源管理aws --version
Terraform1.5+基础设施即代码terraform --version
kubectl1.28+Kubernetes 集群管理kubectl version --client
Helm3.xKubernetes 包管理器helm version
jq1.6+JSON 数据处理jq --version
gomplate3.x模板渲染工具 (macOS)gomplate --version
gotemplate-模板渲染工具 (Linux)gotemplate --version

部署脚本依赖(必需)

工具最低版本说明验证命令
grpcurl1.8+gRPC 命令行客户端,用于 Bootstrap 注册grpcurl --version
openssl1.1+证书和密钥生成openssl version
kapp0.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 IDSecrets Manager 访问密钥AKIAXXXXXXXXXXXXXXXXXX
Secret Access KeySecrets Manager 密钥xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Secrets RegionSecrets Manager 区域cn-north-1 (中国) / us-west-2 (海外)
Secrets NameSecret 名称testany/customers/YOUR_ACCOUNT_ID/appsecrets
SaaS EndpointSaaS 平台地址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

安装脚本执行

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

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

Bootstrap 注册流程

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

Bootstrap 等待确认

ℹ️

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

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

注册码显示

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

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

输入注册码

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

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

💡

如果注册码超时,可以重新运行 bash install.sh bootstrap 获取新的注册码。

DNS 配置

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

DNS 配置提示

  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 证书

证书创建完成


安装验证

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

AWS Secrets 数据准备

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

    区域端点地址
    AWS Global参考 AWS 文档
    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

  3. 选中 "Other type of secret",在 Plaintext 里输入 123(可以输入任意内容),点击 "Next":

    填写 Secret 值

  4. 在 Secret name 中输入 testany-env-secret-test-YOUR_ACCOUNT_ID,点击 "Next":

    填写 Secret Name

  5. 保持默认配置,点击 "Next":

    配置轮换

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

    存储 Secret

方式一:界面操作

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

1. 创建 Credential Safe 及 Credential

ℹ️

该步骤需要 Workspace Admin 权限,请联系团队的 Workspace Admin 协助添加。

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

添加 Credential Safe

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

填写 Credential Safe 信息

  1. 创建完成后,展开 Credential Safe:

展开 Credential Safe

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

添加 Credential

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

填写 Credential 信息

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

Credential 保存完成

2. 创建 Case

Case 1: 测试环境变量传递

  1. 登录 Testany,选择 "Test Case Library",点击 "Register Test Case":

注册 Test Case

  1. 输入 Case 信息:

    • Name: testany-deploy-check-case1
    • Runtime: 选择新注册的 Runtime

    点击 "Register & Next":

填写 Case 信息

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

切换到 JSON 视图

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

保存环境变量

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

准备代码文件

  1. 点击 "Upload" 图标上传代码:

点击上传

  1. 选择压缩文件完成上传:

选择文件

  1. 等待上传完毕:

上传完成

  1. 选择 Executorpostman

选择 Executor

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

设置 Trigger path

Case 2: 测试 Secrets 获取

  1. 注册新 Case,点击 "Register Test Case":

注册 Case 2

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

填写 Case 2 信息

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

切换到 JSON 视图

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

保存环境变量

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

编辑 SAFE_KEY

保存 SAFE_KEY

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

准备代码文件

  1. 点击 "Upload" 图标上传代码:

上传代码

  1. 选择压缩文件完成上传:

选择文件

  1. 等待上传完毕:

上传完成

  1. 选择 Executor 为 postman

选择 Executor

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

设置 Trigger path

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

绑定 Credential

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

Case 2 详情

3. 创建 Pipeline

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

创建 Pipeline

  1. 点击展开按钮:

展开 Pipeline

  1. 选择 "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_KEYCASE2_KEY 替换为实际的 Case Key(8位字符)。

📝

对于这里新建的 Pipeline,推荐使用 rule/v1.3rule/v1.2 仅用于兼容历史 Pipeline。

配置 Pipeline YAML

  1. 刷新 Pipeline 页面,点击 "Trigger" 按钮执行 Pipeline:

触发 Pipeline

4. 查看执行结果

  1. 查看 Pipeline 执行状态:

执行状态

执行完成

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

查看日志

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

验证 AAA 值

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

验证 URL 值

  1. 验证 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:

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

  1. 查看执行状态:

执行状态

  1. 等待执行完成:

执行完成

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

查看日志

  1. 验证 AAA 值为 200

验证 AAA

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

验证 URL

  1. 验证 Secret 长度为 3

验证 Secret


联系支持

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

还有疑问?

我们的团队随时为您服务。欢迎联系我们,我们会尽快回复。