Skip to content

v0.1.0

Choose a tag to compare

@scotwells scotwells released this 30 Jun 21:53
ebe2404

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, and IPAllocation in ipam.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 UPDATE locking.
  • 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/NOTIFY changelog 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-ipam CLI 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/ipam container image and a Kustomize OCI bundle (#19).

Notable fixes

  • Server-side dry-run honored on IPClaim create 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 ipFamily for 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).