Skip to content

Commit

Permalink
Add images
Browse files Browse the repository at this point in the history
  • Loading branch information
Warren Fernandes committed Oct 23, 2020
1 parent 6be0e3b commit 469e342
Show file tree
Hide file tree
Showing 5 changed files with 116 additions and 2 deletions.
10 changes: 8 additions & 2 deletions docs/proposals/20201020-management-cluster-operator.md
Original file line number Diff line number Diff line change
Expand Up @@ -622,15 +622,21 @@ Please note that:
configuration file; this should be changed in order to use in cluster
provider configurations.

**TODO: INSERT DIAGRAM OF UPGRADE PROVIDER WITHOUT CHANGING CONTRACT VERSION**
![Figure 1](./images/management-cluster-operator/fig1.png "Figure for
upgrading provider without changing contract")
<div align="center">Upgrading providers without changing contract</div>
<br/>

##### Upgrades providers and changing contract

If the new version of the provider does abide by a new version of the Cluster
API contract, it is required to ensure all the other providers in the
management cluster should get the new version too.

**TODO: INSERT DIAGRAM OF UPGRADE PROVIDER WITH CHANGING CONTRACT VERSION**
![Figure 2](./images/management-cluster-operator/fig2.png "Figure for
upgrading provider and changing contract")
<div align="center">Upgrading providers and changing contract</div>
<br/>

As a first step, it is required to pause all the providers by setting the
`spec.Paused` field to true for each provider; the operator will block any
Expand Down
46 changes: 46 additions & 0 deletions docs/proposals/images/management-cluster-operator/fig1.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
@startuml
title Upgrade Provider without changing contract version
actor User
participant APIServer
participant "Management Cluster\nController" as MgmtClusterController

note over APIServer
Current State:
A core provider exists with version
v0.3.10 abiding by contract v1alpha3
end note
====
User -> APIServer: kubectl apply -f updated-provider.yaml

activate APIServer
APIServer --> MgmtClusterController: upgrade core provider to v0.3.11
activate MgmtClusterController
MgmtClusterController -> MgmtClusterController: Reconcile

MgmtClusterController -> APIServer: Get existing Core provider
APIServer --> MgmtClusterController: Response

note over MgmtClusterController
- Verify if the Core provider exists
- Get the Status.Contract of existing provider
end note

MgmtClusterController -> APIServer: Get metadata from ConfigMap for v0.3.11
APIServer --> MgmtClusterController: Response

note over MgmtClusterController
- Verify that v0.3.11 abides by existing contract
end note

MgmtClusterController -> APIServer: Pause core provider\nto avoid reconciliation

MgmtClusterController -> APIServer: Delete old core provider
MgmtClusterController -> APIServer: Install new core provider


MgmtClusterController -> APIServer: Unpause core provider


deactivate APIServer
deactivate MgmtClusterController
@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 62 additions & 0 deletions docs/proposals/images/management-cluster-operator/fig2.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
@startuml
title Upgrade Provider and change contract version
actor User
participant APIServer
participant "Management Cluster\nController" as Controller

note over APIServer
Current State:
A core provider exists with version
v0.3.10 abiding by contract v1alpha3
end note
====
User -> APIServer: kubectl apply -f updated-provider.yaml

activate APIServer
APIServer --> Controller: upgrade core provider to v0.4.0\nwhich abides by contract v1alpha4
activate Controller
Controller -> Controller: Reconcile

Controller -> APIServer: Get existing Core provider
APIServer --> Controller: Response

note over Controller
- Verify if the Core provider exists
- Get the Status.Contract of existing provider
end note

Controller -> APIServer: Get metadata from ConfigMap for v0.4.0
APIServer --> Controller: Response

note over Controller
Identify that we are upgrading
the contract of the providers.
end note

Controller -> APIServer: Get all providers
APIServer --> Controller: Response

note over Controller
For each existing provider,
fetch version that abides by new contract.
If there is a provider that doesn't have a
version that abides by new contract,
then set condition, notify user of error?
Else continue...
end note

Controller -> APIServer: Pause all providers\nto avoid reconciliation

Controller -> APIServer: Delete each provider
Controller -> APIServer: Install new provider

note over Controller
Confirm all health checks,
providers are running.
end note

Controller -> APIServer: Unpause all providers

deactivate APIServer
deactivate Controller
@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 469e342

Please sign in to comment.