openmcp-project / openmcp-project/backlog

Task: Implement Cluster Provider CAPI

Open
#698 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

kind/task needs/validation sig/extensibility
Dominant language
No language data
Stars
1
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Understand the Task

Description

Based on the existing hackathon POC, the implementation is expected to fully integrate the existing CAPI provider ecosystem to OpenControlPlane.

The cluster provider has to allow platform owners to choose and configure existing CAPI providers to create and access clusters in OpenControlPlane.

Open Points

Scope: I suggest to start with the CoreProvider + a configurable list of infrastructure providers (that allow provisioning fully managed clusters like CAPA, CAPZ and CAPG) with control plane providers (for self managed control planes) being a nice to have but completely optional feature for the initial version.

Any further valuable resources.

Rough implementation sketch:

  • cluster-provider-capi uses the Cluster API Operator that can be deployed with platform service-helm-deployer of OpenControlPlane. The init job will deploy the CAPI Operator and CoreProvider. Additional infrastructure providers will be installed based on the ProviderConfig (similar to Service Provider Crossplane and its provider installation based on user configuration) in context of the regular run (config controller reconcile).
  • cluster-provider-capi -> reconciles OpenControlPlane Cluster resources and creates ClusterAPI Cluster resources.
  • cluster-provider-capi -> reconciles OpenControlPlane AccessRequest resources and references the kubeconfig secret created by the cluster api provider that manages the cluster
  • The platform operator can configure infrastructure provider specific templates that are referenced in the provider config of cluster-provider-capi to define different openmcp cluster profiles (see cluster provider design for cluster purpose, profile and config relationship).
Resulting Controllers
  • config_controller -> reconcile the ProviderConfig of cluster-provider-capi and manages infrastructure providers
  • accessrequest_controller -> reconciles AccessRequests assigned to cluster-provider-capi and provides kubeconfig secrets
  • cluster_controller -> reconciles OpenControlPlane Clusters and creates ClusterAPI Clusters using the OpenControlPlane ClusterProfile to infrastructure provider template mapping provided with the ProviderConfig
What is required to accept the Task as done.

Done Criteria

  • Init job deploys Cluster API Operator + CoreProvider
  • Controllers have been implemented to reconcile Cluster, AccessRequest and ProviderConfig resources
  • Code has been reviewed by other team members
  • Unit Tests and e2e test with a bare metal infrastructure provider created (if feasible)
  • Integration Test Suite updated
  • Provider config is documented
  • Successful demonstration with at least one infrastructure provider in Review

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked hackathon POC, the Cluster API Operator resources, and the listed config_controller, accessrequest_controller, and cluster_controller responsibilities. Trace how ProviderConfig, Cluster, and AccessRequest resources should be reconciled, then use the done criteria to verify the init job, controllers, tests, documentation, and provider demonstration.

Written by the indexing model from the issue text.

Assessment

Domain
infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.