设置指南#
本文档提供了在亚马逊云服务 (AWS) 上部署 Tokkio Workflow 的综合指南。虽然有多种方法可以在 AWS 云环境中实施 Tokkio Workflow,但本指南侧重于使用 Tokkio 约定式部署脚本的特定部署方法。这些脚本自动化了设置 Tokkio Workflow 及其所需基础设施组件的过程。
先决条件#
AWS 先决条件#
创建一个具有管理员访问权限的 IAM 用户,并获取访问密钥 ID 和秘密访问密钥
创建一个 S3 存储桶用于存储部署状态
创建一个 DynamoDB 表用于管理对部署状态的并发访问
设置一个域名和 Route53 托管区域以支持 HTTPS
如果您在设置这些方面需要帮助,您可以参考 AWS 文档。另请参阅环境变量和先决条件设置部分,了解有关设置此项的更多信息。
硬件#
控制器实例#
Ubuntu 22.04 操作系统
生成 SSH 密钥对
确保无密码 sudo 访问
访问#
访问在启动 Tokkio Pipeline 应用程序期间使用的所有工件。例如,NGC 上的 Tokkio 应用程序 Helm chart。
基础设施布局#
在 AWS 上设置 Tokkio Workflow 需要创建多个 AWS 资源,例如 EC2 实例、安全组、应用程序负载均衡器、用于托管 UI 内容的 CloudFront、S3 存储桶等。下图显示了在 AWS 上启动的组件的总体布局。

安装步骤#
克隆 NVIDIA/ACE.git 存储库并导航到 aws 部署脚本目录。
git clone https://github.com/NVIDIA/ACE.git
cd ACE/workflows/tokkio/scripts/one-click/aws
准备一个配置文件,可以通过复制基本
config-template.yml
或复制config-template-examples
文件夹下的示例配置文件之一。
复制您选择的配置模板作为此安装的基本配置模板。
cp config-template-examples/llm-ov-3d-rp-6x-streams/config-template.yml ./my-config.yml
使用您的特定设置修改
my-config.yml
。
vi my-config.yml
设置环境变量。
与 config-template 文件类似,您可以从
config-template-examples
文件夹复制示例 env 文件。使用您的特定设置修改环境变量文件。
cp config-template-examples/llm-ov-3d-rp-6x-streams/my-config.env my-env-file.env
vi my-env-file.env
加载环境变量文件。
source my-env-file.env
运行安装命令。
./envbuild.sh install --component all --config-file ./my-config.yml
在日志末尾捕获安装结果。输出将如下面的示例所示
access_urls:
api_endpoint: "https://<api_sub_domain>.<base_domain>"
elasticsearch_endpoint: "https://elastic-<project_name>.<base_domain>"
grafana_endpoint: "https://grafana-<project_name>..<base_domain>"
kibana_endpoint: "https://kibana-<project_name>..<base_domain>"
ui_endpoint: "https://<ui_sub_domain>.<base_domain>"
ssh_command:
app:
bastion: ssh -i /home/my-user/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <username>@<bastion-instance-ip-address>
master: ssh -i /home/my-user/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o ProxyCommand="ssh -i /home/my-user/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -W %h:%p <username>@<bastion-instance-ip-address>" <username>@<app-instance-ip-address>
turn:
master: ssh -i /home/my-user/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null <username>@<turn-instance-ip-address>
验证安装。
检查 pod 状态:
kubectl get pods -n <application-namespace>
等待所有 pod 达到 Ready 状态(可能需要长达 60 分钟)
一旦所有 pod 都处于健康状态,您可以使用安装输出中的 URL 访问 UI
access_urls.ui_endpoint
首次使用时,浏览器应提示 UI 运行所需的麦克风、扬声器或摄像头等权限。接受权限后,UI 应加载。

卸载步骤#
仅卸载应用程序#
加载正确的环境变量文件
source my-env-file.env
运行以下命令仅卸载应用程序组件
./envbuild.sh uninstall --component app --config-file ./my-config.yml
通过以下命令清除先前安装中的任何
persistent-volumes
kubectl delete pv -n <application-namespace>
卸载整个设置#
加载正确的环境变量文件
source my-env-file.env
运行以下卸载命令
./envbuild.sh uninstall --component all --config-file ./my-config.yml
注意
此步骤将卸载整个 Kubernetes 集群,以及在安装步骤中启动的 AWS 基础设施。因此请谨慎使用。
其他注意事项#
成本#
此设置中的许多资源可能不属于免费套餐,您可以查看 AWS 计费参考页面以了解成本影响。
安全#
在生产环境中部署 Tokkio 的安全性是最终用户的责任。在生产环境中部署时,请让安全专家审查任何潜在的风险和威胁;定义信任边界,保护通信通道,集成 AuthN
和 AuthZ
以及适当的访问控制,保持部署(包括容器)为最新状态,并确保容器安全且没有漏洞。
必备技能和背景#
熟悉 Amazon Web Services (AWS)#
用户应基本了解 Amazon Web Services,包括其核心服务和计费模式。以下是用户应熟悉的一些关键领域
AWS 全球基础设施:了解 AWS 区域、可用区。
身份和访问管理 (IAM):熟悉 IAM 用户、组、角色和策略,以实现安全的访问控制。
核心服务:了解基本的 AWS 服务,例如 EC2、S3 和 DynamoDB,用于计算、存储和数据库。
网络:了解 VPC、子网、安全组和路由表,以实现安全高效的网络设计。
管理工具:熟悉 AWS 管理控制台,用于设置一次性先决条件。
其他包括 Route53 用于 DNS 服务,负载均衡器用于流量分配。
熟悉命令行界面 (CLI)#
基本命令:用户应熟悉基本命令行操作,例如导航目录、执行脚本和管理文件。
环境配置:了解环境变量以及 PATH 设置在 Linux 上的工作方式将极大地帮助操作 OneClick 脚本。
脚本编写基础知识:基本的脚本编写知识(例如,shell 脚本)有助于了解 OneClick 脚本的运行方式,以及排查可能出现的任何问题。
熟悉 YAML#
YAML 语法和结构:YAML 因其可读性和灵活性而常用于云原生应用程序中的配置文件。OneClick 脚本中使用的配置模板使用 YAML 格式。用户应熟悉 YAML 语法和结构。
熟悉 Kubernetes 生态系统#
Tokkio pipeline 是一个云原生应用程序,并使用容器化、Kubernetes、helm 等概念。用户需要熟悉这些概念,才能从使用部署脚本和应用程序中获得最佳结果。
Kubernetes 基础知识:用户应基本了解 Kubernetes 核心概念,例如 pod、服务和部署
kubectl:熟悉 kubectl 命令行工具,该工具用于与 Kubernetes 集群交互,包括查询正在运行的应用程序 pod 的状态或日志等。
Helm:了解 Kubernetes 的 Helm 包管理器,它通过管理 chart(预配置 Kubernetes 资源定义的集合)来简化应用程序部署。以及如何将 helm 与覆盖值一起使用将有助于正确配置模板。