# kURL Airgap Bundle - include Helm CLI?

**URL:** <https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938>\
**Category:** Packaging an application\
**Created:** [August 24, 2022, 6:34pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938 "2022-08-24T18:34:22Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![dex](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/dex/32/26_2.png) [@dex](https://community.replicated.com/u/dex)\
**Post date:** [August 24, 2022, 6:34pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/1 "2022-08-24T18:34:22Z")

</div>

Great question from today

> I have components in my application that rely on the Helm CLI being present on the host (ideally in `/usr/bin` but can be flexible there. I’d rather not re-work my build pipeline to package this into my docker images that need access to the Helm CLI at deployment time.
> 
> Is there a good way to have the kURL airgap bundle include a helm CLI and install it somewhere on the host? At which path would that binary be installed?

---

<div class="post-metadata">

**Author:** ![jdewinne](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/jdewinne/32/152_2.png) [@jdewinne](https://community.replicated.com/u/jdewinne)\
**Post date:** [August 24, 2022, 6:55pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/2 "2022-08-24T18:55:11Z")

</div>

In theory you could put a wrapper around the kURL airgap bundle that includes the `helm` cli. But that might be adding a second layer around the existing `tar.gz`.  
How about using the Helm docker container as part of your application. And if you need to invoke the `helm` cli, you run it as a k8s Job with the image:  
[https://hub.docker.com/r/alpine/helm/](https://hub.docker.com/r/alpine/helm/)

---

<div class="post-metadata">

**Author:** ![dex](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/dex/32/26_2.png) [@dex](https://community.replicated.com/u/dex)\
**Post date:** [August 24, 2022, 7:19pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/3 "2022-08-24T19:19:50Z")

</div>

@jdewinne are you aware of any way to do this using the `helm` addon in kURL to pre-install the CLI?

---

<div class="post-metadata">

**Author:** ![jdewinne](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/jdewinne/32/152_2.png) [@jdewinne](https://community.replicated.com/u/jdewinne)\
**Post date:** [August 24, 2022, 8:30pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/4 "2022-08-24T20:30:32Z")

</div>

The [helm addon](https://docs.google.com/document/d/1muOCGc2qYIjxoX5zsEytGCi5F_vgbBwm5TbyPazuM4E/edit?usp=sharing) for kURL is currently in alpha. It doesn’t support Airgap at the moment. So I don’t think that is a valid option.

---

<div class="post-metadata">

**Author:** ![dex](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/dex/32/26_2.png) [@dex](https://community.replicated.com/u/dex)\
**Post date:** [August 24, 2022, 9:08pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/5 "2022-08-24T21:08:03Z")

</div>

Cool thanks – I’ll proceed with the first solution them 🙂

---

<div class="post-metadata">

**Author:** ![Mitch](https://avatars.discourse-cdn.com/v4/letter/m/dec6dc/32.png) [@Mitch](https://community.replicated.com/u/Mitch)\
**Post date:** [September 1, 2022, 1:17pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/6 "2022-09-01T13:17:32Z")

</div>

As a vendor wanting to make airgap slightly less difficult for my customer, I’m also interested in bundling random CLI stuff somehow. Helm yes, for airgap+helm situations but also: support-bundle and preflight and others.

---

<div class="post-metadata">

**Author:** ![jdewinne](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/jdewinne/32/152_2.png) [@jdewinne](https://community.replicated.com/u/jdewinne)\
**Post date:** [September 1, 2022, 4:02pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/7 "2022-09-01T16:02:44Z")

</div>

@Mitch What do you mean with bundling random CLI stuff? Like binaries, that need to land on some node and/or client host?  
The download portal does contain the binaries for running the support-bundle and preflight as kubectl plugins. Are those the ones you’re looking for?

---

<div class="post-metadata">

**Author:** ![dex](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/dex/32/26_2.png) [@dex](https://community.replicated.com/u/dex)\
**Post date:** [September 5, 2022, 9:48pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/8 "2022-09-05T21:48:05Z")

</div>

Sounds like maybe one tarball with the following would be useful?

- kots CLI binary
- preflight and support-bundle binaries
- default yaml spec\ for `preflight.yaml` and the `support-bundle.yaml` used in `kubectl kots support-bundle https://kots.io`
- maybe even the kots app airgap release and license file for the customer? to allow for a one-line airgap existing cluster install once the bundle is untarred?

---

<div class="post-metadata">

**Author:** ![jdewinne](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/jdewinne/32/152_2.png) [@jdewinne](https://community.replicated.com/u/jdewinne)\
**Post date:** [September 6, 2022, 7:26pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/9 "2022-09-06T19:26:14Z")

</div>

How about a simple script that packages all these? That way, you can re-run the script each time there’s a new version, and share it with any prospect for initial install.

---

<div class="post-metadata">

**Author:** ![Fernando\_Cremer](https://yyz2.discourse-cdn.com/flex030/user_avatar/community.replicated.com/fernando_cremer/32/436_2.png) [@Fernando\_Cremer](https://community.replicated.com/u/Fernando_Cremer)\
**Post date:** [September 6, 2022, 7:57pm UTC](https://community.replicated.com/t/kurl-airgap-bundle-include-helm-cli/938/10 "2022-09-06T19:57:43Z")

</div>

Another use case for this maybe a installer patch file. You may have a customer with a unique set of requirements that means you have to modify your kURL spec. You could create a patch file to set the specific configurations for that customer. Being able to include that file reduces the need to track a separate file.
