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

Moving OCI integration from experimental to full feature #10393

Closed
6 tasks done
scottrigby opened this issue Nov 23, 2021 · 13 comments
Closed
6 tasks done

Moving OCI integration from experimental to full feature #10393

scottrigby opened this issue Nov 23, 2021 · 13 comments
Assignees
Milestone

Comments

@scottrigby
Copy link
Member

scottrigby commented Nov 23, 2021

Most of the work outlined in hip-0006 has been finished.

The upstream ORAS Go project that Helm imports now has a stable 1.0.0 release, with a backward compatibility guarantee. This was the last major step in unblocking releasing Helm OCI integration as a full feature.

Remaining steps

Not identified as blockers

However, if someone has time to test these oci-related PRs, they may still get into 3.8.0.

Follow-up

This issue is only concerned with comprehensively listing any blockers for moving OCI support to a full feature. New features can be added after it is moved from experimental. After that point, only backward-compatible changes will be accepted until Helm 4.

Update (by mattfarina) 12/3: Connecting with technosophos and jdolitsky we reviewed the open issues from bacongobbler and added two additional tasks to the remaining steps.

@bacongobbler
Copy link
Member

bacongobbler commented Nov 24, 2021

Anything else?

Here's my laundry list... I started by searching the issue queue. Here's the search terms I used to look for open tickets:

https://github.com/helm/helm/issues?q=is%3Aissue+is%3Aopen+oci
https://github.com/helm/helm/issues?page=1&q=is%3Aissue+is%3Aopen+docker
https://github.com/helm/helm/issues?q=is%3Aissue+is%3Aopen+registry

This was just a casual search... It might be worth triaging the entire queue just to make sure no stone is left unturned.

Anyways, I saw a few tickets that might be worth evaluating (some have been discussed at length during previous developer calls):

#9694 in particular seems like a critical code path that should be addressed. No version range support for both helm install and dependencies is a big regression compared to chart repositories because users must now know what version they need to install. helm install wordpress --generate-name is currently not possible with OCI. Users MUST declare what version to install. To me that's a huge regression.

I know we've discussed helm search at great length during a few developer calls, but we need an answer whether the maintainers are going to work on a solution, or state that helm search does not support OCI registiries (and mark that as a ❌when comparing to chart repositories). Choosing to implement it could affect how information is stored in the registry, which would constitute a breaking change.

#10166 might also be worth taking a closer look as it pertains to how chart versions are stored in the registry.

I'd also recommend a bake-off between what you can do with chart repositories vs OCI registries before we can mark it as graduated. If only to inform users of the benefits and tradeoffs they make when choosing one or the other.

https://github.com/helm/helm/blob/main/CONTRIBUTING.md#semantic-versioning states that "Chart repository functionality MUST be backward compatible". But it doesn't state anything about OCI registry functionality.

Finally... The Helm documentation on chart registries would also be worth taking a closer look to make sure everything is up to date. Things like "why someone would choose OCI registries over chart repositories" would be worth documenting.

@bacongobbler
Copy link
Member

Doc suggestion: "migrating charts from a chart repository to OCI". Either as a plugin similar to https://github.com/helm/helm-2to3 or just a guide on what commands to run.

@bacongobbler
Copy link
Member

bacongobbler commented Nov 24, 2021

I'd also recommend looking at the oras issue queue, searching for any open tickets that may be worth fixing upstream.

This one seems related to #9694: oras-project/oras-go#19

@pytimer
Copy link

pytimer commented Nov 30, 2021

Implement helm push/pull support insecure OCI registry in #10408, fix How can I push chart to an insecure OCI registry with helm v3 #6324

@scottrigby
Copy link
Member Author

Updates:

Folks are working hard on these issues leading up to and potentially during the holidays. In order for this to be moved from experimental to full feature in the next minor release (3.8.0) all blockers would have to be complete by the scheduled RC date (Jan 10, 2022). If not, we can re-target to the next minor release (3.9.0). Let's see what we can accomplish!

I have removed "Forthcoming issue: @jdolitsky re DOCKER_CONFIG" from our checklist in the issue description, and added a comment here with the current plan: #10156 (comment) @jdolitsky you can cross this off your list to explain in an issue ✨

@pytimer I have added #6324 and your PR #10408 to a new category above called "Not yet identified as a blocker", since I'm not yet clear whether this should be a blocker for moving OCI from experimental to full feature, or a nice to have by then and alternatively could be a follow-up. Will see if we can get this reviewed.

@pytimer
Copy link

pytimer commented Jan 4, 2022

@scottrigby Thanks, i know. :-) If something should i do, please tell me.

@KlavsKlavsen
Copy link

I assume target of 3.8.0 was not reached with this.. So 🤞 for 3.9.0 :)

@scottrigby
Copy link
Member Author

@KlavsKlavsen today's RC was pushed back two days to accommodate completing this. This still gives a full week between RC and 3.8.0 to fix regressions. It is still possible we won't make the deadline, but a number of us are putting in a lot of work to make this happen, and it's looking very good right now.

@scottrigby
Copy link
Member Author

scottrigby commented Jan 12, 2022

Update: we are nearly there!

  • OCI version range support #10527 PR is solid. New test added. All checks pass. Just awaiting one other Helm maintainer to review/approve then I will merge
  • Oras maintainers can then cut oras-go v1.1.0, since we now confirmed tag API, auth, and docker config fallback all work now in v1.1.0-rc3
  • Last step will be to finish moving the package out of experimental, remove the experimental env var, and feature flag gates. Thanks to @runyontr for starting this – @dperaza4dustbit is planning to bring in his commits into a separate PR and finish that tomorrow. If for some reason David is pulled away, I can do that.

How you can help: test the RC!

Assuming we will get this into the Helm RC, we will want everyone interested in this feature to test it. There will be a week to fix regressions found before 3.8.0. Will confirm in this issue if/when that is indeed the case.

We are looking good! 🤞 will keep issue updated

@danquah
Copy link

danquah commented Jan 12, 2022

Awesome! Just say the word, I'll be happy to throw some hours into testing out a project we have that currently uses the experimental flag to push some Helm Charts to both Github Packages and Azure Container Registry

@KlavsKlavsen
Copy link

link to Helm RC - and we'll update our docker images and CI pipelines to use this for OCI and see how it works

@scottrigby
Copy link
Member Author

This is complete! Closing this meta tracking issue, and will add a comment once RC is out. Thank you all for your efforts, and thanks in advance for testing the oci feature in the RC ✨

@scottrigby
Copy link
Member Author

📣 v3.8.0-rc.1 is out! Please test and promote widely for the most oci-related user regression testing possible before the 3.8.0 milestone on 1/19 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants