Built-in WorkflowStep Type
This documentation will walk through all the built-in workflow step types sorted alphabetically.
It was generated automatically by scripts, please don't update manually, last updated at 2023-07-28T09:33:26+08:00.
Addon-Operation
Description
Enable a KubeVela addon.
Scope
This step type is only valid in WorkflowRun.
Examples (addon-operation)
apiVersion: core.oam.dev/v1alpha1
kind: WorkflowRun
metadata:
name: observability
namespace: vela-system
spec:
context:
readConfig: true
mode:
workflowSpec:
steps:
- name: Enable Prism
type: addon-operation
properties:
addonName: vela-prism
- name: Enable o11y
type: addon-operation
properties:
addonName: o11y-definitions
operation: enable
args:
- --override-definitions
- name: Prepare Prometheus
type: step-group
subSteps:
- name: get-exist-prometheus
type: list-config
properties:
template: prometheus-server
outputs:
- name: prometheus
valueFrom: "output.configs"
- name: prometheus-server
inputs:
- from: prometheus
parameterKey: configs
if: "!context.readConfig || len(inputs.prometheus) == 0"
type: addon-operation
properties:
addonName: prometheus-server
operation: enable
args:
- memory=4096Mi
- serviceType=LoadBalancer
- name: Prepare Loki
type: addon-operation
properties:
addonName: loki
operation: enable
args:
- --version=v0.1.4
- agent=vector
- serviceType=LoadBalancer
- name: Prepare Grafana
type: step-group
subSteps:
- name: get-exist-grafana
type: list-config
properties:
template: grafana
outputs:
- name: grafana
valueFrom: "output.configs"
- name: Install Grafana & Init Dashboards
inputs:
- from: grafana
parameterKey: configs
if: "!context.readConfig || len(inputs.grafana) == 0"
type: addon-operation
properties:
addonName: grafana
operation: enable
args:
- serviceType=LoadBalancer
- name: Init Dashboards
inputs:
- from: grafana
parameterKey: configs
if: "len(inputs.grafana) != 0"
type: addon-operation
properties:
addonName: grafana
operation: enable
args:
- install=false
- name: Clean
type: clean-jobs
- name: print-message
type: print-message-in-status
properties:
message: "All addons have been enabled successfully, you can use 'vela addon list' to check them."
Specification (addon-operation)
| Name | Description | Type | Required | Default |
|---|
| addonName | Specify the name of the addon. | string | true | |
| args | Specify addon enable args. | []string | false | |
| image | Specify the image. | string | false | oamdev/vela-cli:v1.7.2 |
| operation | operation for the addon. | "enable" or "upgrade" or "disable" | false | enable |
| serviceAccountName | specify serviceAccountName want to use. | string | false | kubevela-vela-core |
Apply-App
Description
Apply application from data or ref to the cluster.
Scope
This step type is only valid in WorkflowRun.
Examples (apply-app)
apiVersion: core.oam.dev/v1alpha1
kind: WorkflowRun
metadata:
name: apply-applications
namespace: default
annotations:
workflowrun.oam.dev/debug: "true"
spec:
workflowSpec:
steps:
- name: check-app-exist
type: read-app
properties:
name: webservice-app
- name: apply-app1
type: apply-app
if: status["check-app-exist"].message == "Application not found"
properties:
data:
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: webservice-app
spec:
components:
- name: express-server
type: webservice
properties:
image: crccheck/hello-world
ports:
- port: 8000
- name: suspend
type: suspend
timeout: 24h
- name: apply-app2
type: apply-app
properties:
ref:
name: my-app
key: application
type: configMap
---
apiVersion: v1
kind: ConfigMap
metadata:
name: my-app
namespace: default
data:
application: |
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: webservice-app2
spec:
components:
- name: express-server2
type: webservice
properties:
image: crccheck/hello-world
ports:
- port: 8000
Specification (apply-app)
| Name | Description | Type | Required | Default |
|---|
| data | | map[string]_ | false | |
| ref | | ref | false | |
ref (apply-app)
| Name | Description | Type | Required | Default |
|---|
| name | | string | true | |
| namespace | | | | true | |
| type | | string | false | configMap |
| key | | string | false | application |
Apply-Component
Description
Apply a specific component and its corresponding traits in application.
Scope
This step type is only valid in Application.
Examples (apply-component)
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: first-vela-workflow
namespace: default
spec:
components:
- name: express-server
type: webservice
properties:
image: oamdev/hello-world
port: 8000
traits:
- type: ingress
properties:
domain: testsvc.example.com
http:
/: 8000
workflow:
steps:
- name: express-server
type: apply-component
properties:
component: express-server
Specification (apply-component)
| Name | Description | Type | Required | Default |
|---|
| component | Specify the component name to apply. | string | true | |
| cluster | Specify the cluster. | string | false | empty |
| namespace | Specify the namespace. | string | false | empty |
Apply-Deployment
Description
Apply deployment with specified image and cmd.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (apply-deployment)
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: apply-deploy
namespace: default
spec:
components:
- name: express-server
type: webservice
properties:
image: oamdev/hello-world
port: 8000
workflow:
steps:
- name: apply-comp
type: apply-component
properties:
component: express-server
- name: apply-deploy
type: apply-deployment
properties:
image: nginx
Specification (apply-deployment)
| Name | Description | Type | Required | Default |
|---|
| image | | string | true | |
| replicas | | int | false | 1 |
| cluster | | string | false | empty |
| cmd | | []string | false | |
Apply-Object
Description
Apply raw kubernetes objects for your workflow steps.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (apply-object)
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: server-with-pvc
namespace: default
spec:
components:
- name: express-server
type: webservice
properties:
image: oamdev/hello-world
port: 8000
volumes:
- name: "my-pvc"
type: "pvc"
mountPath: "/test"
claimName: "myclaim"
workflow:
steps:
- name: apply-pvc
type: apply-object
properties:
value:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: standard
cluster: <your cluster name>
- name: apply-server
type: apply-component
properties:
component: express-server
Specification (apply-object)
| Name | Description | Type | Required | Default |
|---|
| value | Specify Kubernetes native resource object to be applied. | map[string]_ | true | |
| cluster | The cluster you want to apply the resource to, default is the current control plane cluster. | string | false | empty |
Description
Apply terraform configuration in the step.
Scope
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: apply-terraform-resource
namespace: default
spec:
components: []
workflow:
steps:
- name: provider
type: apply-terraform-provider
properties:
type: alibaba
name: my-alibaba-provider
accessKey: <accessKey>
secretKey: <secretKey>
region: cn-hangzhou
- name: configuration
type: apply-terraform-config
properties:
source:
path: alibaba/cs/dedicated-kubernetes
remote: https://github.com/FogDong/terraform-modules
providerRef:
name: my-alibaba-provider
writeConnectionSecretToRef:
name: my-terraform-secret
namespace: vela-system
variable:
name: regular-check-ack
new_nat_gateway: true
vpc_name: "tf-k8s-vpc-regular-check"
vpc_cidr: "10.0.0.0/8"
vswitch_name_prefix: "tf-k8s-vsw-regualr-check"
vswitch_cidrs: [ "10.1.0.0/16", "10.2.0.0/16", "10.3.0.0/16" ]
k8s_name_prefix: "tf-k8s-regular-check"
k8s_version: 1.24.6-aliyun.1
k8s_pod_cidr: "192.168.5.0/24"
k8s_service_cidr: "192.168.2.0/24"
k8s_worker_number: 2
cpu_core_count: 4
memory_size: 8
tags:
created_by: "Terraform-of-KubeVela"
created_from: "module-tf-alicloud-ecs-instance"
| Name | Description | Type | Required | Default |
|---|
| source | specify the source of the terraform configuration. | type-option-1 or type-option-2 | true | |
| deleteResource | whether to delete resource. | bool | false | true |
| variable | the variable in the configuration. | map[string]_ | true | |
| writeConnectionSecretToRef | this specifies the namespace and name of a secret to which any connection details for this managed resource should be written. | writeConnectionSecretToRef | false | |
| providerRef | providerRef specifies the reference to Provider. | providerRef | false | |
| region | region is cloud provider's region. It will override the region in the region field of providerRef. | string | false | |
| jobEnv | the envs for job. | map[string]_ | false | |
| forceDelete | forceDelete will force delete Configuration no matter which state it is or whether it has provisioned some resources. | bool | false | false |
| Name | Description | Type | Required | Default |
|---|
| hcl | directly specify the hcl of the terraform configuration. | string | true | |
| Name | Description | Type | Required | Default |
|---|
| name | | string | true | |
| namespace | | | | true | |
| Name | Description | Type | Required | Default |
|---|
| name | | string | true | |
| namespace | | | | true | |
Description
Apply terraform provider config.
Scope
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: apply-terraform-provider
namespace: default
spec:
components: []
workflow:
steps:
- name: provider
type: apply-terraform-provider
properties:
type: alibaba
name: my-alibaba-provider
accessKey: <accessKey>
secretKey: <secretKey>
region: cn-hangzhou
| Name | Description | Type | Required | Default |
|---|
| type | | string | true | |
| accessKey | | string | true | |
| secretKey | | string | true | |
| name | | string | false | alibaba-provider |
| region | | string | true | |
| Name | Description | Type | Required | Default |
|---|
| token | | string | false | empty |
| type | | string | true | |
| accessKey | | string | true | |
| secretKey | | string | true | |
| name | | string | false | aws-provider |
| region | | string | true | |
| Name | Description | Type | Required | Default |
|---|
| subscriptionID | | string | true | |
| tenantID | | string | true | |
| clientID | | string | true | |
| clientSecret | | string | true | |
| name | | string | false | azure-provider |
| Name | Description | Type | Required | Default |
|---|
| type | | string | true | |
| accessKey | | string | true | |
| secretKey | | string | true | |
| name | | string | false | baidu-provider |
| region | | string | true | |
| Name | Description | Type | Required | Default |
|---|
| type | | string | true | |
| apiKey | | string | false | empty |
| name | | string | false | ec-provider |
| Name | Description | Type | Required | Default |
|---|
| credentials | | string | true | |
| region | | string | true | |
| project | | string | true | |
| type | | string | true | |
| name | | string | false | gcp-provider |
| Name | Description | Type | Required | Default |
|---|
| secretID | | string | true | |
| secretKey | | string | true | |
| region | | string | true | |
| type | | string | true | |
| name | | string | false | tencent-provider |
| Name | Description | Type | Required | Default |
|---|
| publicKey | | string | true | |
| privateKey | | string | true | |
| projectID | | string | true | |
| region | | string | true | |
| type | | string | true | |
| name | | string | false | ucloud-provider |
Build-Push-Image
Description
Build and push image from git url.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (build-push-image)
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: build-push-image
namespace: default
spec:
components:
- name: my-web
type: webservice
properties:
image: fogdong/simple-web-demo:v1
ports:
- port: 80
expose: true
workflow:
steps:
- name: create-git-secret
type: export2secret
properties:
secretName: git-secret
data:
token: <git token>
- name: create-image-secret
type: export2secret
properties:
secretName: image-secret
kind: docker-registry
dockerRegistry:
username: <docker username>
password: <docker password>
- name: build-push
type: build-push-image
properties:
context:
git: github.com/FogDong/simple-web-demo
branch: main
image: fogdong/simple-web-demo:v1
credentials:
image:
name: image-secret
- name: apply-comp
type: apply-component
properties:
component: my-web
Specification (build-push-image)
| Name | Description | Type | Required | Default |
|---|
| kanikoExecutor | Specify the kaniko executor image, default to oamdev/kaniko-executor:v1.9.1. | string | false | oamdev/kaniko-executor:v1.9.1 |
| context | Specify the context to build image, you can use context with git and branch or directly specify the context, please refer to https://github.com/GoogleContainerTools/kaniko#kaniko-build-contexts. | string | true | |
| dockerfile | Specify the dockerfile. | string | false | ./Dockerfile |
| image | Specify the image. | string | true | |
| platform | Specify the platform to build. | string | false | |
| buildArgs | Specify the build args. | []string | false | |
| credentials | Specify the credentials to access git and image registry. | credentials | false | |
| verbosity | Specify the verbosity level. | "info" or "panic" or "fatal" or "error" or "warn" or "debug" or "trace" | false | info |
credentials (build-push-image)
| Name | Description | Type | Required | Default |
|---|
| git | Specify the credentials to access git. | git | false | |
| image | Specify the credentials to access image registry. | image | false | |
git (build-push-image)
| Name | Description | Type | Required | Default |
|---|
| name | Specify the secret name. | string | true | |
| key | Specify the secret key. | string | true | |
image (build-push-image)
| Name | Description | Type | Required | Default |
|---|
| name | Specify the secret name. | string | true | |
| key | Specify the secret key. | string | false | .dockerconfigjson |
Chat-Gpt
Description
Send request to chat-gpt.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (chat-gpt)
apiVersion: core.oam.dev/v1alpha1
kind: WorkflowRun
metadata:
name: chat-gpt
namespace: default
spec:
workflowSpec:
steps:
- name: apply
type: apply-deployment
timeout: 3s
outputs:
- name: resource
valueFrom: output.value
properties:
image: invalid
- name: chat-diagnose
if: status.apply.failed
type: chat-gpt
inputs:
- from: resource
parameterKey: prompt.content
properties:
token:
value: <your token>
prompt:
type: diagnose
- name: chat-audit
if: status.apply.succeeded
type: chat-gpt
inputs:
- from: resource
parameterKey: prompt.content
properties:
token:
secretRef:
name: chat-gpt-token-secret
key: token
prompt:
type: audit
lang: Chinese
Specification (chat-gpt)
| Name | Description | Type | Required | Default |
|---|
| token | | type-option-1 or type-option-2 | true | |
| model | the model name. | string | false | gpt-3.5-turbo |
| prompt | the prompt to use. | prompt | true | |
| timeout | | string | false | 30s |
type-option-1 (chat-gpt)
| Name | Description | Type | Required | Default |
|---|
| value | the token value. | string | true | |
type-option-2 (chat-gpt)
| Name | Description | Type | Required | Default |
|---|
| secretRef | | secretRef | true | |
secretRef (chat-gpt)
| Name | Description | Type | Required | Default |
|---|
| name | name is the name of the secret. | string | true | |
| key | key is the token key in the secret. | string | true | |
prompt (chat-gpt)
| Name | Description | Type | Required | Default |
|---|
| type | | "custom" or "diagnose" or "audit" or "quality-gate" | false | custom |
| lang | | "English" or "Chinese" | false | English |
| content | | string | true | |
Check-Metrics
Description
Verify application's metrics.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (check-metrics)
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: canary-demo
annotations:
app.oam.dev/publishVersion: v2
spec:
components:
- name: canary-demo
type: webservice
properties:
image: wangyikewyk/canarydemo:v2
ports:
- port: 8090
traits:
- type: scaler
properties:
replicas: 5
- type: gateway
properties:
domain: canary-demo.com
http:
"/version": 8090
workflow:
steps:
- name: 200-status-percent-2-phase
type: check-metrics
timeout: 3m
properties:
query: sum(irate(nginx_ingress_controller_requests{host="canary-demo.com",status="200"}[5m]))/sum(irate(nginx_ingress_controller_requests{host="canary-demo.com"}[2m]))
promAddress: "http://prometheus-server.o11y-system.svc:9090"
condition: ">=0.95"
duration: 2m
Specification (check-metrics)
| Name | Description | Type | Required | Default |
|---|
| query | Query is a raw prometheus query to perform. | string | true | |
| metricEndpoint | The HTTP address and port of the prometheus server. | string | false | |
| condition | Condition is an expression which determines if a measurement is considered successful. eg: >=0.95. | string | true | |
| duration | Duration defines the duration of time required for this step to be considered successful. | string | false | 5m |
| failDuration | FailDuration is the duration of time that, if the check fails, will result in the step being marked as failed. | string | false | 2m |
Clean-Jobs
Description
clean applied jobs in the cluster.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (clean-jobs)
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: clean-jobs
namespace: default
spec:
components: []
workflow:
steps:
- name: clean-cli-jobs
type: clean-jobs
properties:
labelselector:
"my-label": my-value
Specification (clean-jobs)
| Name | Description | Type | Required | Default |
|---|
| labelselector | | map[string]_ | false | |
| namespace | | | | true | |
Collect-Service-Endpoints
Description
Collect service endpoints for the application.
Scope
This step type is valid in both Application and WorkflowRun.
Examples (collect-service-endpoints)