Install on Airgap
Before starting the installation, ensure to review the system and network requirements, and download your license.
KOTS-based installation
Airgap installation on an Embedded cluster V2
Please refer to Embedded cluster V2
Airgap installation on an Embedded cluster V1 (kURL)
Download and install the Kubernetes cluster
First, you will need to set up the cluster. kURL allows you to download a bundle beforehand, and run the install using it. There are two places to download it. The first and recommended one is the download portal where you can also download your license and the application bundle. The second one is with this link, which can be useful for automation purposes:
curl -LSO https://kurl.sh/bundle/gitguardian.tar.gz
Then, copy the archive to your server using for example scp
. Go to your
server, with ssh
, or another tool. Extract the archive:
scp gitguardian.tar.gz ${your-server-address}:.
ssh ${your-server-address}
tar -xvzf gitguardian.tar.gz
You can now install the cluster:
cat install.sh | sudo bash -s airgap
Once the installation finishes, the KOTS Admin Console will be available on
http://${your-server-address}:8800
. If needed you can set up an SSH tunnel to
access it locally on http://localhost:8800
:
ssh -N -L 8800:${your-server-ip}:8800 ${your-server-ip}
Upload the application bundle to the KOTS Admin Console
First, you will need to download the license and the application bundle from the
Replicated download portal. The filename should end with .airgap
.
Upload your license on the KOTS Admin Console. Then upload the application bundle.
Follow the rest of the instructions here to complete the installation.
Upgrades
To upgrade the cluster itself, please download the latest kURL bundle,
follow the installation instructions above:
copy the bundle, extract it, and run the install.sh
script.
Then, you will need to upgrade the KOTS application running in the cluster:
kubectl kots admin-console upgrade --namespace <namespace>
If needed, specify the Kubernetes namespace with --namespace
(default namespace is used if not specified).
To upgrade the application, first download the latest application bundle on the download portal. Then go to your KOTS Admin Console on the "Version History", and click on "Upload new version". Upload the bundle and deploy it.
Airgap installation on an Existing cluster
Download and install the KOTS Admin Console
First, install the kubectl
KOTS plugin on your machine:
curl https://kots.io/install | bash
Then, you need to download the latest bundle for the KOTS Admin Console. There are two places to download it. The first and recommended one is the download portal where you can also download your license and the application bundle. The second one is the release assets on GitHub. In both cases, make sure to match your locally installed KOTS plugin version. You can check it by running:
kubectl kots version
Now you need to upload these images to your registry using a user with write access to your internal registry:
kubectl kots admin-console push-images ./kotsadm.tar.gz \
${private.registry.host}/gitguardian \
--registry-username ${rw-username} \
--registry-password ${rw-password}
The username and password for the registry are not stored anywhere.
Finally, you can run the install command for the KOTS Admin Console:
kubectl kots install gitguardian \
--kotsadm-namespace gitguardian \
--kotsadm-registry ${private.registry.host} \
--registry-username ${ro-username} \
--registry-password ${ro-password}
A Kubernetes secret will be used to store these credentials.
An automatic port-forward is launched, you can now access the KOTS Admin Console on http://localhost:8800.
Upload the application bundle to the KOTS Admin Console
First, you will need to download the license and the application bundle from the
download portal. The filename should end with .airgap
.
Upload your license on the KOTS Admin Console.. Then follow the instructions to set up the registry for the application itself and upload the application bundle.
Follow the rest of the instructions here to complete the installation.
Helm-based installation
Currently, deployment of the app using Helm charts supports only Helm CLI and ArgoCD.
Accessing and Downloading the GitGuardian Helm Chart
- Login to Helm chart registry: The Helm chart is available in the Replicated private registry. Use the password provided by the GitGuardian team. Log in with this command (replace email with the one given to GitGuardian):
helm registry login registry.replicated.com --username your.name@yourcompany.com
- Download Helm chart locally: After logging in, download and extract the GitGuardian Helm chart
into a local directory (e.g.,
/home/user
) using:
cd /home/user
helm fetch oci://registry.replicated.com/gitguardian/gitguardian
Download GitGuardian Images
GitGuardian images are accessible through the Replicated proxy registry. To learn how to connect it to a Harbor or JFrog Artifactory instance for pull-through image caching, visit Using a Registry Proxy for Helm Air Gap Installations.
You may get current versions in values reference documentation.
Below is a list of images to download and upload to your private image registry:
Image Type | Repository and image name |
---|---|
Front | proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/prm/static-chainguard |
Backend | proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/prm/app-chainguard |
Helm Tooling | proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/prm/helm-tooling |
Used for custom CA | proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/services/nginx-unprivileged |
Replicated SDK | replicated/replicated-sdk |
Retrieve your License ID from your license file, where it's labeled as licenseID
. Use this ID to authenticate with the GitGuardian image repository by executing the command below. Replace <your_licenseID>
with your actual License ID.
LICENSE_ID="<your_licenseID>";
echo "{\"auths\": {\"proxy.replicated.com\": {\"auth\": \"$(echo -n "${LICENSE_ID}:${LICENSE_ID}" | base64)\"}, \"registry.replicated.com\": {\"auth\": \"$(echo -n "${LICENSE_ID}:${LICENSE_ID}" | base64)\"}}}" > ~/.docker/config.json
Example on how to download the images with docker pull (adjust the tag to download the latest release):
docker pull proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/prm/static-chainguard:2024.11.0
docker pull proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/prm/app-chainguard:2024.11.0
docker pull proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/prm/helm-tooling:2024.11.0
docker pull proxy.replicated.com/proxy/gitguardian/513715405986.dkr.ecr.us-west-2.amazonaws.com/services/nginx-unprivileged:stable
docker pull replicated/replicated-sdk:v1.0.0-beta.31
You can verify that the images have been correctly downloaded and upload them to your private image registry.
docker images | grep replicated
For this process, you can utilize a tool like Skopeo to handle image transfers. Additionally, if you need to set up a proxy to access the replicated registry, refer to the Docker documentation.
Upload GitGuardian Images
Ensure the following directory structure is respected in your private registry:
Path and image name |
---|
/prm/static-chainguard |
/prm/app-chainguard |
/prm/helm-tooling |
/services/nginx-unprivileged |
/replicated/replicated-sdk |
Install the application
Proceed to the Helm installation instructions and adapt them for an airgap installation using the information below:
Update your values file to use a private registry for image pulling.
Replace
docker.internal
with your private registry andexample/path
with the appropriate path where the images are stored in your registry. Ensure you maintain the specified directory structure.global:
imageRegistry: docker.internal/example/path # Location of the GitGuardian images
imagePullSecrets:
- name: pull-secret # Existing docker secret used to pull images
replicated:
isAirgap: false # Enable only for environments without Internet access and no HTTP proxy configured
imagePullSecrets:
- name: pull-secretinfoAre you using an HTTP(s) proxy in your environment? More information on how to Configure a proxy server.
🚦 We strongly advise you to run our preflight script to ensure your existing cluster meets Gitguardian's requirements. Retrieve the script from our public repository here.
Specify an existing Kubernetes namespace using the
-n
option. If not specified, the script will run in your default namespace../preflights.sh -n <namespace> gitguardian-<version>.tgz -f local-values.yaml
RequirementsPreflight checks are critical for a successful installation. The following rules apply:
- ❌ Preflight Check Failures: If preflight checks fail, the installation must not continue until the targeted environment meets all requirements. Please reach out to our support team if needed.
- ⚠️ Preflight Check Warnings: If preflight checks return warnings, the installation can proceed, but it is recommended that you address these warnings to comply with our recommendations. :::
Use the local Helm chart directory for installation instead of the remote repository. Example command:
helm install <release-name> --timeout 30m -n <namespace> --create-namespace gitguardian-<version>.tgz -f local-values.yaml