Kestra作为一个开源的事件驱动编排平台,正在改变开发者构建和管理工作流的方式。在AI225导航,我们致力于为用户提供最全面的AI工具和开源项目指南,本文将详细介绍Kestra的强大功能及其应用场景。
项目GitHub地址:https://github.com/kestra-io/kestra
什么是Kestra?¶
Kestra是一个开源的事件驱动编排平台,使定时和事件驱动的工作流变得简单易用。通过将基础设施即代码的最佳实践应用于数据、流程和微服务编排,您可以直接在UI中用几行YAML构建可靠的工作流。
核心特点¶
- 代码与UI并重:即使在UI中构建工作流,也能保持工作流即代码,并集成Git版本控制
- 事件驱动与定时工作流:通过简单的
trigger定义,自动化定时和实时事件驱动的工作流 - 声明式YAML接口:在内置代码编辑器中使用简单配置定义工作流
- 丰富的插件生态系统:内置数百个插件,可从任何数据库、云存储或API提取数据,并以任何语言运行脚本
- 直观的UI和代码编辑器:直接从UI构建和可视化工作流,具有语法高亮、自动完成和实时语法验证功能
- 可扩展性:专为处理数百万工作流而设计,具有高可用性和容错性
- 版本控制友好:从内置代码编辑器编写工作流,并直接从Kestra推送到您喜欢的Git分支,实现CI/CD流水线和版本控制系统的最佳实践
- 结构与弹性:通过命名空间、标签、子流程、重试、超时、错误处理、输入、在UI中生成工件的输出、变量、条件分支、高级调度、事件触发器、回填、动态任务、顺序和并行任务以及通过将标志设置为
disabled来跳过任务或触发器,为工作流带来结构和弹性
🧑💻 YAML定义会在您从UI或通过API调用对工作流进行更改时自动调整。因此,编排逻辑始终以声明式方式在代码中管理,即使您通过其他方式(UI、CI/CD、Terraform、API调用)修改工作流也是如此。
快速开始¶
5分钟本地启动¶
使用Docker启动Kestra¶
确保Docker正在运行。然后,使用单个命令启动Kestra:
docker run --pull=always --rm -it -p 8080:8080 --user=root \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp:/tmp kestra/kestra:latest server local
如果您使用Windows PowerShell:
docker run --pull=always --rm -it -p 8080:8080 --user=root `
-v "/var/run/docker.sock:/var/run/docker.sock" `
-v "C:/Temp:/tmp" kestra/kestra:latest server local
如果您使用Windows命令提示符(CMD):
docker run --pull=always --rm -it -p 8080:8080 --user=root ^
-v "/var/run/docker.sock:/var/run/docker.sock" ^
-v "C:/Temp:/tmp" kestra/kestra:latest server local
如果您使用Windows WSL(Windows中的Linux环境):
docker run --pull=always --rm -it -p 8080:8080 --user=root \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "C:/Temp:/tmp" kestra/kestra:latest server local
查看kestra的安装指南 (https://kestra.io/docs/installation) 了解其他部署选项(Docker Compose、Podman、Kubernetes、AWS、GCP、Azure等)。
在 http://localhost:8080 访问Kestra UI,开始构建您的第一个流程!
您的第一个Hello World流程¶
创建一个包含以下内容的新流程:
id: hello_world
namespace: dev
tasks:
- id: say_hello
type: io.kestra.plugin.core.log.Log
message: "Hello, World!"
运行流程并在UI中查看输出!
插件生态系统¶
Kestra的功能通过丰富的插件生态系统 (https://kestra.io/plugins) 得到扩展,使您能够在任何地方运行任务并以任何语言编写代码,包括Python、Node.js、R、Go、Shell等。以下是Kestra插件如何增强您的工作流:
在任何地方运行¶
- 本地或远程执行:在您的本地机器上、通过SSH在远程服务器上执行任务,或使用任务运行器 (https://kestra.io/docs/task-runners) 扩展到无服务器容器
- Docker和Kubernetes支持:在工作流中无缝运行Docker容器或启动Kubernetes作业以处理计算密集型工作负载
以任何语言编写代码¶
- 脚本支持:用您喜欢的编程语言编写脚本。Kestra支持Python、Node.js、R、Go、Shell等,使您能够集成现有代码库和部署模式
- 灵活的自动化:执行shell命令、对各种数据库运行SQL查询以及发出HTTP请求以与API交互
事件驱动和实时处理¶
- 实时触发器:实时响应外部系统的事件,如文件到达、消息总线中的新消息(Kafka、Redis、Pulsar、AMQP、MQTT、NATS、AWS SQS、Google Pub/Sub、Azure Event Hubs)等
- 自定义事件:定义自定义事件以基于特定条件或外部信号触发流程,实现高度响应的工作流
云集成¶
- AWS、Google Cloud、Azure:与各种云服务集成,以与存储解决方案、消息系统、计算资源等交互
- 大数据处理:使用Apache Spark等工具运行大数据处理任务或与Google BigQuery等分析平台交互
监控和通知¶
- 保持信息畅通:向Slack频道发送消息、发送电子邮件通知或在PagerDuty中触发警报,以保持团队更新工作流状态
Kestra的插件生态系统不断扩展,使您能够根据特定需求定制平台。无论您是在编排复杂的数据管道、在多个环境中自动化脚本,还是与云服务集成,都可能有一个插件可以提供帮助。如果没有,您始终可以构建自己的插件 (https://kestra.io/docs/plugin-developer-guide/) 来扩展Kestra的功能。
注意:这只是Kestra插件功能的一瞥。在kestra的插件页面 (https://kestra.io/plugins) 上探索完整列表。
核心概念¶
- 流程:Kestra中的核心单元,表示由任务组成的工作流
- 任务:单个工作单元,如运行脚本、移动数据或调用API
- 命名空间:用于组织和隔离的逻辑流程分组
- 触发器:启动流程执行的计划或事件
- 输入和变量:传递到流程和任务的参数和动态数据
可视化构建工作流¶
Kestra提供了一个直观的UI,允许您交互式构建和可视化您的工作流:
- 拖放界面:从拓扑编辑器添加和重新排列任务
- 实时验证:对工作流的语法和结构提供即时反馈,以便及早发现错误
- 自动完成:在键入时提供智能建议,以快速编写无语法错误的流程代码
- 实时拓扑视图:将您的工作流视为有向无环图(DAG),实时更新
可扩展和开发者友好¶
插件开发¶
创建自定义插件以扩展Kestra的功能。查看kestra的插件开发指南 (https://kestra.io/docs/plugin-developer-guide/) 开始使用。
基础设施即代码¶
- 版本控制:将您的工作流存储在Git存储库中
- CI/CD集成:使用CI/CD流水线自动化工作流的部署
- Terraform提供程序:使用官方Terraform提供程序 (https://kestra.io/docs/terraform/) 管理Kestra资源
许可证¶
Kestra根据Apache 2.0许可证获得许可 © Kestra Technologies (https://kestra.io)。
总结¶
Kestra是一个功能强大、灵活且易于使用的事件驱动编排平台,适用于各种自动化和编排需求。无论您是数据工程师、DevOps工程师还是开发人员,Kestra都能为您提供所需的工具和功能,帮助您构建可靠、可扩展的工作流。
通过其声明式YAML界面、丰富的插件生态系统、直观的UI和强大的开发者友好特性,Kestra正在改变团队构建和管理自动化流程的方式。如果您正在寻找一个能够满足您所有编排需求的平台,Kestra绝对值得一试。
想了解更多AI工具和开源项目?请访问AI225导航,我们提供最全面的AI工具使用指南和资源。
