Feature Overview:
Integrate the Kruize recommendation engine and show container-level recommendations.
For MVP, we will show only the latest recommendation (with 3 sub-recommendations based on 1-day, 7-day and 15-day of data).
We need two views:
- In the project page, where you can see what containers, replicasets, deployments, etc that project contains, with per-container recommendations.
- A new “Recommendations” page, similar to what Advisor and other consoledot services provide, where you can see all the containers which have recommendations, and navigate from there to the specific recommendation and project.
Mockups: https://www.sketch.com/s/c1987a7a-9bf0-432a-a31f-ff05976ffec7
MOSCOW:
[x] Must: show container based recommendations for CPU and RAM, coming from Kruize
[x] Must: generate recommendations on the consoledot side, not on the client side
[x] Must: locate recommendations (cluster, project, replica, deployment, etc)
[x] Must: show at least the last recommendationset (1-day, 7-day, 15-day)
[x] Must: on the project page, show recommendations for the containers running on that project
[x] Must: not show older recommendations where there’s no current recommendation and the cluster is sending data
[x] Must: timestamp recommendations
[x] Must: in the OpenShift > Project details page, show a card indicating there’s optimization opportunities and how many
[x] Must: Recommendations from ROS should obey current RBAC granularity
[-] Should: in the OpenShift page, in the Projects perspective, show an indication that there’s optimization opportunities. Implemented but currently fails sometimes because of different API calls.
[x] Should: introduce a new “Recommendations” page, where all of the current recommendations can be found
[x] Should: navigate from the recommendations page to the project page to see the details of that recommendation
[x] Should: show the current CPU and RAM values (request, limit), like what Kruize shows in https://raw.githubusercontent.com/kruize/kruize/master/docs/grafana-dash.png
[x] Should: show what the delta is between current value and recommended value
[ ] Should: show the current CPU and RAM usage values, as box plots where the user can see the minimum, maximum, average, outliers, etc for that day
[ ] Should: have sortable columns in the OpenShift page (requires same API)
[ ] Should: be able to export the recommendations, both from the Optimizations page and from the OpenShift > Project > Resource Optimization tab
[x] Should: filters should be case-insensitive
[ ] Could: have type ahead in Optimizations page
[ ] Could: have manageable columns in Optimizations page
[ ] Could: in the Overview > Top Projects section, show how many optimization opportunities a project has
[ ] Could: attach a dollar value, in the Cost Explorer, the Recommendations page and the Project > Resource Optimization tab, to the optimization opportunities
[ ] Could: in the OpenShift > Project > Resource Optimization tab, show historical (ie. past) recommendations for up to 90 days, including boxplots, etc
[ ] Could: in the OpenShift > Project > Historical data tab, show the cost comparison if Mr User had applied the given recommendations
[ ] Could: in the Cost Explorer, show an indication that there’s optimization opportunities and how many of them. Export that information, too.
[ ] Could: have differentiated RBAC: see cost information vs see optimization information vs see both
[ ] Could: allow users to set the coefficients Kruize should work with (eg. 20%-33%-50% of acceptable spare capacity from usage vs request vs limit), and navigate recommendations based on that: “what would be the 7-day-based recommendation if I were looking at with with 20% spare capacity? What if 33% spare capacity? What if 40%?”
[ ] Could: allow users to
-
- Acknowledge a recommendation and make it disappear from the current recommendations (ie. “archive” it). When historical recommendations will be available, archived recommendations should be accessible.
- Disable recommendations for a Kubernetes object (container/project/node/cluster/replicaset/…) for some period of time (eg. 1 day, 7 days, 30 days, forever). Show an indication that recommendations are disabled for such object and allow the user to re-enable them. When recommendations are disabled, they may not even be generated, and accessing recommendations that would have been generated while disabled is not required.
Docs:
Yes, requirements TBD
SMEs and Stakeholders:
Name | Role |
pgarciaq@redhat.com | PM |
rhn-support-kgaikwad kholdawa@redhat.com rbadagan@redhat.com | Eng Manager |
skukla@redhat.com nlcwong | UX |