首页/新闻资讯/正文详情

Fission 仓库 CHANGELOG 深度解读:Kubernetes 无服务器框架的版本演进与源码印证

发布时间:2026/9/25 3:30:11 来源:云帆数科 栏目:资讯中心
Fission 仓库 CHANGELOG 深度解读:Kubernetes 无服务器框架的版本演进与源码印证
云原生后端【免费下载链接】fissionFast and Simple Serverless Functions for Kubernetes项目地址https://gitcode.com/gh_mirrors/fi/fission点击查看免费下载本文以 Fission 仓库根目录的 CHANGELOG.md 为绝对主线梳理该项目自 2017 年 0.3.0 起直至 1.17 版本候选发布之间的完整演进脉络包括执行器poolmgr / newdeploy / container、触发器体系、可观测性、CLI 与 Helm 图表等核心模块的每一次关键合并PR。读完本文你将能够看懂这份 1377 行变更日志的组织结构与生成机制按时间轴理解 Fission 从 TPR 时代走到 OpenTelemetry 时代的技术决策并将每个历史变更回落到当前仓库中对应的源码目录与配置文件作为排查与升级的依据。一、CHANGELOG.md 是什么结构、约定与生成机制仓库根目录下的 CHANGELOG.md 是一份由工具自动生成的发布变更日志全文 1377 行覆盖从0.3.02017-09-29到v1.17.0-rc12022-07-06的每一个发布版本。它的结构遵循固定模板版本小节以## 版本号 (发布日期)开头部分版本附带指向相邻版本的 “Full Changelog” 对比链接变更分组主要按 “Merged pull requests” 汇总个别里程碑版本如v1.15.0-rc1还单独列出 “Implemented enhancements” 分组条目格式每条记录以- 一句话描述 \#PR号 (作者)的形式出现作者以 GitHub 用户名为标识。这种格式对应着它的生成方式。仓库中的 hack/changelog.sh 展示了完整流水线export GITHUB_TOKEN$(cat ~/.github-token) exclude_tags$(tr \n , hack/ignore_tags | sed s/,$/\n/) github_changelog_generator -u fission -p fission -t ${GITHUB_TOKEN} \ --no-issues --exclude-labels no-changelog -o tmp_CHANGELOG.md \ --exclude-tags $exclude_tags mv tmp_CHANGELOG.md ${DIR}/CHANGELOG.md几点值得注意的工程约定使用github_changelog_generator工具从 GitHub 的合并 PR 数据自动生成--no-issues表示不包含 issue 条目--exclude-labels no-changelog支持通过标签排除无需记录的低价值变更。hack/ignore_tags 文件维护了一个“忽略标签白名单”latest、各种nightly、alpha、kubecon、buildmgr-preview-*等非标准发布标签以及被后续 rc 取代的版本都会被排除在变更日志之外保证日志只反映正式发布线与 release candidate。文件末尾注明“This Changelog was automatically generated by github_changelog_generator”提醒读者此类自动生成文档不宜手工大面积改写。二、六年演进主线从 TPR 到 OpenTelemetry 的版本时间轴把 200 余条 PR 按发布线聚合可以看到 Fission 的能力扩展遵循一条清晰的“先立骨架、再补体验、最后上可观测性”的路径。2.1 2017 年0.3.0资源模型与核心组件的奠基0.3.0是变更日志中最早的可读版本这一阶段的 PR 奠定了 Fission 至今的架构骨架Package 成为一等 Kubernetes 资源[#295] 将 Package 类型拆分为 first-class resource[#297] 将构建移动到包级别、[#385] 新增 package 命令源码归档、构建与部署被解耦为独立资源Storage Service 与客户端[#300]、[#304]支持大函数上传CLI 具备上传与 API 代理能力Builder Manager[#308]环境 v2 Builder 接口[#298]与 fetcher 解压逻辑[#301]成型Message Queue Trigger[#218]与Kubernetes Watcher[#56]两类事件源首次出现同期还有 Ruby[#223]、PHP7[#97]、dotnet core[#84]、Perl[#311]等语言环境相继加入。2.2 2018 年0.4.0–0.12.0CRD 化、NewDeploy 与事件驱动成熟0.4.0 完成从 ThirdPartyResources 到 CustomResourceDefinitions 的切换[#381]并引入基于 store 的函数/触发器同步[#382]。CRD 化是 Fission 数据面走向标准 Kubernetes 生态的关键一步——当前仓库中 crds/v1 目录仍保存着全部 13 个fission.io_*.yaml模式文件包括functions、environments、httptriggers、messagequeuetriggers、timetriggers、canaryconfigs等。0.5.0 引入 NewDeploy 执行后端[#387]与 poolmgr 的“冷池预置”不同NewDeploy 直接为函数管理 Deployment 与 HPA支持 scale-to-zero同期加入声明式 spec[#422]、函数级 Secrets/ConfigMaps 挂载[#399]、Archive Pruner[#471]。0.8.0 进入网络与运维阶段Ingress 集成[#688]、Prometheus metrics 集成[#677]、多租户支持[#655]、时间触发 cron 校验工具[#680]。0.10.0–0.12.0 事件驱动全面开花Kafka 集成[#831]、Canary 部署[#892]、fission support dump排障命令[#754]、消息队列服务工厂抽象[#1537]。2.3 2019 年1.0–1.7稳定性、CLI 重构与生产化1.0 加入 OpenTracing[#1079]并用新的 throttler 包替换路由器的 svcAddrUpdateLocks[#1047]显著优化高并发下缓存失效时的函数延迟[#856]。1.2 时代完成 CLI 大重构从 urfave/cli 迁移到 cobra[#1385]并推动 CLI 命令从 fatal-out 改为返回 error[#1379]统一错误处理[#1393] 修复 CLI 出错仍退出 0 的问题。1.6.0 强化网络能力Ingress 支持 TLS[#1326]、Host/Path/annotations 支持[#1325]、路由器可部署为 DaemonSet[#1342]、Deployment API 从extensions/v1beta1迁移到apps/v1[#1331]。1.7.0 补齐运维韧性执行器启动时采纳adopt孤儿 Kubernetes 资源[#1443]防止滚动升级时 deployment 因 instance-id 差异被重建[#1454]并显著提升 executor 启动速度[#1446]。2.4 2020–2021 年1.8–1.15执行器细分、KEDA 与 Chart 重构1.10.0 合并“容器即函数”Containers as Functions[#1681]新的 container 执行器允许用户直接以任意容器作为函数运行对应当前 pkg/executor/executortype/container 目录。1.11.0 引入 KEDA 集成[#1657]消息队列触发器可通过 KEDA 自动伸缩1.12.0 迁移到 KEDA 2.0[#1868]之后相继补充 Redis[#2176]、GCP PubSub 等 connector。1.13.0 完成 OpenTelemetry 落地[#2157]支持不同采样器与传播器[#2201]、trace id 注入日志[#2180]Go 版本升至 1.16/1.18[#2168]、[#2395]。1.15.0 将 fission-all 巨型 Chart 拆分为组件级 Chart[#2224]并补充--specignore[#2239]、组件 terminationPolicy[#2255]、priorityClassName[#2254]、fission env list --pods/fn list --pods等运维命令[#2207]。2.5 2022 年1.16–1.17-rc1指标与安装体验收尾1.16.0 集中做指标体系重构Prometheus 指标与标签重构[#2375]、HPA 自定义指标[#2423]、HPA 迁移至 v2beta2[#2421]、为暴露指标的组件新增 ServiceMonitor[#2424]、从 Chart 移除 Prometheus 依赖[#2371]。1.17.0-rc1 收尾builder/函数 Pod 的 podSpec 支持[#2461]、archivePruner 开关变量[#2458]、Pod Security Context[#2449]、builder 支持带参数的命令[#2453]、CLI 管理 Storage Service 归档[#2450]。三、贯穿所有版本的三大核心主题3.1 执行器架构的演进poolmgr → newdeploy → containerCHANGELOG 中频率最高的关键词是 executor 相关的修复与增强。结合当前源码 pkg/executor/executortype 下的三个子目录可以清晰还原演进路径poolmgrpkg/executor/executortype/poolmgr最早的执行器为每个环境预置通用 Pod 池请求到来时做“特化specialization”。日志中的专项修复包括特化超时处理[#1392]、重复特化[#1208]、Idle Reaper[#20]、并发池管理[#1698]等newdeploypkg/executor/executortype/newdeploy0.5.0 引入管理函数专属 Deployment 与 HPA支持 minScale0[#976]、scale-to-zero[#775]、避免无谓的 Deployment 重建[#1452]、[#1454]containerpkg/executor/executortype/container1.10.0 引入的“容器即函数”是三者中最年轻的执行类型。三个目录各自包含gp_*.gogeneral pod/newdeploy*.go/containermgr.go等实现文件从中可以看出 poolmgr 的“池 特化”模型、newdeploy 的“Deployment HPA”模型与 container 的“原生容器”模型是三种互补的资源编排策略。3.2 触发器与事件源从 HTTP 到多消息队列日志显示 Fission 的触发器经历了“HTTP → Timer/Kubernetes Watch → 消息队列”的扩展HTTP 触发器相关pkg/router/httpTriggers.go 对应多 HTTP 方法支持[#2064]、前缀路由[#2047]、前缀保留/剥离开关[#2133]等消息队列NATS[#218]、Kafka[#831]、Redis[#2176]等 connector最终统一收敛到 pkg/mqtrigger/messageQueue 与 KEDA 连接器对应 charts/fission-all/templates/mqt-keda同时期的清理动作也能在日志中看到Azure Storage Queue 与 NATS connector 在 1.16.0 被标记废弃并移除[#2404]、[#2403]说明事件源策略是动态收敛的。3.3 可观测性metrics → OpenTracing → OpenTelemetry这条主线在 CHANGELOG 里时间跨度最长0.8.0 的 Prometheus 集成[#677]与 1.16.0 的指标重构[#2375]、[#2423]构成指标面1.0 的 OpenTracing[#1079]→ 1.13 的 OpenTelemetry[#2157]配合 1.15 的 zap 日志改造[#2179]形成“trace id 贯穿日志 多采样器”的链路追踪面。当前仓库 pkg/utils/otel 与 pkg/utils/metrics 目录即是这两条线的实现落点docs/rfc/0019-unified-opentelemetry-observability.md 则记录了其后续演进方向。四、发布与运维机制CHANGELOG 之外的配套流程4.1 变更日志在发布流程中的位置hack/release.sh 展示了一个版本从代码到发布的关键约束必须在main分支、工作区干净、具备 GitHub token随后调用goreleaser release产出二进制与镜像脚本结尾明确提示“Dont forget to push chart repo changes update CHANGELOG.md”——即 CHANGELOG 的更新是发布清单release checklist的一部分。这与日志中反复出现的 “Update changelog” PR如 [#2088]、[#2073]、[#1352]相互印证。4.2 与当前发布生命周期的衔接CHANGELOG 记录的是历史版本而当前发布策略由 RELEASES.md 定义季度一个 minor 版本、只维护最近两条版本线、安全修复双线回传、发布候选在 CI含升级与基准测试中浸泡后才打 tag。而 charts/fission-all/Chart.yaml 中的version: 1.27.0/appVersion: v1.27.0表明CHANGELOG 所记载的 1.17 时代之后的演进仍在持续仓库当前正处于 1.27 版本线。4.3 升级安全网预升级检查与资源采纳日志中反复出现一类“升级安全”PR预升级检查pre-upgrade checks[#2037]、[#2226]、[#2437]、executor 启动时的资源采纳[#1443]、防止滚动升级误删[#1454]。这些能力在 cmd/preupgradechecks包含 adoptsecrets.go、applycrds.go、generateauth.go 等检查实现与 pkg/executor/util/adopt_test.go 中有对应的实现与测试佐证。五、从 CHANGELOG 追溯实现一张主题到源码的对照表阅读 CHANGELOG 时把 PR 描述映射到当前仓库目录是最高效的深入方式常见对照如下CHANGELOG 主题代表 PR当前仓库落点CRD 资源模型[#381]、[#2454]crds/v1执行器poolmgr/newdeploy/container[#1681]、[#387]pkg/executor/executortype消息队列触发器[#218]、[#831]、[#1657]pkg/mqtrigger、charts/fission-all/templates/mqt-*Canary 发布[#892]pkg/canaryconfigmgr可观测性OTel/指标[#2157]、[#2375]pkg/utils/otel、pkg/utils/metrics声明式 spec 与 CLI[#422]、[#1385]pkg/fission-cli/cmd/spec、cmd/fission-cli代码生成clientset/informer/lister[#1492]、[#2251]pkg/generated、hack/codegen/clientgenStorage Service 与归档[#300]、[#2458]pkg/storagesvcHelm Chart[#2224]、[#2371]charts/fission-all结语CHANGELOG.md 表面上只是一份自动生成的 PR 流水账但把它当作“时间轴索引”使用就能还原 Fission 六年的技术决策资源模型如何 CRD 化、执行器如何从单一池演进到三种并存的编排策略、事件源如何收敛到消息队列 KEDA、可观测性如何从 Prometheus 走到 OpenTelemetry。配合 hack/changelog.sh 理解其生成机制、借助 RELEASES.md 与 Chart.yaml 定位当前版本线这份日志就能从“发布记录”升级为“架构演进地图”成为排查历史行为、规划升级路径与阅读源码的起点。赞分享云原生后端【免费下载链接】fissionFast and Simple Serverless Functions for Kubernetes项目地址https://gitcode.com/gh_mirrors/fi/fission点击查看免费下载相关推荐Sliver 仓库 vendored plivo-go v7 CHANGELOG 精读Plivo Go SDK 的完整版本演进v4.0.0 → v7.59.2与源码印证Sliver 仓库 vendored plivo go v7 CHANGELOG 精读Plivo Go SDK 的完整版本演进v4.0.0 → v7.59.网络安全wandb 中的 Go 版 Azure Identity 认证azidentity 模块演进史CHANGELOG 深度解读与源码印证wandb 中的 Go 版 Azure Identity 认证azidentity 模块演进史CHANGELOG 深度解读与源码印证 本指南以 wandb机器学习深度学习数据可视化可观测性LightTable 版本演进全解析从 0.2.1 到 0.8.1 的 Changelog 解读与源码印证LightTable 版本演进全解析从 0.2.1 到 0.8.1 的 Changelog 解读与源码印证 Light Table 是一款基于 Chromiu开发工具IDE上一篇PyTorch 可配置日志系统 torch._logging 完全指南TORCH_LOGS 与 set_logs 实战与源码剖析下一篇Sunshine社区资源与支持加入游戏串流开发者社区并快速获得帮助的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Claude代码模板不是CLI工具:MCP协议级模板规范解析
Claude代码模板不是CLI工具:MCP协议级模板规范解析

