Operator Upgrades - wongyiuming/FrontierCloud-Gin GitHub Wiki

fc 手动升级与边界

2026-10-14:updater 清理发布为 fc6adc75c7cdb9064163f938a31f176add843e0a(PR #15)。三个生产节点在这次 fc 更新尝试前均运行 bb1b1430b4a7066b9c706e53757331e78cb5595d、数据库代际 7。本次三个生产节点的 fc upgrade plan 全部返回 0,核验了原身份、公开 Digest 和 7 → 7 计划;由于现有 fc 不能只读预估完整备份大小、也不能直接流式离机备份,无法在仅 fc 限制内确认本地恢复归档空间,已停止在 apply 前。没有执行 apply/open、停写或切换生产镜像;生产保持原 bb1b143 版本。本次没有创建新生产冷备份。

当前发布和证书控制

仅同仓库 dev → main、精确开发机验收及源码 CI、GitHub 自动审查后合并;合并后快进 dev,不强制改写历史。成功 main CI 才触发可信 Web/Nginx 公开镜像发布,随后核验并更新 latest。源码测试 CI 为三分钟,编译为十分钟的独立有限额 job;数据库、五节点、race、浏览器验收在开发机。

certificate-agent 保留,运行 Web 镜像中的 certificate-agent,负责自动签发、续期和证书状态,没有 Docker socket 或升级职责。Storage 不运行业务 Nginx;Master/Direct 使用 443,Relay 通信默认 8443,HTTP-01 使用 80。

已有部署的手动升级

以下是命令模板,未标为本次生产实际执行记录。DIR 必须是已有部署收据对应的安装包目录,不能通过更改项目名、重新 install 或清空目录接管已有数据。

./fc --directory DIR upgrade plan --revision FULL_PUBLISHED_MAIN_SHA > /private/new-plan.json
./fc --directory DIR upgrade apply --plan /private/new-plan.json --approve-plan-sha256 REVIEWED_PLAN_SHA256 --confirm-node-id ORIGINAL_NODE_ID --backup-output /private/new-recovery.tar
./fc --directory DIR upgrade open --approve-plan-sha256 REVIEWED_PLAN_SHA256 --confirm-node-id ORIGINAL_NODE_ID
./fc --directory DIR --json status

plan 只读核验当前身份、配置、精确源码 CI、目标镜像摘要和代际。审核计划中的 from/target revision、NodeID、project/database、两端代际、所有镜像和 plan_sha256;有效期一小时。apply 重新核验,先拉取 Digest,再停写并创建、校验本节点真实恢复归档,然后切换镜像和 prepare;成功停在 prepared_fenced。open 为独立确认,核验目标读就绪后开放,保留已有管理员维护意图。MySQL apply 还需要 --confirm-external-writers-stopped,工具不能替操作者证明外部写入者已经停止。

本次是 7 → 7,不执行数据库 DDL。普通 fc 另有明确的 6 → 7 前进迁移;4/5 的旧部署首次交接是维护者单独程序,不能冒称普通 fc 升级。代码回退不是数据库回退。

真实能力与限制

  • 升级更换固定 Digest 的应用镜像,保留原 Compose 配置、挂载、身份和基础设施镜像;不会同步整个集群,也不会自动替换宿主机的 fc 二进制。
  • 恢复归档必须为本地新路径,位于所有捕获状态根之外;没有直接流式离机备份或只读备份大小预估命令。doctor 的最低磁盘阈值不能替代完整恢复归档空间校验。
  • 普通归档是本部署恢复点,不能冒称完整跨主机恢复集。开放后的新写入不属于之前冷备份,不能自动用旧归档覆盖。
  • 失败保持关闭和恢复证据,不自动回退数据库;失败阶段不可直接 open。严格 fc-only 运维若遇到不支持的主机操作应停止并报告,不能隐藏手工 Docker、SQL 或配置替换。
  • status 的业务读取为 unverified 时返回 3,容器健康不等于播放/Range 全量验收。
  • 新版 host fc 可读取可选 GITHUB_API_TOKEN,仅用于 GitHub 只读发布证明,不写入业务配置、计划、Compose 或恢复收据。旧宿主机工具可能没有该能力。

验证范围

开发机 192.168.6.201 的私有原生测试包括 SQLite/MySQL 升级恢复、失败关闭、六种安装场景和两种五节点迁移。原生镜像源码为 a8dbcd2;证书拒绝测试修正于 0c034e7。最终宿主机凭据调用及隔离 HTTPS 回归在 84dceac 验证;完整 race 与发布证明以 PR 记录为准。私有适配器不冒称公开镜像验收,本次不声称重新执行浏览器播放矩阵或真实一小时清理。旧 updater/CD 记录保留为历史证据,不能再作为操作流程。