版本:v1.6

内置工作流步骤列表

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

本文档由脚本自动生成,请勿手动修改,上次更新于 2022-11-24T12:21:19+08:00。

Apply a specific component and its corresponding traits in application。

  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: apply-component
  23. properties:
  24. component: express-server
  25. # cluster: <your cluster name>
名称描述类型是否必须默认值
componentSpecify the component name to apply。stringtrue
clusterSpecify the cluster。stringfalseempty

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

  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
名称描述类型是否必须默认值
valueKubernetes 资源对象参数。map[string]:_true
cluster需要部署的集群名称。如果不指定,则为当前集群。stringfalseempty

Collect service endpoints for the application。

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: app-collect-service-endpoint-and-export
  5. spec:
  6. components:
  7. - type: webservice
  8. name: busybox
  9. properties:
  10. image: busybox
  11. imagePullPolicy: IfNotPresent
  12. cmd:
  13. - sleep
  14. - '1000000'
  15. traits:
  16. - type: expose
  17. properties:
  18. port: [8080]
  19. type: ClusterIP
  20. policies:
  21. - type: topology
  22. name: local
  23. properties:
  24. clusters: ["local"]
  25. - type: topology
  26. name: all
  27. properties:
  28. clusters: ["local", "cluster-worker"]
  29. workflow:
  30. steps:
  31. - type: deploy
  32. name: deploy
  33. properties:
  34. policies: ["local"]
  35. - type: collect-service-endpoints
  36. name: collect-service-endpoints
  37. outputs:
  38. - name: host
  39. valueFrom: value.endpoint.host
  40. - type: export-data
  41. name: export-data
  42. properties:
  43. topology: all
  44. inputs:
  45. - from: host
  46. parameterKey: data.host

This capability has no arguments.

Create or update a config。

  1. kind: Application
  2. apiVersion: core.oam.dev/v1beta1
  3. metadata:
  4. name: test-config
  5. namespace: "config-e2e-test"
  6. spec:
  7. components: []
  8. workflow:
  9. steps:
  10. - name: write-config
  11. type: create-config
  12. properties:
  13. name: test
  14. config:
  15. key1: value1
  16. key2: 2
  17. key3: true
  18. key4:
  19. key5: value5
  20. - name: read-config
  21. type: read-config
  22. properties:
  23. name: test
  24. outputs:
  25. - fromKey: config
  26. name: read-config
  27. - name: delete-config
  28. type: delete-config
  29. properties:
  30. name: test
名称描述类型是否必须默认值
nameSpecify the name of the config。stringtrue
namespaceSpecify the namespace of the config。stringfalse
templateSpecify the template of the config。stringfalse
configSpecify the content of the config。map[string]:_true

Delete a config。

  1. kind: Application
  2. apiVersion: core.oam.dev/v1beta1
  3. metadata:
  4. name: test-config
  5. namespace: "config-e2e-test"
  6. spec:
  7. components: []
  8. workflow:
  9. steps:
  10. - name: write-config
  11. type: create-config
  12. properties:
  13. name: test
  14. config:
  15. key1: value1
  16. key2: 2
  17. key3: true
  18. key4:
  19. key5: value5
  20. - name: delete-config
  21. type: delete-config
  22. properties:
  23. name: test
名称描述类型是否必须默认值
nameSpecify the name of the config。stringtrue
namespaceSpecify the namespace of the config。stringfalse

等待指定的 Application 完成。

  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>