1. 这不是又一个 CLI 工具:Claude-Code-Templates 的真实定位与误读陷阱很多人第一次看到claude-code-templates这个名字,下意识就把它当成“Claude 官方推出的命令行代码生成器”——就像create-react-app或vite那样,敲一行命令就能拉起一个… · 2026/9/25 3:30:11

eslint-plugin-react 的 react/jsx-no-leaked-render 规则:阻止 `` 条件渲染泄漏 0、NaN 等危险值
eslint-plugin-react 的 react/jsx-no-leaked-render 规则:阻止 `` 条件渲染泄漏 0、NaN 等危险值

开发工具代码质量静态分析 【免费下载链接】eslint-plugin-react React-specific linting rules for ESLint 项目地址: https://gitcode.com/gh_mirrors/es/eslint-plugin-react 点击查看 免费下载 react/jsx-no-leaked-render 是 eslint-plugin-react 中专门用于拦… · 2026/9/25 3:30:11

Humanizer 流式日期 API 实战:On.March 类完整参考与源码实现解析
Humanizer 流式日期 API 实战:On.March 类完整参考与源码实现解析

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 本篇指… · 2026/9/25 3:30:05

ESP32 轻量应用平台:基于 LittleFS 与 JSON 实现应用即目录
ESP32 轻量应用平台:基于 LittleFS 与 JSON 实现应用即目录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:58:03

C++ Primer高清PDF下载指南:版本选择、质量判断与高效学习路线
C++ Primer高清PDF下载指南:版本选择、质量判断与高效学习路线

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:58:02

AD620+LM358小信号采集电路:从原理到PCB布局的工程实践
AD620+LM358小信号采集电路:从原理到PCB布局的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:58:02

S32K ADC寄存器深度解析与DMA协同优化
S32K ADC寄存器深度解析与DMA协同优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:58:02

Ozone嵌入式调试原理:硬件级追踪与RTOS深度分析
Ozone嵌入式调试原理:硬件级追踪与RTOS深度分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:58:02

GDS版图从入门到精通:层次结构、生成流程与-uniquifycellnames避坑指南
GDS版图从入门到精通:层次结构、生成流程与-uniquifycellnames避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 4:57:55

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码