内置工作流步骤列表

本文档将按字典序展示所有内置工作流步骤的参数列表。

本文档由脚本自动生成,请勿手动修改,上次更新于 2022-07-24T20:59:39+08:00。

Apply-Object

描述

在工作流中部署 Kubernetes 资源对象。

示例 (apply-object)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: server-with-pvc
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. volumes:
  14. - name: "my-pvc"
  15. type: "pvc"
  16. mountPath: "/test"
  17. claimName: "myclaim"
  18. workflow:
  19. steps:
  20. - name: apply-pvc
  21. type: apply-object
  22. properties:
  23. # Kubernetes native resources fields
  24. value:
  25. apiVersion: v1
  26. kind: PersistentVolumeClaim
  27. metadata:
  28. name: myclaim
  29. namespace: default
  30. spec:
  31. accessModes:
  32. - ReadWriteOnce
  33. resources:
  34. requests:
  35. storage: 8Gi
  36. storageClassName: standard
  37. # the cluster you want to apply the resource to, default is the current cluster
  38. cluster: <your cluster name>
  39. - name: apply-server
  40. type: apply-component
  41. properties:
  42. component: express-serve

参数说明 (apply-object)

名称描述类型是否必须默认值
valueKubernetes 资源对象参数。map[string]:(null|bool|string|bytes|{…}|[…]|number)true
cluster需要部署的集群名称。如果不指定,则为当前集群。stringfalseempty

Depends-On-App

描述

等待指定的 Application 完成。

示例 (depends-on-app)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: first-vela-workflow
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. traits:
  14. - type: ingress
  15. properties:
  16. domain: testsvc.example.com
  17. http:
  18. /: 8000
  19. workflow:
  20. steps:
  21. - name: express-server
  22. type: depends-on-app
  23. properties:
  24. name: another-app
  25. namespace: default

depends-on-app will check if the cluster has the application with name and namespace given in properties. If the application exists, it will hang the next step until the application is running. If the application does not exist, KubeVela will check the ConfigMap with the same name, and read the config of the Application and apply to cluster. The ConfigMap is like below: the name and namespace of the ConfigMap is the same in properties. In data, the key must be specified by application, and the value is the yaml of the deployed application yaml.

  1. apiVersion: v1
  2. kind: ConfigMap
  3. metadata:
  4. name: myapp
  5. namespace: vela-system
  6. data:
  7. application:
  8. <app yaml file>

参数说明 (depends-on-app)

名称描述类型是否必须默认值
name需要等待的 Application 名称。stringtrue
namespace需要等待的 Application 所在的命名空间。stringtrue

Deploy

描述

功能丰富且统一的用于多集群部署的步骤,可以指定多集群差异化配置策略。

示例 (deploy)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: deploy-workflowstep
  5. namespace: examples
  6. spec:
  7. components:
  8. - name: nginx-deploy-workflowstep
  9. type: webservice
  10. properties:
  11. image: nginx
  12. policies:
  13. - name: topology-hangzhou-clusters
  14. type: topology
  15. properties:
  16. clusterLabelSelector:
  17. region: hangzhou
  18. - name: topology-local
  19. type: topology
  20. properties:
  21. clusters: ["local"]
  22. namespace: examples-alternative
  23. workflow:
  24. steps:
  25. - type: deploy
  26. name: deploy-local
  27. properties:
  28. policies: ["topology-local"]
  29. - type: deploy
  30. name: deploy-hangzhou
  31. properties:
  32. # require manual approval before running this step
  33. auto: false
  34. policies: ["topology-hangzhou-clusters"]

参数说明 (deploy)

名称描述类型是否必须默认值
policies指定本次部署要使用的策略。如果不指定策略,将自动部署到管控集群。[]stringfalse
parallelism指定本次部署的并发度。intfalse5
ignoreTerraformComponent部署时忽略 Terraform 的组件,默认忽略,Terraform 仅需要在管控集群操作云资源,不需要管控信息下发到多集群。boolfalsetrue
auto默认为 true。如果为 false,工作流将在执行该步骤前自动暂停。。boolfalsetrue

