跳转到主要内容

设计

5 篇
  • repo.yaml 是意图,catalog.json 是证据

    发布于 设计

    设计镜像供应链Catalog

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 静态镜像仓库看起来只是一些 qcow2 文件加一个 JSON 索引。真正困难的问题是:哪些事实允许 维护者手写,哪些事实必须从即将发布的字节中推导。 如果 Checksum 与 Size 放在手写源文件里,它们很容易被错误复制;如果策略只存在于生成 JSON 中,审查 Channel 变化或弃用决定就要阅读机器输出。Barn 把这两项工作明确分开。 repo.yaml:维护者表达什么意图 源码控制 …

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 静态镜像仓库看起来只是一些 qcow2 文件加一个 JSON 索引。真正困难的问题是:哪些事实允许 维护者手写,哪些事实必须从即将发布的字节中推导。 如果 Checksum 与 Size 放在手写源文件里,它们很容易被错误复制;如果策略只存在于生成 JSON 中,审查 Channel 变化或弃用决定就要阅读机器输出。Barn 把这两项工作明确分开。 repo.yaml:维护者表达什么意图 源码控制 …

  • PID 不是虚拟机身份

    发布于 设计

    设计QMP恢复安全

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 Pidfile 只能回答一个问题:写入文件时,某个进程使用了哪个整数。它不能证明进程仍然存活, 不能证明 PID 没有被复用,不能证明可执行文件就是 QEMU,也不能证明这个 QEMU 正是操作者 想停止的节点。 这些证据不足以授权 SIGKILL,更不足以授权删除 Root Disk。 Barn 把身份视为一条由独立证据组成的链。每一环承担不同职责;只有操作所需的证据全部一致, 破坏性动作才可以 …

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 Pidfile 只能回答一个问题:写入文件时,某个进程使用了哪个整数。它不能证明进程仍然存活, 不能证明 PID 没有被复用,不能证明可执行文件就是 QEMU,也不能证明这个 QEMU 正是操作者 想停止的节点。 这些证据不足以授权 SIGKILL,更不足以授权删除 Root Disk。 Barn 把身份视为一条由独立证据组成的链。每一环承担不同职责;只有操作所需的证据全部一致, 破坏性动作才可以 …

  • 声明式不等于破坏式

    发布于 设计

    设计生命周期Drift安全

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 “声明式”常被简化成“让现实等于文件”。在文件完整、分支正确时,这是一句好口号;但当配置 暂时不完整、检出了错误分支,或某个 YAML Group 被误删时,把“缺席”理解成“删除”就会让普通 编辑错误直接变成破坏操作。 Barn 采用一条更窄的规则: 期望状态可以授权创建,也可以描述 Drift;它永远不能通过省略来授权销毁。 这对 VM Runtime 尤其重要。Root Disk、Data …

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 “声明式”常被简化成“让现实等于文件”。在文件完整、分支正确时,这是一句好口号;但当配置 暂时不完整、检出了错误分支,或某个 YAML Group 被误删时,把“缺席”理解成“删除”就会让普通 编辑错误直接变成破坏操作。 Barn 采用一条更窄的规则: 期望状态可以授权创建,也可以描述 Drift;它永远不能通过省略来授权销毁。 这对 VM Runtime 尤其重要。Root Disk、Data …

  • 为什么每个 Barn 节点都有两张网卡

    发布于 设计

    设计网络QEMUPigsty

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 Pigsty Inventory 用稳定地址标识机器。PostgreSQL 复制、etcd 成员、HAProxy 后端、VIP、 监控目标与 Ansible 都假设 10.10.10.11 始终代表同一个节点。回环端口转发可以把 SSH 或 PostgreSQL 暴露给宿主,却无法把这种网络身份提供给其它节点。 因此 Barn 不让用户在“方便的 NAT 模式”和“高级固定网络模式”之间二选一。每 …

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 Pigsty Inventory 用稳定地址标识机器。PostgreSQL 复制、etcd 成员、HAProxy 后端、VIP、 监控目标与 Ansible 都假设 10.10.10.11 始终代表同一个节点。回环端口转发可以把 SSH 或 PostgreSQL 暴露给宿主,却无法把这种网络身份提供给其它节点。 因此 Barn 不让用户在“方便的 NAT 模式”和“高级固定网络模式”之间二选一。每 …

  • 为什么 Barn 没有 Project

    发布于 设计

    设计架构Inventory状态

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 Barn 最初采用了一套很熟悉的虚拟机管理器抽象:工作目录就是 Project,隐藏 Marker 提供 身份,注册表负责重新发现 Project,宿主全局 Lease 防止它们争用私有网络。这种模型可以承载 多套彼此独立的虚拟机,但它并不适合 Barn 最终要成为的产品。 Barn 不是通用 Hypervisor 前端,而是一套本地、固定 IP 的 Pigsty 实验室。操作者本来就有 一份完整 …

    说明 本文描述尚未发布的 Barn 0.9.0 候选版本。当前验证结果与发行前检查见 当前状态。 Barn 最初采用了一套很熟悉的虚拟机管理器抽象:工作目录就是 Project,隐藏 Marker 提供 身份,注册表负责重新发现 Project,宿主全局 Lease 防止它们争用私有网络。这种模型可以承载 多套彼此独立的虚拟机,但它并不适合 Barn 最终要成为的产品。 Barn 不是通用 Hypervisor 前端,而是一套本地、固定 IP 的 Pigsty 实验室。操作者本来就有 一份完整 …