名称描述类型是否必须默认值
name需要等待的 Application 名称。stringtrue
namespace需要等待的 Application 所在的命名空间。stringtrue

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

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

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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: rds-app
  5. namespace: project-1
  6. spec:
  7. components:
  8. - name: db
  9. type: alibaba-rds
  10. properties:
  11. instance_name: db
  12. account_name: kubevela
  13. password: my-password
  14. writeConnectionSecretToRef:
  15. name: project-1-rds-conn-credential
  16. policies:
  17. - name: env-policy
  18. type: env-binding
  19. properties:
  20. envs:
  21. # 部署 RDS 给杭州集群
  22. - name: hangzhou
  23. placement:
  24. clusterSelector:
  25. name: cluster-hangzhou
  26. patch:
  27. components:
  28. - name: db
  29. type: alibaba-rds
  30. properties:
  31. # region: hangzhou
  32. instance_name: hangzhou_db
  33. # 部署 RDS 给香港集群
  34. - name: hongkong
  35. placement:
  36. clusterSelector:
  37. name: cluster-hongkong
  38. namespaceSelector:
  39. name: hk-project-1
  40. patch:
  41. components:
  42. - name: db
  43. type: alibaba-rds
  44. properties:
  45. # region: hongkong
  46. instance_name: hongkong_db
  47. writeConnectionSecretToRef:
  48. name: hk-project-rds-credential
  49. workflow:
  50. steps:
  51. # 部署 RDS 给杭州区用
  52. - name: deploy-hangzhou-rds
  53. type: deploy-cloud-resource
  54. properties:
  55. env: hangzhou
  56. # 将给杭州区用的 RDS 共享给北京区
  57. - name: share-hangzhou-rds-to-beijing
  58. type: share-cloud-resource
  59. properties:
  60. env: hangzhou
  61. placements:
  62. - cluster: cluster-beijing
  63. # 部署 RDS 给香港区用
  64. - name: deploy-hongkong-rds
  65. type: deploy-cloud-resource
  66. properties:
  67. env: hongkong
  68. # 将给香港区用的 RDS 共享给香港区其他项目用
  69. - name: share-hongkong-rds-to-other-namespace
  70. type: share-cloud-resource
  71. properties:
  72. env: hongkong
  73. placements:
  74. - cluster: cluster-hongkong
  75. namespace: hk-project-2
  76. - cluster: cluster-hongkong
  77. namespace: hk-project-3
名称描述类型是否必须默认值
policyDeclare the name of the env-binding policy, if empty, the first env-binding policy will be used。stringfalseempty
env指定多集群策略中定义的环境名称。stringtrue

Export data to clusters specified by topology。

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: app-collect-service-endpoint-and-export
  5. spec:
  6. components:
  7. - type: webservice
  8. name: busybox
  9. properties:
  10. image: busybox
  11. imagePullPolicy: IfNotPresent
  12. cmd:
  13. - sleep
  14. - '1000000'
  15. traits:
  16. - type: expose
  17. properties:
  18. port: [8080]
  19. type: ClusterIP
  20. policies:
  21. - type: topology
  22. name: local
  23. properties:
  24. clusters: ["local"]
  25. - type: topology
  26. name: all
  27. properties:
  28. clusters: ["local", "cluster-worker"]
  29. workflow:
  30. steps:
  31. - type: deploy
  32. name: deploy
  33. properties:
  34. policies: ["local"]
  35. - type: collect-service-endpoints
  36. name: collect-service-endpoints
  37. outputs:
  38. - name: host
  39. valueFrom: value.endpoint.host
  40. - type: export-data
  41. name: export-data
  42. properties:
  43. topology: all
  44. inputs:
  45. - from: host
  46. parameterKey: data.host
名称描述类型是否必须默认值
nameSpecify the name of the export destination。stringfalse
namespaceSpecify the namespace of the export destination。stringfalse
kindSpecify the kind of the export destination。stringfalseConfigMap
dataSpecify the data to export。structtrue
topologySpecify the topology to export。stringfalse

