@startuml title User scales down a KubeadmControlPlane actor User ' -- GROUPS START --- box #lightgreen participant "API Server" end box box #violet participant "KubeadmControlPlane Controller" end box box #lightgreen participant "Workload Cluster API Server" end box ' -- GROUPS END --- User->"API Server":kubectl scale cp/my-control-plane -replicas=1 "API Server"-->>"KubeadmControlPlane Controller": KubeadmControlPlane Updated "KubeadmControlPlane Controller"-> "KubeadmControlPlane Controller":Enqueues KubeadmControlPlane Reconcile "KubeadmControlPlane Controller"-> "KubeadmControlPlane Controller":KubeadmControlPlane Controller Reconcile activate "KubeadmControlPlane Controller" note over "KubeadmControlPlane Controller": - ✅ KubeadmControlPlane.OwnerReferences \ncontains a Cluster "KubeadmControlPlane Controller"->"API Server": Get Cluster "KubeadmControlPlane Controller"<<--"API Server": Response note over "KubeadmControlPlane Controller": - ✅ Cluster.Status.InfrastructureReady is true\n- ✅ KubeadmControlPlane instance is valid "KubeadmControlPlane Controller"->"API Server": Get Machines matching label selector "KubeadmControlPlane Controller"<<--"API Server": Response note over "KubeadmControlPlane Controller": - Process for selecting a Machine to delete is TBD opt #FFFFFFCC KubeadmControlPlane.Spec.Replicas >= 1, all existing Machines "Ready", num Machines > Replicas "KubeadmControlPlane Controller"->"Workload Cluster API Server": Remove etcd Member "KubeadmControlPlane Controller"->"Workload Cluster API Server": Modify kubeadm ConfigMap "KubeadmControlPlane Controller"->"API Server": Delete a Machine end "KubeadmControlPlane Controller"->"API Server": Update KubeadmControlPlane "KubeadmControlPlane Controller"<<--"API Server": Response hide footbox @enduml