Getting Started

This guide deploys Logic Operator on a local KIND cluster and runs the hello-world sample workflow end-to-end.

Prerequisites

  • Docker (or compatible runtime)

  • KIND v0.20+

  • kubectl

  • Git

  • Kubernetes 1.29+ cluster (KIND creates one automatically)

1. Clone the repository

git clone https://github.com/kubesmarts/logic-operator.git
cd logic-operator

2. Create a KIND cluster

make kind-create

This creates a local Kubernetes cluster with:

3. Deploy the operator

make kind-deploy

This builds the operator image, loads it into KIND, and applies all manifests (CRDs, RBAC, Deployments, webhooks).

If the next step fails immediately with a webhook error, the cert-manager certificate is still being issued. Wait for the operator pod to be ready, then retry:

kubectl wait --namespace logic-operator-system \
  --for=condition=ready pod \
  -l control-plane=controller-manager \
  --timeout=60s

4. Apply the hello-world sample

make kind-demo

This creates a LogicFlowRuntime, a LogicFlowDefinition (the hello-world workflow), and a LogicFlowService in the default namespace.

Verify everything is ready:

kubectl get logicflowruntimes,logicflowdefinitions,logicflowservices

Expected output:

NAME                                                 PHASE   REPLICAS   READY
logicflowruntime.logic.kubesmarts.org/hello-runtime  Ready   1          1

NAME                                                              WORKFLOW      VERSION
logicflowdefinition.logic.kubesmarts.org/hello-world-v1-0-0       hello-world   1.0.0

NAME                                                   HOST           URL
logicflowservice.logic.kubesmarts.org/hello-world      hello.lvh.me   http://hello.lvh.me/

5. Invoke the workflow

curl -X POST http://hello.lvh.me/q/flow/exec/default/hello-world/1.0.0 \
  -H "Content-Type: application/json" \
  -d '{"input": {"name": "world"}}'

The runner responds with the new workflow instance:

{
  "instanceId": "01M0GC81PBCYD3X6E2SHJZ64V2",
  "status": "RUNNING",
  "startedAt": "2026-08-20T19:58:22.351417832Z"
}

6. Check metrics

The runner exposes Micrometer metrics automatically at /q/metrics:

curl http://runtime.lvh.me/q/metrics | grep quarkus_flow_workflow