kestra-io / kestra
kestra-io/kestra
面向关键任务应用的事件驱动编排与调度平台
项目概览
项目概述
Kestra 是一个开源的事件驱动编排与调度平台,专为关键任务应用设计。它通过声明式的 YAML 接口统一了定时调度和事件驱动自动化,并将基础设施即代码(Infrastructure as Code)的最佳实践引入数据、流程和微服务管道。Kestra 支持从 UI 直接构建工作流,同时保持工作流以代码形式管理,并集成了 Git 版本控制。
核心功能
- 一切皆代码,亦可从 UI 操作:即使从 UI 构建工作流,也能通过 Git 版本控制集成保持工作流以代码形式管理。
- 事件驱动与定时工作流:通过简单的
trigger定义,自动化定时和实时事件驱动的工作流。 - 声明式 YAML 接口:在内置代码编辑器中用简单的配置定义工作流。
- 丰富的插件生态:内置数百个插件,可从任何数据库、云存储或 API 提取数据,并支持以任何语言运行脚本。
- 直观的 UI 与代码编辑器:支持语法高亮、自动补全和实时语法验证,可直接在 UI 中构建和可视化工作流。
- 可扩展性:设计用于处理数百万个工作流,具备高可用性和容错能力。
- 版本控制友好:从内置代码编辑器编写工作流,并直接推送到 Git 分支,支持 CI/CD 最佳实践。
- 结构与韧性:通过命名空间、标签、子流程、重试、超时、错误处理、输入、输出、变量、条件分支、高级调度、事件触发器、回填、动态任务、顺序和并行任务等功能,为工作流带来秩序和韧性。
适用与不适用场景
适用场景:
- 数据管道编排(ETL/ELT)
- 基础设施自动化(InfraOps)
- 事件驱动的实时处理(如文件到达、消息队列事件)
- 跨云服务(AWS、GCP、Azure)的集成与自动化
- 需要高可用和容错的关键任务工作流
- 需要版本控制和 CI/CD 集成的工作流管理
不适用场景:
- 需要实时、低延迟(毫秒级)的微服务间通信(Kestra 更侧重于工作流编排而非服务间调用)
- 作为通用编程语言运行时(Kestra 是编排平台,不是应用服务器)
- 需要复杂状态机或长时间运行的有状态流程(Kestra 的工作流通常是无状态或通过外部存储管理状态)
技术架构与依赖
- 主要语言:Java
- 许可证:Apache-2.0
- 架构:事件驱动编排平台,支持高可用和容错。
- 依赖:Docker(用于本地运行和任务执行)、Kubernetes(可选,用于任务运行)、各种云服务 SDK(AWS、GCP、Azure)、消息队列(Kafka、Redis、Pulsar 等)、数据库(通过插件支持)。
- 监控:使用 Micrometer 库暴露 Prometheus 指标,遵循 OpenMetrics 1.0 格式。
安装与快速开始
本地 Docker 快速启动
确保 Docker 已运行,然后执行以下命令启动 Kestra:
docker run --pull=always -it -p 8080:8080 --user=root \
--name kestra --restart=always \
-v kestra_data:/app/storage \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp:/tmp \
kestra/kestra:latest server local
访问 http://localhost:8080 打开 Kestra UI。
第一个 Hello World 流程
在 UI 中创建一个新流程,内容如下:
id: hello_world
namespace: dev
tasks:
- id: say_hello
type: io.kestra.plugin.core.log.Log
message: "Hello, World!"
运行流程并查看输出。
典型使用方法
创建定时工作流
id: scheduled_flow
namespace: prod
triggers:
- id: daily
type: io.kestra.plugin.core.trigger.Schedule
cron: "0 9 * * *"
tasks:
- id: run_script
type: io.kestra.plugin.scripts.python.Script
script: |
print("Hello from scheduled flow!")
事件驱动工作流(监听文件到达)
id: file_trigger_flow
namespace: prod
triggers:
- id: watch
type: io.kestra.plugin.core.trigger.File
directory: "/tmp"
action: MOVE
tasks:
- id: process_file
type: io.kestra.plugin.core.log.Log
message: "File {{ trigger.uri }} arrived!"
使用插件调用外部 API
id: api_call_flow
namespace: dev
tasks:
- id: call_api
type: io.kestra.plugin.core.http.Request
uri: "https://api.example.com/data"
method: GET
配置与部署要点
- 部署选项:支持 Docker、Docker Compose、Podman、Kubernetes、AWS(CloudFormation)、GCP(Terraform)、Azure 等。
- 高可用:Kestra 设计为可水平扩展,支持多实例部署以实现高可用。
- 存储:默认使用本地存储(
/app/storage),生产环境建议配置外部存储(如 S3、GCS)。 - 数据库:Kestra 需要数据库存储元数据,默认使用 H2,生产环境建议使用 PostgreSQL 或 MySQL。
- 监控:通过 Micrometer 暴露 Prometheus 指标,可集成 Grafana 等监控工具。
- 版本控制:可将工作流存储在 Git 仓库中,并通过 CI/CD 管道自动部署。
- Terraform Provider:官方提供 Terraform Provider 管理 Kestra 资源。
限制、风险与许可证
- 限制:
- 工作流定义基于 YAML,对于复杂逻辑可能需要额外脚本支持。
- 插件生态虽丰富,但特定需求可能需要自定义插件开发。
- 实时事件处理依赖外部消息系统,配置复杂度较高。
- 风险:
- 作为开源项目,社区支持依赖贡献者,商业支持需通过 Kestra Technologies 获取。
- 版本更新可能引入破坏性变更,需关注发布说明。
- 许可证:Apache-2.0,允许自由使用、修改和分发。
官方链接
- GitHub 仓库:https://github.com/kestra-io/kestra
- 官方网站:https://kestra.io
- 文档:https://kestra.io/docs
- 插件列表:https://kestra.io/plugins
- Slack 社区:https://kestra.io/slack
- 最新版本:v1.3.30(发布于 2026-07-28)
信息来源和分析时间
- 信息来源:GitHub 仓库 README、文档(METRICS_GUIDELINES.md)、最新发布信息。
- 分析时间:2026-07-28(基于最新发布版本日期)。