Export service to clusters specified by topology。

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: app-collect-service-endpoint-and-export
  5. spec:
  6. components:
  7. - type: webservice
  8. name: busybox
  9. properties:
  10. image: busybox
  11. imagePullPolicy: IfNotPresent
  12. cmd:
  13. - sleep
  14. - '1000000'
  15. traits:
  16. - type: expose
  17. properties:
  18. port: [8080]
  19. type: LoadBalancer
  20. policies:
  21. - type: topology
  22. name: local
  23. properties:
  24. clusters: ["local"]
  25. - type: topology
  26. name: worker
  27. properties:
  28. clusters: ["cluster-worker"]
  29. workflow:
  30. steps:
  31. - type: deploy
  32. name: deploy
  33. properties:
  34. policies: ["local"]
  35. - type: collect-service-endpoints
  36. name: collect-service-endpoints
  37. outputs:
  38. - name: host
  39. valueFrom: value.endpoint.host
  40. - name: port
  41. valueFrom: value.endpoint.port
  42. - type: export-service
  43. name: export-service
  44. properties:
  45. name: busybox
  46. topology: worker
  47. inputs:
  48. - from: host
  49. parameterKey: ip
  50. - from: port
  51. parameterKey: port
名称描述类型是否必须默认值
nameSpecify the name of the export destination。stringfalse
namespaceSpecify the namespace of the export destination。stringfalse
ipSpecify the ip to be export。stringtrue
portSpecify the port to be used in service。inttrue
targetPortSpecify the port to be export。inttrue
topologySpecify the topology to export。stringfalse

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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: export2config
  5. namespace: default
  6. spec:
  7. components:
  8. - name: export2config-demo-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: export2config-demo-server
  22. - name: export-config
  23. type: export2config
  24. inputs:
  25. - from: status
  26. parameterKey: data.serverstatus
  27. properties:
  28. configName: my-configmap
  29. data:
  30. testkey: |
  31. testvalue
  32. value-line-2
名称描述类型是否必须默认值
configNameConfigMap 的名称。stringtrue
namespaceConfigMap 的 namespace,默认为当前应用的 namespace。stringfalse
data需要导出到 ConfigMap 中的数据,是一个 key-value 的 map。structtrue
cluster要导出到的集群名称。stringfalseempty

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

  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-sec
  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-sec
  22. - name: export-secret
  23. type: export2secret
  24. inputs:
  25. - from: status
  26. parameterKey: data.serverstatus
  27. properties:
  28. secretName: my-secret
  29. data:
  30. testkey: |
  31. testvalue
  32. value-line-2
名称描述类型是否必须默认值
secretNameSecret 的名称。stringtrue
namespacesecret 的 namespace,默认为当前应用的 namespace。stringfalse
type指定导出的 secret 类型。stringfalse
data需要导出到 Secret 中的数据。structtrue
cluster要导出到的集群名称。stringfalseempty

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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: jdbc
  5. spec:
  6. components:
  7. - name: db
  8. type: alibaba-rds
  9. properties:
  10. instance_name: favorite-links
  11. database_name: db1
  12. account_name: oamtest
  13. password: U34rfwefwefffaked
  14. security_ips: [ "0.0.0.0/0" ]
  15. privilege: ReadWrite
  16. writeConnectionSecretToRef:
  17. name: db-conn
  18. - name: express-server
  19. type: webservice
  20. properties:
  21. image: crccheck/hello-world
  22. port: 8000
  23. workflow:
  24. steps:
  25. - name: jdbc
  26. type: generate-jdbc-connection
  27. outputs:
  28. - name: jdbc
  29. valueFrom: jdbc
  30. properties:
  31. name: db-conn
  32. namespace: default
  33. - name: apply
  34. type: apply-component
  35. inputs:
  36. - from: jdbc
  37. parameterKey: env
  38. properties:
  39. component: express-server
名称描述类型是否必须默认值
nameSpecify the name of the secret generated by database component。stringtrue
namespaceSpecify the namespace of the secret generated by database component。stringfalse

