Cleanup Blupeprint Deployments¶
Your cluster and deployment names may be different from the code examples shown below. Edit the commands to use the appropriate names for your deployment.
Remove Deployments¶
# Delete Pod-1 deployment
kubectl delete -f pod-1-deployment.yaml
# Delete Pod-2 deployment
kubectl delete -f pod-2-deployment.yaml
# Verify deletion
kubectl get all -n web-app-1
kubectl get all -n web-app-2
Delete Entire Namespaces (Quick Cleanup)¶
# This removes everything in the namespace
kubectl delete namespace web-app-1
kubectl delete namespace web-app-2
# Verify deletion
kubectl get namespaces | grep web-app
Delete k3d Cluster¶
# Delete the entire cluster
k3d cluster delete wosp-cluster
# Verify deletion
k3d cluster list
# Should show no clusters or cluster not found
Clean Up Docker Images¶
# Remove the application image
docker rmi serial-app-wosp-node:latest
# Optional: Remove Hopr images (they'll need to be pulled again)
docker rmi repo.hoprapi.com/hopr/xtra-wasm-filter:v2.1.0
docker rmi repo.hoprapi.com/hopr/web-retriever:v0.4.0
# View remaining images
docker images | grep -E "serial-app|hopr"
Clean Up Project Files (Optional)¶
# Remove generated deployment files
rm pod-1-deployment.yaml
rm pod-2-deployment.yaml
# Or remove entire project directory
cd ..
rm -rf hopr-wosp-demo
Conclusion¶
This demonstration successfully shows:
✅ Hopr WoSP encrypting all inter-pod communication
✅ Separate Kubernetes namespaces for pod isolation
✅ Continuous relay pattern with initiator control
✅ Local k3d cluster deployment for development
✅ Reusable template-based configuration with YTT
✅ Multi-container pod architecture with sidecars
✅ Cross-namespace service communication via FQDN
What You've Learned¶
- Hopr Workload Security Proxy: How to deploy and configure Hopr's privacy-preserving proxy
- Kubernetes Patterns: Multi-container pods, sidecars, namespaces, services, ConfigMaps, Secrets
- YTT Templating: How to use Carvel YTT for reusable Kubernetes configurations
- k3d Development: Local Kubernetes cluster setup and management
- Application Design: Relay patterns, initiator/forwarder roles, asynchronous messaging
Next Steps for Learning¶
-
Experiment with the relay pattern:
-
Modify timing intervals
- Add custom data fields to batons
- Change the message format
-
Scale the network:
-
Add a third pod (or more)
- Create different relay topologies (linear, circular, star)
- Test with multiple simultaneous relays
-
Monitor Hopr metrics:
-
Explore xtra-wasm logs in detail
- Track encryption key rotation
- Measure latency through the proxy
-
Customize the application:
-
Adapt the Python app for your use case
- Add database persistence
- Implement REST APIs for external control
-
Production deployment:
-
Adapt these manifests for production Kubernetes
- Implement proper secrets management
- Add monitoring and alerting
- Configure resource limits and auto-scaling
Additional Resources¶
- Hopr Documentation: https://docs.hopr.co
- Hopr GitHub: https://github.com/hoprnet
- Carvel YTT Documentation: https://carvel.dev/ytt/
- k3d Documentation: https://k3d.io/
- Kubernetes Documentation: https://kubernetes.io/docs/
- aiohttp Documentation: https://docs.aiohttp.org/
Getting Support¶
- Hopr Discord: Community support and discussions
- Hopr Documentation: Technical guides and API references
- GitHub Issues: Bug reports and feature requests
- Carvel Slack: YTT templating questions