Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ability to use OCI Helm Chart Registry in Apps&Marketplace #9815

Closed
10 of 12 tasks
rohitsakala opened this issue Sep 29, 2023 · 17 comments · Fixed by #10907
Closed
10 of 12 tasks

Ability to use OCI Helm Chart Registry in Apps&Marketplace #9815

rohitsakala opened this issue Sep 29, 2023 · 17 comments · Fixed by #10907
Assignees
Labels
JIRA kind/enhancement QA/dev-automation Issues that engineers have written automation around so QA doesn't have look at this size/5 Size Estimate 5 teams/mapps
Milestone

Comments

@rohitsakala
Copy link
Member

rohitsakala commented Sep 29, 2023

Internal Reference: SURE-7573

Is your feature request related to a problem? Please describe.
Helm supports OCI-based helm charts since 3.8.0 and Rancher doesn't through Apps & Markatplace. Backend is being done for it through this RFC https://confluence.suse.com/display/RMI/Support+OCI+Registry+based+Helm+Charts

Describe the solution you'd like
RFC https://confluence.suse.com/display/RMI/Support+OCI+Registry+based+Helm+Charts

UI Specific

  • https://confluence.suse.com/display/RMI/Support+OCI+Registry+based+Helm+Charts
  • The add cluster repo page should contain a new target named oci url in addition to http and git and only show basic auth as oci only supports basic auth right now.
  • Add experimental banner for OCI as this feature is experimental
  • There is a way to not show Created date of index in the Individual Chart page if the Created date is zero
  • There is a way to specify plainHTTP checkbox if OCI target is selected.
  • There is a way to specify that users are recommended to add only OCI URLs that contain only helm charts. For example oci://dp.apps.rancher.io/charts or oci://registry-1.docker.io/rohitsakala/testingchart.

OCI URL's must contain ONLY helm charts. For example oci://test.rancher.io/charts or oci://test.rancher.io/charts/mychart. The list of charts available from the repository are updated every 6 hours.

  • In the individual Charts page, the UI must fetch the Application Version, Home, Maintainers values from the response of the link=info API call.
  • There is a way to specify the ExponentialBackOff values in the Create ClusterRepo page from the user to fill in this struct
type ExponentialBackOffValues struct {
	MinWait    int  `json:"minWait,omitempty"`
	MaxWait    int `json:"maxWait,omitempty"`
	MaxRetries int     `json:"maxRetries,omitempty"`
}

which is in the spec of the clusterRepo. These are optional values and the default values set in the backend from 1s,5s,5
respectively. The minimum is 1 second

  • When the individual chart page is loaded, if the backend sends an error, that error should be shown in the UI.
  • There is a way to specify caBundle and InsecureSkipTLSverify for all targets.

These tasks will be delayed since docs page needs to be setup first.

  • There is a way to show docs page for OCI
  • There is way that ExponentailBackOffValues struct will show have a docs link pointing on how to use it and how it works.
@gunamata
Copy link

JIRA-3173

@richard-cox
Copy link
Member

@rohitsakala is there a target milestone for the feature?

@rohitsakala
Copy link
Member Author

@richard-cox Yes it would be Q1-2.8 Rancher release

@gaktive
Copy link
Member

gaktive commented Nov 3, 2023

Waiting on the backend to be ready before working on this. Checking with @gunamata on what tickets they have to track on their side.

@gunamata
Copy link

gunamata commented Nov 3, 2023

@gaktive , Here's the backend ticket - rancher/rancher#29105

@CC007
Copy link

CC007 commented Dec 20, 2023

I assume that this is no longer targeted for 2.8, now that 2.8.0 released?

@gaktive
Copy link
Member

gaktive commented Feb 12, 2024

@CC007 correct, we'll look now for 2.9.0 as the various teams align on working on this.

@aalves08 aalves08 added size/2 Size Estimate 2 [zube]: Groomed labels Feb 14, 2024
@zube zube bot removed the [zube]: Backlog label Feb 14, 2024
@richard-cox
Copy link
Member

richard-cox commented Feb 21, 2024

