Locust Kubernetes Operator v2.0 - Complete Go Rewrite 🎉
I'm thrilled to announce v2.0, a complete ground-up rewrite of the Locust Kubernetes Operator in Go! This release brings dramatic performance improvements and powerful new features for cloud-native performance testing.
🚀 Breaking Changes & Migration 🚀
⚠️ This is a major version release with breaking changes
- Complete rewrite from Java (Micronaut) to Go using Operator SDK and controller-runtime
- New API version:
locust.io/v2(automatic conversion from v1 supported) - Performance improvements: 4x lower memory usage (64MB vs 256MB) and 60x faster startup (<1s vs ~60s)
Migrating from v1? See the comprehensive Migration Guide for upgrade instructions.
✨ New Features ✨
OpenTelemetry Support
- Export traces and metrics directly with the
--otelflag - No sidecar required - native integration with OpenTelemetry collectors
- Full distributed tracing for load test observability
Advanced Secret & ConfigMap Injection
- Securely inject credentials as environment variables with optional prefixes
- Mount secrets and ConfigMaps as volumes
- Target-specific injection (master/worker/both)
Flexible Volume Mounting
- Mount PVCs, ConfigMaps, and Secrets with granular control
- Target filtering per resource type
- Support for custom volume configurations
Separate Resource Specifications
- Independent CPU/memory configuration for master and worker pods
- Optimize master for UI/coordination, workers for load generation
- Better resource utilization and cost control
Enhanced Status Reporting
- Phase tracking (Pending → Running → Succeeded/Failed)
- Kubernetes conditions for operational insights
- Worker connection count monitoring for health checks
🏗️ Architecture Improvements 🏗️
- Framework: Migrated from Java Operator SDK to Go controller-runtime
- Reconciliation: Cloud-native reconciliation patterns with leader election support
- Webhooks: Validation and conversion webhooks for v1 ↔ v2 compatibility
- Health Monitoring: Comprehensive pod health checks and status updates
📊 Performance Metrics 📊
| Metric | v1.x (Java) | v2.0 (Go) | Improvement |
|---|---|---|---|
| Memory | ~256MB | ~64MB | 4x |
| Startup | ~60s | <1s | 60x |
| Image Size | Larger | Optimized | Smaller |
📚 Documentation 📚
- Updated comprehensive documentation at github.io/locust-k8s-operator
- New Migration Guide for v1 → v2 upgrades
- Production-ready example configurations
- API reference with all v2 features
🔗 Links 🔗
- PR: #274 feat!: GO rewrite
- Documentation: https://abdelrhmanhamouda.github.io/locust-k8s-operator/
- Migration Guide: https://abdelrhmanhamouda.github.io/locust-k8s-operator/migration/
- Helm Chart: Now includes v2 operator with full backward compatibility
🙏 Thank You 🙏
This release represents months of development and represents a major milestone for the project. Thank you to all contributors and users who have supported this operator since its inception in 2022!
Full Changelog: locust-k8s-operator-1.1.1...locust-k8s-operator-2.0.0