v0.1.0
IPAM v0.1.0
Initial release of the IPAM service — a standalone, Kubernetes-native IP Address Management service implemented as an aggregated API server backed by PostgreSQL. It manages IP pools, claims, and allocations under ipam.miloapis.com/v1alpha1, with synchronous, conflict-free allocation in the request path.
Highlights
- Aggregated API server serving
IPPool,IPClaim, andIPAllocationinipam.miloapis.com/v1alpha1, backed by PostgreSQL. - Atomic, synchronous allocation — claims return the allocated CIDR in the CREATE response with no polling and no eventual-consistency conflict window, using pool-level
SELECT ... FOR UPDATElocking. - Hierarchical IP pools with parent/child nesting, inherited address family, and per-pool capacity/status reporting (IPv4 and IPv6).
- Pure-Go CIDR allocation library (
internal/allocation/) with zero non-stdlib dependencies, reusable by other services. - PostgreSQL-backed Watch via
LISTEN/NOTIFYchangelog with an xmin-horizon cursor.
Platform integration
- Milo IAM governance — IPAM resources are exposed as protected resources with roles for authorization (#43).
- Milo quota enforcement in the IPAM request path, with service-catalog registration so projects can enable IPAM, gated by quota entitlements (#40, #41, #50).
- Delegated authn/authz to
milo-apiserver(#33). - End-to-end request tracing for any IPAM claim (#46).
milo-ipamCLI plugin for interacting with the service (#35, #36).
Observability & deployment
- Grafana dashboards, alert rules, and runbooks (#14, #20).
- Deployment config, dev overlay, and CI workflow publishing the
ghcr.io/milo-os/ipamcontainer image and a Kustomize OCI bundle (#19).
Notable fixes
- Server-side dry-run honored on
IPClaimcreate and delete (#37). - Project-scoped claims and pool listing now allocate and list correctly, served from Postgres without relying on the watch cache (#45, #57, #59, #60).
- OpenAPI model names generated so server-side apply works (#51).
- Accurate IPv6 pool capacity/family status and correct inherited
ipFamilyfor nested child pools (#56, #63). - Removed unused NATS configuration (#21); downgraded k8s libraries to v0.35.0 to match milo (#64).
Full history: 30 merged PRs from project inception (#9 → #36).