List the configs。

  1. apiVersion: core.oam.dev/v1alpha1
  2. kind: WorkflowRun
  3. metadata:
  4. name: observability
  5. namespace: vela-system
  6. spec:
  7. context:
  8. readConfig: true
  9. mode:
  10. workflowSpec:
  11. steps:
  12. - name: Enable Prism
  13. type: addon-operation
  14. properties:
  15. addonName: vela-prism
  16. - name: Enable o11y
  17. type: addon-operation
  18. properties:
  19. addonName: o11y-definitions
  20. operation: enable
  21. args:
  22. - --override-definitions
  23. - name: Prepare Prometheus
  24. type: step-group
  25. subSteps:
  26. - name: get-exist-prometheus
  27. type: list-config
  28. properties:
  29. template: prometheus-server
  30. outputs:
  31. - name: prometheus
  32. valueFrom: "output.configs"
  33. - name: prometheus-server
  34. inputs:
  35. - from: prometheus
  36. # TODO: Make it is not required
  37. parameterKey: configs
  38. if: "!context.readConfig || len(inputs.prometheus) == 0"
  39. type: addon-operation
  40. properties:
  41. addonName: prometheus-server
  42. operation: enable
  43. args:
  44. - memory=4096Mi
  45. - serviceType=LoadBalancer
名称描述类型是否必须默认值
templateSpecify the template of the config。stringtrue
namespaceSpecify the namespace of the config。stringfalse

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

  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.

名称描述类型是否必须默认值
lark发送飞书信息。larkfalse
dingding发送钉钉信息。dingdingfalse
slack发送 Slack 信息。slackfalse
email发送邮件通知。emailfalse
名称描述类型是否必须默认值
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
名称描述类型是否必须默认值
valuethe url address content in string。stringtrue
名称描述类型是否必须默认值
secretRefsecretReftrue
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
名称描述类型是否必须默认值
msg_typemsg_type can be text, post, image, interactive, share_chat, share_user, audio, media, file, sticker。stringtrue
contentcontent should be json encode string。stringtrue
名称描述类型是否必须默认值
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
名称描述类型是否必须默认值
valuethe url address content in string。stringtrue
名称描述类型是否必须默认值
secretRefsecretReftrue
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
名称描述类型是否必须默认值
textSpecify the message content of dingtalk notification。(null|struct)false
msgtypemsgType can be text, link, mardown, actionCard, feedCard。stringfalsetext
link(null|struct)false
markdown(null|struct)false
at(null|struct)false
actionCard(null|struct)false
feedCard(null|struct)false
名称描述类型是否必须默认值
urlSlack 的 Webhook 地址,可以选择直接在 value 填写或从 secretRef 中获取。url-option-0 or url-option-1true
messageSpecify the message that you want to sent, refer to slack messagingmessagetrue
名称描述类型是否必须默认值
valuethe url address content in string。stringtrue
名称描述类型是否必须默认值
secretRefsecretReftrue
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
名称描述类型是否必须默认值
textSpecify the message text for slack notification。stringtrue
blocksnullfalse
attachments(null|struct)false
thread_tsstringfalse
mrkdwnSpecify the message text format in markdown for slack notification。boolfalsetrue
名称描述类型是否必须默认值
from指定邮件发送人信息。fromtrue
to指定收件人信息。[]stringtrue
content指定邮件内容。contenttrue
名称描述类型是否必须默认值
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
名称描述类型是否必须默认值
valuethe password content in string。stringtrue
名称描述类型是否必须默认值
secretRefsecretReftrue
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue
名称描述类型是否必须默认值
subject指定邮件标题。stringtrue
body指定邮件正文内容。stringtrue

print message in workflow step status。

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: print-message-in-status
  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-component
  17. properties:
  18. component: express-server
  19. - name: message
  20. type: print-message-in-status
  21. properties:
  22. message: "All addons have been enabled successfully, you can use 'vela addon list' to check them."
名称描述类型是否必须默认值
messagestringtrue

Read a config。

  1. kind: Application
  2. apiVersion: core.oam.dev/v1beta1
  3. metadata:
  4. name: test-config
  5. namespace: "config-e2e-test"
  6. spec:
  7. components: []
  8. workflow:
  9. steps:
  10. - name: read-config
  11. type: read-config
  12. properties:
  13. name: test
  14. outputs:
  15. - fromKey: config
  16. name: read-config
