mcpField
V
vpc-air-gapped

vpc-air-gapped

github.com/rivet-dev云与 DevOps441.1k 次安装1 天前更新
代码仓库

关于 vpc-air-gapped

用于在私有 VPC 和隔离网络中部署自托管 Rivet 的技能,涵盖安装、存储、网络、监控及边界防护。

主要功能

  1. 01单二进制文件安装引擎
  2. 02单节点文件系统存储
  3. 03无需镜像仓库的 Docker 镜像转移
  4. 04私有网络监控与健康检查
  5. 05多节点部署指导

适用场景

  1. 01在隔离网络中安装 Rivet
  2. 02在客户 VPC 中随软件交付 Rivet
  3. 03扩展到多节点时选择存储

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rivet-dev/skills --skill vpc-air-gapped

安装后在 Claude Code 中输入/vpc-air-gapped确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

BASE_SKILL.md
index.json
openapi.json
reference/actors/
access-control.md
actions.md
actor-runtime-socket.md
appearance.md
authentication.md
communicating-between-actors.md
connections.md
debugging.md
design-patterns.md
destroy.md
errors.md
events.md
fetch-and-websocket-handler.md
helper-types.md
http-api.md
input.md
inspector-tabs.md
keys.md
kv.md
lifecycle.md
limits.md
metadata.md
queues.md
reference/actors/quickstart/
backend.md
cloudflare.md
effect.md
next-js.md

详细介绍

在 VPC 或隔离网络中部署 Rivet

重要:开始任何操作前,必须先阅读此技能目录中的 BASE_SKILL.md。其中包含有关调试、错误处理、状态管理、部署和项目设置的重要指导。这些规则和模式适用于所有 RivetKit 工作。以下内容均假设你已阅读并理解这些内容。

在私有网络中运行可自托管 Rivet 的模式:没有互联网出口的 VPC、本地机架,或完全隔离的环境。引擎是一个服务;推荐的单节点存储后端是本地文件系统;引擎默认不会建立任何出站连接。自托管是唯一支持隔离网络的 Rivet 部署模式;如需与 BYOC 全面对比,请参阅自托管概述。

在网络边界内运行的组件

自托管部署包含三个组件,它们都位于你的网络内:

组件作用是否位于网络边界内
你的后端你的应用服务器,包括执行 actor 代码的 runner是
Rivet Engine编排服务,负责管理 actor 生命周期、路由消息,并提供仪表板和 API是
存储持久化 actor 状态。单节点使用本地文件系统,多节点使用 PostgreSQL 或 FoundationDB是

无需许可证服务器、Rivet Cloud 账户,也不会回连 rivet.dev。网络边界内的客户端通过私有网络上的引擎网关访问 actor。请参阅架构。

单二进制文件安装

引擎会编译为单个 rivet-engine 二进制文件。在网络边界外从源代码构建,然后将二进制文件复制到边界内:

git clone https://github.com/rivet-dev/rivet.git
cd rivet
cargo build --release -p rivet-engine
# Copy target/release/rivet-engine into the perimeter.

预构建二进制文件即将推出;当前可用选项请参阅安装 Rivet Engine。

使用文件系统后端运行引擎,该后端会将所有内容存储在本地磁盘上,是单节点部署可用于生产环境的选择。文件系统文档将隔离环境列为主要使用场景,因为它无需数据库基础设施:

RIVET__database__file_system__path="/var/lib/rivet/data" ./rivet-engine

也可以通过文件提供配置。在 Linux 上,引擎会在 /etc/rivet/config.json 查找配置(支持 JSON、JSON5、JSONC、YAML 和 YML),而 --config 可覆盖该路径。环境变量使用 RIVET__ 前缀,并以 __ 作为分隔符。请参阅配置。

引擎会在端口 6420 上提供自己的仪表板,因此只需在网络边界内使用浏览器,即可进行检查和命名空间管理。

Docker Compose 部署

对于无法访问镜像仓库的 Docker 主机,可使用标准方式将引擎镜像传到网络边界内:

# Outside the perimeter.
docker pull rivetdev/engine:latest
docker save rivetdev/engine:latest -o rivet-engine.tar
# Inside the perimeter.
docker load -i rivet-engine.tar

