cluster-api-provider-proxmox
cluster-api-provider-proxmox copied to clipboard
Support externally managed Kubernetes Control Planes
Describe the solution you'd like
Cluster API supports referencing a third-party Control Plane Provider, such as Kamaji.
The Control Plane provider will be responsible for provisioning a Control Plane backed by a Kubernetes API Server which will be used by the infrastructure cluster with the controlPlaneEndpoint
contract.
The current version of CAPMOX doesn't consider this, requiring to know the Control Plane endpoint in advance.
https://github.com/ionos-cloud/cluster-api-provider-proxmox/blob/0033e2954e5fc70029fe64fae1daf641a24dcd2b/internal/webhook/proxmoxcluster_webhook.go#L99-L108
Kamaji has successfully integrated with other infrastructure providers by relying on externally managed Control Planes: this approach has been taken into consideration on other CAPI infrastructure providers we worked with.
Anything else you would like to add:
To avoid breaking the current UX, it could be useful to have a knob to skip the ControlPlane endpoint address for the given ProxmoxCluster
.
Once the Control Plane provider has provisioned the Kubernetes API Server address, it can patch the infrastructure cluster to continue the required reconciliation, e.g.: https://github.com/clastix/cluster-api-control-plane-provider-kamaji/blob/75b0578114b236f1741d4b79b60eb39b23dfcbeb/controllers/kamajicontrolplane_controller_cluster_patch.go#L20-L52
I'm open to provide a PR to address this feature request.
Environment:
- Cluster-api-provider-proxmox version: N.R.
- Kubernetes version: (use
kubectl version
): N.R. - OS (e.g. from
/etc/os-release
): N.R.