Platform-provided resource. Datum operates this resource; you typically reference or read it rather than create it. See Platform resources.
This resource is part of the v1alpha1 API and is subject to change. Fields and behavior may change in future releases.
Identity
| |
|---|
| Group | ipam.miloapis.com |
| Version | v1alpha1 |
| Kind | IPPool |
| Scope | Platform |
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
| Field | Type | Required | Description |
|---|
spec.cidr | string | No | The address range for a root pool, in CIDR notation (for example, 10.0.0.0/16). Root pools declare a CIDR directly. |
spec.ipFamily | string | No | The address family of the pool (for example, IPv4 or IPv6). |
spec.prefixLength | integer | No | The prefix length to carve when this pool is derived from a parent pool. |
spec.parentPoolRef | Object | No | References the parent IPPool (in the same scope) that a child pool carves its sub-prefix from. |
spec.parentPoolRef.name | string | Yes* | Name of the referenced parent pool. Required when parentPoolRef is set. |
spec.visibility | string | No | Controls the visibility of the pool. |
spec.allocation | Object | No | Configures sub-allocation behavior for the pool. |
spec.allocation.strategy | string | No | The strategy used when allocating sub-prefixes from this pool. |
spec.allocation.minPrefixLength | integer | No | The smallest prefix length (largest block) that may be allocated from this pool. |
spec.allocation.maxPrefixLength | integer | No | The largest prefix length (smallest block) that may be allocated from this pool. |
Status fields (read-only)
| Field | Type | Description |
|---|
status.phase | string | The current lifecycle phase of the pool. |
status.conditions | []Object | Tracks state such as readiness for the pool. |
status.allocatedCIDR | string | The CIDR carved for this pool. For child pools this is the sub-prefix allocated from the parent. |
status.ipFamily | string | The effective address family of the pool: taken from spec.ipFamily on root pools and derived from status.allocatedCIDR on child pools. |
status.capacity | Object | The 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.total | integer | Total number of addresses in the pool. |
status.capacity.allocated | integer | Number of addresses currently allocated. |
status.capacity.available | integer | Number of addresses currently available. |
status.utilizationPercent | integer | The 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.largestFreePrefix | integer | The 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.