KEDA 版本演进全览:从 CHANGELOG 读懂 Kubernetes 事件驱动自动伸缩的技术进化(v1.0 → v2.20) KEDA 版本演进全览从 CHANGELOG 读懂 Kubernetes 事件驱动自动伸缩的技术进化v1.0 → v2.20【免费下载链接】kedaKEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes项目地址: https://gitcode.com/gh_mirrors/ke/kedaKEDAKubernetes Event-Driven Autoscaling是一个基于 Kubernetes 的事件驱动自动伸缩组件为运行在 Kubernetes 中的任意容器提供基于事件消息队列、数据库、HTTP 端点等的伸缩能力。本文以仓库根目录的 CHANGELOG.md 为主线系统梳理 KEDA 从 v1.0.0 到 v2.20.2 乃至 Unreleased 阶段的演进脉络scaler 生态如何扩张、核心 CRD 能力如何增强、认证与密钥解析体系如何变革、可观测性与稳定性如何持续加固以及升级时需要注意的破坏性变更。读完本文你将能够把 KEDA 的每个版本特性对应到具体源码位置并据此规划集群的升级路径与配置迁移。一、如何阅读这份 CHANGELOG结构与维护规范KEDA 的 CHANGELOG 并非简单的修复了几个 bug清单而是一份按版本组织的结构化发布记录。每个版本条目统一划分为以下小节New新增能力通常以**General**全局能力或**XXX Scaler**特定 scaler为前缀区分作用域部分版本下还有Experimental子节标注处于实验阶段的新特性如 v2.15.0 的 Datadog Cluster Agent 支持、v2.14.0 的 Azure Event Grid CloudEvent 目的地、v2.13.0 的 CloudEvents 事件发射、v2.12.0 的 OpenTelemetry 指标推送与公式化指标评估。Improvements对既有功能的增强往往带出具体的配置参数名。Fixesbug 修复、CVE 修复与稳定性修复。Deprecations已弃用项及替代方案如subscriptionSize→modevalue。Breaking Changes升级时必须处理的不兼容变更。Other依赖升级、CI/测试基建、重构等内部工作。值得注意的是CHANGELOG 的维护本身是项目工程规范的一部分。从 CONTRIBUTING.md 可以看到KEDA 的发布说明Release Notes实际由合并 PR 的元数据自动生成PR 标题必须遵循Component: Description格式例如General: Fix nil pointer dereference并由维护者在评审时打上恰好一个发布说明标签kind/feature、kind/new-scaler、kind/improvement、kind/bug、kind/deprecation、kind/breaking-change、kind/chore、kind/documentation、kind/dependencies、kind/ci不需要发布说明的改动则打skip-changelog。此外CHANGELOG 的格式与排序在 PR 阶段就受到校验v2.12.0 起引入changelog validation check during PR这正是这份文档能保持整齐划一结构的原因。版本号本身来自 version/version.go其Version变量在main分支上默认值为main发布时由构建流程注入具体版本号。二、Unreleased 与 v2.20.x当前最值得关注的新动向CHANGELOG 顶部Unreleased 章节记录了已经完成、将在下一个版本发布的工作项与 v2.20.x 共同构成了 KEDA 目前的功能前沿。1. 新的官方 ScalerUnreleased 一口气引入了三个新 scalerAzure Cosmos DB Change Feed Scaler基于 Cosmos DB 变更源Change Feed驱动伸缩适用于需要跟随数据变更速率弹性扩缩的流式消费场景。ClickHouse Scaler面向 ClickHouse 数据库查询结果伸缩仓库中对应实现位于 pkg/scalers/clickhouse_scaler.go。GCP Spanner Scaler基于 Google Cloud Spanner 的指标伸缩实现见 pkg/scalers/gcp_spanner_scaler.go并配套了集成测试 gcp_spanner_scaler_integration_test.go。2. 外部伸缩协议的演进StreamMetricSpec服务器流式 RPCUnreleased 中最具架构意义的新增项是在外部 scaler 的 gRPC proto 中增加了可选的StreamMetricSpec服务器流式 RPCserver-streaming RPC。它允许 external-push 类型的 scaler动态更新 HPA 的目标值target value而无需修改 ScaledObject。这一设计让外部系统如自定义推送式伸缩器可以直接影响 HPA 的目标指标而不只是提供指标值本身。相关协议定义可在 pkg/scalers/externalscaler/externalscaler.proto 及生成的 externalscaler_grpc.pb.go 中查看。3. 重要修复与新条件Temporal Scaler新增enableTLS参数API Key 认证时可禁用 TLS用于明文 gRPC 端点和可选的includeRunningWorkflowCount防止积压短暂为 0 但 Workflow Worker 仍忙碌时过早缩容同时移除了已弃用的buildId、selectAllActive、selectUnversioned改用workerDeploymentName与workerDeploymentBuildId。Solr Scaler修复了非 200 响应被当作队列长度 0 的问题——此前 Solr 故障、认证被拒或 collection 缺失时会把工作负载缩到 0 而非上报错误。Admission Webhook为 ScaledObject 校验增加了 controller-runtime 缓存字段索引verifyScaledObjects与verifyHpas通过索引化 List 查找重复的scaleTargetRef和 HPA 名称冲突取代全 namespace 扫描消除了高并发创建场景下的 webhook OOM。Github Runner Scaler修复了 per-repository ETag 任务缓存在同一仓库存在多个并发 run 时返回错误任务集、导致队列长度虚高的问题。4. v2.20.2稳定性补丁v2.20.2 引入了专用的HPAActive条件镜像 HPA 自身的ScalingActive状态从而避免 HPA 指标短暂缺失时把 ScaledObject 的Ready条件错误翻转为False。同版本还修复了共享根 CACertPool的并发 map 写入 panic、AWS Secret ManagerTriggerAuthentication在未配置凭据时的 nil 指针解引用以及customScalingStrategy.GetEffectiveMaxScale在省略customScalingQueueLengthDeduction时的 panic 等问题。三、v2.20.0功能密集的一次大版本v2.20.0 是近期功能密度最高的大版本值得单独拆解。1. 核心伸缩能力scalingModifiersfallback 行为在指标不可用时fallback 机制可以结合 scaling modifiers 参与计算而不是退回静态兜底值。新增 Elastic Forecast Scaler 与 OpenSearch Scaler前者基于历史数据预测未来负载实现见 pkg/scalers/elastic_forecast_scaler.go后者对接 OpenSearch 查询。ScaledObject 增加cooldownPeriod与pollingInterval的合理性检查并在设置idleReplicaCount大于 0 时不再误报polling/cooldown 参数无关的警告该修复在 Unreleased 中进一步完善。CRD 级校验标记Minimum、MinLength、MinItems、Enum批量加到 ScaledObject、ScaledJob、ScaleTriggers 与 TriggerAuthentication API 类型上。例如 scaledjob_types.go 中ScalingStrategy.Strategy字段带有kubebuilder:validation:Enumdefault;custom;accurate;eager标记正是这一轮 CRD 校验的落地结果之一。2. 运维与可观测性新增 scaler 出站 HTTP 请求指标keda_scaler_http_requests_total与keda_scaler_http_request_duration_seconds指标采集期间发生的外部 HTTP 调用都会被统计并可用--enable-high-cardinality-metrics-labels开启高基数标签。新增--leader-election-id标志允许自定义 leader election 的 Lease 名称。通过KEDA_HTTP_TLS_CIPHER_LIST、KEDA_SERVICE_TLS_CIPHER_LIST、KEDA_SERVICE_MIN_TLS_VERSION环境变量精细控制 TLS 版本与密码套件。引入控制器按标签选择器分片controller sharding支撑超大规模集群部署。3. Scaler 层面的增强与修复Temporal Scaler全面转向 Worker DeploymentworkerDeploymentName/workerDeploymentBuildId淘汰 Rules-Based Worker VersioningTemporal 服务端自 2024 年 12 月起已弃用该实验特性。RabbitMQ Scaler支持 OAuth2 认证MSSQL Scaler新增driverName以选用azuresql驱动从而启用 Microsoft Entra ID 认证AWS 全系 scaler支持在 podIdentity 中配置 AWS External ID 实现跨账号访问。Kafka Scaler在 Unreleased 中新增fullMetadata字段控制 Sarama 的集群全量元数据刷新降低按 topic 触发场景下的 operator 内存占用。性能方面webhook 校验热路径移除了无条件的json.MarshalIndent改用reflect.DeepEqual比较 spec修复了约 6 万个 ScaledObject 规模下持续准入负载导致的 webhook OOM。四、Scaler 生态的时间线从十余个到数十个从 CHANGELOG 可以清晰看到 KEDA 的 scaler 生态是逐版本滚雪球式扩张的。按引入顺序梳理版本新引入的 Scalerv1.1.0Huawei Cloud CloudEye、Kinesis Stream、Azure Blobv1.2.0PostgreSQL、MySQLv1.3.0Azure Monitorv1.5.0ActiveMQ Artemis、Redis Streams、Cronv2.0.0外部推送External Push、Metrics API、CPU/Memory、IBM MQ、Azure Log Analyticsv2.1.0InfluxDB、MongoDB、OpenStack Swift、Redis Clusterv2.2.0MSSQLv2.3.0Azure Pipelines、OpenStack Metricsv2.4.0Solace PubSub、Selenium Grid、Kubernetes Workloadv2.5.0Cassandra、Elasticsearch、Graphitev2.6.0ActiveMQ、Azure Application Insights、Datadog、New Relic、PredictKubev2.7.0AWS DynamoDB、Azure Data Explorer、GCP Stackdriver、GCP Storagev2.8.0AWS DynamoDB Streams、NATS JetStreamv2.10.0ArangoDB、GitHubv2.11.0Solrv2.12.0Google Cloud Tasksv2.15.0Dynatrace、Splunkv2.16.0Beanstalkdv2.17.0NSQ、Temporalv2.18.0Forgejo、Solace Direct Messaging、SolarWinds、Splunk Observability Cloud、Sumo Logicv2.19.0Kubernetes Resourcev2.20.0Elastic Forecast、OpenSearchUnreleasedAzure Cosmos DB Change Feed、ClickHouse、GCP Spanner截至当前仓库状态pkg/scalers/目录下已经积累了上百个 scaler 源文件与配套测试如 apache_kafka_scaler.go、aws_sqs_queue_scaler.go、prometheus_scaler.go 等并且每个 scaler 都遵循统一的Scaler接口与GetMetricsAndActivity模式v2.10.0 起为 Event Hub、Cron、External 等 scaler 合并了GetMetrics与IsActive调用。此外v2.18.0 引入的 Trigger Schema 生成工具把 scaler 参数定义沉淀到 schema/generated/scalers-schema.json 中配合 pkg/scalers/scalersconfig/scalersconfig.go 的声明式配置解析v2.15.0 起Use new declarative parsing to read scaler config新 scaler 的参数定义趋于统一、可校验。五、核心 CRD 能力的持续演进ScaledObject 与 ScaledJobCHANGELOG 同样记录了两大核心 CRD 从仅支持简单扩缩到精细控制的演进过程。1. ScaledObject 的关键能力节点v2.4.0引入Idle Replica ModeidleReplicaCount使工作负载可以缩到 0 但保留 HPA 存在引入fallback 功能指标不可用时兜底到固定副本数。v2.7.0引入autoscaling.keda.sh/paused-replicas注解将伸缩暂停在固定副本数支持ValueMetricType除 CPU/Memory 外所有 scaler 可用全局metricType。v2.8.0支持自定义 HPA 名称minReplicaCount支持ScaledJobAzure AD Workload Identity 作为新的 pod identity 提供方。v2.11.0支持接管同名、未被其他 ScaledObject 管理的既有 HPAautoscaling.keda.sh/paused: true注解暂停自动伸缩ScaledJob 版本同时引入。v2.12.0autoscaling.keda.sh/paused正式用于 ScaledObject新增stabilizationWindowSeconds校验。v2.14.0ScaledObject 支持initialCooldownPeriodvalidations.keda.sh/hpa-ownership注解可关闭 HPA 所有权校验。v2.17.0fallback 新增behavior选项支持动态兜底计算minReplicaCount在 ScaledJob 中落地。v2.18.0新增Force Activation 注解强制激活与pause scale in/out 注解fallback 扩展支持Value类型触发器的触发条件。v2.19.0accurateScalingStrategy修复pendingJobCount未计入maxReplicaCount检查的问题ScaledObject/ScaledJob 状态开始按 trigger 记录 activity。v2.20.0新增scalingModifiersfallback 行为。2. ScaledJob 的策略体系ScaledJob 在 v2.5.0 引入MultipleScalersCalculation与RolloutStrategyv2.8.0 支持配置 rollout 传播策略v2.9.0 支持minReplicaCount与maxReplicaCount之外的完整语义。其伸缩策略枚举在 scaledjob_types.go 中定义为default、custom、accurate、eager四类v2.15.0 新增eagerScalingStrategyv2.20.2 还修复了 CRD 校验遗漏 default 值的问题。而 v2.16.0 新增的generateEmbeddedObjectMeta标志则允许在 JobTargetRef 中生成 Job 的元数据属性。3. 事件与状态可见性v2.2.0 起 KEDA 开始在 Kubernetes 事件层面广播关键状态v2.10.0 引入 admission webhooks 自动校验资源变更v2.17.0 新增KEDAScalersInfo事件原因v2.19.0 起 ScaledObject/ScaledJob 的状态会追踪每个 trigger 的活动状态。事件可进一步以 CloudEvent 形式外发v2.13.0实验发射 CloudEventsv2.14.0 支持 Azure Event Grid 目的地与事件过滤v2.15.0 为 ScaledObjects 管理提供 CloudEventsv2.16.0 引入 ClusterCloudEventSource 并覆盖 ScaledJob、TriggerAuthentication 等资源。相关实现集中在 pkg/eventemitter/ 与 apis/eventing/v1alpha1/。六、认证与密钥解析体系的变革CHANGELOG 中占比最大的板块之一是认证Authentication体系它的演进可以概括为从单一模式走向多云、多提供方的统一抽象TriggerAuthentication 与 ClusterTriggerAuthenticationv2.1.0 引入ClusterTriggerAuthentication支持跨命名空间共享全局认证凭据v2.8.0 加入 Azure AD Workload Identity 支持v2.13.0 支持从 ConfigMap 读取 TriggerAuthentication 属性并新增 GCP Secret Manager 作为密钥来源。密钥提供方HashiCorp Vaultv1.5.0v2.10.0 支持 secrets backend version 1、Azure Key Vaultv2.7.0、AWS Secrets Managerv2.13.0 的 AWS 认证重构中完善、GCP Secret Managerv2.13.0、file-based 认证v2.19.0 起支持 ClusterTriggerAuthentication。相关 handler 位于 pkg/scaling/resolver/如 azure_keyvault_handler.go、hashicorpvault_handler.go、gcp_secretmanager_handler.go。Pod Identity 的收缩与迁移v2.15.0 明确移除了 AAD-Pod-Identity 与 AWS-KIAM 两种认证v2.13.0 也预告移除 Azure AD Pod Identityv2.13.0 的 Deprecations 列出Remove support for Azure AD Pod Identity-based authentication。方向是全面转向 Azure AD Workload Identity、AWS EKS Pod Identity 等更现代的身份机制。安全加固v2.9.0 支持Restrict Secret Access限制密钥读取范围v2.13.0 增加awsSecretManager.podIdentity覆盖逻辑v2.18.0 支持 Vault 通过跨命名空间 ServiceAccount 认证v2.20.2 修复了 AWS Secret Manager 缺失凭据时的 nil 指针 panic。七、可观测性与指标体系的建设PrometheusKEDA operator 侧指标在 v2.8.0 前后逐步完善——scaler activity、scaler latencyv2.10.0、构建信息与处理循环延迟v2.11.0、ScaledJob 与暂停态 ScaledObject 指标v2.13.0、API server 指标v2.12.0v2.14.0 统一按最佳实践重命名指标。v2.9.0 起提供开箱即用的 Grafana dashboardconfig/grafana/keda-dashboard.json。OpenTelemetryv2.12.0实验引入向 OpenTelemetry Collector 推送运维指标v2.14.0 增加 gRPC client/server 指标与 OpenTelemetry gRPC 支持。实现位于 pkg/metricscollector/opentelemetry.go。Raw Metrics 流v2.18.0 增加 gRPC 服务订阅原始指标值v2.18.1/v2.19.0 持续增强ScaledObject 轮询间隔内也发送指标、响应中携带 trigger activity 状态对应 pkg/metricsservice/ 下的 gRPC 服务实现。八、稳定性、性能与安全修复的典型模式阅读 Fixes 章节可以看到 KEDA 在三个方向上的持续投入并发与数据竞争scalers cache 加锁v2.17.1、v2.16.0、fallbackupdateStatus并发 map 读写修复v2.20.1、共享 root CACertPool并发写修复v2.20.2。资源泄漏HTTP 连接与响应体泄漏CouchDB、AWS scalerClose()关闭 idle 连接、gRPC 重连退避恢复v2.20.2、MongoDB 初始 Ping 失败后断开客户端。CVE 修复v2.9.x 至 v2.20.x 各版本持续跟进如 v2.17.0 修复 CVE-2025-27144/22868/29786/30204v2.20.2 修复 CVE-2026-42151/42154/40179。安全策略与上报渠道见 SECURITY.md。此外性能类优化也贯穿始终v2.13.0 并行请求所有 trigger、v2.19.0 用 informer 缓存替代 API server 查询、v2.20.0 共享 HTTP transport 复用连接池、v2.5.0 引入 ScalersCache 复用 scaler 实例。这些优化共同保证了 operator 在高 ScaledObject 数量下的可扩展性。九、升级必读破坏性变更汇总CHANGELOG 中标注的 Breaking Changes 是升级 KEDA 时必须逐一核对的事项重要的包括v1.0.0RabbitMQhost必须从 secret 解析。v2.0.0API group 从keda.k8s.io改为keda.shScaledObject 与 ScaledJob 拆分为独立 CRDFromEnv后缀规范如connection→connectionFromEnvService Bus 的queueLength改名messageCountCRD 升级到apiextensions.k8s.io/v1Kafka 的 SASL/TLS 配置拆分。v2.5.0 起不再向 Docker Hub 推送镜像改为 GHCR 等。v2.9.0HPA API 从autoscaling/v2beta2升到autoscaling/v2Kubernetes 最低版本提升到 v1.23。v2.11.0Metrics Adapter 移除已弃用的 Prometheus 指标与非 gRPC 代码。v2.12.0移除 trigger metadata 中已弃用的metricName。v2.15.0移除 AAD-Pod-Identity 与 AWS-KIAMPrometheus scaler 移除cortexOrgID。v2.16.0Pulsar scaler 移除msgBacklog触发器名。v2.17.0InitialCooldownPeriod类型从int32改为*int32External Scaler 移除tlsCertFile。v2.18.0CPU/Memory scaler 的type与 IBM MQ scaler 的tls被移除分别改用metricType、unsafeSsl。v2.19.0移除 NATS StreamingStan支持。v2.20.0GCP PubSub 移除subscriptionSize用modevalueInfluxDB 的authToken移到resolvedEnv/authParamsIBM MQ 移除tls设置Huawei Cloudeye 移除minMetricValue用activationTargetMetricValue。这些变更背后是 API 定义apis/keda/v1alpha1/、CRD 清单config/crd/bases/与 scaler 实现三者的同步演进升级前建议对照 CRD 校验标记与 scaler 文档逐一验证现有配置。十、总结从 CHANGELOG 看 KEDA 的演进逻辑纵观 v1.0.0 到 v2.20.2KEDA 的演进主线清晰可辨scaler 生态从十余个扩张到上百个覆盖 AWS、Azure、GCP、开源中间件与 SaaS 服务核心 CRD 从简单扩缩走向精细化控制idle、fallback、pause、force activation、scaling modifiers、多策略 ScaledJob认证体系收敛到现代云原生身份机制可观测性从零散指标走向 Prometheus OpenTelemetry CloudEvents 的三位一体同时以高频 CVE 修复与并发安全加固保证生产可用性。对使用者而言这份 CHANGELOG 既是升级检查清单也是理解 KEDA 各功能模块pkg/scalers/、pkg/scaling/、pkg/metricsservice/的最佳索引。结合 ROADMAP.md 与 Unreleased 章节可以持续跟踪 KEDA 的下一步方向。【免费下载链接】kedaKEDA is a Kubernetes-based Event Driven Autoscaling component. It provides event driven scale for any container running in Kubernetes项目地址: https://gitcode.com/gh_mirrors/ke/keda创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考