Prerequisites
- Kubernetes cluster running on AWS (e.g., EKS)
- kubectl configured to access your cluster
- Helm 3.0+ (for Helm installation)
- IAM permissions for EC2 ENI operations
Installation Steps
Step 1: Install with Helm (Recommended)
The easiest way to install the AWS Multi-ENI Controller is using Helm:
# Install the latest version helm install aws-multi-eni oci://ghcr.io/johnlam90/charts/aws-multi-eni-controller --version 1.3.0 \ --namespace eni-controller-system --create-namespace # With custom values helm install aws-multi-eni oci://ghcr.io/johnlam90/charts/aws-multi-eni-controller --version 1.3.0 \ --namespace eni-controller-system --create-namespace \ --set awsRegion=us-east-1 \ --set nodeSelector.ng=multi-eni
--namespace eni-controller-system
flag and the --create-namespace
flag when installing the chart to ensure all resources are created in the correct namespace.
Step 2: Create a NodeENI Resource
Create a YAML file named nodeeni.yaml
with the following content:
apiVersion: networking.k8s.aws/v1alpha1 kind: NodeENI metadata: name: multus-eni-config spec: nodeSelector: ng: multi-eni subnetID: subnet-0f59b4f14737be9ad # Use your subnet ID securityGroupIDs: - sg-05da196f3314d4af8 # Use your security group ID deviceIndex: 2 mtu: 9001 # Optional: Set MTU for jumbo frames deleteOnTermination: true description: "Multus ENI for secondary network interfaces"
Apply the NodeENI resource to your cluster:
kubectl apply -f nodeeni.yaml
Step 3: Label Your Nodes
Label the nodes where you want to attach ENIs:
kubectl label node your-node-name ng=multi-eni
Replace your-node-name
with the actual name of your node. You can get a list of your nodes with:
kubectl get nodes
Step 4: Verify ENI Creation
Check the status of your NodeENI resource:
kubectl get nodeeni multus-eni-config -o yaml
You should see the ENI attachments in the status section of the output. You can also verify in the AWS Console that the ENIs have been created and attached to your EC2 instances.
Next Steps
Now that you have the AWS Multi-ENI Controller up and running, you can:
- Integrate with Multus CNI to use the secondary interfaces for your pods
- Create additional NodeENI resources for different subnets or node groups
- Configure custom MTU settings for your ENIs
- Explore advanced configuration options
For more detailed information, check out the Documentation and Architecture pages.