339 lines
9.0 KiB
Markdown
339 lines
9.0 KiB
Markdown
---
|
|
title: Built-in Steps
|
|
---
|
|
|
|
This documentation will walk through the built-in workflow steps that you can use to design an application deployment process.
|
|
|
|
## apply-application
|
|
|
|
### Overview
|
|
|
|
Apply all components and traits in Application.
|
|
|
|
### Parameter
|
|
|
|
No arguments, used for custom steps before or after application applied.
|
|
|
|
### Example
|
|
|
|
```yaml
|
|
apiVersion: core.oam.dev/v1beta1
|
|
kind: Application
|
|
metadata:
|
|
name: first-vela-workflow
|
|
namespace: default
|
|
spec:
|
|
components:
|
|
- name: express-server
|
|
type: webservice
|
|
properties:
|
|
image: crccheck/hello-world
|
|
port: 8000
|
|
traits:
|
|
- type: ingress
|
|
properties:
|
|
domain: testsvc.example.com
|
|
http:
|
|
/: 8000
|
|
workflow:
|
|
steps:
|
|
- name: express-server
|
|
type: apply-application
|
|
```
|
|
|
|
## depends-on-app
|
|
|
|
### Overview
|
|
|
|
Wait for the specified Application to complete.
|
|
|
|
> `depends-on-app` will check if the cluster has the application with `name` and `namespace` defines in `properties`.
|
|
> If the application exists, the next step will be executed after the application is running.
|
|
> If the application do not exists, 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 is `name`, and the value is the yaml of the deployed application yaml.
|
|
> ```yaml
|
|
> apiVersion: v1
|
|
> kind: ConfigMap
|
|
> metadata:
|
|
> name: myapp
|
|
> namespace: vela-system
|
|
> data:
|
|
> myapp: ...
|
|
> ```
|
|
|
|
### Parameter
|
|
|
|
| Name | Type | Description |
|
|
| :-------: | :----: | :------------------------------: |
|
|
| name | string | The name of the Application |
|
|
| namespace | string | The namespace of the Application |
|
|
|
|
### Example
|
|
|
|
```yaml
|
|
apiVersion: core.oam.dev/v1beta1
|
|
kind: Application
|
|
metadata:
|
|
name: first-vela-workflow
|
|
namespace: default
|
|
spec:
|
|
components:
|
|
- name: express-server
|
|
type: webservice
|
|
properties:
|
|
image: crccheck/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
|
|
```
|
|
|
|
## deploy2env
|
|
|
|
### Overview
|
|
|
|
Apply Application in different policies and envs.
|
|
|
|
### Parameter
|
|
|
|
| Name | Type | Description |
|
|
| :----: | :----: | :--------------------: |
|
|
| policy | string | The name of the policy |
|
|
| env | string | The name of the env |
|
|
|
|
### Example
|
|
|
|
```yaml
|
|
apiVersion: core.oam.dev/v1beta1
|
|
kind: Application
|
|
metadata:
|
|
name: multi-env-demo
|
|
namespace: default
|
|
spec:
|
|
components:
|
|
- name: nginx-server
|
|
type: webservice
|
|
properties:
|
|
image: nginx:1.21
|
|
port: 80
|
|
|
|
policies:
|
|
- name: env
|
|
type: env-binding
|
|
properties:
|
|
created: false
|
|
envs:
|
|
- name: test
|
|
patch:
|
|
components:
|
|
- name: nginx-server
|
|
type: webservice
|
|
properties:
|
|
image: nginx:1.20
|
|
port: 80
|
|
placement:
|
|
namespaceSelector:
|
|
name: test
|
|
- name: prod
|
|
patch:
|
|
components:
|
|
- name: nginx-server
|
|
type: webservice
|
|
properties:
|
|
image: nginx:1.20
|
|
port: 80
|
|
placement:
|
|
namespaceSelector:
|
|
name: prod
|
|
|
|
workflow:
|
|
steps:
|
|
- name: deploy-test-server
|
|
type: deploy2env
|
|
properties:
|
|
policy: env
|
|
env: test
|
|
- name: deploy-prod-server
|
|
type: deploy2env
|
|
properties:
|
|
policy: env
|
|
env: prod
|
|
```
|
|
|
|
## webhook-notification
|
|
|
|
### Overview
|
|
|
|
Send messages to the webhook address.
|
|
|
|
### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :--------------: | :----: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| slack | Object | Optional, please fulfill its url and message if you want to send Slack messages |
|
|
| slack.url | String | Required, the webhook address of Slack |
|
|
| slack.message | Object | Required, the Slack messages you want to send, please follow [Slack messaging](https://api.slack.com/reference/messaging/payload) |
|
|
| dingding | Object | Optional, please fulfill its url and message if you want to send DingTalk messages |
|
|
| dingding.url | String | Required, the webhook address of DingTalk |
|
|
| dingding.message | Object | Required, the DingTalk messages you want to send, please follow [DingTalk messaging](https://developers.dingtalk.com/document/robots/custom-robot-access/title-72m-8ag-pqw) | |
|
|
|
|
### Example
|
|
|
|
```yaml
|
|
apiVersion: core.oam.dev/v1beta1
|
|
kind: Application
|
|
metadata:
|
|
name: first-vela-workflow
|
|
namespace: default
|
|
spec:
|
|
components:
|
|
- name: express-server
|
|
type: webservice
|
|
properties:
|
|
image: crccheck/hello-world
|
|
port: 8000
|
|
traits:
|
|
- type: ingress
|
|
properties:
|
|
domain: testsvc.example.com
|
|
http:
|
|
/: 8000
|
|
workflow:
|
|
steps:
|
|
- name: dingtalk-message
|
|
type: webhook-notification
|
|
properties:
|
|
dingding:
|
|
# the DingTalk webhook address, please refer to: https://developers.dingtalk.com/document/robots/custom-robot-access
|
|
url: xxx
|
|
message:
|
|
msgtype: text
|
|
text:
|
|
context: Workflow starting...
|
|
- name: application
|
|
type: apply-application
|
|
- name: slack-message
|
|
type: webhook-notification
|
|
properties:
|
|
slack:
|
|
# the Slack webhook address, please refer to: https://api.slack.com/messaging/webhooks
|
|
url: xxx
|
|
message:
|
|
text: Workflow ended.
|
|
```
|
|
|
|
## apply-object
|
|
|
|
### Overview
|
|
|
|
Apply Kubernetes native resources, you need to upgrade to KubeVela v1.1.4 or higher to enable `apply-object`.
|
|
|
|
### Parameters
|
|
|
|
| Name | Type | Description |
|
|
| :-------: | :----: | :-----------------------------------: |
|
|
| ... | ... | Kubernetes native resources fields |
|
|
|
|
### Example
|
|
|
|
```yaml
|
|
apiVersion: core.oam.dev/v1beta1
|
|
kind: Application
|
|
metadata:
|
|
name: server-with-pvc
|
|
namespace: default
|
|
spec:
|
|
components:
|
|
- name: express-server
|
|
type: webservice
|
|
properties:
|
|
image: crccheck/hello-world
|
|
port: 8000
|
|
volumes:
|
|
- name: "my-pvc"
|
|
type: "pvc"
|
|
mountPath: "/test"
|
|
claimName: "myclaim"
|
|
|
|
workflow:
|
|
steps:
|
|
- name: apply-pvc
|
|
type: apply-object
|
|
properties:
|
|
apiVersion: v1
|
|
kind: PersistentVolumeClaim
|
|
metadata:
|
|
name: myclaim
|
|
namespace: default
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 8Gi
|
|
storageClassName: standard
|
|
- name: apply-server
|
|
type: apply-component
|
|
properties:
|
|
component: express-server
|
|
```
|
|
|
|
## suspend
|
|
|
|
### Overview
|
|
|
|
Suspend the current workflow, we can use `vela workflow resume appname` to resume the suspended workflow.
|
|
|
|
> For more information of `vela workflow`, please refer to [vela cli](../../cli/vela_workflow)。
|
|
|
|
### Parameter
|
|
|
|
| Name | Type | Description |
|
|
| :---: | :---: | :---------: |
|
|
| - | - | - |
|
|
|
|
### Example
|
|
|
|
```yaml
|
|
apiVersion: core.oam.dev/v1beta1
|
|
kind: Application
|
|
metadata:
|
|
name: first-vela-workflow
|
|
namespace: default
|
|
spec:
|
|
components:
|
|
- name: express-server
|
|
type: webservice
|
|
properties:
|
|
image: crccheck/hello-world
|
|
port: 8000
|
|
traits:
|
|
- type: ingress
|
|
properties:
|
|
domain: testsvc.example.com
|
|
http:
|
|
/: 8000
|
|
workflow:
|
|
steps:
|
|
- name: slack-message
|
|
type: webhook-notification
|
|
properties:
|
|
slack:
|
|
# 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
|
|
- name: express-server
|
|
type: apply-application
|
|
``` |