spinnaker 是一个多云交付系统,即 CI/CD 中的 CD 部分,定位类似于 KubeVela。Spinnaker 源自于 Netflix,完全基于云服务,对接 aws 等云服务商,将应用部署到云服务中。和物理机类似的“包年包月”不同,Spinnaker 支持的是按量付费和动态伸缩,追求极致的弹性。Spinnaker 极其强大的一点在于多云交付,避免应用因为单一云服务故障导致应用不可用。
Spinnaker 采用微服务架构,orca 是流程引擎。Spinnaker 的发布流水线由一个个 stage 组成,deck 提供可视化界面将 stage 串联起来组成 pipeline。Orca 则具体执行 pipeline。在 Orca 中,pipeline 表示串行执行的 stages,还可以支持并行的 orchestration,但是不是 pipeline 只支持串行执行,而是因为 Spinnaker 是一个 CD 系统,pipeline 和 orchestration 是 Spinnaker 功能上的划分,pipeline 表示发布流水线,orchestration 表示可以在 ui 上由用户发起的任务。pipeline 本身是 DAG。
参考链接:
Orca 将任务定义为 3 层:
PipelineExecution
,有 2 种类型:PIPELINE
、ORCHESTRATION
。pipeline 由一系列的 stages 组成StageExecution
。stage 本身由一系列的 tasks 组成,tasks 之间组成一个 DAGTaskExecution
。task 是最小粒度的划分,完成具体的任务Orca 的实现基于事件驱动,基于发布-订阅模式,完成了 pipeline、stage 和 task 的启动、执行,上下游依赖。
事件驱动的核心为延迟队列,提供了一个抽象的队列接口,并提供了 Redis 和 MySQL 实现:
Message
和 Handler
,功能清晰在存储上,Orca 提供了 2 种实现:Redis 和 MySQL
Queue
Message
QueueHandler
QueueProcessor
PipelineExecution
、StageExecution
、TaskExecution
、Trigger
,StageGraphBuilder
、StageDefitionBuilder
、TaskNode
CancellableStage
、Task
、TaskExecutionInterceptor
StageListener
、ExecutionListener
、StageListenerAdapter
、ExecutionListenerAdapter
StageResolver
、TaskImplementationResolver
、TaskResolver
ExecutionContext
、StageContext
、TaskContext
ExecutionRunner
、ExecutionLauncher
ExecutionRepository
执行 Pipeline -> Stage -> Task -> RunTask -> CompleteTask -> Complete Stage -> Complete Pipeline ->
StartExecution -> 是否限制并发(如果有 pipelineConfigId)
流程编排方式:
序列化。默认是以 jackson 为序列化方式
接口声明。为方便实现三方 stage 和 task,提供标准的接口和内部实现,发布至 maven 供三方实现