Skip to main content

Deploy vCluster in an air-gapped environment using a private web server

Supported Configurations
Running the control plane as a container with:

For installing vCluster Standalone or Private Nodes in air-gapped environments, follow these tutorials:

The standard method for installing vCluster is using Helm with the LoftLabs charts repository. For air-gapped environments without internet access, you'll need to host the Helm chart locally. This guide demonstrates how to use a private GitLab instance as a web server to host the vCluster Helm chart.

Prerequisites

  • A web server accessible through HTTP or HTTPS to store the Helm chart and index.yaml
  • A private GitLab instance (used in this example)
  • A machine with internet access that has the Helm CLI installed

Procedure

Download and host the Helm chart

  1. Add and update the Loft Helm repository on a machine with internet access:

    helm repo add loft https://charts.loft.sh
    helm repo update
  2. Download the Helm chart to your local disk:

    helm pull loft/vcluster --version 0.23.0
  3. Store the chart on your web server:

    git clone <gitlab-repo-url>
    cd <gitlab-repo>
    mkdir vcluster
    mv vcluster-0.23.0.tgz vcluster/
  4. Create an index.yaml file and push it to the GitLab repository:

    helm repo index vcluster --url https://your-private-server.com/your-username/your-private-project/path-to-vcluster-chart
    git add -A
    git commit -m "Add vCluster Helm chart"
    git push
    note

    Ensure the URL you specify points to the location where vcluster-0.23.0.tgz can be accessible to the target cluster.

Deploy vCluster using the private Helm chart

After hosting the chart, deploy vCluster using either the Helm CLI or the vCluster platform

Use the Helm CLI

helm upgrade --install my-vcluster vcluster \
--values vcluster.yaml \
--repo https://your-private-server.com/your-username/your-private-project/path-to-vcluster-chart-directory \
--version 0.23.0 \
--namespace my-namespace \
--repository-config=''

Use the platform

You can specify the private repository in your vCluster configuration:

Use a template
kind: VirtualClusterTemplate
apiVersion: management.loft.sh/v1
metadata:
name: my-template
spec:
template:
helmRelease:
chart:
repo: https://your-private-server.com/your-username/your-private-project/path-to-vcluster-chart-directory
version: 0.23.0
Use directly in the VirtualClusterInstance CRD
kind: VirtualClusterInstance
apiVersion: management.loft.sh/v1
metadata:
name: my-vcluster
spec:
template:
helmRelease:
chart:
repo: https://your-private-server.com/your-username/your-private-project/path-to-vcluster-chart-directory
version: 0.23.0

After creating the configuration, verify the deployment by creating the virtual cluster through the platform UI.