Deploy-Cloud-Resource

描述

将云资源生成的秘钥部署到多集群。

参数说明 (deploy-cloud-resource)

名称描述类型是否必须默认值
env指定多集群策略中定义的环境名称。stringtrue
policyDeclare the name of the env-binding policy, if empty, the first env-binding policy will be used。stringfalseempty

Export2config

描述

在工作流中导出数据到 Kubernetes ConfigMap 对象。

示例 (export2config)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: export-config
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. workflow:
  14. steps:
  15. - name: apply-server
  16. type: apply-component
  17. outputs:
  18. - name: status
  19. valueFrom: output.status.conditions[0].message
  20. properties:
  21. component: express-server
  22. - name: export-config
  23. type: export-config
  24. inputs:
  25. - from: status
  26. parameterKey: data.serverstatus
  27. properties:
  28. configName: my-configmap
  29. data:
  30. testkey: testvalue

参数说明 (export2config)

名称描述类型是否必须默认值
cluster要导出到的集群名称。stringfalseempty
namespaceConfigMap 的 namespace,默认为当前应用的 namespace。stringfalse
data需要导出到 ConfigMap 中的数据,是一个 key-value 的 map。{…}true
configNameConfigMap 的名称。stringtrue

Export2secret

描述

在工作流中导出数据到 Kubernetes Secret 对象。

示例 (export2secret)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: export-secret
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. workflow:
  14. steps:
  15. - name: apply-server
  16. type: apply-component
  17. outputs:
  18. - name: status
  19. valueFrom: output.status.conditions[0].message
  20. properties:
  21. component: express-server
  22. - name: export-secret
  23. type: export-secret
  24. inputs:
  25. - from: status
  26. parameterKey: data.serverstatus
  27. properties:
  28. secretName: my-secret
  29. data:
  30. testkey: testvalue

参数说明 (export2secret)

名称描述类型是否必须默认值
cluster要导出到的集群名称。stringfalseempty
namespacesecret 的 namespace,默认为当前应用的 namespace。stringfalse
type指定导出的 secret 类型。stringfalse
secretNameSecret 的名称。stringtrue
data需要导出到 Secret 中的数据。{…}true

Generate-Jdbc-Connection

描述

Generate a JDBC connection based on Component of alibaba-rds。

参数说明 (generate-jdbc-connection)

名称描述类型是否必须默认值
nameSpecify the name of the secret generated by database component。stringtrue
namespaceSpecify the namespace of the secret generated by database component。stringfalse

Notification

描述

向指定的 Webhook 发送信息,支持邮件、钉钉、Slack 和飞书。

示例 (notification)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: first-vela-workflow
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. traits:
  14. - type: ingress
  15. properties:
  16. domain: testsvc.example.com
  17. http:
  18. /: 8000
  19. workflow:
  20. steps:
  21. - name: dingtalk-message
  22. type: notification
  23. properties:
  24. dingding:
  25. # the DingTalk webhook address, please refer to: https://developers.dingtalk.com/document/robots/custom-robot-access
  26. url:
  27. value: <url>
  28. message:
  29. msgtype: text
  30. text:
  31. context: Workflow starting...
  32. - name: application
  33. type: apply-application
  34. - name: slack-message
  35. type: notification
  36. properties:
  37. slack:
  38. # the Slack webhook address, please refer to: https://api.slack.com/messaging/webhooks
  39. url:
  40. secretRef:
  41. name: <secret-key>
  42. key: <secret-value>
  43. message:
  44. text: Workflow ended.
  45. lark:
  46. url:
  47. value: <lark-url>
  48. message:
  49. msg_type: "text"
  50. content: "{\"text\":\" Hello KubeVela\"}"
  51. email:
  52. from:
  53. address: <sender-email-address>
  54. alias: <sender-alias>
  55. password:
  56. # secretRef:
  57. # name: <secret-name>
  58. # key: <secret-key>
  59. value: <sender-password>
  60. host: <email host like smtp.gmail.com>
  61. port: <email port, optional, default to 587>
  62. to:
  63. - kubevela1@gmail.com
  64. - kubevela2@gmail.com
  65. content:
  66. subject: test-subject
  67. body: test-body

