
Brewlet 0.8.0 发布:转向语言无关的运行时治理方案
来源标题:Brewlet
Brewlet 0.8.0 将自身重新定位为语言无关的运行时治理方案,把语言运行时从应用交付中剥离,交由平台团队在 Kubernetes 节点上统一管理。开发者以标准 OCI 制品发布代码、依赖和启动元数据,平台团队审核摘要固定的运行时镜像并控制节点池,containerd 通过 Brewlet 运行时 shim 启动负载。Java、Python、Node.js 和 .NET 均使用同一套语言中立契约,仓库包含 CLI、运行时、Kubernetes 平台、节点 provisioner 和 Maven 插件等完整实现。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
用每个 Kubernetes 节点上统一管理的运行时来运行 OCI 工件中的应用。
Brewlet 将语言运行时移入基础设施,与操作系统和 Kubernetes 并列。开发者以标准 OCI 工件的形式发布应用代码、依赖项和显式启动元数据。平台团队审批固定到摘要(digest)的运行时镜像,并控制哪些节点池提供这些镜像。Kubernetes 将每个工作负载调度到兼容的节点上,containerd 再通过 Brewlet 运行时 shim 启动它。
这样就把应用交付与运行时维护分离开来。平台团队可以轮换已审批的运行时,而无需重新构建应用工件;与此同时,开发者仍能显式控制其应用的命令和依赖项。Java、Python、Node.js 和 .NET 使用同一套语言无关的契约;只有可选的 Maven producer 才具备 Java 项目相关的智能能力。
本仓库包含 Brewlet 的完整实现:CLI 与运行时、Kubernetes 平台、节点 provisioner、Maven 插件、规范、集成测试、网站以及面向用户的文档。
Brewlet 0.8.0 是一次转向。Brewlet 现在是一个语言无关的运行时治理方案。它仍然保留了 Java 专用的 0.7.x 系列的大部分功能(现已在 brewlet-0.x-java 分支中维护),但不再专属于 Java。
所有 0.x 版本均为 beta,尚不稳定。它们可能在不同版本之间出现破坏性变更、不兼容变更,或再次转向。正式可用(GA)版本将是 1.0.0。
Brewlet 是一个从零开始、尚未 GA、仍在活跃开发中的实现。Beta 版本发布在 GitHub Releases 上。请在一次性环境中评估它们,不要用于生产或共享集群。不要用 0.x 的 CLI、chart、工件格式或运维手册替代正式版本。
验收台账记录了全部 111 项需求在限定范围内的本地成功证据。这并不等于云厂商自动扩缩容认证、物理备用架构硬件资格认证,也不代表已发布稳定版本。单元测试和交叉编译结果与真实节点证据仍是两回事。请参阅确切的来源、命令和结果以及验证边界。
平台运维者 开发者 ----------------- --------- RuntimeImage:已审批的运行时 应用 + 依赖项 来源固定到 OCI 摘要 + 显式 launch.json NodeProfile:放置与策略 打包为 OCI 工件 | | v v +----------------------------+ +----------------------------+ | 节点 provisioner | | OCI registry | | 安装 shim 和 | | 应用层位于 | | 已审批的运行时根目录 | | /app 下,以及启动元数据 | +-------------+--------------+ +-------------+--------------+ | | | v | +----------------------------+ | | 准入 webhook | | | 校验显式运行时 ID | | | 和放置策略 | | +-------------+--------------+ | | | runtimeClassName: brewlet | brewlet.sh/runtime-image: ID | | v v +----------------------------------------------------------------+ | 启用了 Brewlet 的节点 | | containerd -> Brewlet shim -> 已审批的节点驻留运行时 | +--------------------------------+-------------------------------+ v 应用
平台运维者通过固定到摘要的来源审批 RuntimeImage 清单,并通过 NodeProfile 资源定义放置和安装策略。
节点 provisioner 负责安装并校验 containerd shim 和运行时根目录,对外通告能力,并且只在节点就绪后才移除启动栅栏(startup fence)。OnDemand 策略可以将根目录的获取推迟到首次使用时。
开发者将应用层与依赖层打包并限制在 /app 下,附带显式的、语言无关的 launch.json,然后发布该工件。普通的 Kubernetes 工作负载选择 runtimeClassName: brewlet 并指定显式的 brewlet.sh/runtime-image 注解。准入控制会校验其运行时需求和放置策略;Kubernetes 将其调度到兼容的节点上。shim 组装应用的 OCI bundle,并用选定的运行时代次启动它。正在运行的任务在轮换期间保持该代次不变。
这里没有语言检测、默认运行时选择、JVM 参数注入、JavaApplication 资源,也没有 0.x 兼容性。共享的 RuntimeClass 为每个 Pod 预留 64Mi 内存和 50m CPU,用于 shim 和暂存开销,而非语言运行时本身。工作负载的 requests 和 limits 必须覆盖整个应用进程,包括其解释器或 VM。
子项目 路径 职责 核心运行时 cmd/、pkg/、shim/ 提供 Brewlet CLI、工件工具、共享运行时包,以及 containerd Runtime v2 shim。 节点 provisioner provisioner/ 在 Linux 节点上安装、轮换并安全移除已审批的运行时根目录、shim 以及由它管理的 containerd 配置。 Kubernetes 平台 kubernetes/ 提供 operator、准入 webhook、RuntimeImage 和 NodeProfile API、清单、RBAC 以及 Helm chart。 Maven 插件 maven-plugin/ 通过语言无关的 CLI 打包 Java 应用和依赖层集合;它不负责部署工作负载。 规范 specs/ 定义权威架构、工件格式、运行时契约、API 和兼容性规则。 集成测试 integration-tests/ 检验应用生产者、运行时执行、Kubernetes 放置、provisioning、轮换和清理。 验收 acceptance/ 跟踪需求、限定范围的证据以及严格的晋级资格。 网站 site/ 包含静态落地页、品牌资源以及可搜索的 MkDocs 文档预览。 用户文档 docs/ 包含安装、配置、运维、工作负载部署、故障排查和研讨会指南。
快速开始
安装 CLI
curl -fsSL https://brewlet.sh/install.sh | sh brewlet version
有关命令和工件选项,请参阅 CLI 参考。
按照本地 Kubernetes 教程创建一个新的一次性 kind 集群、安装已发布的组件,并运行一个真实的 Python HTTP
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。