All notable changes to the AWS Multi-ENI Controller will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- SR-IOV Configuration Generation: Fixed ENI Manager incorrectly generating SR-IOV device plugin configuration for regular ENI configurations (Case 1) when it should only do so for configurations where SR-IOV is explicitly requested via
dpdkPCIAddressfield - PCI Address Mapping: Fixed interface-to-NodeENI mapping logic to prioritize PCI address matching over device index matching for SR-IOV configurations, resolving PCI address mismatches in SR-IOV device plugin configuration
- Resource Name Mapping: Resolved issue where PCI addresses were incorrectly mapped to SR-IOV resource names (e.g., PCI
0000:00:08.0incorrectly mapped tosriov_kernel_1instead ofsriov_kernel_2)
- Enhanced Logging: Added detailed logging for interface mapping decisions to help troubleshoot configuration issues
- Test Coverage: Added comprehensive test coverage for interface-to-NodeENI mapping scenarios including
TestPCIAddressMappingandTestRegularENINoSRIOVConfiguration - Documentation: Updated GitHub issue #22 with detailed root cause analysis and solution documentation
- Interface Mapping Logic: Modified
findNodeENIForInterfacemethod to check PCI address first for SR-IOV configurations, then fall back to device index for regular ENI configurations - SR-IOV Logic: Updated
updateSRIOVConfigurationmethod to only process interfaces wheredpdkPCIAddressis explicitly specified, ensuring proper separation between regular ENI and SR-IOV functionality
This release addresses critical issues in SR-IOV configuration generation:
- Issue 1: Regular ENI configurations (no DPDK fields) were incorrectly generating SR-IOV device plugin configuration
- Issue 2: PCI address mapping was using device index first, causing incorrect associations between interfaces and NodeENI resources
The fixes ensure that:
- Regular ENI configurations work as intended (basic ENI attachment only)
- SR-IOV configurations correctly map PCI addresses to resource names
- Cleaner separation of concerns between regular ENI and SR-IOV functionality
- Modular Architecture: Complete refactoring from monolithic 6700+ line main.go to focused, maintainable packages
pkg/eni-manager/coordinator/- Main orchestration logic and integration testspkg/eni-manager/dpdk/- DPDK device binding operations with circuit breaker patternpkg/eni-manager/network/- Network interface management with validationpkg/eni-manager/kubernetes/- Kubernetes API interactions and NodeENI handlingpkg/eni-manager/sriov/- SR-IOV device plugin configuration managementpkg/eni-manager/testutil/- Testing utilities and mock implementations
- Enhanced SR-IOV Management: Improved device plugin restart isolation and tracking
- NodeENI Deletion Detection: Automatic cleanup and tracking for deleted NodeENI resources
- Batched SR-IOV Updates: Prevention of configuration overwrites during concurrent operations
- Comprehensive Test Suite: Organized test structure with 16+ test files moved to appropriate packages
- Circuit Breaker Pattern: Fault tolerance for DPDK operations to prevent cascading failures
- Input Validation Framework: Comprehensive validation with detailed error messages
- Exponential Backoff Retry: Resilient network operations with configurable retry logic
- Architecture Transformation: Reduced main.go from 6700+ lines to ~300 lines per focused package
- Improved Maintainability: Clear separation of concerns with single responsibility principle
- Enhanced Testability: Mock implementations and comprehensive unit tests for each component
- Better Observability: Enhanced status reporting and component health metrics
- Optimized Performance: Same or better performance with improved resource utilization
- Organized Test Structure: Moved all test files to appropriate package directories with fixed declarations
- SR-IOV Resource Cleanup: Fixed cleanup issues for non-DPDK interfaces
- Device Plugin Restart Loops: Prevented unnecessary restart cycles with improved change detection
- DPDK Status Reporting: Enhanced accuracy of DPDK binding status in NodeENI resources
- Configuration Conflicts: Resolved SR-IOV placeholder resource conflicts with updated CRD group
- Race Condition Protection: Enhanced protection against concurrent operation conflicts
- Improved Error Handling: Enhanced error recovery and timeout protection for all operations
- Resource Lifecycle Management: Proper cleanup and resource management across all components
- Graceful Shutdown: Enhanced shutdown handling for all modular components
- Modular Architecture Guide: Comprehensive documentation for new architecture (docs/MODULAR_ARCHITECTURE.md)
- Migration Guide: Detailed guide for developers working with the new structure (docs/REFACTORING_MIGRATION.md)
- Updated README: Enhanced architecture overview and component descriptions
Addresses: GitHub issue #20 - Complete modular architecture refactoring Backward Compatibility: 100% backward compatible - no breaking changes
- Cloud-Native SR-IOV Device Plugin Restart: Implemented native Kubernetes API-based restart functionality for SR-IOV device plugins
- Enhanced RBAC Permissions: Added comprehensive pod management permissions for SR-IOV device plugin operations
- Multiple SR-IOV Plugin Support: Support for various SR-IOV device plugin naming conventions and deployment patterns
- Performance Testing Framework: Added comprehensive performance testing suite for enterprise-scale deployments
- Timeout Protection: Enhanced error handling with configurable timeouts for SR-IOV operations
- Replaced kubectl Dependency: Eliminated external kubectl binary dependency in favor of native Kubernetes client-go APIs
- Improved SR-IOV Integration: Enhanced reliability and error handling for DPDK binding/unbinding operations
- Enhanced Device Detection: Improved DPDK device detection and status reporting in ENI manager
- Optimized Concurrent Operations: Better handling of concurrent ENI operations and reconciliation
- SR-IOV Device Plugin Restart Reliability: Fixed issues with SR-IOV device plugin restart when DPDK binding changes occur
- DPDK Status Reporting: Improved accuracy of DPDK binding status in NodeENI resources
- Race Condition Handling: Enhanced protection against race conditions in concurrent operations
- Principle of Least Privilege: Refined RBAC permissions to follow security best practices
- Enhanced Pod Security: Improved security context and capabilities management for privileged operations
- OpenSSF Best Practices Badge Compliance: Added comprehensive security policy (SECURITY.md) with vulnerability reporting process
- Enhanced Contribution Guidelines: Detailed coding standards, testing requirements, and security considerations
- DPDK Support: Full Data Plane Development Kit (DPDK) integration for high-performance networking
- DPDK device binding and unbinding capabilities
- PCI address targeting for direct device management
- SRIOV device plugin integration
- Configurable DPDK drivers (vfio-pci, uio_pci_generic, etc.)
- Automated Dependency Management: Dependabot configuration for security updates
- Test Policy Documentation: Formal testing requirements and coverage guidelines
- Updated Go version requirement from 1.19 to 1.23 in contribution guidelines
- Enhanced security documentation with vulnerability remediation timelines
- Improved test documentation with detailed instructions for unit and integration tests
- Established formal vulnerability reporting process with 14-day response time
- Added security design principles and common vulnerability mitigations
- Documented secure coding practices for contributors
- Implemented principle of least privilege for AWS IAM permissions
- Device index tracking in ENI attachments for better reconciliation
- Consistent device index to subnet mapping across all nodes
- Automatic cleanup of manually detached ENIs to prevent resource leakage
- Refactored code to reduce cyclomatic complexity
- Enhanced controller stability and reliability
- Improved logging for ENI attachment operations
- Fixed issue where manually detached ENIs were left in the available state
- Fixed device index type conversion in ENI attachment status
- Added subnet CIDR information to ENI attachment status
- Enhanced caching for subnet and security group information
- Optimized AWS API calls with improved caching mechanisms
- Improved parallel cleanup implementation with worker pool pattern
- Streamlined MTU configuration logic
- Reduced verbose logging in performance-critical paths
- Enhanced error handling in ENI cleanup operations
- Fixed race conditions in concurrent ENI operations
- Added
MAX_CONCURRENT_RECONCILESparameter for better scaling with many nodes - Enhanced interface detection for different naming patterns (eth*, ens*, etc.)
- Improved MTU configuration for all network interfaces
- Optimized Docker build process for faster builds
- Fixed MTU application to interfaces not explicitly mapped to ENIs
- Reduced cyclomatic complexity in code
- Improved error handling and logging
- Added configurable MTU option for ENIs in NodeENI resources
- Implemented MTU configuration in ENI Manager
- Updated ENI attachment status to include MTU information
- Fixed code quality issues and reduced cyclomatic complexity
- Improved error handling and logging for MTU configuration
- Added support for subnet names via AWS tags
- Implemented multi-subnet support
- Added support for security group names
- Improved cleanup with finalizers
- Enhanced AWS SDK v2 integration
- Initial stable release
- Dynamic ENI management
- Proper cleanup with finalizers
- AWS SDK v2 integration
- Optimized container image (22MB)