Skip to content

docs(design-proposals): add Proxmox tenant networks - #104

Open
Marian Koreniuk (themoriarti) wants to merge 3 commits into
cozystack:mainfrom
themoriarti:design/proxmox-tenant-networks
Open

Marian Koreniuk (themoriarti) wants to merge 3 commits into
cozystack:mainfrom
themoriarti:design/proxmox-tenant-networks

Conversation

@themoriarti

Copy link
Copy Markdown

Design proposal for Proxmox tenant networks: the platform, not tenant values, owns the bridge, the VLAN and the IP pool of the VMs behind a Proxmox-backed tenant cluster, and a ValidatingAdmissionPolicy with the zone as its parameter keeps capmox machines on their namespace's own networks.

This is the first piece split out of #93 after its review, and it is smaller than what the review asked for: there is no controller. The admin writes the networks into a cluster-scoped ProxmoxNetworkZone, the package chart renders it and one namespaced InClusterIPPool per network, and the kubernetes and kubernetes-nodes charts read the zone with lookup. No Kube-OVN objects and no OVN writes. Routing between tenant VLANs stays with the operator's router, as on main today. #93 becomes the follow-up for VPC-backed subnets, with dynamic allocation and the drop between VPCs inside OVN.

It sits on the provisioning layer already in main (cozystack/cozystack#4087, cozystack/cozystack#4483, cozystack/cozystack#4088, cozystack/cozystack#4089) and does not decide cozystack/cozystack#3481. The implementation will be a separate, small pull request in cozystack/cozystack; cozystack/cozystack#4813 stays a draft for reference.

Before review

  • If this revises a merged design proposal: it adds a decision record under that proposal's decisions/ directory, or says below why none is needed.

Not a revision: this is a new proposal.

DCO

  • Commits are signed off (git commit --signoff).

Assisted-by: LLM

On a Proxmox-backed tenant cluster the tenant still picks the bridge,
the VLAN and the address range of its worker VMs, so nothing keeps one
tenant off another tenant's VLAN. The proposal lets the platform own
them without a controller: an admin-written zone lists the networks of
each namespace, the package chart renders one InClusterIPPool per
network, and a ValidatingAdmissionPolicy with the zone as its parameter
keeps capmox machine NICs and the ProxmoxCluster pool on the namespace's
own networks. It adds no Kube-OVN objects and no OVN writes. It is the
smaller first piece split out of cozystack#93, which becomes
the follow-up for VPC-backed subnets.

Assisted-by: LLM
Signed-off-by: Marian Koreniuk <moriarti@cp.if.ua>
@coderabbitai

coderabbitai Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 01f2358a-76de-4b9a-8cee-012007f86547
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

…space, name) unique

The proposal listed (namespace, name) among the CEL validations of the
zone CRD. The CRD keeps it unique through the list-map key of networks
instead, so the apiserver does it without a rule whose cost grows with
the square of the table; the text now says which mechanism it is.

Assisted-by: LLM
Signed-off-by: Marian Koreniuk <moriarti@cp.if.ua>
@themoriarti

Copy link
Copy Markdown
Author

The implementation is open as a draft: cozystack/cozystack#5047. It is the eight commits this proposal describes, one per area, on top of main, with no controller.

One correction to the text here, pushed to this branch: (namespace, name) is not a CEL rule. It is the list-map key of networks (x-kubernetes-list-type: map), so the apiserver keeps it unique on its own and the CRD carries no rule whose cost grows with the square of the table. The other validations are CEL, as written.

@myasnikovdaniil

Copy link
Copy Markdown
Contributor

Hi! We removed Status and Date from proposal headers in #111. Could you remove these fields when you next update your proposal? Decision records keep their metadata.

Sorry for the extra work, I wanted to mention this now so it doesn't come up late in review.

The proposal conventions no longer keep these fields; status and dates
come from the introducing PR's history.

Assisted-by: LLM
Signed-off-by: Marian Koreniuk <moriarti@cp.if.ua>
@themoriarti

Copy link
Copy Markdown
Author

Done in ae9113b, thanks for the heads-up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants