Skip to content

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

  1. Hopr Workload Security Proxy: How to deploy and configure Hopr's privacy-preserving proxy
  2. Kubernetes Patterns: Multi-container pods, sidecars, namespaces, services, ConfigMaps, Secrets
  3. YTT Templating: How to use Carvel YTT for reusable Kubernetes configurations
  4. k3d Development: Local Kubernetes cluster setup and management
  5. Application Design: Relay patterns, initiator/forwarder roles, asynchronous messaging

Next Steps for Learning

  1. Experiment with the relay pattern:

  2. Modify timing intervals

  3. Add custom data fields to batons
  4. Change the message format
  5. Scale the network:

  6. Add a third pod (or more)

  7. Create different relay topologies (linear, circular, star)
  8. Test with multiple simultaneous relays
  9. Monitor Hopr metrics:

  10. Explore xtra-wasm logs in detail

  11. Track encryption key rotation
  12. Measure latency through the proxy
  13. Customize the application:

  14. Adapt the Python app for your use case

  15. Add database persistence
  16. Implement REST APIs for external control
  17. Production deployment:

  18. Adapt these manifests for production Kubernetes

  19. Implement proper secrets management
  20. Add monitoring and alerting
  21. 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