Skip to main content
Platform-provided resource. Datum operates this resource; you typically reference or read it rather than create it. See Platform resources.
API resource reference for IPPool. See Platform resources for related platform-provided resources. An IPClaim allocates addresses from a pool. To read or inspect, see Reading resources.
This resource is part of the v1alpha1 API and is subject to change. Fields and behavior may change in future releases.

Identity

Groupipam.miloapis.com
Versionv1alpha1
KindIPPool
ScopePlatform

Overview

An IPPool is an allocatable address space that IP address management (IPAM) draws from. A root pool declares its address range directly with a CIDR, while a child pool carves a smaller sub-prefix out of a parent pool by referencing it. Use an IPPool to define and hierarchically subdivide the address space that networking resources allocate addresses from, and read its status to track remaining headroom and utilization.

Spec fields

FieldTypeRequiredDescription
spec.cidrstringNoThe address range for a root pool, in CIDR notation (for example, 10.0.0.0/16). Root pools declare a CIDR directly.
spec.ipFamilystringNoThe address family of the pool (for example, IPv4 or IPv6).
spec.prefixLengthintegerNoThe prefix length to carve when this pool is derived from a parent pool.
spec.parentPoolRefObjectNoReferences the parent IPPool (in the same scope) that a child pool carves its sub-prefix from.
spec.parentPoolRef.namestringYes*Name of the referenced parent pool. Required when parentPoolRef is set.
spec.visibilitystringNoControls the visibility of the pool.
spec.allocationObjectNoConfigures sub-allocation behavior for the pool.
spec.allocation.strategystringNoThe strategy used when allocating sub-prefixes from this pool.
spec.allocation.minPrefixLengthintegerNoThe smallest prefix length (largest block) that may be allocated from this pool.
spec.allocation.maxPrefixLengthintegerNoThe largest prefix length (smallest block) that may be allocated from this pool.

Status fields (read-only)

FieldTypeDescription
status.phasestringThe current lifecycle phase of the pool.
status.conditions[]ObjectTracks state such as readiness for the pool.
status.allocatedCIDRstringThe CIDR carved for this pool. For child pools this is the sub-prefix allocated from the parent.
status.ipFamilystringThe effective address family of the pool: taken from spec.ipFamily on root pools and derived from status.allocatedCIDR on child pools.
status.capacityObjectThe address-count view of the pool. Counts are exact for IPv4; for address spaces larger than an int64 (wide IPv6 prefixes) total saturates to the maximum int64 and allocated/available are clamped to non-negative values.
status.capacity.totalintegerTotal number of addresses in the pool.
status.capacity.allocatedintegerNumber of addresses currently allocated.
status.capacity.availableintegerNumber of addresses currently available.
status.utilizationPercentintegerThe allocated share of the pool’s address space, 0–100, computed with arbitrary-precision arithmetic so it is accurate for both IPv4 and IPv6.
status.largestFreePrefixintegerThe prefix length of the largest free aligned block currently available (for example, 45 for a free /45). Zero when the pool is exhausted or its capacity is not yet computed. This is the family-agnostic signal for remaining headroom.

Usage

apiVersion: ipam.miloapis.com/v1alpha1
kind: IPPool
metadata:
  name: primary-ipv4
spec:
  cidr: 10.0.0.0/16
  ipFamily: IPv4
datumctl apply -f ippool.yaml
datumctl get ippools
datumctl describe ippool primary-ipv4
Run datumctl explain ippools --recursive to see the full, live field tree for this resource.
Last modified on July 2, 2026