This runbook covers one optional, provider-specific showcase on a 2-node DigitalOcean Kubernetes (DOKS) cluster. DRAForge itself is provider-neutral; ordinary installation and release validation do not require DigitalOcean, DOKS, or DOCR.
Non-production exposure:
task demo:updeliberately enables unauthenticated HTTP throughvalues-showcase-docr.yaml. Use it only for short-lived demonstrations with non-sensitive cluster metadata, then runtask demo:down.
Before launching the showcase:
doctl, terraform, and helm command-line tools are installed on the host..env file at the root of the repository containing:
DIGITALOCEAN_TOKEN="your-digitalocean-api-token"
To completely build and deploy the showcase platform, run:
task demo:up
task demo:up performs:scripts/audit-cloud-resources.sh to ensure no active worker nodes or standalone Droplets exceed budget limits. Runs scripts/validate-plan.py to confirm the Terraform plan complies with the maximum 2-worker node policy.terraform apply to spin up the Dedicated VPC, DOKS cluster, and private DigitalOcean Container Registry (DOCR).server, controller, and sim-driver container images directly on the DOKS cluster.values-showcase-docr.yaml, using private DOCR component tags, the registry-draforge pull secret, wildcard demo CORS, and an explicitly enabled insecure HTTP Gateway.examples/scenarios/basic-gpu.yaml).The normal chart defaults remain on GHCR, render no pull secret, and create no Gateway or Ingress. The showcase override is intentionally applied only by task demo:up after scripts/remote-build.sh reconciles the DOCR secret in both draforge-ci and draforge-system.
Once the dashboard is online:
kubectl apply -f examples/scenarios/insufficient-capacity.yaml or a claim template). The dashboard will dynamically stream the allocation event.draforge inject-fault --pool basic-gpu-pool --type unhealthy
Watch the graph update in real-time. The affected devices will show warning states, and the doctor check will highlight the failure.
To avoid unnecessary DigitalOcean billings, clean up all provisioned resources:
task demo:down
This will uninstall the Helm release, delete all scenario custom resources, and execute terraform destroy to tear down the DOKS cluster, VPC, and registry.
The manual workflow in .github/workflows/e2e.yml is a provider-specific showcase adapter that runs the tagged smoke package on an existing DOKS cluster. It is not the general release gate. Provider-neutral release validation is performed by the credential-free install E2E matrix described in End-to-End Testing.
e2e-doks GitHub Environment.workflow_dispatch, you must enter run-e2e-doks in the confirm input field.The workflow requires a GitHub Actions repository secret named DIGITALOCEAN_TOKEN.
kubernetes:read and kubernetes:access_cluster; Droplet, VPC, registry, and Kubernetes create/update/delete API scopes are not required.doctl to locate the existing cluster and retrieve a one-hour kubeconfig credential.e2e-doks environment should run the workflow.The workflow does not provision DigitalOcean infrastructure. It consumes CPU and memory on the existing DOKS workers, which remain billable until the cluster is destroyed through the separate showcase teardown flow.
Before running the remote E2E workflow:
draforge-cluster) exists and is active on DigitalOcean.DIGITALOCEAN_TOKEN secret is configured in the repository settings under Secrets and variables -> Actions.run-e2e-doks as confirmation and specify the correct cluster name.cleanup job that runs always() (even if the main test job fails or is cancelled).draforge-ci Namespace, ResourceQuota, and LimitRange remain for later remote jobs. The existing Helm/scenario cleanup remains best-effort. The DOKS cluster itself is never deleted by this workflow.DIGITALOCEAN_TOKEN secret is not configured
DIGITALOCEAN_TOKEN is defined.cluster ... not found
cluster_name input.Unauthorized / Forbidden API calls
kubernetes:read / kubernetes:access_cluster.