跳转到主要内容
Arcentra 由两个长期运行的服务以及一个共享库层组成:
  • 控制平面cmd/arcentra):负责流水线、运行实例、身份、调度,以及对外 的 HTTP / gRPC / WebSocket 接口。
  • Agentcmd/arcentra-agent):连接控制平面,拉取并执行步骤运行 (StepRun),在沙箱或宿主机上完成执行,并回传状态、日志与产物。
  • 共享运行时internal/shared/...):流水线编排、DSL、builtin、执行器、 通知、存储与 gRPC 客户端/拦截器,控制平面和 Agent 共用。

组件全景

控制平面

控制平面由 internal/control/bootstrap 启动,读取两个配置文件(-conf-plugin-conf),对外提供:
  • HTTP API:流水线、运行、身份、设置、上传以及 WebSocket 网关,默认 :8080
  • gRPC 服务:Agent 控制、Gateway 数据接收、Pipeline、StepRun 与 Stream,默认 :9090
  • Metrics:8082,可选启用 OTLP 链路追踪。
状态存储在 SQL 数据库(生产推荐 MySQL)。Redis 提供缓存与短期协调;Kafka 在 数据面和控制面之间承载日志与事件。

Agent

Agent 由 internal/agent/bootstrap 启动,读取一个配置文件,主要职责:
  • 注册到控制平面并定期发送心跳。
  • 按标签选择器与并发预算拉取需要执行的 StepRun。
  • 在配置好的沙箱内执行 builtin(如 shell)与插件(如 gitsvnapollonacos)。
  • 通过 gRPC 与 Kafka 回传状态、日志和产物。
Agent 适配多种环境:裸金属、containerd、Kubernetes Pod,或任何能够通过 gRPC 访问控制平面的主机。

流水线运行时

流水线运行时位于 internal/shared/pipeline ,控制平面和 Agent 共用。核心概念:
  • Pipeline:与项目绑定的版本化定义,可以内联存放,也可以由 Git 仓库中的 pipeline.yaml 提供。
  • Stage / Job / Step:流水线的结构分解。可以使用 stages 模式( Stage → Jobs → Steps),也可以使用 jobs 简写模式(自动包裹默认 Stage)。
  • PipelineRun / JobRun / StepRun:运行期对象,承载状态、日志、产物与时间 线。
  • Trigger:手动、Cron/调度,或事件/Webhook,可结合审批门控。
  • 执行器与 builtin:本地执行模型(shellstdout、产物、报告、SCM 等),以及通过 uses + action + args 调用的插件动作。
面向用户的模型与 HTTP 形态见 流水线

插件与可扩展性

插件通过二进制的 import 集合加载(见 cmd/arcentra/main.go ),并通过 conf.d/plugins.toml 配置。仓库默认提供:
  • GitSVN 源代码检出。
  • ApolloNacos 配置中心集成。
新的动作或集成可以遵循同样的接口模型,无需改动控制平面即可扩展。

可观测性与治理

  • 指标:通过指标端口暴露 Prometheus 格式数据。
  • 链路:基于 OpenTelemetry,支持 OTLP-gRPC / OTLP-HTTP / Jaeger 导出。
  • 日志:结构化日志,支持多 category(HTTP、插件、Cron 等)。
  • 事件:流水线与插件生命周期事件遵循 CloudEvents 兼容映射。
这些信号是审计、SLO 仪表盘以及跨团队治理的基础。
Last modified on April 26, 2026