vmware-labs / distribution-tooling-for-helm

Helm Distribution plugin is is a set of utilities and Helm Plugin for making offline work with Helm Charts easier. It is meant to be used for creating reproducible and relocatable packages for Helm Charts that can be moved around registries without hassles. This is particularly useful for distributing Helm Charts into airgapped environments.
Apache License 2.0
68 stars 11 forks source link

relocate directly to target registry wihout intermediate bundle #80

Open migmartri opened 1 month ago

migmartri commented 1 month ago

Is your feature request related to a problem? Please describe.

I am relocating a Chart and its associated container images to a target registry via the wrap/unwrap flow.

Is there any way to do the same but without requiring to pull first the images to a local tarball? the dt relocate command seems to just rewrite the references not push the container images.

Describe the solution you'd like

Relocate source -> target in one command without pulling data to an intermediate wrapped tarball.intermediate-wrapped

Describe alternatives you've considered

No response

Additional context

No response

mpermar commented 1 month ago

There is no such single command indeed. Yes, it would be nice to have a dt move or something like that that runs the complete flow. As you noticed, relocate only does the rewiring. I guess we haven't do it because charts-syncer works well for the team but contributions are welcomed!

Alternatively, it should be easy to have an alias that just runs the few commands together pull, relocate, push...

migmartri commented 1 month ago

Thanks, @mpermar, for the response.

I guess we haven't do it because charts-syncer works well for the team but contributions are welcomed!

So, does the Charts syncer perform the relocation of both the chart and container images without an intermediate wrap file?

Alternatively, it should be easy to have an alias that just runs the few commands together pull, relocate, push..

Thanks, but there are other motivations for this issue. The problem is that we run this command multiple times per day, but we do not release that often, so technically, these relocation processes should be quick no-ops.

But today, because of how wrap/unwrap seems to work (and please correct me if I am wrong), we are performing a multi-GB download + compression process to uncompress and discard it most times. This translates a bigger compute, disk, and networking footprint in our GitHub actions billing.

It feels like the tool could have a direct source-destination mode that could, from top of my head:

The new steps for this direct mode are 3 and 4, an optimization that should take a process that takes minutes today to seconds.

In any case, this is not a blocker for us. We might end up resolving/pushing the images ourselves and then calling relocate to rewire the chart manually. But it feels like a good addition to the already useful tool.

Thanks

mpermar commented 2 weeks ago

I don't think there is any way to instruct a registry to push into other registry. Tools like crane make it look transparent but they are pulling the bits to memory before pushing. It could be a nice feature though. No question.

Right now we don't have the capacity to do it, but PRs are more than welcome.