Networking
IMP manages VM networking through ImpNetwork objects. The data plane runs on each node via the agent.
Sections
Default Behavior
Without explicit IPAM configuration, IMP allocates VM IPs from ImpNetwork.spec.subnet using its internal allocator.
CNI Integration
Cilium is the first-class CNI path. IMP detects Cilium presence at agent startup and enables Cilium-native IPAM when configured.
Non-Cilium environments use the internal IPAM provider — set spec.ipam.provider: internal or omit the ipam block.
Network Groups
VMs in the same ImpNetwork can be placed into named groups via spec.networkGroup. The controller automatically carves a dedicated subnet for each group from spec.subnet.
apiVersion: imp.dev/v1alpha1
kind: ImpNetwork
metadata:
name: vm-net-a
namespace: default
spec:
subnet: 10.44.0.0/24
groups:
- name: workers
expectedSize: 14 # → /28 (14 usable IPs)
- name: controllers
expectedSize: 4 # → /29 (6 usable IPs)Groups are sorted alphabetically and subnets are carved consecutively:
| Group | CIDR |
|---|---|
| controllers | 10.44.0.0/29 |
| workers | 10.44.0.16/28 |
Subnet assignment is stored in status.groupCIDRs and is stable (same group always gets the same CIDR as long as spec.groups is unchanged). VMs not in any group receive IPs from the full spec.subnet.
To place a VM in a group:
apiVersion: imp.dev/v1alpha1
kind: ImpVM
metadata:
name: worker-1
spec:
networkRef:
name: vm-net-a
networkGroup: workers