Handler to programmatically convert a local SonataFlow project into Kubernetes manifests to deploy with the operator.
Add this module to your project's dependencies:
go get github.com/kiegroup/kogito-serverless-workflow/workflowproj
Then you should have access to the main entry point of this package, which is the workflow project handler builder.
The API is simple enough to describe in a few lines:
package main
import (
"os"
"github.com/apache/incubator-kie-kogito-serverless-operator/workflowproj"
)
func Main() {
// we are ignoring errors just for demo purposes, but don't do this!
workflowFile, _ := os.Open("myworkflow.sw.json")
propertiesFile, _ := os.Open("application.properties")
specFile, _ := os.Open("myopenapi.yaml")
defer workflowFile.Close()
defer propertiesFile.Close()
defer specFile.Close()
// create the handler
handler := workflowproj.New("mynamespace").
WithWorkflow(workflowFile).
WithAppProperties(propertiesFile).
AddResource("myopenapi.yaml", specFile)
// You can easily generate the Kubernetes manifests to later use client-go to deploy them in the cluster...
objs, _ := handler.AsObjects()
// client.Create(...), other stuff
// ... or you can save the files locally to use them later or to integrate in a GitOps process
_ = handler.SaveAsKubernetesManifests("/my/dir/")
}
The SonataFlow
custom resource generated is annotated with
the devmode profile
.
Every other resource added to the project is a ConfigMap
handling these resources for you.
Given that you already have the SonataFlow Operator installed , to deploy the generated project you can simply run:
kubectl apply -f /my/dir/* -n "mynamespace"