Skip to Content
Local Deployment GuidesServer Node DeploymentServer Node Fuzzball Orchestrate Deployment

Server Node Fuzzball Orchestrate Deployment

With the Fuzzball K8s operator installed and the fuzzball.yaml configuration file in place, you are ready to deploy Fuzzball Orchestrate to the Server node.

You can do so with the following command:

# kubectl apply -f fuzzball.yaml

This command proceeds asynchronously. So it will look like it is completed even though it will still require some time for the K8s Fuzzball deployment to finish. This usually takes several minutes.

You can monitor the deployment as it occurs with the following command:

# kubectl logs -l app.kubernetes.io/name=fuzzball-operator -n fuzzball-system -f --tail=-1 [...snip] Diagnostics: ciq:core/v1:Identity (identity): Waiting for keycloak to be ready: SUCCESS pulumi:pulumi:Stack (fuzzball-orchestrate-fuzzball-orchestrate): Using fuzzballCRD image username and password Resources: + 9 created ~ 7 updated 16 changes. 235 unchanged Duration: 16s 2025-02-04T22:49:08Z DEBUG events Resources have been deployed successfully {"type": "Normal", "object": {"kind":"FuzzballOrchestrate","name":"fuzzball-orchestrate","uid":"786ef498-cc8b-4d31-9729-8e0c2a6d9dcb","apiVersion":"deployment.ciq.com/v1alpha1","resourceVersion":"44728"}, "reason": "DeploymentSucceeded"} 2025-02-04T22:49:08Z INFO Updated Fuzzball status to ReconciliationComplete - Reconciliation completed successfully {"controller": "fuzzballorchestrate", "controllerGroup": "deployment.ciq.com", "controllerKind": "FuzzballOrchestrate", "FuzzballOrchestrate": {"name":"fuzzball-orchestrate"}, "namespace": "", "name": "fuzzball-orchestrate", "reconcileID": "ebe8f5ac-8ef7-449a-81bc-080c455aae86"}

After deployment, you can inspect the configuration that was used with the following command:

# kubectl get fuzzballorchestrate fuzzball-orchestrate -o yaml

You can edit the current configuration in-place. These changes will be immediately applied and updated by the Fuzzball operator.

# kubectl edit fuzzballorchestrate fuzzball-orchestrate

Check your work

Once the deployment is complete, you can confirm that Fuzzball Orchestrate is installed correctly by inspecting that expected objects have been created. (Note that you may have more or fewer replicas of some pods.)

Look at the newly started pods:

# kubectl get pods -n fuzzball NAME READY STATUS RESTARTS AGE fuzzball-admin-0 1/1 Running 0 8m49s fuzzball-admin-ui-548f599b68-9j9vc 1/1 Running 0 8m29s fuzzball-agent-848db9f89c-lmdmq 1/1 Running 0 7m19s fuzzball-audit-8dd47456-wf2qq 1/1 Running 0 8m39s fuzzball-auth-spicedb-77d7dd9957-jz2lr 1/1 Running 0 8m47s fuzzball-cluster-admin-599c87b794-4txmh 1/1 Running 0 7m54s fuzzball-jetstream-0 1/1 Running 0 7m20s fuzzball-jetstream-1 1/1 Running 0 7m20s fuzzball-jetstream-2 1/1 Running 0 7m20s fuzzball-load-default-catalog-sv2jg 0/1 Completed 0 3m35s fuzzball-openapi-65c78cc7cb-wdmmw 1/1 Running 0 8m41s fuzzball-orchestrator-779cd894d6-h9x9b 1/1 Running 0 5m17s fuzzball-storage-6597d744b4-zz5n5 1/1 Running 0 5m15s fuzzball-substrate-bridge-6cc6f74859-gtc2h 1/1 Running 0 6m9s fuzzball-sync-0 1/1 Running 0 4m20s fuzzball-ui-7d664769bb-tkqhl 1/1 Running 0 8m28s fuzzball-workflow-7d8cd4cf6-8rt5t 1/1 Running 0 4m48s

Check for any pods that are not in the running state:

# kubectl get pods -A --field-selector status.phase!=Running,status.phase!=Succeeded No resources found

Check that ingress is configured and ready.

# kubectl get ingress -A NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE fuzzball fuzzball-admin-ui kong ui-admin.10.1.96.99.nip.io 10.1.96.99 80, 443 8m16s fuzzball fuzzball-config kong api.10.1.96.99.nip.io 10.1.96.99 80, 443 9m35s fuzzball fuzzball-openapi kong api.10.1.96.99.nip.io 10.1.96.99 80, 443 9m11s fuzzball fuzzball-substrate-bridge kong substrate-bridge.10.1.96.99.nip.io 10.1.96.99 80, 443 6m14s fuzzball fuzzball-ui kong ui.10.1.96.99.nip.io 10.1.96.99 80, 443 8m10s fuzzball-identity identity-keycloakx <none> auth.10.1.96.99.nip.io 10.1.96.99 80, 443 10m

Confirm that all persistent volume claims (PVCs) are bound.

# kubectl get pvc -A NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE fuzzball-database data-database-postgresql-0 Bound pvc-52d62829-32b5-41e7-90c0-11d9ddfcfccb 8Gi RWO longhorn <unset> 12m fuzzball-system fuzzball-operator-controller-manager Bound pvc-dfc2f2c3-8df0-4ec8-8503-2d927b13402e 20Gi RWO longhorn <unset> 22m fuzzball audit-cold-storage Bound pvc-7bcd7abc-0d11-419b-b453-3a6bddccbb67 1Gi RWO longhorn <unset> 10m fuzzball fuzzball-substrate-logs Bound pvc-e282b15b-6ab2-4b64-8a39-d6c58a382835 5Gi RWO longhorn <unset> 7m39s fuzzball jetstream-data-fuzzball-jetstream-0 Bound pvc-ad6481d4-d469-4343-a8a3-9b2117e53ab4 10Gi RWO longhorn <unset> 8m47s fuzzball jetstream-data-fuzzball-jetstream-1 Bound pvc-4cb91882-d556-4ffc-a931-76ed45f8761a 10Gi RWO longhorn <unset> 8m47s fuzzball jetstream-data-fuzzball-jetstream-2 Bound pvc-a161913d-6629-4b36-b109-a83943041fba 10Gi RWO longhorn <unset> 8m47s fuzzball substrate-shared-config-fuzzball-sync-0 Bound pvc-2953abd9-5e29-45d5-b731-8dcf935a76d4 5Gi RWX nfs-client <unset> 5m47s

Docker Compose deployment

The fuzzball cluster docker-compose deploy command deploys Fuzzball Orchestrate with a single substrate node, which is suited to single-host local development and testing.

For demo or testing of multi-node workflows on a single host, add the --substrate-nodes 2 flag to start a second substrate node:

$ fuzzball cluster docker-compose deploy --substrate-nodes 2