Templates HAProxyTemplateConfig
Resources or paste kubectl -o yaml
Rendered output
haproxy -c; it won't catch undefined backends, unknown keywords, or global/defaults errors.HAProxyTemplateConfighaproxy -c; it won't catch undefined backends, unknown keywords, or global/defaults errors.haptic-tryout.sh bundles the rendered haproxy.cfg with every map, error
file, and certificate it references, then runs it locally or in your cluster.
chmod +x haptic-tryout.sh ./haptic-tryout.sh [command] # no command: interactive menu
haproxy -c)kubectl./haptic-tryout)k8sk=v,k=v) to match a NetworkPolicyStatic snapshot: the HAPTIC controller keeps backend servers in sync as pods change; this script does not, so a restarted target pod returns 503.
The right panel is the real haproxy.cfg the HAPTIC controller would deploy —
rendered in your browser from the Templates (left) and
Resources (middle) panels. It works with Ingress (plain or with your
controller's annotations), Gateway API, or a custom CRD. Load a preset from
Start, or bring your own:
Export your live config into Templates and edit it:
kubectl get htplcfg -A -o yaml
Then paste the resources it watches into Resources (commands below) and diff
the rendered output against your current haproxy.cfg — before you apply the change.
In Start, pick the config that matches your setup, then paste your resources into Resources (commands below):
The resources tab then shows what each object bucketed into (and why anything was dropped); the migration tab shows how each annotation, and each key of a pasted controller ConfigMap, carries over.
Ingress
kubectl get ingress,service,endpointslices,secrets -A -o yaml
Gateway API
kubectl get gatewayclass,gateway,httproute,service,endpointslices,secrets -A -o yaml
Match the kinds to your watchedResources — add
grpcroutes, tcproutes, tlsroutes, or your own CRD if you
use them. Rendering does not upload your input. Shared links include the resources
you paste, and downloaded files can contain rendered secrets. Review both before sharing.
The playground renders with WebAssembly on your machine. It downloads static assets, schemas, and examples from this site; rendering does not send your inputs to a server.
To host the whole thing yourself, build the self-contained static bundle from source (needs Go, Helm, and yq) and serve the folder:
git clone https://gitlab.com/haproxy-haptic/haptic cd haptic ./scripts/build-playground.sh ./playground-local dev cd playground-local && python3 -m http.server 8080
Then open http://localhost:8080. The bundle is plain static files — HTML,
JavaScript, and WebAssembly with no third-party requests — so any static file server works.
Left is your config, right is the solution — differences are highlighted, so you can see exactly what's missing. Close to keep working, or apply the solution to the editor.