Air-gap installation
Install DeepSource Enterprise Server in air-gapped environments without internet connectivity using pre-packaged bundles.
Prerequisites
Before proceeding with the air-gap installation, ensure the following requirements are met:
-
Bidirectional connectivity between these components:
- VCS (Version Control System) ↔ Kubernetes Cluster
- Image Registry ↔ Kubernetes Cluster
-
Kubernetes version: v1.30.0 or later (up to v1.33)
Setup Infrastructure
Create Virtual Machines
Create two nodes for your DeepSource Enterprise Server deployment:
- Primary Application Node: This will host the main DeepSource application and admin console
- Analysis Node: This will be dedicated to running Code Analysis workloads
SSH into Primary Node
SSH into your primary application node where you'll perform the initial setup:
ssh user@<primary-node-ip>Download Air-Gap Bundles
Visit the download portal with the password provided and download:
- KOTS CLI
- KOTS Airgap Bundle
- DeepSource Airgap bundle
- DeepSource License file
Transfer Air-Gap Bundles to Primary Node
Along with the previously mentioned bundles, download the Kubernetes cluster air-gap bundle by visiting the Embedded Kubernetes section in the download portal and downloading the Embedded Kubernetes Installer K8s bundle.
Transfer all downloaded bundles and license file to your primary node using scp or your preferred file transfer method:
scp deepsource-app-release.airgap user@<primary-node-ip>:/home/user/
scp kotsadm.tar.gz user@<primary-node-ip>:/home/user/
scp kots_linux_amd64.tar.gz user@<primary-node-ip>:/home/user/
scp k8s-airgap-bundle.airgap user@<primary-node-ip>:/home/user/
scp deepsource-license.yaml user@<primary-node-ip>:/home/user/Extract and Setup Kubernetes Cluster
Extract the K8s bundle and run the installation script:
tar xvzf deepsource-fowl-beta.tar.gz
cat install.sh | sudo bash -s airgapInstall Missing System Packages
The install script may require certain system packages. For Ubuntu 24.04 LTS (GCP), install the following packages:
sudo apt update && sudo apt install containerd iptables conntrack fioRerun Installation Script
After installing the required packages, rerun the installation script:
cat install.sh | sudo bash -s airgapConfigure Kubernetes Access (Non-root Users)
If you ran the install script as a non-root user, configure kubectl access:
sudo cp /etc/kubernetes/admin.conf ~/.kube/config
sudo chown -R $(id -u) ~/.kube
echo 'unset KUBECONFIG' >> ~/.bash_profile
bash -lInstall KOTS CLI
Install the KOTS CLI tool directly on your primary server to manage the air-gap installation.
Extract KOTS Archive
Extract the transferred kots.tar.gz file:
tar xvf kots_linux_amd64.tar.gzInstall KOTS to PATH
Move the KOTS executable to your PATH for system-wide access:
sudo mv kots /usr/local/bin/kubectl-kotsVerify Installation
kubectl kots --helpConfigure Image Registry
The Kubernetes cluster includes a built-in image registry. You'll need to retrieve the registry credentials for uploading images.
Get Registry Credentials
Retrieve the registry credentials from the Kubernetes cluster:
kubectl -n default get secret registry-creds -o jsonpath='{.data.\.dockerconfigjson}' | base64 -dNote down the following information from the output:
- Registry host
- Username
- Password
Harbor Registry Setup (Alternative)
If using an external Harbor registry as your image registry:
- Create a new project (e.g.,
deepsource) - The project name will serve as the path/namespace for image storage
Upload KOTS Images
Upload the KOTS Air-Gap Bundle to your image registry. This will upload kotsadm (the admin console) and the components KOTS requires.
kubectl kots admin-console \
push-images ./kotsadm.tar.gz \
<registry-host>/<registry-namespace> \
--registry-username <registry-username> \
--registry-password <registry-password><registry-namespace> will usually be the project name you created. For updating the App Manager, refer to the Replicated documentation.
Install DeepSource Enterprise Server
Install DeepSource
Run the following command from the directory where you have the air-gap bundle and license file:
kubectl kots install deepsource-fowl \
--shared-password <admin-console-password> \
--license-file <deepsource-license> \
--airgap-bundle <deepsource-app-release.airgap> \
--namespace <k8s-namespace> \
--kotsadm-registry <registry-host> \
--kotsadm-namespace deepsource \
--registry-username <registry-username> \
--registry-password <registry-password> \
--no-port-forwardParameter Descriptions
<admin-console-password>: Password for accessing the admin console (noted during cluster setup)<deepsource-license>: Path to your DeepSource license file<deepsource-app-release.airgap>: Path to the DeepSource air-gap bundle<k8s-namespace>: Kubernetes namespace for deployment (e.g.,default)<registry-host>: Your image registry hostname (from registry credentials)<registry-username>: Registry authentication username (from registry credentials)<registry-password>: Registry authentication password (from registry credentials)
Access Admin Console
Once installation is complete, access the admin console at port 8800:
# If running locally
http://localhost:8800
# If running on a remote server
http://<primary-node-ip>:8800Add Analysis Node
Access Cluster Management
- Navigate to the admin console
- Go to Cluster Management
- Click Add a Node
Setup Analysis Node
- SSH into your second node (analysis node):
ssh user@<analysis-node-ip>- Run the Secondary Node command provided in the admin console
- Label the analysis node for DeepSource workloads
Configuration and Setup
After successful installation and cluster setup:
- Access the Admin Console: Navigate to
http://<primary-node-ip>:8800 - Configure DeepSource: Follow the configuration steps as outlined in the Enterprise Server Configuration documentation
- Deploy Application: Deploy DeepSource through the admin console
- Verify Installation: Ensure all components are running correctly across both nodes
Upgrade DeepSource Enterprise Server
To upgrade DeepSource Enterprise Server to a newer version:
Download New Air-Gap Bundle
Download the new version of the DeepSource air-gap bundle and transfer it to your primary server.
Run Upgrade Command
Execute the upgrade command from the directory containing the new air-gap bundle:
kubectl kots upstream upgrade deepsource-fowl \
--airgap-bundle <new-deepsource-app-release.airgap> \
--kotsadm-namespace deepsource \
--kotsadm-registry <registry-host> \
--registry-username <registry-username> \
--registry-password <registry-password> \
-n <k8s-namespace>Additional Resources
For detailed configuration and setup instructions, visit: