Skip to content

Commit

Permalink
Use openshif enhancement format
Browse files Browse the repository at this point in the history
  • Loading branch information
jlojosnegros committed Sep 19, 2022
1 parent 02e5bb1 commit 61a0ed7
Showing 1 changed file with 133 additions and 30 deletions.
163 changes: 133 additions & 30 deletions docs/enhancements/hypershift-adaptation.md
Original file line number Diff line number Diff line change
@@ -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 : <https://hypershift-docs.netlify.app/>
- Main concepts and actors: <https://hypershift-docs.netlify.app/reference/concepts-and-personas/>
- Architecture: <https://hypershift-docs.netlify.app/reference/controller-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)
Expand All @@ -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

Expand All @@ -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.

Expand All @@ -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.

Expand All @@ -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.

Expand All @@ -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 : <https://hypershift-docs.netlify.app/>
- Main concepts and actors: <https://hypershift-docs.netlify.app/reference/concepts-and-personas/>
- Architecture: <https://hypershift-docs.netlify.app/reference/controller-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

0 comments on commit 61a0ed7

Please sign in to comment.