Overview
The AWS Multi-ENI Controller simplifies the management of AWS Elastic Network Interfaces (ENIs) in Kubernetes environments. It's primarily designed to work with Multus CNI for secondary interfaces, allowing attachment of multiple interfaces for Multus using a vanilla cluster without complex templates like CloudFormation, CDK, Crossplane, or Terraform.
The controller consists of two main components:
- NodeENI Controller: Watches for NodeENI custom resources and creates/attaches ENIs
- ENI Manager: DaemonSet that brings up secondary interfaces
Key Features
Multus CNI Integration
Simplifies deploying Multus CNI on AWS by automating ENI management
Dynamic ENI Management
Automatically creates and attaches ENIs to nodes based on labels
Multi-Subnet Support
Can attach ENIs from different subnets to the same or different nodes
Subnet Flexibility
Supports both subnet IDs and subnet names (via AWS tags)
Security Group Flexibility
Supports both security group IDs and names
MTU Configuration
Configure custom MTU settings for ENIs (e.g., jumbo frames)
Proper Cleanup
Uses finalizers to ensure ENIs are properly detached and deleted when no longer needed
Parallel ENI Cleanup
Efficiently cleans up multiple ENIs in parallel for improved performance
Configurable Concurrency
Control the number of concurrent operations for better scaling
Cross-Distribution Compatibility
Works across all Linux distributions with different interface naming patterns
AWS SDK v2 Integration
Uses the latest AWS SDK Go v2 for improved performance and features
Optimized Image
Lightweight container image (22MB) for fast deployments
Helm Support
Easy deployment with Helm charts and OCI registry
Library Support
Can be used as a Go library for programmatic ENI management
No Infrastructure Changes
Works with vanilla EKS/Kubernetes clusters without complex IaC templates
Get Started
Install the AWS Multi-ENI Controller and simplify your Kubernetes networking on AWS.
Quick Start Guide View Architecture GitHub Repository