Files
kubevela/docs/examples/workflow

  1. Apply CRD and Definitions:

    kubectl apply -f definition.yaml
    

    Check Policy and Workflow definitions:

    kubectl get policy
    kubectl get workflowstep
    

    Output:

    NAME        AGE
    foopolicy   41s
    
    NAME    AGE
    foowf   49s
    

    Check DefinitionRevision:

    kubectl get definitionrevision
    

    Output:

    NAMESPACE     NAME             REVISION   HASH               TYPE
    default       foopolicy-v1     1          8c340e1beaf9a3fa   Policy
    default       foowf-v1         1          83cf4e8246a89afa   WorkflowStep
    
  2. Apply Application:

    kubectl apply -f app.yaml
    
  3. Check workflow status in Application:

    kubectl get application first-vela-app -o=jsonpath='{.status.workflow[?(@.name=="my-wf")]}.phase'
    

    Output:

    running
    
  4. Check Workflow objects:

    kubectl get foo my-wf -o=jsonpath='{.spec.key}'
    

    Output:

    test
    

    This means the resource has been rendered correctly.

  5. Check workflow context:

    kubectl get foo my-wf -o=jsonpath='{.metadata.annotations.app\.oam\.dev/workflow-context}' | jq
    

    Output:

    {
      "appName": "first-vela-app",
      "appRevision": "first-vela-app-v1",
      "workflowIndex": 0,
      "resourceConfigMap": {
        "name": "first-vela-app-v1"
      }
    }
    
  6. Patch condition status on workflow object:

    kubectl patch foo my-wf --type merge --patch "$(cat wf-patch.yaml)"
    

    Check workflow object status:

    kubectl get foo my-wf -o=jsonpath='{.status.conditions[?(@.type=="workflow-finish")]}' | jq
    

    Output:

    {
      "message": "{\"observedGeneration\":2}",
      "reason": "Succeeded",
      "status": "True",
      "type": "workflow-finish"
    }
    

    Note: The observedGeneration is 2 because the json patch will trigger generation increment.

  7. Check workflow status in Application:

    kubectl get application first-vela-app -o=jsonpath='{.status.workflow[?(@.name=="my-wf")]}.phase'
    

    Output:

    succeeded
    

    The workflow phase has changed from running to succeeded due to the underlying object changing status condition.

  8. cleanup:

    kubectl delete -f app.yaml
    kubectl delete -f definition.yaml