Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

📖 Add CAPI Provider Operator CAEP #3833

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,075 changes: 1,075 additions & 0 deletions docs/proposals/20201020-capi-provider-operator.md

Large diffs are not rendered by default.

46 changes: 46 additions & 0 deletions docs/proposals/images/capi-provider-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/capi-provider-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.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.