名称描述类型是否必须默认值
nameSpecify the name of the config。stringtrue
namespaceSpecify the namespace of the config。stringfalse

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

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

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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: rds-app
  5. namespace: project-1
  6. spec:
  7. components:
  8. - name: db
  9. type: alibaba-rds
  10. properties:
  11. instance_name: db
  12. account_name: kubevela
  13. password: my-password
  14. writeConnectionSecretToRef:
  15. name: project-1-rds-conn-credential
  16. policies:
  17. - name: env-policy
  18. type: env-binding
  19. properties:
  20. envs:
  21. # 部署 RDS 给杭州集群
  22. - name: hangzhou
  23. placement:
  24. clusterSelector:
  25. name: cluster-hangzhou
  26. patch:
  27. components:
  28. - name: db
  29. type: alibaba-rds
  30. properties:
  31. # region: hangzhou
  32. instance_name: hangzhou_db
  33. # 部署 RDS 给香港集群
  34. - name: hongkong
  35. placement:
  36. clusterSelector:
  37. name: cluster-hongkong
  38. namespaceSelector:
  39. name: hk-project-1
  40. patch:
  41. components:
  42. - name: db
  43. type: alibaba-rds
  44. properties:
  45. # region: hongkong
  46. instance_name: hongkong_db
  47. writeConnectionSecretToRef:
  48. name: hk-project-rds-credential
  49. workflow:
  50. steps:
  51. # 部署 RDS 给杭州区用
  52. - name: deploy-hangzhou-rds
  53. type: deploy-cloud-resource
  54. properties:
  55. env: hangzhou
  56. # 将给杭州区用的 RDS 共享给北京区
  57. - name: share-hangzhou-rds-to-beijing
  58. type: share-cloud-resource
  59. properties:
  60. env: hangzhou
  61. placements:
  62. - cluster: cluster-beijing
  63. # 部署 RDS 给香港区用
  64. - name: deploy-hongkong-rds
  65. type: deploy-cloud-resource
  66. properties:
  67. env: hongkong
  68. # 将给香港区用的 RDS 共享给香港区其他项目用
  69. - name: share-hongkong-rds-to-other-namespace
  70. type: share-cloud-resource
  71. properties:
  72. env: hongkong
  73. placements:
  74. - cluster: cluster-hongkong
  75. namespace: hk-project-2
  76. - cluster: cluster-hongkong
  77. namespace: hk-project-3
名称描述类型是否必须默认值
placementsDeclare the location to bind。[]placementstrue
policyDeclare the name of the env-binding policy, if empty, the first env-binding policy will be used。stringfalseempty
env指定多集群策略中定义的环境名称。stringtrue
名称描述类型是否必须默认值
namespacestringfalse
clusterstringfalse

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。

  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

This capability has no arguments.

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

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: notification
  17. properties:
  18. slack:
  19. url:
  20. value: <your-slack-url>
  21. # the Slack webhook address, please refer to: https://api.slack.com/messaging/webhooks
  22. message:
  23. text: Ready to apply the application, ask the administrator to approve and resume the workflow.
  24. - name: manual-approval
  25. type: suspend
  26. # properties:
  27. # duration: "30s"
  28. - name: express-server
  29. type: apply-component
  30. properties:
  31. component: express-server
名称描述类型是否必须默认值
duration指定工作流暂停的时长,超过该时间后工作流将自动继续,如:”30s”, “1min”, “2m15s”。stringfalse

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

  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>
名称描述类型是否必须默认值
url需要发送的 Webhook URL,可以选择直接在 value 填写或从 secretRef 中获取。url-option-0 or url-option-1true
data需要发送的内容。map[string]:_false
名称描述类型是否必须默认值
valuestringtrue
名称描述类型是否必须默认值
secretRefsecretReftrue
名称描述类型是否必须默认值
nameKubernetes Secret 名称。stringtrue
keyKubernetes Secret 中的 key。stringtrue

Last updated on 2022年12月1日 by Somefive