记录源 Linear→Plane (2026-09-03 起, Plane MCP) + plane.chans.xyz 服务行/upstream 段; inventory + hosts/synapse.chans.xyz.md 补 Plane 部署事实 (Helm plane-ce-1.8.0 / app v1.4.1, ns plane, IngressRoute/自有证书 issuer/PVC 5+5Gi local-path/无备份层); 新增 runbooks/plane-health.md (只读健康检查) 与 docs/plane-hardening/ 草稿 (values.hardened.yaml、secrets.yaml.example 占位、backup/ CronJob), 均为未应用设计稿; .gitignore 增加 .tmp-* agent 临时文件。
3.2 KiB
3.2 KiB
Plane CE 加固草稿(docs/plane-hardening/)
状态:草稿,未应用、未提交。 对应追踪:Plane vps 项目条目(2026-09-03,记录源;Linear W1N-277 已取消,Linear 自 2026-09-03 起不再作为记录源)。 线上实例:
plane.chans.xyz(synapse K3s,nsplane,releaseplane-app= chartplane-ce-1.8.0/ appv1.4.1)。 依据:2026-09-03 只读核查(13 条审查意见中 11 条属实、#3 基本属实、#9 指标归属错误)+ 上游 chart 模板逐条核对。
文件
| 文件 | 内容 |
|---|---|
values.hardened.yaml |
可选硬化 values(external secrets 引用、requireExplicitSecrets、minio pin、上传限额对齐);含 HTTP→HTTPS extraObjects 示例 |
secrets.yaml.example |
6 组外部 Secret 结构占位(只含 key 名,真实值仅存宿主机) |
backup/plane-backup.yaml |
PostgreSQL 备份 CronJob(pg_dump -Fc,hostPath /var/backups/plane;MinIO 已按实际用量剔除) |
backup/README.md |
备份方案说明(排程/容量/保留/还原/阻塞) |
应用顺序(每步先 diff 后执行,全部需用户逐项确认)
现在就值得做:DB 备份(P0,见 backup/)
plane-backup.yaml 部署 + 手动触发验证一次即可;88 MB 库每日快照几乎零成本。
可选(顺手做一次,不是必须)
- Phase A 密钥外部化(零行为变化、无停机,约 15 分钟):按
secrets.yaml.example在宿主机建 6 个 Secret(值先复制当前集群),用values.hardened.yaml跑helm diff upgrade→helm upgrade;验证后删除 chart 生成的旧 Secret。 价值:默认密钥不再落在 chart 公开常量上,作为保险。 - MCP API Key 轮换:若审查对话出过你的环境,Plane 后台重生成 + 更新
/home/windy/plane-k3s/mcp/mcp.env(0600)+ 重启 Cursor MCP。 - /god-mode IP 白名单:若在意管理后台被公网爆破。chart 1.8.0 的 IngressRoute
不支持给单条路由追加 middleware → 需 post-renderer 或 upgrade 后
kubectl patch(升级会覆盖,需固化);源 IP 清单待提供。
明确暂缓/跳过(个人单节点,等出现症状再处理)
- SECRET_KEY 等轮换(Phase B):等真要配 SMTP/OAuth 前再做(避免旧密文不可解)。
- NetworkPolicy、有状态组件 resources limits(chart 无 values 开关,需 post-render/patch)、
HTTP→HTTPS(草稿已给
extraObjects示例)、metrics-server/Sentry。
关键限制(chart 1.8.0 模板已核对)
external_secrets.*_existingSecret设置后,对应 Secret 必须包含模板所需全部 key (缺失不自动补),见secrets.yaml.example注释。app_keys_existingSecret的 envFrom 在所有 workload 上最后注入(后置生效), 保证 app/live 共享密钥一致——不要在其后再放同名 key 的 Secret。DATABASE_URL/AMQP_URL/REDIS_URL是 chart 生成的派生 URL,内嵌明文密码; 外部化后轮换 DB/队列密码时必须同步更新plane-app-env。- minio 的
MINIO_ROOT_*与AWS_*同源于一个 Secret;升级时 bucket Job 会重跑 (需 admin 权限凭据)——换 svcacct 前先确认权限覆盖该 Job。