Application
和 WorkflowRun
是两个核心概念,它们分别代表了应用程序的定义和应用程序部署的执行过程。
在 KubeVela 中,Application
和 WorkflowRun
是两个核心概念,它们分别代表了应用程序的定义和应用程序部署的执行过程。理解它们的区别对于有效使用 KubeVela 至关重要。
Application(应用程序)
Application
是对应用程序及其组件的声明性描述。它定义了应用程序的组成部分(例如,服务、数据库等)、这些组件的配置以及它们之间的关系。Application
关注的是“想要什么”,即应用程序的期望状态。它是一个静态的配置,描述了应用程序的最终形态。Application
可以多次部署。WorkflowRun(工作流运行)
WorkflowRun
是执行应用程序部署或管理操作的实例。它定义了一系列有序的步骤,这些步骤描述了如何将 Application
的期望状态变为实际状态。WorkflowRun
关注的是“如何做”,即执行部署或管理操作的具体步骤。WorkflowRun
实例只执行一次。在Application的文件定义中存在Workflow
的定义,同时也区分一下Workflow
与WorkflowRun
的区别。
Workflow 与 WorkflowRun 的区别
特性 | Workflow | WorkflowRun |
---|---|---|
目的 | 定义工作流程模板 | 执行工作流程实例 |
类型 | 模板定义 | 执行实例 |
生命周期 | 可复用,多次执行 | 一次性,执行后结束 |
关注点 | 工作流程的定义和步骤序列 | 工作流程的实际执行状态和结果 |
组成 | 步骤(Steps),WorkflowStepDefinition | 步骤的执行状态,日志,结果等 |
以下重点从应用层讲述Application
和 WorkflowRun
二者的区别。
Application的配置文件如下:
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: website
spec:
components:
- name: frontend
type: webservice
properties:
image: oamdev/testapp:v1
cmd: ["node", "server.js"]
ports:
- port: 8080
expose: true
cpu: "0.1"
env:
- name: FOO
value: bar
- name: FOO
valueFrom:
secretKeyRef:
name: bar
key: bar
在这里并没有定义策略和工作流,Application可以不定义这些内容。Application默认就有一个部署应用的工作流(Workflow)。