From 61a0ed76a7bf65694f264c70f39c5c00435d630a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Ojosnegros=20Manch=C3=B3n?= Date: Mon, 19 Sep 2022 10:21:36 +0200 Subject: [PATCH] Use openshif enhancement format --- docs/enhancements/hypershift-adaptation.md | 163 +++++++++++++++++---- 1 file changed, 133 insertions(+), 30 deletions(-) diff --git a/docs/enhancements/hypershift-adaptation.md b/docs/enhancements/hypershift-adaptation.md index 3cdb88999..97d18279b 100644 --- a/docs/enhancements/hypershift-adaptation.md +++ b/docs/enhancements/hypershift-adaptation.md @@ -1,20 +1,59 @@ -# Proposal: Performance Profile Controller Adaptation to Hypershift +--- +title: performanceprofilecontroller-node-tuning -## Additional information +authors: +- @jlojosnegros -### Hypershift docs +reviewers: +- @dagrayvid -Documentation worth reading to get familiar with Hypershift. +approvers: -- High level approach : -- Main concepts and actors: -- Architecture: +api-approvers: +- None -Additional documentation about Hypershift. +tracking-link: +- https://issues.redhat.com/browse/PSAP-742 + +see-also: + - "/enhancements/hypershift/node-tuning.md" -- [Node lifecycle and the changes in Machine configuration handling due to Hypershift](https://github.com/openshift/enhancements/blob/master/enhancements/hypershift/node-lifecycle.md) +creation-date: 2022-09-19 +last-updated: 2022-09-19 +--- + +# Performance Profile Controller Adaptation to Hypershift + +## Summary + +This enhancement describes how the [Performance Profile Controller](https://github.com/openshift/cluster-node-tuning-operator/blob/master/docs/performanceprofile/performance_controller.md), previously known as Performance add-on operator, +will run in Hypershift's managed control plane. + +This is part of Phase-3 for Node Tunning Operator enablement and so it depends on the two previous phases. + +## Motivation + +See the HyperShift [project goals](https://hypershift-docs.netlify.app/reference/goals-and-design-invariants/). +These goals should not come at the cost of giving up any existing OpenShift features. +In standalone OpenShift Performance Profile Controller, as part of Node Tuning Operator, helps in optimizes OpenShift clusters for applications sensitive to cpu and network latency +by letting the user to create a more comprehensive and unify API from where the controller extract the appropiate parameters, +creates the kubernetes objects and apply them to the worker nodes in the cluster. + +### User Stories + +[See](/enhancements/hypershift/node-tuning.md#user-stories) + +### Goals + +- Handle the PerformanceProfile objects in the hosted control plane namespaces while applying the output manifests to the appropiate worker nodes in the hosted cluster. + +### Non-Goals + +- N/A + +## Proposal -## Context +The Performance Profile Controller, being part of the Node Tuning Operator, will run in the hosted control plane namespace, alongside several other control plane components. Performance Profile Controller optimizes OpenShift clusters for applications sensitive to cpu and network. More info [here](https://github.com/openshift/cluster-node-tuning-operator/blob/master/docs/performanceprofile/performance_controller.md) @@ -29,19 +68,9 @@ More info [here](https://github.com/openshift/cluster-node-tuning-operator/blob/ In a Standalone deployment this CRs are generated by Performance Profile Controller and then reconciled by the appropriate controllers/operators running in the same cluster. In a Hypershift deployment we need to change how these CRs are created. -__Note__: As Performance Profile Controller is part of [Cluster Node Tuning Operator](https://github.com/openshift/cluster-node-tuning-operator) (NTO) the proposal below will reference some of the NTO adaptations to Hypershift. +### Workflow Description -Here are the documents as reference: - -- [Enhancement](https://github.com/openshift/enhancements/pull/1229) -- [NTO Phase one adaptation](https://github.com/openshift/cluster-node-tuning-operator/pull/390) -- [Hypershift changes for NTO adaptation](https://github.com/openshift/hypershift/pull/1651) -- [NTO Phase two adaptation proposal](https://github.com/openshift/hypershift/pull/1729) -- [NTO Hypershift adaptation design document](https://docs.google.com/document/d/1G9uu_EBCu-X8OgEA5L0P1GZMcrASjQJ6qIYAJSS6NbY/edit) - -## Proposal - -### Performance Profile +#### Performance Profile The proposal to handle the Performance Profile (PP) mimics the way NTO handles it `Tuned` API @@ -53,7 +82,7 @@ The proposal to handle the Performance Profile (PP) mimics the way NTO handles i - annotation: `hypershift.openshift.io/nodePool` : `NodePool` API name where it was referenced. - Performance Profile Controller will watch these configmaps and extract the `PerformanceProfile` objects from them to generate its output. -### Tuned +#### Tuned The proposal for this output object is to use the way NTO has already put in place to handle its own `tuned` objects as it is. @@ -63,7 +92,7 @@ The proposal for this output object is to use the way NTO has already put in pla - annotation: `hypershift.openshift.io/nodePool` : `NodePool` API name where the `PeformanceProfile` which generate this `tuned` was referenced. - This will trigger the reconcile operation in NTO for these kind of objects. -### MachineConfig +#### MachineConfig The proposal for this output object is to use the way NTO has already put in place to handle its own `MachineConfig` objects as it is. @@ -73,9 +102,7 @@ The proposal for this output object is to use the way NTO has already put in pla - label: `hypershift.openshift.io/nodePool` : `NodePool` API name where the `PeformanceProfile` which generate this `MachineConfig` was referenced. - This will trigger the reconcile operation in NodePool Controller for these objects. -### MCO KubeletConfig - -__WIP__ +#### MCO KubeletConfig Being this object also handled by MachineConfig Operator (MCO) as `MachineConfig`s the proposal is to handle them in a similar way. @@ -86,8 +113,84 @@ Being this object also handled by MachineConfig Operator (MCO) as `MachineConfig - This will trigger the reconcile operation in NodePool Controller for these objects. - This operation is __NOT__ in place already, so a modification in the NodePool Controller will be needed, but it would be quite similar to the one handling `MachineConfigs` right now. -### RuntimeClass - -__WIP__ +#### RuntimeClass 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. + +### API Extensions + +None. + +This proposal will use the API extensions already proposed by the NTO adaptation [see](/enhancements/hypershift/node-tuning.md#api-extensions) + +### Risks and Mitigations + +N/A. + +### Drawbacks + +N/A. + +### Test Plan + +N/A. + +#### Dev Preview -> Tech Preview + +N/A. + +#### Tech Preview -> GA + +N/A. + +#### Removing a deprecated feature + +N/A. + +### Upgrade / Downgrade Strategy + +### Version Skew Strategy + +N/A. + +### Operational Aspects of API Extensions + +N/A. + +#### Failure Modes + +#### Support Procedures + +## Alternatives + +## Design Details + +## Background + +### Hypershift docs + +Documentation worth reading to get familiar with Hypershift. + +- High level approach : +- Main concepts and actors: +- Architecture: + +Additional documentation about Hypershift. + +- [Node lifecycle and the changes in Machine configuration handling due to Hypershift](https://github.com/openshift/enhancements/blob/master/enhancements/hypershift/node-lifecycle.md) + +### Context + +As Performance Profile Controller is part of [Cluster Node Tuning Operator](https://github.com/openshift/cluster-node-tuning-operator) (NTO) this proposal references some of the NTO adaptations to Hypershift. + +Here are the documents as reference: + +- [Enhancement](https://github.com/openshift/enhancements/pull/1229) +- [NTO Phase one adaptation](https://github.com/openshift/cluster-node-tuning-operator/pull/390) +- [Hypershift changes for NTO adaptation](https://github.com/openshift/hypershift/pull/1651) +- [NTO Phase two adaptation proposal](https://github.com/openshift/hypershift/pull/1729) +- [NTO Hypershift adaptation design document](https://docs.google.com/document/d/1G9uu_EBCu-X8OgEA5L0P1GZMcrASjQJ6qIYAJSS6NbY/edit) + +### Graduation Criteria + +## Implementation History