sigs.k8s.io/cluster-api@v1.7.1/docs/proposals/images/cluster-spec-crds/figure1.plantuml (about) 1 @startuml 2 title Figure 1. Cluster Provisioning process 3 actor User 4 5 ' -- GROUPS START --- 6 7 box #LightGreen 8 participant "API Server" 9 end box 10 11 box #LightBlue 12 participant "Cluster Controller" 13 end box 14 15 box #LightGrey 16 participant "Infrastructure Controller" 17 end box 18 19 ' -- GROUPS END --- 20 21 User -> "API Server" : Create Cluster Infrastructure 22 "API Server" -->> "Infrastructure Controller": New Provider Infrastructure 23 24 opt #FFFFFFCC IF Infrastructure has no owner ref 25 "Infrastructure Controller"->"Infrastructure Controller": Do Nothing 26 end 27 28 User -> "API Server": Create Cluster 29 "API Server" -->> "Cluster Controller": New Cluster 30 "Cluster Controller" -> "API Server": Get Infrastructure 31 opt #FFFFFFCC Required Only if Infrastructure not seen before 32 "Cluster Controller" -> "Cluster Controller": Add Watcher for Cluster.InfrastructureRef.Kind objects 33 end 34 35 opt #FFFFFFCC Required Only if Infrastructure has no owner 36 "Cluster Controller" -> "Cluster Controller": Set Infrastructure's owner to Cluster 37 "Cluster Controller" -> "API Server": Update Infrastructure 38 end 39 40 "API Server" -->> "Infrastructure Controller": Infrastructure update 41 opt #FFFFFFCC Required only if Infrastructure has owner ref 42 "Infrastructure Controller" -> "API Server": Get Cluster 43 "Infrastructure Controller" -> "Infrastructure Controller": Provision infrastructure 44 "Infrastructure Controller" -> "Infrastructure Controller": Set Infrastructure.Status.APIEndpoint 45 "Infrastructure Controller" -> "Infrastructure Controller": Set Infrastructure.Status.Ready=true 46 "Infrastructure Controller" -> "API Server": Update Infrastructure 47 end 48 49 "API Server" -->> "Cluster Controller": Infrastructure Update 50 opt #FFFFFFCC Only required if Infrastructure.Status.Ready is true 51 "Cluster Controller" -> "API Server": Get Cluster 52 "Cluster Controller" -> "Cluster Controller": Set Cluster.Status.APIEndpoint = Infrastructure.Status.APIEndpoint 53 "Cluster Controller" -> "Cluster Controller": Set Cluster.Status.InfrastructureReady true 54 "Cluster Controller" -> "API Server": Update Cluster 55 end 56 57 hide footbox 58 @enduml