Armored Convoy — Serial Relay Pipeline¶
A sequential three-pod pipeline for inserting transformation, enrichment, or audit-logging middleware between a gateway and a sink. Includes TLS Pinhole access on both boundary pods.
Tags: Armored Car | Single Cluster | HTTP1/REST | 3 Pods
Overview¶
The Armored Convoy chains three pods in sequence: a Gateway/Initiator (http-gateway) → a Relay/Processor (http-relay) → a Sink/Terminator (http-sink). The gateway and sink are boundary pods; the relay/middleware is internal.
Each message travels through all three pods in order. The relay pod processes and transforms the payload before forwarding it to the sink. Armored Car mode (xtra7) provides per-request key rotation at every hop.
flowchart TD
A["Gateway / Initiator\n(http-gateway)\nPINHOLE_ENABLED=true"]
B["Relay / Processor\n(http-relay)\nPINHOLE_ENABLED=false"]
C["Sink / Terminator\n(http-sink)\nPINHOLE_ENABLED=true"]
A -->|"WoSP xtra7"| B -->|"WoSP xtra7"| C Use Cases¶
- Inserting middleware between an API gateway and a backend service
- Audit logging: relay pod records every message before forwarding
- Data transformation: relay pod enriches, filters, or reshapes the payload
- Sequential processing pipelines where each stage must complete before the next begins
Bundle Contents¶
armored-convoy/
├── gateway/ ← http-gateway (boundary)
├── middleware/ ← http-relay (internal)
├── backend/ ← http-sink (boundary)
├── deploy.sh
├── teardown.sh
├── pinhole-setup.sh
├── blueprint.yaml
├── README.md
└── EULA.md
Deploy¶
Prerequisites: Docker Desktop, k3d >= 5.0, kubectl, valid Hopr license
cd gateway/app/ && docker build -t serial-app-wosp-node:latest . && k3d image import serial-app-wosp-node:latest
cd ../../middleware/app/ && docker build -t serial-app-wosp-node:latest . && k3d image import serial-app-wosp-node:latest
cd ../../backend/app/ && docker build -t serial-app-wosp-node:latest . && k3d image import serial-app-wosp-node:latest
cd ../..
bash deploy.sh
Prerequisites: kubectl with cluster context, LoadBalancer support, valid Hopr license
Wait 2–5 minutes for LoadBalancer IPs before verifying.
Modify Section 1 in any or all pod app.py files, then rebuild each changed image. See Build, Package, and Deploy.
Verify¶
Expected output:
Confirm delivery at the sink:
kubectl port-forward -n armored-convoy-backend-ns deployment/backend 8000:8000
curl http://localhost:8000/output
Expected: {"count": 5, "results": [...]}. Each result's "trail" lists all three pod names, confirming every hop is connected.
Customize¶
Hook functions for this blueprint:
on_trigger(payload, headers)— ingateway/app/app.py: authentication, validation, initial transformationon_receive_relay(payload)— inmiddleware/app/app.py: middleware processing, enrichment, audit loggingon_receive_terminator(payload)— inbackend/app/app.py: final processing, dispatch to external systems
Pricing¶
3 WoSP units (1 per pod). See Commercial Licensing.