Devtron Enterprise (Air‐gapped) - devtron-labs/utilities GitHub Wiki
This documentation is for installing Devtron in air-gapped clusters. If your cluster is NOT air-gapped, consider Installing Devtron referring this documentation as air-gapped installations have certain limitations.
Pre-requisites
- Download clone-images.sh and devtron-images.txt.source on the VM which has public internet access as well as access to your private registry. You can use the following commands:
wget https://gist.githubusercontent.com/akshatsinha007/67b87fbaa3fc41f2400afcc990a22fff/raw/b34314987996f1687ec1af26483720b0397cc617/clone-images.sh
wget https://raw.githubusercontent.com/devtron-labs/charts/refs/heads/main/charts/devtron-enterprise/devtron-images.txt.source
You can also push all the images mentioned in devtron-images.txt.source manually to your private registry if you wish to and skip to step 6.
- Install docker on the VM from where you're executing this script.
- Set the value of
TARGET_REGISTRY
,TARGET_REGISTRY_USERNAME
,TARGET_REGISTRY_TOKEN
as well. - Platform Selection:
- For Linux/amd64
export PLATFORM="linux/amd64"
- For Linux/arm64
export PLATFORM="linux/arm64"
- Make the script executable and run it:
chmod +x clone-images.sh
bash clone-images.sh
Wait for all the images to be pushed to your target registry.
Devtron Installation
Once all Devtron images are successfully pushed to your Container Registry, verify it once and then use the following helm commands to install Devtron.
Before starting, ensure you have created an image pull secret for your registry if authentication is required.
-
Create the namespace (create the devtron-cd and the devtron-ci namespace only if installing Devtron with CI/CD)
kubectl create ns devtroncd kubectl create ns devtron-cd kubectl create ns devtron-ci
-
Create the Docker registry secret in devtroncd namespace
kubectl create secret docker-registry devtron-imagepull \ --namespace devtroncd \ --docker-server=$TARGET_REGISTRY \ --docker-username=$TARGET_REGISTRY_USERNAME \ --docker-password=$TARGET_REGISTRY_TOKEN
If you are installing Devtron with the CI/CD module or using Argo CD, create the secret in the following namespaces else, you can skip these step-:
kubectl create secret docker-registry devtron-imagepull \ --namespace devtron-cd \ --docker-server=$TARGET_REGISTRY \ --docker-username=$TARGET_REGISTRY_USERNAME \ --docker-password=$TARGET_REGISTRY_TOKEN kubectl create secret docker-registry devtron-imagepull \ --namespace devtron-ci \ --docker-server=$TARGET_REGISTRY \ --docker-username=$TARGET_REGISTRY_USERNAME \ --docker-password=$TARGET_REGISTRY_TOKEN
Get the latest Devtron Helm Chart
helm pull devtron-enterprise --repo http://helm.devtron.ai
This would download the tar file of the devtron-enterprise chart, Make sure to replace the <devtron-chart-file>
in the installation commands with this file name.
Install Devtron without any Integration (Devtron Dashboard)
Use the below command to install Devtron without any Integrations
-
Without
imagePullSecrets
:helm install devtron <devtron-chart-file> -n devtroncd --set global.containerRegistry="$TARGET_REGISTRY" --set-string devtron.components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true --set devtron.installer.modules={} --set devtron.monitoring.grafana.enabled=false --set devtron.notifier.enabled=false --set devtron.security.enabled=false --set devtron.security.trivy.enabled=false
-
With
imagePullSecrets
:helm install devtron <devtron-chart-file> -n devtroncd --set global.containerRegistry="$TARGET_REGISTRY" --set devtron.global.imagePullSecrets[0].name=devtron-imagepull --set-string devtron.components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true --set devtron.installer.modules={} --set devtron.monitoring.grafana.enabled=false --set devtron.notifier.enabled=false --set devtron.security.enabled=false --set devtron.security.trivy.enabled=false
Installing Devtron with CI/CD Mode
Use the below command to install Devtron with only the CI/CD module
-
Without
imagePullSecrets
:helm install devtron <devtron-chart-file> -n devtroncd --set global.containerRegistry="$TARGET_REGISTRY" --set-string devtron.components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true --set devtron.monitoring.grafana.enabled=false --set devtron.notifier.enabled=false --set devtron.security.enabled=false --set devtron.security.trivy.enabled=false
-
With
imagePullSecrets
:helm install devtron <devtron-chart-file> -n devtroncd --set global.containerRegistry="$TARGET_REGISTRY" --set global.imagePullSecrets[0].name=devtron-imagepull --set-string devtron.components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true --set devtron.monitoring.grafana.enabled=false --set devtron.notifier.enabled=false --set devtron.security.enabled=false --set devtron.security.trivy.enabled=false
Install Devtron with CICD Mode including Argocd
Use the below command to install Devtron with the CI/CD module and Argo CD
-
Without
imagePullSecrets
:helm install devtron <devtron-chart-file> -n devtroncd --set devtron.argo-cd.enabled=true --set global.containerRegistry="$TARGET_REGISTRY" --set devtron.argo-cd.global.image.repository="${TARGET_REGISTRY}/argocd" --set devtron.argo-cd.redis.image.repository="${TARGET_REGISTRY}/redis" --set-string devtron.components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true
-
With
imagePullSecrets
:helm install devtron <devtron-chart-file> -n devtroncd --set devtron.argo-cd.enabled=true --set global.containerRegistry="$TARGET_REGISTRY" --set devtron.argo-cd.global.image.repository="${TARGET_REGISTRY}/argocd" --set devtron.argo-cd.redis.image.repository="${TARGET_REGISTRY}/redis" --set global.imagePullSecrets[0].name=devtron-imagepull --set-string devtron.components.devtron.customOverrides.IS_AIR_GAP_ENVIRONMENT=true
Next Steps
After installation, refer Devtron installation documentation for further steps, including obtaining the dashboard URL and the admin password.