Skip to content

Commit

Permalink
Add workflow diagram
Browse files Browse the repository at this point in the history
  • Loading branch information
jlojosnegros committed Jan 10, 2023
1 parent 77a00ec commit 42276c7
Showing 1 changed file with 85 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ The proposal for this output object is to use the way NTO has already put in pla
- name: will be function of the `PeformanceProfile` name
- label: `hypershift.openshift.io/tuned-config` : `true`
- label: `hypershift.openshift.io/nodePool` : `NodePool` API name where the `PeformanceProfile` which generate this `tuned` was referenced.
- label: "hypershift.openshift.io/performanceProfileName" : `PerformanceProfile.name`,
- label: `hypershift.openshift.io/performanceProfileName` : `PerformanceProfile.name`,
- annotation: `hypershift.openshift.io/nodePool` : `NodePool` API namespaced name where the `PeformanceProfile` which generate this `tuned` was referenced.
- data: `Tuned` serialized object in the "tuned" key
- This will trigger the reconcile operation in NTO for these kind of objects.
Expand All @@ -122,7 +122,7 @@ The proposal for this output object is to use the way NTO has already put in pla
- name: will be function of the `PeformanceProfile` name
- label: `hypershift.openshift.io/nto-generated-machine-config` : `true`
- label: `hypershift.openshift.io/nodePool` : `NodePool` API name where the `PeformanceProfile` which generate this `MachineConfig` was referenced.
- label: "hypershift.openshift.io/performanceProfileName" : `PerformanceProfile.name`,
- label: `hypershift.openshift.io/performanceProfileName` : `PerformanceProfile.name`,
- annotation: `hypershift.openshift.io/nodePool` : `NodePool` API namespaced name where the `PeformanceProfile` which generate this `MachineConfig` was referenced.
- data: `MachineConfig` serialized object in the "config" key
- This will trigger the reconcile operation in NodePool Controller for these objects.
Expand All @@ -136,7 +136,7 @@ Being this object also handled by MachineConfig Operator (MCO) as `MachineConfig
- name: will be function of the `PeformanceProfile` name
- label: `hypershift.openshift.io/nto-generated-kubelet-config` : `true`
- label: `hypershift.openshift.io/nodePool` : `NodePool` API name where the `PeformanceProfile` which generate this `MachineConfig` was referenced.
- label: "hypershift.openshift.io/performanceProfileName" : `PerformanceProfile.name`,
- label: `hypershift.openshift.io/performanceProfileName` : `PerformanceProfile.name`,
- annotation: `hypershift.openshift.io/nodePool` : `NodePool` API namespaced name where the `PeformanceProfile` which generate this `MachineConfig` was referenced.
- data: `KubeletConfig` serialized object in the "config" key
- This will trigger the reconcile operation in NodePool Controller for these objects.
Expand All @@ -145,7 +145,88 @@ Being this object also handled by MachineConfig Operator (MCO) as `MachineConfig

The proposal is to handle these objects like NTO handles its `tuned` configurations once they are in the `hosted-control-plane-namespace`, that is synchronize them directly with the ones in the hosted cluster using the proper KubeConfig.

#### Diagram
### Workflow Diagram

