Skip to main content

Using the PoC Installer in an Air-Gapped Environment

Defining Air-Gapped Environments

An air-gapped environment is any environment in which the running hosts will not have access to the greater internet. This proposes a situation in which these hosts are unable to get access to various needed bits of software from Element and also are unable to share telemetry data back with Element.

For some of these environments, they can be connected to the internet from time to time and updated during those connection periods. In other environments, the hosts are never connected to the internet and everything must be moved over sneaker net.

This guide will cover running the microk8s installer when only sneaker net is available as that is the most restrictive of these environments.

ansible and pip installed artifacts


microk8s and helm3

DownloadOn a machine connected to the internet, you will need to download the appropriate snaps for microk8s. Our installer presently uses the 1.21 version of microk8s componentsfrom onthe connectedstable machine.branch.

snap download microk8s --channel=1.21
snap download core18

This will download 4 files -- a .assert and a .snap for each requested package. In my case, I have the following files:


Your list will be similar, but the revision numbers will possibly be different.

CopyNow, we need to go grab the helm3 binary. As this is a dependency of microk8s, we need to actually check which version our microk8s componentswill need. As such, you will need to airhave gappedthe hostmicrok8s that you downloaded installed for this to work.

If you have not previously installed microk8s, please do the following:

sudo snap ack core18_2409.assert
sudo snap install core18_2409.snap
sudo snap ack microk8s_3202.assert
sudo snap install microk8s_3202.snap --classic
cat /var/lib/snapd/snap/microk8s/current/actions/ | awk -F 'HELM_VERSION=' '{print $2}' - | xargs | sort -b | uniq 

In my case, this yields:


With this knowledge, we can now construct a wget command to grab the proper helm3 binary:


which with our output from above would be:


Now we need to unpack this tarball:

tar xvzf helm-v3.5.0-linux-amd64.tar.gz

and now we will find the proper helm binary for microk8s in the linux-amd64 directory.

Now, we need to take the snap artifacts and installthe usinghelm snap.binary to our disconnected environment.

sudo mkdir /var/snap/microk8s/current/bin
sudo cp /path/to/helm /var/snap/microk8s/current/bin/helm3

Getting Element's Container Images into your air-gapped environment.

Workflow on connected host:

Get installer from Element. Run and point this at an images directory. Tar up the installer that has run on and the images directory.

Take this installer and the images directory to the air gapped environment and deploy.