Smoke Test
To validate basic functionality of the Fuzzball cluster, you can run a minimal “Hello, world!” workflow. You will need to install the Fuzzball CLI on the Server node to complete this test.
On the Server node, you can start by saving the following in a
Fuzzfile called hello-world.fz
version: v1
jobs:
hello:
image:
uri: docker://docker.io/library/alpine:latest
command:
- /bin/sh
- '-c'
- echo "Hello, world"
resource:
cpu:
cores: 1
affinity: NUMA
memory:
size: 1GB
The minimal Fuzzball configuration used in this deployment guide causes Fuzzball to be hosted with a self-signed certificate. To accept this certificate you can perform the following.
# mkdir $HOME/certs
# kubectl get secret -n cert-manager root-ca-cert -o "jsonpath={.data['ca\.crt']}" | base64 --decode >$HOME/certs/ca.crt
# kubectl get secret -n cert-manager root-ca-cert -o "jsonpath={.data['tls\.crt']}" | base64 --decode >$HOME/certs/tls.crt
# export SSL_CERT_DIR=$HOME/certs
Next, you’ll need to create and log into the correct Fuzzball context. This will require some additional information from the Fuzzball instance running in K8s.
# api=$(kubectl get ingress -n fuzzball fuzzball-config -o "jsonpath={.spec.rules[].host}")
# auth=$(kubectl get ingress -n identity identity-keycloakx -o "jsonpath={.spec.rules[].host}")
# realm=$(kubectl get FuzzballOrchestrate fuzzball-orchestrate -o 'jsonpath={.spec.keycloak.create.realmId}')
# FUZZBALL_USER=$(kubectl get secret/fuzzball-fuzzball-secrets -n fuzzball -o json | jq -r '.data.fuzzballAdminUsername | @base64d')
# FUZZBALL_PASSWORD=$(kubectl get secret/fuzzball-fuzzball-secrets -n fuzzball -o json | jq -r '.data.fuzzballAdminPassword | @base64d')
CIQ provides a convenience script for retrieving some of the essential details about your Fuzzball instance in k8s. Learn more here.
# fuzzball context create default "${api}" "http://${auth}/auth/realms/${realm}" fuzzball-cli
# fuzzball context login --direct -u $FUZZBALL_USER -p $FUZZBALL_PASSWORD
Logging into current cluster context...
Account "User Account (admin@ciq.com)" in use
Now you are ready to submit a workflow based on the hello-world.fz
file that you saved earlier.
# fuzzball workflow start hello-world.fz
Workflow "32fabald-aab2-449-9f6b-ce5577f3890f" started.
# fuzzball workflow describe <workflow uuid>
Name: hello-world.fz
Email: admin@ciq.com
UserId: 004f1ecd-3b4c-4b58-baf2-dcbe4e9fd705
Status: STAGE_STATUS_FINISHED
Created: 2024-07-26 08:04:48PM
Started: 2024-07-26 08:04:48PM
Finished: 2024-07-26 08:04:52PM
Error:
Stages:
KIND | STATUS | NAME | STARTED | FINISHED
Workflow | Finished | cb634d97-24b1-49e9-97c7-10e7b5ba4fb1 | 2024-07-26 08:04:48PM | 2024-07-26 08:04:52PM
Image | Finished | docker://docker.io/library/alpine:latest | 2024-07-26 08:04:48PM | 2024-07-26 08:04:51PM
Job | Finished | hello | 2024-07-26 08:04:51PM | 2024-07-26 08:04:52PM
When the workflow is complete, you can check the output logs.
# fuzzball workflow logs <workflow uuid> hello
Hello, world
Congratulations! You have now manually deployed a full working Fuzzball cluster!