site logo

Marico's space

使用 NEXUS AI 的无服务器部署

服务器技术 2026-04-26 11:51:28 11
**发布时间:** 2026年4月25日 **分类:** 平台 · DevOps **阅读时间:** 16 分钟 **作者:** NEXUS AI 团队 --- Serverless 对不同团队含义各异。对大多数人来说,它意味着:不用管理服务器,不用提前考虑容量问题,只为实际运行的部分付费。这个前提是对的。但具体实现——纠缠的云控制台配置、provider 特定的 YAML、以及每个云平台的 IAM 策略——正是愿景落空的地方。 NEXUS AI 通过一条 CLI 命令将容器化应用部署到 AWS App Runner、Google Cloud Run 和 Azure Container Apps。不需要云控制台,不需要 provider 特定的配置文件。自定义域名、副本扩展、一键回滚和健康检查在三个平台上体验一致。 本文详细介绍每个生产级功能:它如何工作、成本如何,以及运行所需的精确 CLI 命令。 --- ## NEXUS AI 无服务器工作原理 NEXUS AI 作为部署编排层,运行在三大无服务器容器运行时之上: | Provider | Runtime | 容器运行方式 | |---|---|---| | `GCP_CLOUD_RUN` | Google Cloud Run | Google 完全托管的无服务器容器平台 | | `AWS_APP_RUNNER` | AWS App Runner | AWS 完全托管的容器运行时 | | `AZURE_CONTAINER_APPS` | Azure Container Apps | Azure 的无服务器容器服务 | | `LOCAL_DOCKER` | NEXUS AI 托管 | NEXUS AI 自有托管的 Docker 基础设施 | 你在部署时选择 provider。NEXUS AI 处理云端配置——服务创建、IAM、registry、网络——在几分钟内给你一个可用的 URL。切换 provider 只需在下次重新部署时改一个标志。 你的容器运行在你的云账户上(Pro 及以上版本),而不是共享的 NEXUS AI 基础设施上。数据和负载都留在你的 AWS、Google Cloud 或 Azure 环境中。 --- ## 首次无服务器部署 从 Git 仓库部署,一条命令搞定: ```shell nexus deploy source \ --name api-prod \ --repo https://github.com/your-org/your-api \ --branch main \ --provider GCP_CLOUD_RUN \ --region us-central1 \ --port 3000 ``` 或者部署预构建的容器镜像: ```shell nexus deploy create \ --name api-prod \ --image ghcr.io/your-org/api:latest \ --provider AWS_APP_RUNNER \ --region us-east-1 \ --port 3000 ``` 3–5 分钟内,你的部署就在 `*.nexusai.run` 子域名上生效了: ```plaintext ✓ Deployment api-prod created URL: https://api-prod.nexusai.run Provider: AWS_APP_RUNNER (us-east-1) Status: RUNNING Replicas: 1 ``` 如果从源码部署,不需要 Dockerfile——NEXUS AI 会检测你的运行时环境并自动生成一个。无需 registry 配置、无需 IAM 策略文档、无需 VPC 配置。 --- ## 环境 每个部署都属于一个环境:`DEVELOPMENT`、`STAGING` 或 `PRODUCTION`。环境会影响: - 注入哪些 secrets(secrets 按环境隔离) - 哪些团队成员可以部署(RBAC 强制执行环境级权限) - 哪些 provider 可用(由组织级别的 provider 配置控制) ```shell # 将同一个应用部署到 staging 和 production,作为独立的部署 nexus deploy source --name api-staging --env staging --provider GCP_CLOUD_RUN ... nexus deploy source --name api-prod --env production --provider AWS_APP_RUNNER ... ``` Staging 和 production 独立运行——不同的 secrets、不同的 provider 配置、相同的代码库。Staging 上的错误部署永远不会影响 production。 --- ## 自定义域名 每个部署会自动获得一个 `*.nexusai.run` 子域名。对于生产工作负载,绑定你自己的域名。 ### 添加自定义域名 ```shell nexus domain add api-prod app.yourcompany.com ``` 输出: ```plaintext ✓ Domain app.yourcompany.com added to api-prod Verification: PENDING Add this DNS record at your registrar: Type: CNAME Name: app Value: api-prod.nexusai.run ``` ### 验证 DNS 在你的 registrar 添加 CNAME 记录后,触发验证: ```shell nexus domain verify api-prod ``` NEXUS AI 检查 DNS 传播情况并自动颁发 TLS 证书。验证通常在 DNS 传播后的 2–10 分钟内完成,具体取决于你的 TTL 设置。 ### 根域名 子域名(`app.yourcompany.com`)和根域名(`yourcompany.com`)都支持。对于根域名,使用你的 registrar 的 ALIAS 或 ANAME 记录(或者 CNAME 扁平化,如果你的 registrar 支持的话)指向 `api-prod.nexusai.run`。 ### 列出和删除域名 ```shell # 列出部署的所有域名 nexus domain list api-prod # 删除域名 nexus domain remove api-prod ``` 自定义域名适用于 Starter($29/月)及以上。免费计划仅使用 `*.nexusai.run` 子域名。 --- ## 扩展 一条命令即可将运行中的部署在 1 到 10 个副本之间扩展。无需重新部署——扩展会立即应用到实时部署。 ```shell # 在高流量事件前扩展 nexus deploy scale api-prod --replicas 5 # 之后缩减回来 nexus deploy scale api-prod --replicas 2 ``` 输出: ```plaintext ✓ api-prod scaled to 5 replica(s) Previous: 2 Current: 5 Provider: GCP_CLOUD_RUN ``` 在 Google Cloud Run、AWS App Runner 和 Azure Container Apps 上,扩展直接应用到底层服务——NEXUS AI 调用 provider 的 API 设置副本数,变更在 30–60 秒内生效。 ### 副本限制 所有计划中每个部署最多 10 个副本。对于需要超过 10 个副本的工作负载,请在云控制台上直接使用 provider 的原生自动扩展配置,与 NEXUS AI 的托管部署配合使用。 ### 扩展与成本 副本在 App Runner 和 Cloud Run 上持续运行,直到你缩减回来。它们不会自动缩减到零。如果需要缩减到零,请在底层 provider 上配置最小实例数,或者使用 `nexus deploy stop` 命令在非工作时间完全停止部署。 ```shell # 非工作时间停止 nexus deploy stop api-staging # 需要时重新启动 nexus deploy start api-staging ``` --- ## 健康检查 NEXUS AI 为每个部署配置健康检查。健康检查失败的部署会自动标记——如果持续不健康超过重试阈值,会同时出现在仪表板和审计日志中。 ### 配置 健康检查在部署时配置: ```shell nexus deploy source \ --name api-prod \ --health-check-type http \ --health-check-url /health \ --health-check-interval 30 \ --health-check-timeout 3 \ --health-check-retries 3 \ --health-check-start-period 40 \ ... ``` | 参数 | 默认值 | 作用 | |---|---|---| | `--health-check-type` | `http` | `http`、`tcp` 或 `none` | | `--health-check-url` | `/health` | HTTP 类型检查的端点 | | `--health-check-interval` | 30s | 检查间隔秒数 | | `--health-check-timeout` | 3s | 每次检查最大等待时间 | | `--health-check-retries` | 3 | 标记为不健康前的失败次数 | | `--health-check-start-period` | 40s | 检查开始前的宽限期 | 40 秒的启动等待期是最重要的默认值。它给你的容器时间来完成初始化——Node.js 应用加载大型模型或 Java 应用 JVM 启动缓慢,不会因为还没准备好就被标记为不健康。 ### 检查当前健康状态 ```shell nexus deploy status api-prod ``` ```plaintext NAME STATUS HEALTH REPLICAS RESTARTS PROVIDER UPTIME api-prod RUNNING healthy 2 0 AWS_APP_RUNNER 14h ago ``` --- ## 回滚 一条命令即可重新部署到之前已知可用的状态。无需重新构建,无需考古配置。 ```shell nexus deploy rollback api-prod ``` 回滚适用于 **Pro($149/月)及以上**。免费版和 Starter 计划不支持回滚——恢复路径是通过之前的镜像标签或分支进行新部署。 ### 回滚如何工作 NEXUS AI 存储之前的部署配置——镜像、环境变量、secrets 引用、provider、区域和副本数。回滚时,它使用该配置配置一个新部署。原始部署记录保留在你的历史记录中。 ```shell # 回滚前检查部署历史 nexus deploy list --json | jq '.[] | select(.name | startswith("api-prod"))' ``` ```json [ { "name": "api-prod", "status": "FAILED", "createdAt": "2026-04-25T14:22:00Z" }, { "name": "rollback-k3x9ab2", "status": "RUNNING", "createdAt": "2026-04-25T14:30:00Z" } ] ``` 回滚部署会获得一个生成的名称(`rollback-{timestamp}`),并以与原始部署相同的副本数运行。 --- ## Secrets 和环境变量 Secrets 在运行时注入——绝不 baked 到容器镜像中。设置一次,它们在重新部署时同样可用。 ```shell # 在 vault 中存储 secrets nexus secret set DATABASE_URL "postgres://..." --environment production nexus secret set STRIPE_SECRET_KEY "sk_live_..." --environment production nexus secret set OPENAI_API_KEY "sk-..." --environment production # 部署——secrets 自动注入 nexus deploy source --name api-prod --env production ... ``` 你的应用像读取标准环境变量一样读取它们: ```javascript const db = new Pool({ connectionString: process.env.DATABASE_URL }); ``` 无 SDK。无需启动时获取。无冷启动惩罚。Secrets 在 NEXUS AI 控制平面解密,并在第一个进程启动前注入到容器 spec 中。 非 secrets 的环境变量可以在部署时直接传入: ```shell nexus deploy source \ --name api-prod \ --env-var NODE_ENV=production \ --env-var LOG_LEVEL=info \ --env-var PORT=3000 \ ... ``` --- ## 多服务部署 NEXUS AI 支持 Docker Compose 部署,适用于需要多个服务协同运行的应用——例如 API、后端 worker 和 Redis sidecar。 ```shell nexus deploy source \ --name platform-prod \ --repo https://github.com/your-org/platform \ --compose \ ... ``` 指定 `--compose` 时,NEXUS AI 读取你的 `docker-compose.yml`,为每个服务配置一个部署,并在同一个项目中连接它们。服务可以通过名称在内部网络上相互引用。 --- ## 重新部署 推送新镜像或从源码重新构建,无需更改任何配置: ```shell # 从相同源码重新部署(从分支拉取最新版本) nexus deploy redeploy api-prod # 或使用 Access Token 从 CI/CD 触发 NEXUS_API_KEY=nxk_... nexus deploy redeploy api-prod ``` 云 provider(AWS App Runner、Google Cloud Run、Azure Container Apps)上的重新部署在 60–90 秒内完成。新版本通过健康检查前,旧版本会保持运行——默认零停机。 --- ## CI/CD 集成 使用 NEXUS AI 的典型 GitHub Actions 流水线: ```yaml name: Deploy to production on: push: branches: [main] jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build and push image run: | docker build -t ghcr.io/${{ github.repository }}:${{ github.sha }} . docker push ghcr.io/${{ github.repository }}:${{ github.sha }} - name: Deploy to NEXUS AI env: NEXUS_API_KEY: ${{ secrets.NEXUS_API_KEY }} run: | npx nexus-cli deploy redeploy api-prod ``` 流水线 token 仅使用 `deploy:write` 范围——它无法读取 secrets、修改配置或触碰其他部署。一个泄露的流水线 token 只是一个重新部署触发器,仅此而已。 --- ## 自动销毁 临时部署——review 应用、QA 环境、演示实例——可以设置为在固定时间窗口后自动销毁: ```shell # 启动一个 24 小时后自动销毁的 review 部署 nexus deploy source \ --name pr-1234-review \ --auto-destroy 24h \ ... ``` 部署正常运行直到截止时间,然后自动停止并清理云资源。无需手动拆除,不会月末收到遗忘的 review 应用账单。 --- ## 实时日志 为任何部署流式传输构建和运行时日志: ```shell # 跟随运行时日志 nexus deploy logs api-prod --follow # 获取最后 200 行 nexus deploy logs api-prod --tail 200 # 按关键词过滤 nexus deploy logs api-prod --follow | grep ERROR ``` 日志在容器写入 stdout/stderr 的几秒内即可用。构建日志(镜像构建、Dockerfile 执行、依赖安装)也可以通过同一命令加上 `--build` 参数访问。 --- ## 方案对比 | 功能 | 免费版 | Starter($29/月) | Pro($149/月) | 企业版 | |---|---|---|---|---| | 部署数 | 1 | 2 | 5 | 无限制 | | Provider | Managed Docker | Docker + Google Cloud | 全部 4 个 provider | 全部 4 个 provider | | 自定义域名 | — | ✓ | ✓ | ✓ | | 回滚 | — | — | ✓ | ✓ | | Secrets | 3 | 20 | 100 | 无限制 | | 团队成员 | 0 | 3 | 10 | 无限制 | | AI 生成次数/天 | 1 | 10 | 无限制 | 无限制 | | 你的云账户 | — | ✓ | ✓ | ✓ | | 副本扩展(1–10) | ✓ | ✓ | ✓ | ✓ | | 健康检查 | ✓ | ✓ | ✓ | ✓ | | 审计日志 | ✓ | ✓ | ✓ | ✓ | --- ## 部署命令参考 ```shell # 从源码部署 nexus deploy source --name --repo --branch --provider --port # 从镜像部署 nexus deploy create --name --image --provider --port # 重新部署(相同配置,新构建) nexus deploy redeploy # 扩展副本(1–10) nexus deploy scale --replicas # 回滚到之前版本(Pro+) nexus deploy rollback # 停止 / 启动 nexus deploy stop nexus deploy start # 查看状态 nexus deploy status # 流式日志 nexus deploy logs --follow # 列出部署 nexus deploy list # 删除部署 nexus deploy delete # 自定义域名 nexus domain add nexus domain verify nexus domain list nexus domain remove ``` --- ## 检查清单:生产就绪的无服务器部署 - [ ] 首次部署前通过 `nexus secret set` 设置所有 secrets——零明文环境变量 - [ ] 配置 `--health-check-url` 匹配你应用的实际健康端点 - [ ] 将 `--health-check-start-period` 设置为至少你的应用冷启动时间 - [ ] 为 CI/CD 创建范围限定的 `deploy:write` token——永远不要在流水线中使用个人 token - [ ] 在公布 URL 前添加你的自定义域名并验证 DNS - [ ] 首次生产部署时运行 `nexus deploy status --watch`,尽早发现健康检查失败 - [ ] 为 review 和 QA 部署设置 `--auto-destroy`——防止意外账单 - [ ] 生产环境至少扩展到 2 个副本——单副本部署没有冗余 --- ## 常见问题 **我应该使用哪个云 provider?** 大多数工作负载:Google Cloud Run(`GCP_CLOUD_RUN`)凭借其从零到运行的快速启动和全球网络;AWS App Runner(`AWS_APP_RUNNER`)如果你的团队已经在 AWS 上并希望所有资源在同一个账户;Azure Container Apps(`AZURE_CONTAINER_APPS`)用于 Microsoft 技术栈集成。从 NEXUS AI CLI 角度来看,三者行为完全一致。 **NEXUS AI 支持缩减到零吗?** CLI 没有原生托管支持——副本按你设置的数字持续运行。底层 provider(Cloud Run、Container Apps)在云控制台上原生支持缩减到零;你可以配合 NEXUS AI 的部署一起配置。`nexus deploy stop` 完全停止部署,在非生产环境的空闲期间实现零成本。 **我可以自带 Dockerfile 吗?** 可以。如果你的仓库包含 `Dockerfile`,NEXUS AI 会使用它。否则会根据检测到的运行时(Node.js、Python、Go、Java 等)自动生成。你也可以通过 `--dockerfile` 明确指定 Dockerfile 路径。 **在 Cloud Run 和 App Runner 上回滚如何工作?** NEXUS AI 存储你之前的部署配置,并用它配置一个新部署——它不使用 provider 原生的修订版回滚。这意味着回滚在所有四个 provider 上行为一致,并保留每个部署状态变更的清晰审计轨迹。 **如果部署健康检查失败会怎样?** 部署状态变为 `FAILED` 或 `UNHEALTHY`。对于云 provider,之前的修订版继续运行(Cloud Run 和 Container Apps 保持最后一个健康修订版处于活跃状态)。你会在审计日志中看到 `DEPLOYMENT_FAILED` 事件,包含退出码和错误信息。运行 `nexus deploy logs ` 查看问题所在,然后重新部署或回滚。 **我可以在一个部署中运行多个服务(API + worker + DB)吗?** 使用 `--compose` 部署 Docker Compose 文件。Compose 文件中的每个服务成为同一部署下被追踪的服务,连接在内部网络上。外部数据库连接应使用 NEXUS AI secrets,而非运行数据库容器——临时容器不是可靠的数据库宿主。 --- ## 下一步 从一条命令开始。如果你的应用已经容器化: ```shell nexus deploy create \ --name my-app \ --image your-registry/your-app:latest \ --provider GCP_CLOUD_RUN \ --port 3000 ``` 不到 5 分钟你就有一个可用的 URL。添加自定义域名、配置 secrets、设置 CI/CD 流水线——整个生产级设置不到一小时。 NEXUS AI Starter 计划起价 $29/月。包含自定义域名、Google Cloud Run 部署和最多 3 名团队成员。从 nexusai.run 开始 **相关阅读:** - [Stop shipping secrets. Start using a vault.]() - [RBAC deep dive: roles, scopes, and least privilege]() - [Audit logs and compliance: what gets recorded and why]() - [MCP integration: 37 tools for Claude and AI agents]() --- *无需云控制台。无需 YAML。一条命令,从提示到生产。*