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.
Enable a KubeVela addon.
This step type is only valid in WorkflowRun.
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
# TODO: Make it is not required
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."
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 application from data or ref to the cluster.
This step type is only valid in WorkflowRun.
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
Name | Description | Type | Required | Default |
---|
data | | map[string]_ | false | |
ref | | ref | false | |
Name | Description | Type | Required | Default |
---|
name | | string | true | |
namespace | | | | true | |
type | | string | false | configMap |
key | | string | false | application |
Apply a specific component and its corresponding traits in application.
This step type is only valid in Application.
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
# cluster: <your cluster name>
# namespace: <your namespace name>
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 with specified image and cmd.
This step type is valid in both Application and WorkflowRun.
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
Name | Description | Type | Required | Default |
---|
image | | string | true | |
replicas | | int | false | 1 |
cluster | | string | false | empty |
cmd | | []string | false | |
Apply raw kubernetes objects for your workflow steps.
This step type is valid in both Application and WorkflowRun.
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:
# Kubernetes native resources fields
value:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
namespace: default
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 8Gi
storageClassName: standard
# the cluster you want to apply the resource to, default is the current cluster
cluster: <your cluster name>
- name: apply-server
type: apply-component
properties:
component: express-serve
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 |
Apply terraform configuration in the step.
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 | |
Apply terraform provider config.
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 and push image from git url.
This step type is valid in both Application and WorkflowRun.
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:
# use your kaniko executor image like below, if not set, it will use default image oamdev/kaniko-executor:v1.9.1
# kanikoExecutor: gcr.io/kaniko-project/executor:latest
# you can use context with git and branch or directly specify the context, please refer to https://github.com/GoogleContainerTools/kaniko#kaniko-build-contexts
context:
git: github.com/FogDong/simple-web-demo
branch: main
image: fogdong/simple-web-demo:v1
# specify your dockerfile, if not set, it will use default dockerfile ./Dockerfile
# dockerfile: ./Dockerfile
credentials:
image:
name: image-secret
# buildArgs:
# - key="value"
# platform: linux/arm
- name: apply-comp
type: apply-component
properties:
component: my-web
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 |
Name | Description | Type | Required | Default |
---|
git | Specify the credentials to access git. | git | false | |
image | Specify the credentials to access image registry. | image | false | |
Name | Description | Type | Required | Default |
---|
name | Specify the secret name. | string | true | |
key | Specify the secret key. | string | true | |
Name | Description | Type | Required | Default |
---|
name | Specify the secret name. | string | true | |
key | Specify the secret key. | string | false | .dockerconfigjson |
Send request to chat-gpt.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1alpha1
kind: WorkflowRun
metadata:
name: chat-gpt
namespace: default
spec:
workflowSpec:
steps:
# apply a deployment with invalid image, this step will fail because of timeout
# the resource will be passed to chat-gpt step to anaylze
- name: apply
type: apply-deployment
timeout: 3s
outputs:
- name: resource
valueFrom: output.value
properties:
image: invalid
# if apply step failed, send the resource to chat-gpt to diagnose
- name: chat-diagnose
if: status.apply.failed
type: chat-gpt
inputs:
- from: resource
parameterKey: prompt.content
properties:
token:
# specify your token
value: <your token>
prompt:
type: diagnose
# if apply step succeeded, send the resource to chat-gpt to audit
- name: chat-audit
if: status.apply.succeeded
type: chat-gpt
inputs:
- from: resource
parameterKey: prompt.content
properties:
token:
# or read your token from secret
secretRef:
name: chat-gpt-token-secret
key: token
prompt:
type: audit
lang: Chinese
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 |
Name | Description | Type | Required | Default |
---|
value | the token value. | string | true | |
Name | Description | Type | Required | Default |
---|
secretRef | | secretRef | true | |
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 | |
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 | |
Verify application’s metrics.
This step type is valid in both Application and WorkflowRun.
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
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 applied jobs in the cluster.
This step type is valid in both Application and WorkflowRun.
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
Name | Description | Type | Required | Default |
---|
labelselector | | map[string]_ | false | |
namespace | | | | true | |
Collect service endpoints for the application.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-collect-service-endpoint-and-export
spec:
components:
- type: webservice
name: busybox
properties:
image: busybox
imagePullPolicy: IfNotPresent
cmd:
- sleep
- '1000000'
traits:
- type: expose
properties:
port: [8080]
type: ClusterIP
policies:
- type: topology
name: local
properties:
clusters: ["local"]
- type: topology
name: all
properties:
clusters: ["local", "cluster-worker"]
workflow:
steps:
- type: deploy
name: deploy
properties:
policies: ["local"]
- type: collect-service-endpoints
name: collect-service-endpoints
outputs:
- name: host
valueFrom: value.endpoint.host
- type: export-data
name: export-data
properties:
topology: all
inputs:
- from: host
parameterKey: data.host
This capability has no arguments.
Create or update a config.
This step type is valid in both Application and WorkflowRun.
kind: Application
apiVersion: core.oam.dev/v1beta1
metadata:
name: test-config
namespace: "config-e2e-test"
spec:
components: []
workflow:
steps:
- name: write-config
type: create-config
properties:
name: test
config:
key1: value1
key2: 2
key3: true
key4:
key5: value5
- name: read-config
type: read-config
properties:
name: test
outputs:
- fromKey: config
name: read-config
- name: delete-config
type: delete-config
properties:
name: test
Name | Description | Type | Required | Default |
---|
name | Specify the name of the config. | string | true | |
namespace | Specify the namespace of the config. | string | false | |
template | Specify the template of the config. | string | false | |
config | Specify the content of the config. | map[string]_ | true | |
Delete a config.
This step type is valid in both Application and WorkflowRun.
kind: Application
apiVersion: core.oam.dev/v1beta1
metadata:
name: test-config
namespace: "config-e2e-test"
spec:
components: []
workflow:
steps:
- name: write-config
type: create-config
properties:
name: test
config:
key1: value1
key2: 2
key3: true
key4:
key5: value5
- name: delete-config
type: delete-config
properties:
name: test
Name | Description | Type | Required | Default |
---|
name | Specify the name of the config. | string | true | |
namespace | Specify the namespace of the config. | string | false | |
Wait for the specified Application to complete.
This step type is valid in both Application and WorkflowRun.
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: depends-on-app
properties:
name: another-app
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.
apiVersion: v1
kind: ConfigMap
metadata:
name: myapp
namespace: vela-system
data:
application:
<app yaml file>
Name | Description | Type | Required | Default |
---|
name | Specify the name of the dependent Application. | string | true | |
namespace | Specify the namespace of the dependent Application. | string | true | |
A powerful and unified deploy step for components multi-cluster delivery with policies.
This step type is only valid in Application.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: deploy-workflowstep
namespace: examples
spec:
components:
- name: nginx-deploy-workflowstep
type: webservice
properties:
image: nginx
policies:
- name: topology-hangzhou-clusters
type: topology
properties:
clusterLabelSelector:
region: hangzhou
- name: topology-local
type: topology
properties:
clusters: ["local"]
namespace: examples-alternative
workflow:
steps:
- type: deploy
name: deploy-local
properties:
policies: ["topology-local"]
- type: deploy
name: deploy-hangzhou
properties:
# require manual approval before running this step
auto: false
policies: ["topology-hangzhou-clusters"]
Name | Description | Type | Required | Default |
---|
auto | If set to false, the workflow will suspend automatically before this step, default to be true. | bool | false | true |
policies | Declare the policies that used for this deployment. If not specified, the components will be deployed to the hub cluster. | []string | true | |
parallelism | Maximum number of concurrent delivered components. | int | false | 5 |
ignoreTerraformComponent | If set false, this step will apply the components with the terraform workload. | bool | false | true |
Deploy cloud resource and deliver secret to multi clusters.
This step type is only valid in Application.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: rds-app
namespace: project-1
spec:
components:
- name: db
type: alibaba-rds
properties:
instance_name: db
account_name: kubevela
password: my-password
writeConnectionSecretToRef:
name: project-1-rds-conn-credential
policies:
- name: env-policy
type: env-binding
properties:
envs:
# 部署 RDS 给杭州集群
- name: hangzhou
placement:
clusterSelector:
name: cluster-hangzhou
patch:
components:
- name: db
type: alibaba-rds
properties:
# region: hangzhou
instance_name: hangzhou_db
# 部署 RDS 给香港集群
- name: hongkong
placement:
clusterSelector:
name: cluster-hongkong
namespaceSelector:
name: hk-project-1
patch:
components:
- name: db
type: alibaba-rds
properties:
# region: hongkong
instance_name: hongkong_db
writeConnectionSecretToRef:
name: hk-project-rds-credential
workflow:
steps:
# 部署 RDS 给杭州区用
- name: deploy-hangzhou-rds
type: deploy-cloud-resource
properties:
env: hangzhou
# 将给杭州区用的 RDS 共享给北京区
- name: share-hangzhou-rds-to-beijing
type: share-cloud-resource
properties:
env: hangzhou
placements:
- cluster: cluster-beijing
# 部署 RDS 给香港区用
- name: deploy-hongkong-rds
type: deploy-cloud-resource
properties:
env: hongkong
# 将给香港区用的 RDS 共享给香港区其他项目用
- name: share-hongkong-rds-to-other-namespace
type: share-cloud-resource
properties:
env: hongkong
placements:
- cluster: cluster-hongkong
namespace: hk-project-2
- cluster: cluster-hongkong
namespace: hk-project-3
Name | Description | Type | Required | Default |
---|
policy | Declare the name of the env-binding policy, if empty, the first env-binding policy will be used. | string | false | empty |
env | Declare the name of the env in policy. | string | true | |
Export data to clusters specified by topology.
This step type is only valid in Application.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-collect-service-endpoint-and-export
spec:
components:
- type: webservice
name: busybox
properties:
image: busybox
imagePullPolicy: IfNotPresent
cmd:
- sleep
- '1000000'
traits:
- type: expose
properties:
port: [8080]
type: ClusterIP
policies:
- type: topology
name: local
properties:
clusters: ["local"]
- type: topology
name: all
properties:
clusters: ["local", "cluster-worker"]
workflow:
steps:
- type: deploy
name: deploy
properties:
policies: ["local"]
- type: collect-service-endpoints
name: collect-service-endpoints
outputs:
- name: host
valueFrom: value.endpoint.host
- type: export-data
name: export-data
properties:
topology: all
inputs:
- from: host
parameterKey: data.host
Name | Description | Type | Required | Default |
---|
name | Specify the name of the export destination. | string | false | |
namespace | Specify the namespace of the export destination. | string | false | |
kind | Specify the kind of the export destination. | “ConfigMap” or “Secret” | false | ConfigMap |
data | Specify the data to export. | struct | true | |
topology | Specify the topology to export. | string | false | |
Export service to clusters specified by topology.
This step type is only valid in Application.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-collect-service-endpoint-and-export
spec:
components:
- type: webservice
name: busybox
properties:
image: busybox
imagePullPolicy: IfNotPresent
cmd:
- sleep
- '1000000'
traits:
- type: expose
properties:
port: [8080]
type: LoadBalancer
policies:
- type: topology
name: local
properties:
clusters: ["local"]
- type: topology
name: worker
properties:
clusters: ["cluster-worker"]
workflow:
steps:
- type: deploy
name: deploy
properties:
policies: ["local"]
- type: collect-service-endpoints
name: collect-service-endpoints
outputs:
- name: host
valueFrom: value.endpoint.host
- name: port
valueFrom: value.endpoint.port
- type: export-service
name: export-service
properties:
name: busybox
topology: worker
inputs:
- from: host
parameterKey: ip
- from: port
parameterKey: port
Name | Description | Type | Required | Default |
---|
name | Specify the name of the export destination. | string | false | |
namespace | Specify the namespace of the export destination. | string | false | |
ip | Specify the ip to be export. | string | true | |
port | Specify the port to be used in service. | int | true | |
targetPort | Specify the port to be export. | int | true | |
topology | Specify the topology to export. | string | false | |
Export data to specified Kubernetes ConfigMap in your workflow.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: export2config
namespace: default
spec:
components:
- name: export2config-demo-server
type: webservice
properties:
image: oamdev/hello-world
port: 8000
workflow:
steps:
- name: apply-server
type: apply-component
outputs:
- name: status
valueFrom: output.status.conditions[0].message
properties:
component: export2config-demo-server
- name: export-config
type: export2config
inputs:
- from: status
parameterKey: data.serverstatus
properties:
configName: my-configmap
data:
testkey: |
testvalue
value-line-2
Name | Description | Type | Required | Default |
---|
configName | Specify the name of the config map. | string | true | |
namespace | Specify the namespace of the config map. | string | false | |
data | Specify the data of config map. | struct | true | |
cluster | Specify the cluster of the config map. | string | false | empty |
Export data to Kubernetes Secret in your workflow.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: export-secret
namespace: default
spec:
components:
- name: express-server-sec
type: webservice
properties:
image: oamdev/hello-world
port: 8000
workflow:
steps:
- name: apply-server
type: apply-component
outputs:
- name: status
valueFrom: output.status.conditions[0].message
properties:
component: express-server-sec
- name: export-secret
type: export2secret
inputs:
- from: status
parameterKey: data.serverstatus
properties:
secretName: my-secret
data:
testkey: |
testvalue
value-line-2
Name | Description | Type | Required | Default |
---|
secretName | Specify the name of the secret. | string | true | |
namespace | Specify the namespace of the secret. | string | false | |
type | Specify the type of the secret. | string | false | |
data | Specify the data of secret. | struct | true | |
cluster | Specify the cluster of the secret. | string | false | empty |
kind | Specify the kind of the secret. | “generic” or “docker-registry” | false | generic |
dockerRegistry | Specify the docker data. | dockerRegistry | false | |
Name | Description | Type | Required | Default |
---|
username | Specify the username of the docker registry. | string | true | |
password | Specify the password of the docker registry. | string | true | |
server | Specify the server of the docker registry. | string | false | https://index.docker.io/v1/ |
Generate a JDBC connection based on Component of alibaba-rds.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: jdbc
spec:
components:
- name: db
type: alibaba-rds
properties:
instance_name: favorite-links
database_name: db1
account_name: oamtest
password: U34rfwefwefffaked
security_ips: [ "0.0.0.0/0" ]
privilege: ReadWrite
writeConnectionSecretToRef:
name: db-conn
- name: express-server
type: webservice
properties:
image: crccheck/hello-world
port: 8000
workflow:
steps:
- name: jdbc
type: generate-jdbc-connection
outputs:
- name: jdbc
valueFrom: jdbc
properties:
name: db-conn
namespace: default
- name: apply
type: apply-component
inputs:
- from: jdbc
parameterKey: env
properties:
component: express-server
Name | Description | Type | Required | Default |
---|
name | Specify the name of the secret generated by database component. | string | true | |
namespace | Specify the namespace of the secret generated by database component. | string | false | |
List the configs.
This step type is valid in both Application and WorkflowRun.
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
# TODO: Make it is not required
parameterKey: configs
if: "!context.readConfig || len(inputs.prometheus) == 0"
type: addon-operation
properties:
addonName: prometheus-server
operation: enable
args:
- memory=4096Mi
- serviceType=LoadBalancer
Name | Description | Type | Required | Default |
---|
template | Specify the template of the config. | string | true | |
namespace | Specify the namespace of the config. | string | false | |
Send notifications to Email, DingTalk, Slack, Lark or webhook in your workflow.
This step type is valid in both Application and WorkflowRun.
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: dingtalk-message
type: notification
properties:
dingding:
# the DingTalk webhook address, please refer to: https://developers.dingtalk.com/document/robots/custom-robot-access
url:
value: <url>
message:
msgtype: text
text:
content: Workflow starting...
- name: application
type: apply-application
- name: slack-message
type: notification
properties:
slack:
# the Slack webhook address, please refer to: https://api.slack.com/messaging/webhooks
url:
secretRef:
name: <secret-key>
key: <secret-value>
message:
text: Workflow ended.
lark:
url:
value: <lark-url>
message:
msg_type: "text"
content: "{\"text\":\" Hello KubeVela\"}"
email:
from:
address: <sender-email-address>
alias: <sender-alias>
password:
# secretRef:
# name: <secret-name>
# key: <secret-key>
value: <sender-password>
host: <email host like smtp.gmail.com>
port: <email port, optional, default to 587>
to:
- kubevela1@gmail.com
- kubevela2@gmail.com
content:
subject: test-subject
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.
Name | Description | Type | Required | Default |
---|
lark | Please fulfill its url and message if you want to send Lark messages. | lark | false | |
dingding | Please fulfill its url and message if you want to send DingTalk messages. | dingding | false | |
slack | Please fulfill its url and message if you want to send Slack messages. | slack | false | |
email | Please fulfill its from, to and content if you want to send email. | email | false | |
Name | Description | Type | Required | Default |
---|
value | the url address content in string. | string | true | |
Name | Description | Type | Required | Default |
---|
secretRef | | secretRef | true | |
Name | Description | Type | Required | Default |
---|
name | name is the name of the secret. | string | true | |
key | key is the key in the secret. | string | true | |
Name | Description | Type | Required | Default |
---|
msg_type | msg_type can be text, post, image, interactive, share_chat, share_user, audio, media, file, sticker. | string | true | |
content | content should be json encode string. | string | true | |
Name | Description | Type | Required | Default |
---|
value | the url address content in string. | string | true | |
Name | Description | Type | Required | Default |
---|
secretRef | | secretRef | true | |
Name | Description | Type | Required | Default |
---|
name | name is the name of the secret. | string | true | |
key | key is the key in the secret. | string | true | |
Name | Description | Type | Required | Default |
---|
text | Specify the message content of dingtalk notification. | text | false | |
msgtype | msgType can be text, link, mardown, actionCard, feedCard. | “text” or “link” or “markdown” or “actionCard” or “feedCard” | false | text |
link | | link | false | |
markdown | | markdown | false | |
at | | at | false | |
actionCard | | actionCard | false | |
feedCard | | feedCard | false | |
Name | Description | Type | Required | Default |
---|
content | | string | true | |
Name | Description | Type | Required | Default |
---|
text | | string | false | |
title | | string | false | |
messageUrl | | string | false | |
picUrl | | string | false | |
Name | Description | Type | Required | Default |
---|
text | | string | true | |
title | | string | true | |
Name | Description | Type | Required | Default |
---|
atMobiles | | []string | false | |
isAtAll | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | string | true | |
title | | string | true | |
hideAvatar | | string | true | |
btnOrientation | | string | true | |
singleTitle | | string | true | |
singleURL | | string | true | |
btns | | []btns | false | |
Name | Description | Type | Required | Default |
---|
title | | string | true | |
actionURL | | string | true | |
Name | Description | Type | Required | Default |
---|
links | | []links | true | |
Name | Description | Type | Required | Default |
---|
text | | string | false | |
title | | string | false | |
messageUrl | | string | false | |
picUrl | | string | false | |
Name | Description | Type | Required | Default |
---|
value | the url address content in string. | string | true | |
Name | Description | Type | Required | Default |
---|
secretRef | | secretRef | true | |
Name | Description | Type | Required | Default |
---|
name | name is the name of the secret. | string | true | |
key | key is the key in the secret. | string | true | |
Name | Description | Type | Required | Default |
---|
text | Specify the message text for slack notification. | string | true | |
blocks | | []blocks | false | |
attachments | | attachments | false | |
thread_ts | | string | false | |
mrkdwn | Specify the message text format in markdown for slack notification. | bool | false | true |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
block_id | | string | false | |
elements | | []elements | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
action_id | | string | false | |
url | | string | false | |
value | | string | false | |
style | | string | false | |
text | | text | false | |
confirm | | confirm | false | |
options | | []options | false | |
initial_options | | []initial_options | false | |
placeholder | | placeholder | false | |
initial_date | | string | false | |
image_url | | string | false | |
alt_text | | string | false | |
option_groups | | []option_groups | false | |
max_selected_items | | int | false | |
initial_value | | string | false | |
multiline | | bool | false | |
min_length | | int | false | |
max_length | | int | false | |
dispatch_action_config | | dispatch_action_config | false | |
initial_time | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
title | | title | true | |
text | | text | true | |
confirm | | confirm | true | |
deny | | deny | true | |
style | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | text | true | |
value | | string | true | |
description | | description | false | |
url | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | text | true | |
value | | string | true | |
description | | description | false | |
url | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | text | true | |
value | | string | true | |
description | | description | false | |
url | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
trigger_actions_on | | []string | false | |
Name | Description | Type | Required | Default |
---|
blocks | | []blocks | false | |
color | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
block_id | | string | false | |
elements | | []elements | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
action_id | | string | false | |
url | | string | false | |
value | | string | false | |
style | | string | false | |
text | | text | false | |
confirm | | confirm | false | |
options | | []options | false | |
initial_options | | []initial_options | false | |
placeholder | | placeholder | false | |
initial_date | | string | false | |
image_url | | string | false | |
alt_text | | string | false | |
option_groups | | []option_groups | false | |
max_selected_items | | int | false | |
initial_value | | string | false | |
multiline | | bool | false | |
min_length | | int | false | |
max_length | | int | false | |
dispatch_action_config | | dispatch_action_config | false | |
initial_time | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
title | | title | true | |
text | | text | true | |
confirm | | confirm | true | |
deny | | deny | true | |
style | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | text | true | |
value | | string | true | |
description | | description | false | |
url | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | text | true | |
value | | string | true | |
description | | description | false | |
url | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
text | | text | true | |
value | | string | true | |
description | | description | false | |
url | | string | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
type | | string | true | |
text | | string | true | |
emoji | | bool | false | |
verbatim | | bool | false | |
Name | Description | Type | Required | Default |
---|
trigger_actions_on | | []string | false | |
Name | Description | Type | Required | Default |
---|
from | Specify the email info that you want to send from. | from | true | |
to | Specify the email address that you want to send to. | []string | true | |
content | Specify the content of the email. | content | true | |
Name | Description | Type | Required | Default |
---|
address | Specify the email address that you want to send from. | string | true | |
alias | The alias is the email alias to show after sending the email. | string | false | |
password | Specify the password of the email, you can either sepcify it in value or use secretRef. | type-option-1 or type-option-2 | true | |
host | Specify the host of your email. | string | true | |
port | Specify the port of the email host, default to 587. | int | false | 587 |
Name | Description | Type | Required | Default |
---|
value | the password content in string. | string | true | |
Name | Description | Type | Required | Default |
---|
secretRef | | secretRef | true | |
Name | Description | Type | Required | Default |
---|
name | name is the name of the secret. | string | true | |
key | key is the key in the secret. | string | true | |
Name | Description | Type | Required | Default |
---|
subject | Specify the subject of the email. | string | true | |
body | Specify the context body of the email. | string | true | |
print message in workflow step status.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: print-message-in-status
namespace: default
spec:
components:
- name: express-server
type: webservice
properties:
image: oamdev/hello-world
port: 8000
workflow:
steps:
- name: express-server
type: apply-component
properties:
component: express-server
- name: message
type: print-message-in-status
properties:
message: "All addons have been enabled successfully, you can use 'vela addon list' to check them."
Name | Description | Type | Required | Default |
---|
message | | string | true | |
Read application from the cluster.
This step type is only valid in WorkflowRun.
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
Name | Description | Type | Required | Default |
---|
name | | string | true | |
namespace | | | | true | |
Read a config.
This step type is valid in both Application and WorkflowRun.
kind: Application
apiVersion: core.oam.dev/v1beta1
metadata:
name: test-config
namespace: "config-e2e-test"
spec:
components: []
workflow:
steps:
- name: read-config
type: read-config
properties:
name: test
outputs:
- fromKey: config
name: read-config
Name | Description | Type | Required | Default |
---|
name | Specify the name of the config. | string | true | |
namespace | Specify the namespace of the config. | string | false | |
Read Kubernetes objects from cluster for your workflow steps.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: read-object
namespace: default
spec:
components:
- name: express-server
type: webservice
properties:
image: oamdev/hello-world
port: 8000
workflow:
steps:
- name: read-object
type: read-object
outputs:
- name: cpu
valueFrom: output.value.data["cpu"]
- name: memory
valueFrom: output.value.data["memory"]
properties:
apiVersion: v1
kind: ConfigMap
name: my-cm-name
cluster: <your cluster name
- name: apply
type: apply-component
inputs:
- from: cpu
parameterKey: cpu
- from: memory
parameterKey: memory
properties:
component: express-server
Name | Description | Type | Required | Default |
---|
apiVersion | Specify the apiVersion of the object, defaults to ‘core.oam.dev/v1beta1’. | string | false | |
kind | Specify the kind of the object, defaults to Application. | string | false | |
name | Specify the name of the object. | string | true | |
namespace | The namespace of the resource you want to read. | string | false | default |
cluster | The cluster you want to apply the resource to, default is the current control plane cluster. | string | false | empty |
Send request to the url.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: request-http
namespace: default
spec:
components: []
workflow:
steps:
- name: request
type: request
properties:
url: https://api.github.com/repos/kubevela/workflow
outputs:
- name: stars
valueFrom: |
import "strconv"
"Current star count: " + strconv.FormatInt(response["stargazers_count"], 10)
- name: notification
type: notification
inputs:
- from: stars
parameterKey: slack.message.text
properties:
slack:
url:
value: <your slack url>
- name: failed-notification
type: notification
if: status.request.failed
properties:
slack:
url:
value: <your slack url>
message:
text: "Failed to request github"
Name | Description | Type | Required | Default |
---|
url | | string | true | |
method | | “GET” or “POST” or “PUT” or “DELETE” | false | GET |
body | | map[string]_ | false | |
header | | map[string]string | false | |
Sync secrets created by terraform component to runtime clusters so that runtime clusters can share the created cloud resource.
This step type is only valid in Application.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: rds-app
namespace: project-1
spec:
components:
- name: db
type: alibaba-rds
properties:
instance_name: db
account_name: kubevela
password: my-password
writeConnectionSecretToRef:
name: project-1-rds-conn-credential
policies:
- name: env-policy
type: env-binding
properties:
envs:
# 部署 RDS 给杭州集群
- name: hangzhou
placement:
clusterSelector:
name: cluster-hangzhou
patch:
components:
- name: db
type: alibaba-rds
properties:
# region: hangzhou
instance_name: hangzhou_db
# 部署 RDS 给香港集群
- name: hongkong
placement:
clusterSelector:
name: cluster-hongkong
namespaceSelector:
name: hk-project-1
patch:
components:
- name: db
type: alibaba-rds
properties:
# region: hongkong
instance_name: hongkong_db
writeConnectionSecretToRef:
name: hk-project-rds-credential
workflow:
steps:
# 部署 RDS 给杭州区用
- name: deploy-hangzhou-rds
type: deploy-cloud-resource
properties:
env: hangzhou
# 将给杭州区用的 RDS 共享给北京区
- name: share-hangzhou-rds-to-beijing
type: share-cloud-resource
properties:
env: hangzhou
placements:
- cluster: cluster-beijing
# 部署 RDS 给香港区用
- name: deploy-hongkong-rds
type: deploy-cloud-resource
properties:
env: hongkong
# 将给香港区用的 RDS 共享给香港区其他项目用
- name: share-hongkong-rds-to-other-namespace
type: share-cloud-resource
properties:
env: hongkong
placements:
- cluster: cluster-hongkong
namespace: hk-project-2
- cluster: cluster-hongkong
namespace: hk-project-3
Name | Description | Type | Required | Default |
---|
placements | Declare the location to bind. | []placements | true | |
policy | Declare the name of the env-binding policy, if empty, the first env-binding policy will be used. | string | false | empty |
env | Declare the name of the env in policy. | string | true | |
Name | Description | Type | Required | Default |
---|
namespace | | string | false | |
cluster | | string | false | |
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.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: example
namespace: default
spec:
components:
- name: express-server
type: webservice
properties:
image: crccheck/hello-world
port: 8000
- name: express-server2
type: webservice
properties:
image: crccheck/hello-world
port: 8000
workflow:
steps:
- name: step
type: step-group
subSteps:
- name: apply-sub-step1
type: apply-component
properties:
component: express-server
- name: apply-sub-step2
type: apply-component
properties:
component: express-server2
This capability has no arguments.
Suspend the current workflow, it can be resumed by ‘vela workflow resume’ command.
This step type is valid in both Application and WorkflowRun.
The duration
parameter is supported in KubeVela v1.4 or higher.
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
workflow:
steps:
- name: slack-message
type: notification
properties:
slack:
url:
value: <your-slack-url>
# the Slack webhook address, please refer to: https://api.slack.com/messaging/webhooks
message:
text: Ready to apply the application, ask the administrator to approve and resume the workflow.
- name: manual-approval
type: suspend
# properties:
# duration: "30s"
- name: express-server
type: apply-component
properties:
component: express-server
Name | Description | Type | Required | Default |
---|
duration | Specify the wait duration time to resume workflow such as “30s”, “1min” or “2m15s”. | string | false | |
message | The suspend message to show. | string | false | |
Run a vela command.
This step type is valid in both Application and WorkflowRun.
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: vela-cli
namespace: default
spec:
components: []
workflow:
steps:
- name: list-app
type: vela-cli
properties:
command:
- vela
- ls
Name | Description | Type | Required | Default |
---|
addonName | Specify the name of the addon. | string | true | |
command | Specify the vela command. | []string | true | |
image | Specify the image. | string | false | oamdev/vela-cli:v1.6.4 |
serviceAccountName | specify serviceAccountName want to use. | string | false | kubevela-vela-core |
storage | | storage | false | |
Name | Description | Type | Required | Default |
---|
secret | Mount Secret type storage. | []secret | false | |
hostPath | Declare host path type storage. | []hostPath | false | |
Name | Description | Type | Required | Default |
---|
name | | string | true | |
mountPath | | string | true | |
subPath | | string | false | |
defaultMode | | int | false | 420 |
secretName | | string | true | |
items | | []items | false | |
Name | Description | Type | Required | Default |
---|
key | | string | true | |
path | | string | true | |
mode | | int | false | 511 |
Name | Description | Type | Required | Default |
---|
name | | string | true | |
path | | string | true | |
mountPath | | string | true | |
type | | “Directory” or “DirectoryOrCreate” or “FileOrCreate” or “File” or “Socket” or “CharDevice” or “BlockDevice” | false | Directory |
Send a POST request to the specified Webhook URL. If no request body is specified, the current Application body will be sent by default.
This step type is valid in both Application and WorkflowRun.
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
workflow:
steps:
- name: express-server
type: apply-application
- name: webhook
type: webhook
properties:
url:
value: <your webhook url>
Name | Description | Type | Required | Default |
---|
url | Specify the webhook url. | type-option-1 or type-option-2 | true | |
data | Specify the data you want to send. | map[string]_ | false | |
Name | Description | Type | Required | Default |
---|
value | | string | true | |
Name | Description | Type | Required | Default |
---|
secretRef | | secretRef | true | |
Name | Description | Type | Required | Default |
---|
name | name is the name of the secret. | string | true | |
key | key is the key in the secret. | string | true | |
Last updated on Aug 4, 2023 by Daniel Higuero