AWS Multi-ENI Controller for Kubernetes

A Kubernetes controller that automatically creates and attaches AWS Elastic Network Interfaces (ENIs) to nodes based on node labels.

License Go Report Card Go Helm Version

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:

  1. NodeENI Controller: Watches for NodeENI custom resources and creates/attaches ENIs
  2. 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