## 项目概述

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：

```bash
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](http://localhost:8080) 打开 Kestra UI。

### 第一个 Hello World 流程

在 UI 中创建一个新流程，内容如下：

```yaml
id: hello_world
namespace: dev

tasks:
  - id: say_hello
    type: io.kestra.plugin.core.log.Log
    message: "Hello, World!"
```

运行流程并查看输出。

## 典型使用方法

### 创建定时工作流

```yaml
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!")
```

### 事件驱动工作流（监听文件到达）

```yaml
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

```yaml
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://github.com/kestra-io/kestra)
- **官方网站**：[https://kestra.io](https://kestra.io)
- **文档**：[https://kestra.io/docs](https://kestra.io/docs)
- **插件列表**：[https://kestra.io/plugins](https://kestra.io/plugins)
- **Slack 社区**：[https://kestra.io/slack](https://kestra.io/slack)
- **最新版本**：[v1.3.30](https://github.com/kestra-io/kestra/releases/tag/v1.3.30)（发布于 2026-07-28）

## 信息来源和分析时间

- **信息来源**：GitHub 仓库 README、文档（METRICS_GUIDELINES.md）、最新发布信息。
- **分析时间**：2026-07-28（基于最新发布版本日期）。