From confluence it looks like the cluster repo resource accepts a url that's either http/s or oci. It also states that the url can either be all repos at the location or a specific repo

The possible values for the URL are oci://registry-1.docker.io/abc/helm-test-chart or
 oci://test.azurecr.io. (Mandatory)

If the input is oci://test.azure.io  that means it only has the host URL of the registry and
 the backend code should find all repositories and tags in that registry. 

If the input is oci://testr.azure.io/abc/helm-test-chart , it has the host URL for the 
registry test.azure.io  and namespace being abc/helm-test-chart . So we only fetch
 all the tags in that particular registry/repository namespace.
oci://test.azure.io

registry_host_url: test.azure.io 
repository_namespace: 

oci://test.azure.io/abc/helm-test-chart

registry_host_url: test.azure.io 
repository_namespace: abc/helm-test-chart

Note is also goes on to talk about tags

In SURE-7218 it was discussed to reduce the impact of large helm repos by targeting a specific chart.

Looks like there's some misalignment on terminology. The OCI registry host would equate to the helm repository, and the repository the chart(S).

I think then SURE-7218 would be alright if we offered the user the proposed two input fields of registry_host_url and repository_namespace (not quite sure what we'd call them...)

Edit: tags where also specified in the RFC and below, so we would need to construct the url via three fields

(registry_host_url) / (repository_namespace) : (tag)

@rohitsakala
Copy link
Member Author

rohitsakala commented Feb 23, 2024

@richard-cox Yes the values can be

  1. oci://test.acure.io/charts/etcd:1.0.0
  2. oci://test.acure.io/charts/etcd
  3. oci://test.acure.io/charts
  4. oci://test.acure.io

@mattfarina suggested to use only one URL field for specifying OCI URL since fleet also gives a URL field. This maintains consistency.

can we please have this conversation in JIRA ? if possible ? Thanks

@richard-cox
Copy link
Member

@rohitsakala These would be UI input fields that would be used to construct the URL sent your way, rather than a request for you to change the underlying resource

@rohitsakala
Copy link
Member Author

@richard-cox yes but @mattfarina suggested only one field.

but please feel free to do what the UI team thinks right according to the user experience. I am okay with anything

@momesgin
Copy link
Member

momesgin commented Apr 9, 2024

@kwwii based on the requirements, I have some ux/ui questions:

  • Should we go with separate inputs for different parts of the url: (registry_host_url) / (repository_namespace) : (tag)

  • How should we display these information to the user:

    Add experimental banner for OCI as this feature is experimental

    There is a way to specify that users are recommended to add only OCI URLs that contain only helm charts for better performance...

  • Also there are three more values that need to be specified for ExponentialBackOff: MinWait, MaxWait and MaxRetries. A UI mock might be helpful for the whole section.

@momesgin
Copy link
Member

momesgin commented Apr 9, 2024

@rohitsakala should UI do something about this item?

There is a way to not show Created date of index in the Individual Chart page if the Created date is [zero]

@richard-cox
Copy link
Member

@momesgin RE Should we go with separate inputs for different parts of the url: (registry_host_url) / (repository_namespace) : (tag) i think in planning the vote was to keep this as a single field

@kwwii
Copy link
Contributor

kwwii commented Apr 10, 2024

@momesgin Be sure to add a proper placeholder to reflect the url/namespace:tag information the user needs to enter

@rohitsakala
Copy link
Member Author

@momesgin Yes, index.yaml is recieved by the UI and the UI should not display the date&time in the List of Versions column when the time field is zero or empty.

@yonasberhe23
Copy link
Contributor

I found a small issue related to this feature which would be good to add to our test coverage but that can be tracked in the issue itself. aside from that, the e2e test coverage is sufficient. moving this to done @izaac

@momesgin momesgin mentioned this issue Oct 9, 2024
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JIRA kind/enhancement QA/dev-automation Issues that engineers have written automation around so QA doesn't have look at this size/5 Size Estimate 5 teams/mapps
Projects
None yet
Development

Successfully merging a pull request may close this issue.