然后在同一个 Compose 文件中同时运行引擎和应用:

services:
  rivet-engine:
    image: rivetdev/engine:latest
    ports:
      - "6420:6420"
    volumes:
      - rivet-data:/data
    environment:
      RIVET__FILE_SYSTEM__PATH: "/data"
    restart: unless-stopped

  my-app:
    build: .
    environment:
      RIVET_ENDPOINT: "http://default:admin@rivet-engine:6420"
    depends_on:
      - rivet-engine
    restart: unless-stopped

volumes:
  rivet-data:

RIVET_ENDPOINT 的格式为 http://namespace:token@host:port,用于告知应用以 runner 身份连接到引擎,而不是以独立模式运行。两个服务启动后,通过仪表板或 API 向引擎注册 runner。完整操作指南(包括多节点部署的 PostgreSQL 设置)请参阅Docker Compose。

无出站遥测

只有在选择启用 OpenTelemetry 时,引擎才会导出跟踪和指标。除非设置 RIVET_OTEL_ENABLED=1,否则导出功能处于禁用状态;导出目标默认为本地收集器 http://localhost:4317。未进行任何配置时,不会有任何内容传出网络边界。

需要可观测性时,请将其保留在网络内:

  • 设置 RIVET_OTEL_ENABLED=1,并将 RIVET_OTEL_GRPC_ENDPOINT 指向你在网络边界内运行的收集器。
  • 调整 RIVET_OTEL_SAMPLER_RATIO 以控制跟踪采样。
  • 使用引擎的健康检查端点进行存活和就绪探测。

监控方面的指导请参阅生产环境检查清单。

在客户环境中嵌入 Rivet

如果你交付的软件运行在客户的 VPC 内,同样的设置可以让 Rivet 成为产品的内部组件,而不是客户必须通过互联网访问的服务:

  • 将引擎与应用一同交付。 将 rivetdev/engine 添加到你现有的 Compose 文件或 chart 中。应用通过 RIVET_ENDPOINT 在私有网络中找到引擎,因此一个制品即可部署整个堆栈。
  • 每次安装使用一个命名空间。 端点 URL 中包含命名空间和令牌(http://namespace:token@host:port),因此同一个镜像可用于不同客户的部署。请参阅端点。
  • 每次安装都生成强管理员令牌。 替换默认令牌并将其保存在服务端。切勿将管理员令牌放入 RIVET_PUBLIC_ENDPOINT 或任何客户端可读取的位置。
  • 仅在需要时使用公共端点。 只有当浏览器客户端要连接到无服务器运行时模式中的 actors 时,才需要使用带有公共(pk_)令牌的 RIVET_PUBLIC_ENDPOINT。仅限后端的部署完全可以不配置它。
  • 在客户的边缘终止 TLS。 在引擎前使用客户的反向代理或负载均衡器终止 TLS。

扩展到单节点以上

后端适用场景状态
文件系统(基于 RocksDB)单节点部署,包括隔离网络环境中的安装可用于生产环境,仅支持单节点
PostgreSQL多节点部署目前推荐用于多节点部署,但仍属实验性功能
FoundationDB最大规模的生产部署企业版

对于多节点部署,请在负载均衡器后运行两个或更多引擎节点,并添加 NATS 用于发布/订阅;在高吞吐量下,NATS 会取代默认的 PostgreSQL LISTEN/NOTIFY 路径。单节点文件系统安装不需要这两者。请参阅生产环境检查清单。

边界安全检查清单

  • 管理员令牌:生成强随机令牌用于引擎身份验证,并确认客户端无法访问该令牌。
  • TLS 终止:通过反向代理或负载均衡器加密与引擎之间的连接。
  • 不对外公开:确保端口 6420 仅能从安全边界内部访问,除非边界外的客户端确实需要访问。
  • 健康检查:针对引擎健康端点配置存活和就绪探针。
  • 遥测:关闭 OpenTelemetry 导出,或将其指向网络内部的收集器。
  • 备份:使用文件系统后端时,备份数据目录。使用 PostgreSQL 时,配置自动备份和故障转移。

完整配置

参考索引

Actors
命令行工具
客户端
教程集
部署
通用
自托管

评论

支持 Markdown