Deployment Profiles

This document introduces the three deployment profiles supported by the SonataFlow Operator—dev, preview, and gitops. These profiles influence how the operator builds and manages workflow deployments, especially regarding image lifecycle, live updates, and reconciliation behavior.

Deployment profiles define how the workflow is built and managed by the operator.

If you’re looking to customize how the workflow is deployed as a Kubernetes Deployment or a Knative Service, see Deployment Model.

GitOps Profile

The gitops profile provides full control over workflow images. In this model, you build your workflow container externally (e.g., CI/CD pipeline) and specify the image in the SonataFlow custom resource:

spec:
  podTemplate:
    container:
      image: quay.io/acme/myworkflow:latest

When this field is set, the operator automatically assumes the gitops profile and will not build or mutate the image.

Use this profile when:

  • You want full control over the build process

  • You need to satisfy production requirements like auditability, security, and compliance

  • You’re integrating SonataFlow into existing GitOps-based workflows (e.g., ArgoCD, Tekton)

Preview Profile

The preview profile lets the operator handle workflow builds using an internal build pipeline. Any changes to the .spec.flow will trigger a rebuild and a new immutable container image.

This profile is ideal for:

  • Pre-production staging and demonstration environments

  • Quick validation of workflow logic without managing the build pipeline

Key characteristics:

  • The operator uses application-prod.properties

  • Images are automatically built and managed

  • Supports setting deploymentModel: knative (see Deployment Models)

Development Profile

The dev profile supports rapid iteration and live updates directly from the cluster. Changes to the custom resource take effect almost immediately without triggering a new container image build.

This profile is ideal for:

  • Live development and testing of workflows

  • Quick iterations without a build process

  • Extending workflows using the base developer image

Key characteristics:

  • Uses application-dev.properties

  • Automatically reloads the flow without rebuilding the container

  • The image must be based on docker.io/apache/incubator-kie-sonataflow-devmode:main

Choosing the Right Profile

Use Case Profile

Full control of build and deployment

gitops

Internal automated build and deploy

preview

Fast iteration during development

dev

Switching Between Profiles

To select a deployment profile, annotate your SonataFlow custom resource:

metadata:
  annotations:
    sonataflow.org/profile: preview

Valid values: dev, preview, gitops.

Setting .spec.podTemplate.container.image will override this annotation and automatically activate the gitops profile.

Profile Implications for Customization

Your selected profile impacts how the operator treats certain configuration aspects:

Profile Image Build Reconciliation .spec.resources Supports Knative

dev

Live reload

Auto-updates

Mounted in dev volume

❌ Ignored

preview

Internal build

Rebuilt on change

Used during build

gitops

User-supplied

No rebuild

Ignored

For pod-level customization, including using initContainers, setting resource limits, and configuring deployment model (knative vs. kubernetes), see Customize the PodSpec Definition.

Found an issue?

If you find an issue or any misleading information, please feel free to report it here. We really appreciate it!