Deploying kubeflow (1.6) on an offline environment


I am trying to deploy kubeflow in an offline environment using juju deploy and pointing to a local path where I have all the .charm files downloaded and a .yaml file. What I am trying to do, in a simplified way, is to deploy kubeflow with the .charm files in the local file system. I have also downloaded some of the images that are pulled when doing an online deploy.

The process I have followed until now is to do two setups, one online and one offline to compare which images are downloaded in the online setup, export them and import them into the offline setup.


These are the charms I downloaded with the juju download <charm> command from a setup that already has kubeflow deployed.

I would really appreciate if anyone has anything to add to point me in the right direction or point out mistakes. If there is any more information needed, let me know and I will try to upload it ASAP.


Hey. Adding some more to the thread. What I did was download the images listed in each of the charms used for kubeflow and I added them to the offline machine. After that I exported the bundle config into a yaml file, edited the charm field to point at where that specific charm was stored (/home/user/charms/<charm_name>) and changed the oci-image field to the ones mentioned earlier.

All of this seemed to be making good progress towards the deploy, but in the end I got the following error:

ERROR cannot deploy bundle: zip: not a valid zip file

Without knowledge, my first idea was to zip the charms and the bundle yaml file and change the bundleUrl field to point to that zip file, but it changed nothing.

I hope someone can add to this so we can leave it as a reference for anyone else who tries something similar.


After doing all of the steps mentioned above (importing images and changing values in yaml file) this error is thrown:

[user@hostname~]$ juju deploy ./charms_kubeflow/kubeflow.yaml --trust
ERROR cannot deploy bundle: zip: not a valid zip file

This was caused due to a broken .charm zip file, so it had to be replaced. After doing so, the output shows the following:

[user@hostname~]$ juju deploy ./charms_kubeflow/kubeflow.yaml --trust
Executing changes:
- upload charm /home/user/charms_kubeflow/admission-webhook.charm for series kubernetes from channel 1.6/stable with architecture=amd64
- deploy application admission-webhook with 1 unit on kubernetes with 1.6/stable
ERROR cannot deploy bundle: unexpected charm "admission-webhook", charm not found for application "admission-webhook"

Working on solving this

Hi @alexmlo - how did you get on here?

Hi @bhandalc. I am not quite sure what you mean with your question. A little update though: Las time I worked on this, I managed to deploy kubeflow with a new yaml file and uploading all the images the charms needed. One of the issues currently is that the argo server is trying to pull the images from a remote repository even though the image is present in the machine.

I tried changing the imagePullPolicy, but it was throwing an error and not making the change. I will keep this updated whenever I work on it for future reference for others.

Hi @alexmlo good to hear you made progress. I just wanted to see how it turned out since it has been some months since your first posts. It may be of interest to you that we’re working on providing documentation on deploying in an air-gapped env: Install Charmed Kubeflow in an air-gapped environment.