Expected outcome

We can see that before and after the deployment of the application, the messages can be seen in the corresponding group chat.

参数说明 (notification)

名称描述类型是否必须默认值
lark发送飞书信息。larkfalse
slack发送 Slack 信息。slackfalse
email发送邮件通知。emailfalse
dingding发送钉钉信息。dingdingfalse

lark (notification)

名称描述类型是否必须默认值
urlSpecify the the lark url, you can either sepcify it in value or use secretRef。url-option-0 or url-option-1true
messageSpecify the message that you want to sent, refer to Lark messagingmessagetrue
url-option-0 (notification)
名称描述类型是否必须默认值
valuethe url address content in string。stringtrue
url-option-1 (notification)
名称描述类型是否必须默认值
secretRefsecretReftrue
secretRef (notification)
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
message (notification)
名称描述类型是否必须默认值
contentcontent should be json encode string。stringtrue
msg_typemsg_type can be text, post, image, interactive, share_chat, share_user, audio, media, file, sticker。stringtrue

slack (notification)

名称描述类型是否必须默认值
urlSlack 的 Webhook 地址,可以选择直接在 value 填写或从 secretRef 中获取。url-option-0 or url-option-1true
messageSpecify the message that you want to sent, refer to slack messagingmessagetrue
url-option-0 (notification)
名称描述类型是否必须默认值
valuethe url address content in string。stringtrue
url-option-1 (notification)
名称描述类型是否必须默认值
secretRefsecretReftrue
secretRef (notification)
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
message (notification)
名称描述类型是否必须默认值
textSpecify the message text for slack notification。stringtrue
blocks(null|[…])false
attachments(null|{…})false
thread_tsstringfalse
mrkdwnSpecify the message text format in markdown for slack notification。boolfalsetrue

email (notification)

名称描述类型是否必须默认值
content指定邮件内容。contenttrue
from指定邮件发送人信息。fromtrue
to指定收件人信息。[]stringtrue
content (notification)
名称描述类型是否必须默认值
body指定邮件正文内容。stringtrue
subject指定邮件标题。stringtrue
from (notification)
名称描述类型是否必须默认值
address发件人邮件地址。stringtrue
aliasThe alias is the email alias to show after sending the email。stringfalse
passwordSpecify the password of the email, you can either sepcify it in value or use secretRef。password-option-0 or password-option-1true
hostSpecify the host of your email。stringtrue
portSpecify the port of the email host, default to 587。intfalse587
password-option-0 (notification)
名称描述类型是否必须默认值
valuethe password content in string。stringtrue
password-option-1 (notification)
名称描述类型是否必须默认值
secretRefsecretReftrue
secretRef (notification)
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue

dingding (notification)

名称描述类型是否必须默认值
urlSpecify the the dingding url, you can either sepcify it in value or use secretRef。url-option-0 or url-option-1true
messageSpecify the message that you want to sent, refer to dingtalk messagingmessagetrue
url-option-0 (notification)
名称描述类型是否必须默认值
valuethe url address content in string。stringtrue
url-option-1 (notification)
名称描述类型是否必须默认值
secretRefsecretReftrue
secretRef (notification)
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
message (notification)
名称描述类型是否必须默认值
textSpecify the message content of dingtalk notification。(null|{…})false
msgtypemsgType can be text, link, mardown, actionCard, feedCard。stringfalsetext
link(null|{…})false
markdown(null|{…})false
at(null|{…})false
actionCard(null|{…})false
feedCard(null|{…})false

Read-Object

描述

在工作流中读取 Kubernetes 资源对象。

