依赖关系

本节将介绍如何在 KubeVela 中指定工作流步骤的依赖关系。

依赖关系 - 图1备注

在 1.4及以前版本中,工作流中的步骤是顺序执行的,这意味着步骤间有一个隐式的依赖关系,即:下一个步骤依赖上一个步骤的成功执行。此时,在工作流中指定依赖关系的意义可能不大。

在版本 1.5+ 中,你将可以显示指定工作流步骤的执行方式(如:改成 DAG 并行执行),此时,你可以通过指定步骤的依赖关系来控制工作流的执行。

如何使用

在 KubeVela 中,可以在步骤中通过 dependsOn 来指定步骤间的依赖关系。

如:我们希望在部署完组件之后,发送一个消息通知:

  1. ...
  2. workflow:
  3. steps:
  4. - name: comp
  5. type: apply-component
  6. - name: notify
  7. type: notification
  8. dependsOn:
  9. - comp

在这种情况下,KubeVela 等待步骤 comp 执行完毕后,再执行 notify 步骤发送消息通知。

部署如下 YAML:

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: dependsOn-app
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. ports:
  13. - port: 8000
  14. workflow:
  15. steps:
  16. - name: comp
  17. type: apply-component
  18. properties:
  19. component: express-server
  20. - name: slack-message
  21. type: notification
  22. dependsOn:
  23. - comp
  24. properties:
  25. slack:
  26. url:
  27. value: <your slack url>
  28. message:
  29. text: depends on comp

期望结果

使用 vela status 命令查看应用的状态:

  1. $ vela status depends
  2. About:
  3. Name: depends
  4. Namespace: default
  5. Created at: 2022-06-24 17:20:50 +0800 CST
  6. Status: running
  7. Workflow:
  8. mode: StepByStep
  9. finished: true
  10. Suspend: false
  11. Terminated: false
  12. Steps
  13. - id:e6votsntq3
  14. name:comp
  15. type:apply-component
  16. phase:succeeded
  17. message:
  18. - id:esvzxehgwc
  19. name:slack-message
  20. type:notification
  21. phase:succeeded
  22. message:
  23. Services:
  24. - Name: express-server
  25. Cluster: local Namespace: default
  26. Type: webservice
  27. Healthy Ready:1/1
  28. No trait applied

可以看到,所有的步骤状态均为成功。并且,当组件被成功部署后,slack 中也收到了一条消息通知。