Skip to content

Commit 0140e8d

Browse files
committed
design-proposal: revise public-IP resource proposal per review
Rework the stub in response to review and maintainer steers: - Rename the kinds PublicIP/PublicIPClaim/PublicIPClass -> IPAddress/ IPAddressClaim/IPAddressClass. A class names a pool, and pools are not necessarily public; the resource is the general address. - Drop the "regression, not a wishlist" framing entirely. Cozystack uses kube-ovn only for subnets and VPCs, never its EIP objects, so there is no prior reserve-then-associate capability to preserve. Argue on merits: hold, move, quota, enumerate, bill. - Add a Positioning section: this is not Cozystack-specific and belongs in a standalone, reusable project; Cozystack becomes one consumer. API group is a placeholder (ipam.example.com), deliberately not cozystack.io. - Add Design section 7, worked examples against MetalLB, Cilium LB-IPAM, and a cloud provider, including the "plain LB Service, no annotations" collision case: reserved pools are autoAssign:false (or selector-gated) and disjoint from auto-assign pools, so a plain Service can never draw a reserved address. - Security: specify controller identity by ServiceAccount and an allowlist for GitOps/system principals so admission does not break reconciliation. - Status schema is a list (dual-stack), addressing the scalar-field gap. - Defer multiple platform-owned addresses per workload as out of scope, with a note that the case may not be real (a router/VPN VM's extra addresses live on a tunnel the platform neither owns nor sees). - Add a Naming note on the IPAddress overlap with core (KEP-1880) and Cluster API IPAM. Assisted-By: Claude Opus 4.8 Signed-off-by: Timofei Larkin <lllamnyp@gmail.com>
1 parent e21ca09 commit 0140e8d

1 file changed

Lines changed: 202 additions & 88 deletions

File tree

0 commit comments

Comments
 (0)