```mermaid
graph LR;
StartHere((Start Here))
StartHere--> ClusterServiceCustomer
subgraph management-cluster
ClusterServiceCustomer[Cluster Service Customer]
PP_ConfigMap(ConfigMap<br> name:PPConfigMap<br> tuned: PerformanceProfile)
NodePool_A(NodePool<br> spec.tunedConfig: PPConfigMap)
subgraph hypershift
NodePoolController[NodePool Controller]
end
subgraph user-clusters
ClusterServiceCustomer ==>|0:Creates|PP_ConfigMap
ClusterServiceCustomer ==>|1:References|NodePool_A
PP_ConfigMap-. 1:is referenced by .->NodePool_A
end
subgraph hosted-control-plane-namespace
NodePoolController ==>|2:Propagate|PP_ConfigMap(ConfigMap<br> name:PPConfigMap<br> tuned: PerformanceProfile)
NodePoolController ==>|3:Add label|PP_ConfigMap_01(ConfigMap<br> name:PPConfigMap<br> tuned: PerformanceProfile<br> label:hypershift.openshift.io/performanceprofile-config=true)
PP_ConfigMap-. 2:is moved to .->PP_ConfigMap_01
PPController[PerformanceProfile controller]==>|4:Watch|PP_ConfigMap_01
PPController==>|5:Extract|PP_01(PerformanceProfile)
PPController-->|6:Creates|MC_01(MachineConfig)
PPController-->|6:Creates|KC_01(KubeletConfig)
PPController-->|6:Creates|Tuned_01(Tuned)
PPController-->|6:Creates|RTC_01(RuntimeClass)
PP_01-. generates .->MC_01
PP_01-. generates .->KC_01
PP_01-. generates .->Tuned_01
PP_01-. generates .->RTC_01
%%Note>note: addinfo here]-.-PP_01
PPController-->|7:Creates and Embed|Tuned_CM(ConfigMap<br> name:func_of_PerformanceProfile_name<br> label:`hypershift.openshift.io/tuned-config` : `true`<br> label: `hypershift.openshift.io/performanceProfileName` : `PerformanceProfile.name`<br> label: `hypershift.openshift.io/nodePool` : `NodePool` API name<br> tuned: < serialized tuned object >)
Tuned_01-. embedded into .-Tuned_CM
PPController-->|7:Creates and Embed|MC_CM(ConfigMap<br> name:func_of_PerformanceProfile_name<br> label:`hypershift.openshift.io/nto-generated-machine-config` : `true`<br> label: `hypershift.openshift.io/performanceProfileName` : `PerformanceProfile.name`<br> label: `hypershift.openshift.io/nodePool` : `NodePool` API name<br> data.config: < serialized MachineConfig object >)
MC_01-. embedded into .-MC_CM
PPController-->|7:Creates and Embed|KC_CM(ConfigMap<br> name:func_of_PerformanceProfile_name<br> label:`hypershift.openshift.io/nto-generated-kubelet-config` : `true` : `true`<br> label: `hypershift.openshift.io/performanceProfileName` : `PerformanceProfile.name`<br> label: `hypershift.openshift.io/nodePool` : `NodePool` API name<br> data.config: < serialized KubeletConfig object >)
KC_01-. embedded into .-KC_CM
NTO[Node Tuning Operator]-->|8:Reconcile|Tuned_CM
NodePoolController -->|8:Reconcile|MC_CM
NodePoolController -->|8:Reconcile|KC_CM
end
end
subgraph guest-cluster
PPController-->|7:Writes|RTC_02(RunttimeClass)
RTC_01-. 7:is written .-RTC_02
end
classDef actor fill:#c96,stroke:#333,stroke-width:6px
classDef object_prim fill:#9c6,stroke:#333,stroke-width:4px
classDef object_sec fill:#999,stroke:#333,stroke-width:2px
classDef starthere fill:#f55,stroke:#333,stroke-width:2px
class PPController,NodePoolController,ClusterServiceCustomer,NTO actor
class PP_01,RTC_01,RTC_02,MC_01,KC_01,Tuned_01,NodePool_A object_prim
class PP_ConfigMap,PP_ConfigMap_01,Tuned_CM,KC_CM,MC_CM object_sec
class StartHere starthere
subgraph leyend
AcTor[Process or external actor]
PrimObj(Primary Object: objects with the actual information needed)
SecObj(Secondary Object: those used to wrap other objects or just a way to adapt something to hypershift)
end
class AcTor actor
class PrimObj object_prim
class SecObj object_sec
```

#### Static Diagram
This diagram shows all the objects handle by PerformanceProfile and the Configmaps used to embed those objects with all the labels and annotations used to handle the relationships between them.

```mermaid
Expand Down

0 comments on commit 42276c7

Please sign in to comment.