sigs.k8s.io/cluster-api@v1.7.1/docs/proposals/images/capi-provider-operator/fig1.plantuml (about) 1 @startuml 2 title Upgrade Provider without changing contract version 3 actor User 4 participant APIServer 5 participant "Management Cluster\nController" as MgmtClusterController 6 7 note over APIServer 8 Current State: 9 A core provider exists with version 10 v0.3.10 abiding by contract v1alpha3 11 end note 12 ==== 13 User -> APIServer: kubectl apply -f updated-provider.yaml 14 15 activate APIServer 16 APIServer --> MgmtClusterController: upgrade core provider to v0.3.11 17 activate MgmtClusterController 18 MgmtClusterController -> MgmtClusterController: Reconcile 19 20 MgmtClusterController -> APIServer: Get existing Core provider 21 APIServer --> MgmtClusterController: Response 22 23 note over MgmtClusterController 24 - Verify if the Core provider exists 25 - Get the Status.Contract of existing provider 26 end note 27 28 MgmtClusterController -> APIServer: Get metadata from ConfigMap for v0.3.11 29 APIServer --> MgmtClusterController: Response 30 31 note over MgmtClusterController 32 - Verify that v0.3.11 abides by existing contract 33 end note 34 35 MgmtClusterController -> APIServer: Pause core provider\nto avoid reconciliation 36 37 MgmtClusterController -> APIServer: Delete old core provider 38 MgmtClusterController -> APIServer: Install new core provider 39 40 41 MgmtClusterController -> APIServer: Unpause core provider 42 43 44 deactivate APIServer 45 deactivate MgmtClusterController 46 @enduml