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 design for in-place upgrades in EKS-A #6893

Merged
merged 1 commit into from
Nov 16, 2023
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
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.
42 changes: 42 additions & 0 deletions designs/images/in-place-controller-manager-components.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
@startuml in-place-controller-manager-components
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Component.puml

title Component diagram for In-place upgrades in EKS-A controller manager

Container(api, "Kubernetes API server", "Go", "Provides read/write access to the kubernetes API objects stored in the etcd server and allows to subscribe to events when they change")
Person(user, "EKS-A user", "Manages EKS-A clusters")
Container_Ext(workloadKubeApiServer, "Workload Cluster Kubernetes API server", "Go", "Provides read/write access to the kubernetes API objects stored in the etcd server")

Container_Boundary(clusterController, "EKS-A Controller Manager") {
Component(clusterReconciler, "Cluster Reconciler", "Go, controller-runtime", "Validates input and orchestrates Cluster reconcile requests")
Component(cpUpgrade, "ControlPlaneKubeadmUpgrade Reconciler", "Go, controller-runtime", "Reconciles requests to upgrade CP in-place")
Component(workerUpgrade, "WorkersKubeadmUpgrade Reconciler", "Go, controller-runtime", "Reconciles requests to upgrade a group of workers in-place")
Component(nodeUpgrade, "NodeUpgrade Reconciler", "Go, controller-runtime", "Reconciles requests to upgrade a node in-place")
Component(cpHook, "CP External upgrade Hook", "CAPI Runtime Hook, Go", "Implements CAPI CP External upgrade Runtime Extension")
Component(mdHook, "MachineDeployment External upgrade Hook", "CAPI Runtime Hook, Go", "Implements CAPI Machine Deployment upgrade Runtime Extension")

Rel(clusterReconciler, api, "Polls EKS-A Changes and updates CAPI objects", "HTTPS")

Rel(cpUpgrade, api, "Polls ControlPlaneKubeadmUpgrade changes and creates NodeUpgrades", "HTTPS")
Rel(workerUpgrade, api, "Polls WorkersKubeadmUpgrade changes and creates NodeUpgrades", "HTTPS")
Rel(nodeUpgrade, api, "Polls NodeUpgrade changes", "HTTPS")

Rel(cpHook, api, "Creates ControlPlaneKubeadmUpgrade")
Rel(mdHook, api, "Creates WorkersKubeadmUpgrade")
}

Container(kcp, "KCP controller", "Go, controller-runtime", "Reoncile Control Planes")
Container(md, "Machine Deployment controller", "Go, controller-runtime", "Reoncile Control Planes")

Rel(user, api, "Writes EKS-A API objects", "JSON/HTTPS")
Rel(kcp, api, "Polls KCP Changes", "HTTPS")
Rel(md, api, "Polls MD Changes", "HTTPS")

Rel(kcp, cpHook, "Calls", "HTTPS")
Rel(md, mdHook, "Calls", "HTTPS")

Rel(nodeUpgrade, workloadKubeApiServer, "Schedules upgrader pods", "HTTPS")


SHOW_LEGEND()
@enduml
Binary file added designs/images/in-place-eks-a-container.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 27 additions & 0 deletions designs/images/in-place-eks-a-container.puml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
@startuml in-place-eks-a-container
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml

title Container diagram for EKS-A In-place upgrades

Person(user, "User", "An EKS-A cluster admin")

System_Boundary(eksa, "EKS-A") {
Container(manager, "EKS-A controller manager", "Go, controller-runtime", "Reconciles EKS-A Cluster, CPUpgrade, MachineDeploymentUpgrade and NodeUpgrade")
Container(kcp, "KCP Controller", "Go, controller-runtime", "Reconciles Control planes")
Container(md, "MachineDeployment Controller", "Go, controller-runtime", "Reconciles MachineDeployments")
}

Container(api, "Kube API server", "Go", "Provides read/write access to the kubernetes API objects stored in the etcd server and allows to subscribe to events when they change")
Container_Ext(workloadKubeApiServer, "Workload Cluster Kube API server", "Go", "Provides read/write access to the kubernetes API objects stored in the etcd server")

Rel(manager, api, "Polls EKS-A Changes and updates CAPI objects", "HTTPS")
Rel(kcp, api, "Polls KCP Changes", "HTTPS")
Rel(kcp, api, "Polls MD Changes", "HTTPS")

Rel(user, api, "Updates EKS-A objects", "HTTPS")
Rel(kcp, manager, "Calls external strategy webhook", "HTTPS")
Rel(md, manager, "Calls external strategy webhook", "HTTPS")
Rel(manager, workloadKubeApiServer, "Schedules upgrader pods", "HTTPS")

SHOW_LEGEND()
@enduml
Loading