Skip to content

Commit

Permalink
Add design for in-place upgrades in EKS-A (#6893)
Browse files Browse the repository at this point in the history
  • Loading branch information
g-gaston authored Nov 16, 2023
1 parent 05f3a36 commit a97e239
Show file tree
Hide file tree
Showing 6 changed files with 283 additions and 0 deletions.
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

0 comments on commit a97e239

Please sign in to comment.