4.8 KiB
4.8 KiB
SelfMedia 运维入口
管理员凭据分发
- 在 owner-only 文件中维护凭据:
/root/.unidesk/.env/unified-admin-password.txt只保存统一管理员密码;/root/.unidesk/.env/selfmedia-access.env保存以下非密码键:SELFMEDIA_ADMIN_USERNAME;SELFMEDIA_API_KEY;SELFMEDIA_SESSION_SECRET。
- 不用
cat、source、env、Pod env 或 Secret decode 检查值。 - 先预检 sourceRef、键和 fingerprint:
bun scripts/cli.ts secrets plan --config config/secrets-distribution.yaml --scope selfmedia --target selfmedia-nc01
- 提交异步同步作业:
bun scripts/cli.ts secrets sync --config config/secrets-distribution.yaml --scope selfmedia --target selfmedia-nc01 --confirm
- 使用返回的 job ID 查询,直到终态:
bun scripts/cli.ts job status <job-id> --tail-bytes 12000
-
confirmed sync 默认只返回 source/Secret fingerprint、键和 rollout 摘要;只有一次性下钻时才使用
--full,不得让默认输出因超限隐藏 ready 证据。 -
再核对目标 Secret 的键存在性:
bun scripts/cli.ts secrets status --config config/secrets-distribution.yaml --scope selfmedia --target selfmedia-nc01
consumerRollout是凭据生效合同:selfmediaDeployment 通过 SecretsubPath挂载凭据;- 后端在启动时加载管理员凭据和 session secret;
sync必须按 YAML 重启消费者,并通过多次短连接轮询等待 ready;- 总等待时限和轮询间隔分别由
timeoutSeconds、pollIntervalSeconds声明; - 只更新 Secret 而没有成功 rollout 时,不得声称新账号已生效。
自动交付观察
- SelfMedia PaC consumer 为
selfmedia-nc01:
bun scripts/cli.ts platform-infra pipelines-as-code status --target NC01 --consumer selfmedia-nc01
bun scripts/cli.ts platform-infra pipelines-as-code history --target NC01 --consumer selfmedia-nc01 --limit 10
- 只有失败归因时才按具体 PipelineRun 下钻:
bun scripts/cli.ts platform-infra pipelines-as-code debug-step --target NC01 --consumer selfmedia-nc01 --id <pipeline-run-id>
- 正常发布只由
pikainc/selfmedia的 GitHub PR merge 触发,不执行 bootstrap、apply、trigger-current、mirror sync、人工 PipelineRun 或 Argo refresh/sync。
源码侧制品刷新
- 先按任务类型选择入口:
- owning YAML 已完成预期变更,只需把 desired 刷新到消费仓时,不执行前置
plan或check; - 直接执行一次
write,再执行一次check和一次有界 Git diff; - 漂移来源未知时,先执行
check,根据firstDrift定位 owning YAML 或 renderer,再决定是否执行write。
- owning YAML 已完成预期变更,只需把 desired 刷新到消费仓时,不执行前置
- 从 owning YAML 与 consumer 的
sourceArtifact声明读取<NODE>、<consumer>和制品路径:<source-worktree>必须是消费仓的绝对 Git worktree;- 禁止从 live Pipeline/PipelineRun 反向导出 desired;
- 通用合同以 PaC 源码侧制品同步 为权威出处。
- 已知配置刷新只执行以下最短闭环:
bun scripts/cli.ts platform-infra pipelines-as-code source-artifact write --target <NODE> --consumer <consumer> --source-worktree <source-worktree> --confirm
bun scripts/cli.ts platform-infra pipelines-as-code source-artifact check --target <NODE> --consumer <consumer> --source-worktree <source-worktree>
git -C <source-worktree> diff --name-only -- <artifact-path-from-write-output>
git -C <source-worktree> diff --check -- <artifact-path-from-write-output>
- 验收只读取有界证据:
write的files.written必须只包含预期 source artifact;check必须为source.status=aligned且provenanceAligned=true;- 业务目标值从 owning YAML 读取,aligned/provenance 证明生成制品与该 desired 一致;
- 常规验收不展开内嵌 base64、大段脚本或完整 YAML diff,也不手写临时 payload 解码器。
- PR 合并后只观察正常自动交付;源码侧制品刷新不触发 PipelineRun、mirror、Argo 或运行面写入。
公网原入口验收
- 从
config/selfmedia.yaml#delivery.targets.NC01.deployment读取公网 host、端口和健康路径,不在脚本中复制配置值。 - 无凭据检查:
/返回200;/healthz返回200;/api/v1/system返回401;/api/v1/terminal/status返回401。
- 使用 owner 提供的新账号完成浏览器登录;不得把账号密码写入命令历史、截图、报告、issue 或日志。
- 登录后核对 WebTerm 打开、Codex session resume、统一 CLI 请求和流水线 job 状态;不使用终端访问 Kubernetes、Docker socket、ServiceAccount token 或宿主路径。