Skip to content

Cluster-api takeover of existing Kubeadm clusters #10820

@AmitSahastra

Description

@AmitSahastra

What would you like to be added (User Story)?

Today, If we want to manage clusters via cluster-api, the only way Is to create a new cluster with clusterctl init. But if I have an existing cluster, there is no way to manage that cluster via cluster-api.

  • As an admin, I would like to have an easy way to migrate my existing cluster to CAPI without cloning each component
  • As an admin, I would like to Take over an already provisioned cluster created using kubeadm
  • As an admin, Would like to Manage control plane, worker scale-up and scale-down operations, upgrade operations and day-2 operations from new infrastructure.

Detailed Description

With the cluster takeover option, we aim to address this use case by introducing a new cluster type or annotation that will differentiate between new cluster launches or take over cluster kind and instead of going with cluster init operation it goes for cluster join operation to put new node and eventually drain the old nodes and migrate all applications and cluster components to the new cluster.

Original discussion for reference: here

  • Enable CAPI to directly join the existing cluster instead of launching a new cluster.
  • Enhance CAPI cluster object to differentiate between new cluster launch and existing cluster takeover.
  • Enable CAPI to read existing cluster PKI certificates based on cluster type.

Anything else you would like to add?

No response

Label(s) to be applied

/kind feature
One or more /area label. See https://github.com/kubernetes-sigs/cluster-api/labels?q=area for the list of labels.

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/featureCategorizes issue or PR as related to a new feature.kind/proposalIssues or PRs related to proposals.lifecycle/rottenDenotes an issue or PR that has aged beyond stale and will be auto-closed.needs-triageIndicates an issue or PR lacks a `triage/foo` label and requires one.priority/backlogHigher priority than priority/awaiting-more-evidence.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions