依赖关系
本节将介绍如何在 KubeVela 中指定工作流步骤的依赖关系。
注意:在当前版本(1.4)中,工作流中的步骤是顺序执行的,这意味着步骤间有一个隐式的依赖关系,即:下一个步骤依赖上一个步骤的成功执行。此时,在工作流中指定依赖关系的意义可能不大。
在未来的版本(1.5+)中,你将可以显示指定工作流步骤的执行方式(如:改成 DAG 并行执行),此时,你可以通过指定步骤的依赖关系来控制工作流的执行。
如何使用
在 KubeVela 中,可以在步骤中通过 dependsOn 来指定步骤间的依赖关系。
如:我们希望在部署完组件之后,发送一个消息通知:
...workflow:steps:- name: comptype: apply-component- name: notifytype: notificationdependsOn:- comp
在这种情况下,KubeVela 等待步骤 comp 执行完毕后,再执行 notify 步骤发送消息通知。
部署如下 YAML:
apiVersion: core.oam.dev/v1beta1kind: Applicationmetadata:name: dependsOn-appnamespace: defaultspec:components:- name: express-servertype: webserviceproperties:image: oamdev/hello-worldports:- port: 8000workflow:steps:- name: comptype: apply-componentproperties:component: express-server- name: slack-messagetype: notificationdependsOn:- compproperties:slack:url:value: <your slack url>message:text: depends on comp
期望结果
使用 vela status 命令查看应用的状态:
$ vela status dependsAbout:Name: dependsNamespace: defaultCreated at: 2022-06-24 17:20:50 +0800 CSTStatus: runningWorkflow:mode: StepByStepfinished: trueSuspend: falseTerminated: falseSteps- id:e6votsntq3name:comptype:apply-componentphase:succeededmessage:- id:esvzxehgwcname:slack-messagetype:notificationphase:succeededmessage:Services:- Name: express-serverCluster: local Namespace: defaultType: webserviceHealthy Ready:1/1No trait applied
可以看到,所有的步骤状态均为成功。并且,当组件被成功部署后,slack 中也收到了一条消息通知。