示例 (read-object)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: read-object
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. workflow:
  14. steps:
  15. - name: read-object
  16. type: read-object
  17. outputs:
  18. - name: cpu
  19. valueFrom: output.value.data["cpu"]
  20. - name: memory
  21. valueFrom: output.value.data["memory"]
  22. properties:
  23. apiVersion: v1
  24. kind: ConfigMap
  25. name: my-cm-name
  26. cluster: <your cluster name
  27. - name: apply
  28. type: apply-component
  29. inputs:
  30. - from: cpu
  31. parameterKey: cpu
  32. - from: memory
  33. parameterKey: memory
  34. properties:
  35. component: express-server

参数说明 (read-object)

名称描述类型是否必须默认值
nameSpecify the name of the object。stringtrue
cluster需要部署的集群名称。如果不指定,则为当前集群。stringfalseempty
apiVersionSpecify the apiVersion of the object, defaults to ‘core.oam.dev/v1beta1’。stringfalse
kindSpecify the kind of the object, defaults to Application。stringfalse
namespaceThe namespace of the resource you want to read。stringfalsedefault

Share-Cloud-Resource

描述

Sync secrets created by terraform component to runtime clusters so that runtime clusters can share the created cloud resource。

参数说明 (share-cloud-resource)

名称描述类型是否必须默认值
env指定多集群策略中定义的环境名称。stringtrue
policyDeclare the name of the env-binding policy, if empty, the first env-binding policy will be used。stringfalseempty
placementsDeclare the location to bind。[]placementstrue

placements (share-cloud-resource)

名称描述类型是否必须默认值
clusterstringfalse
namespacestringfalse

Step-Group

描述

A special step that you can declare ‘subSteps’ in it, ‘subSteps’ is an array containing any step type whose valid parameters do not include the step-group step type itself. The sub steps were executed in parallel。

示例 (step-group)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: example
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: crccheck/hello-world
  12. port: 8000
  13. - name: express-server2
  14. type: webservice
  15. properties:
  16. image: crccheck/hello-world
  17. port: 8000
  18. workflow:
  19. steps:
  20. - name: step
  21. type: step-group
  22. subSteps:
  23. - name: apply-sub-step1
  24. type: apply-component
  25. properties:
  26. component: express-server
  27. - name: apply-sub-step2
  28. type: apply-component
  29. properties:
  30. component: express-server2

参数说明 (step-group)

This capability has no arguments.

Suspend

描述

暂停当前工作流,可以通过 ‘vela workflow resume’ 继续已暂停的工作流。

示例 (suspend)

The duration parameter is supported in KubeVela v1.4 or higher.

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: first-vela-workflow
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. workflow:
  14. steps:
  15. - name: slack-message
  16. type: webhook-notification
  17. properties:
  18. slack:
  19. # the Slack webhook address, please refer to: https://api.slack.com/messaging/webhooks
  20. message:
  21. text: Ready to apply the application, ask the administrator to approve and resume the workflow.
  22. - name: manual-approval
  23. type: suspend
  24. # properties:
  25. # duration: "30s"
  26. - name: express-server
  27. type: apply-application

参数说明 (suspend)

名称描述类型是否必须默认值
duration指定工作流暂停的时长,超过该时间后工作流将自动继续,如:”30s”, “1min”, “2m15s”。stringfalse

Webhook

描述

向指定 Webhook URL 发送请求,若不指定请求体,则默认发送当前 Application。

示例 (webhook)

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: first-vela-workflow
  5. namespace: default
  6. spec:
  7. components:
  8. - name: express-server
  9. type: webservice
  10. properties:
  11. image: oamdev/hello-world
  12. port: 8000
  13. workflow:
  14. steps:
  15. - name: express-server
  16. type: apply-application
  17. - name: webhook
  18. type: webhook
  19. properties:
  20. url:
  21. value: <your webhook url>

参数说明 (webhook)

名称描述类型是否必须默认值
url需要发送的 Webhook URL,可以选择直接在 value 填写或从 secretRef 中获取。url-option-0 or url-option-1true
data需要发送的内容。map[string]:(null|bool|string|bytes|{…}|[…]|number)false

url-option-0 (webhook)

名称描述类型是否必须默认值
valuestringtrue

url-option-1 (webhook)

名称描述类型是否必须默认值
secretRefsecretReftrue
secretRef (webhook)
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue