---
title: "How to secure the cluster in an air gap environment with Calico Cloud"
source: "https://wordpress-1075849-4005834.cloudwaysapps.com/blog/how-to-secure-the-cluster-in-an-air-gap-environment-with-calico-cloud/"
---

[Technical Blog](https://wordpress-1075849-4005834.cloudwaysapps.com/category/technical-blog/)

# How to secure the cluster in an air gap environment with Calico Cloud

By [Joao Coutinho](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/author/joao-coutinho/) on Jun 13, 2023 • 5 min read

The concern about securing the clusters has grown exponentially and one of the ways to secure it is by isolating the cluster from the Internet to lower the risk of eventual attack. Enterprises that deal with confidential customer data and work with regulatory agencies, such as financial and insurance institutions, require air gap environments for their clusters to create highly secure environments.

## What’s an air gap?

The air gap is a security configuration in which the cluster, network, or workload will not have access to the Internet, unless it is explicitly authorized to do so. It is a highly controlled environment and prevents the cluster from establishing external connections without prior authorizations.

The diagram below shows an air gap network:

![Diagram comparing an open network to an air gap network, both using internet, router, firewall, VPC, Kubernetes cluster, and](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2023/06/How-to-secure-the-cluster-on-a-air-gap-environment-with-Calico-Cloud-1.jpg)

 

In a containerized environment, the cluster needs to pull the images for spinning up containers and it is usually done by pulling the images from a repository located on the cloud or Internet. However, as the air gap network doesn’t have access to the Internet, pulling images from the Internet is not possible. To address this situation, it is necessary to create a private registry/repository in the air gap network and pull all required images for the cluster into this private registry, rather than pulling the image from the Internet, the cluster will pull them from a local repository placed on the air gap network.

Calico Cloud supports the air gap installation, which we will go into more detail in this blog.

## Setting up the prerequisites

In order to install Calico Cloud from a private registry, some prerequisites need to be met as below:

- Helm charts installation is the only way to install Calico Cloud from a private registry, therefore, helm must be installed in the machine from where the installation will be triggered.

- The cluster must have the CNI installed and if you want to install the Calico CNI, follow this documentation: Install Calico.

## Setting up a private registry

One of the most well-known private registry is by deploying the Docker registry container. Let’s look at an example based on the Docker registry.

The prerequisites for installing the Docker private registry:

- On the Linux server in which the private registry will be configured, install docker as per this [documentation](https://docs.docker.com/engine/install/).

- Deploy the Docker registry container in the private registry server as per the [documentation](https://docs.docker.com/registry/deploying/).

- The Docker registry container will only accept access from the localhost IP address. In order to make it accessible from the cluster, the TLS certificate needs to be configured to encrypt the traffic between the cluster and the private registry container. Follow the [documentation](https://docs.docker.com/registry/deploying/#run-an-externally-accessible-registry) to configure the certificate in the docker registry container.

You can also add the following:

- Authentication on the Docker registry container as per the [documentation](https://docs.docker.com/registry/deploying/#restricting-access).

- Self-signed certificates are only recommended for non-production clusters. You can generate the certificate and configure it in the Docker registry container and in the Kubernetes cluster as per this [documentation](https://docs.docker.com/registry/deploying/#restricting-access).

## Pull images to the private registry

After finishing the configuration for the Docker registry container, the Calico Cloud images need to be pulled into the private registry container and this way the cluster will be able to pull the image from it.

1. To pull the images from Calico Cloud, log into Docker with a user that has permission to pull out the private registry. Go to **Calico Cloud UI** > **Managed Clusters** and click on the ![Command prompt icon, indicating the need to pull Calico Cloud images into the private registry container](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2023/06/How-to-secure-the-cluster-on-a-air-gap-environment-with-Calico-Cloud-2.png) icon to obtain the user and password needed to pull the Calico Cloud Images.![Calico Cloud UI showing private registry credentials. The command pulls Calico images into the private registry](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2023/06/How-to-secure-the-cluster-on-a-air-gap-environment-with-Calico-Cloud-3.png)

Copy the following command and paste it into the Linux server that is running the private registry container:

```
`docker login -u tigera+calicocloud_images -p <PASSWORD> quay.io`
```

2. As the helm is required, first add the `calico-cloud` charts to the helm repo:

```
`helm repo add calico-cloud https://installer.calicocloud.io/charts`
```

3. Export the installer image to the variable `INSTALLER_IMAGE`:

```
`INSTALLER_IMAGE="us-docker.pkg.dev/tigera-prod-01/calico-cloud-public/cc-operator:$(helm show chart calico-cloud/calico-cloud | grep version: | sed -e 's/version: *//' -e 's/+/-g/')"`
```

4. Create an array containing all images required to install Calico Cloud plus the Installer image:

```
`IMAGES=( $INSTALLER_IMAGE quay.io/tigera/operator:v1.29.4 quay.io/tigera/cnx-apiserver:v3.16.1 quay.io/tigera/compliance-benchmarker:v3.16.1 quay.io/tigera/compliance-controller:v3.16.1 quay.io/tigera/compliance-reporter:v3.16.1 quay.io/tigera/compliance-snapshotter:v3.16.1 quay.io/tigera/deep-packet-inspection:v3.16.1 quay.io/tigera/fluentd:v3.16.1 quay.io/tigera/fluentd-windows:v3.16.1 quay.io/tigera/guardian:v3.16.1 quay.io/tigera/intrusion-detection-controller:v3.16.1 quay.io/tigera/packetcapture:v3.16.1 quay.io/tigera/egress-gateway:v3.16.1 quay.io/tigera/l7-collector:v3.16.1 quay.io/tigera/envoy:v3.16.1 quay.io/tigera/prometheus:v3.16.1 quay.io/tigera/prometheus-service:v3.16.1 quay.io/tigera/alertmanager:v3.16.1 quay.io/tigera/cnx-queryserver:v3.16.1 quay.io/tigera/kube-controllers:v3.16.1 quay.io/tigera/cnx-node:v3.16.1 quay.io/tigera/typha:v3.16.1 quay.io/tigera/cni:v3.16.1 quay.io/tigera/cloud-controllers:v3.16.1 quay.io/tigera/es-gateway:v3.16.1 quay.io/tigera/calico-windows-upgrade:v3.16.1 quay.io/tigera/dikastes:v3.16.1 quay.io/tigera/pod2daemon-flexvol:v3.16.1 quay.io/tigera/csi:v3.16.1 quay.io/tigera/node-driver-registrar:v3.16.1 quay.io/tigera/key-cert-provisioner:v1.1.7 quay.io/tigera/image-assurance-admission-controller:v1.6.2 quay.io/tigera/image-assurance-operator:v1.6.2 quay.io/tigera/image-assurance-container-runtime-adaptor:v1.6.2 quay.io/tigera/runtime-security-operator:v1.6.0 quay.io/tigera/skimble:v1.6.0 quay.io/tigera/cc-core:v0.1.5 quay.io/tigera/prometheus-operator:v3.16.1 quay.io/tigera/prometheus-config-reloader:v3.16.1 alpine:3.12.1 )`
```

Please note that the images will vary depending on the Calico Cloud version, so getting the latest version from the [documentation](https://docs.tigera.io/calico-cloud/get-started/setup-private-registry#create-the-list-of-required-images) is highly recommended.

To verify if the array contains all images, run a look in the IMAGES array to print them:

```
`for image in ${IMAGES[@]}; do echo $image; done`
```

5. Export the variables below to the registry and image path:

```
`REGISTRY=<replace with your registry and include a trailing slash> IMAGEPATH=""`
```

If all images come from the same path in the registry, set it as blank “”, otherwise, insert the custom path.

6. To upload the images into the private registry, you can use `crane` as per the loop below or customize another loop or way to upload the images.

```
`for image in ${IMAGES[@]}; do img_base=$(echo ${image} | sed "s#^.*/([^/]*/[^/]*$)#1#") crane cp ${image} ${REGISTRY}${img_base} || break done`
```

## Install Calico Cloud through the private registry

After uploading the images to the private registry, open **Calico Cloud UI** > **Managed Clusters** and click **Connect Cluster**.

Provide the name and type of the cluster. Click on **Advanced Options** and select **Install via helm and Private registry**. Type the **Image Registry** and optionally, the **Image Path** and **Registry Secret Name** if needed.![Calico Cloud UI: Connect Cluster page. Shows fields for registry secret name, image registry, and image path](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2023/06/How-to-secure-the-cluster-on-a-air-gap-environment-with-Calico-Cloud-4.png)

Click on **Connect** and the next screen will provide the command to run in the cluster to install Calico Cloud from the defined private registry.

## Conclusion

The Calico Cloud installation will be done without accessing the Internet and the cluster will be isolated and secured from external/public attacks and threats. With Calico Cloud, you can secure your Kubernetes and containerized workload environment, effectively reduce the attack surface using [zero-trust security](https://wordpress-1075849-4005834.cloudwaysapps.com/learn/guides/zero-trust/zero-trust-security/), monitor for both known and zero-day threats on an ongoing basis, and mitigate breaches by dynamically responding to threats.

Want to learn more? Get started with a [free Calico Cloud trial](https://link.tigera.io/ueOp4).

[Best Practices](https://wordpress-1075849-4005834.cloudwaysapps.com/tags/best-practices/)[How-To](https://wordpress-1075849-4005834.cloudwaysapps.com/tags/how-to/)[Products](https://wordpress-1075849-4005834.cloudwaysapps.com/tags/products/)

Add Tigera as a preferred source on Google to see more of our content in your search results.

[![Add as a preferred source on Google](https://wordpress-1075849-4005834.cloudwaysapps.com/app/themes/tigera2021/dist/img/google-preferred-source-light.png)](https://www.google.com/preferences/source?q=tigera.io)

## Related posts

[![Calico Load Balancer: Simplifying Network Traffic Management with eBPF](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2026/03/Calico-Load-Balancer-Simplifying-Network-Traffic-Management-with-eBPF.png)](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/calico-load-balancer-simplifying-network-traffic-management-with-ebpf/)

#### [Calico Load Balancer: Simplifying Network Traffic Management with eBPF](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/calico-load-balancer-simplifying-network-traffic-management-with-ebpf/)

By [Aadhil Abdul Majeed](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/author/aadhil-abdul-majeed/)
on Mar 21, 2026

Authors: Alex O’Regan, Aadhil Abdul Majeed Ever had a load balancer become the bottleneck in an on-prem Kubernetes cluster? You are not alone. Traditional hardware load balancers add cost, create coordination overhead, and can make...

[Read more](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/calico-load-balancer-simplifying-network-traffic-management-with-ebpf/)

[![Lift-and-Shift VMs to Kubernetes with Calico L2 Bridge Networks](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2026/03/Mar-20-Lift-and-Shift-VMs-to-Kubernetes-with-Calico-L2-Bridge-Networks.png)](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/lift-and-shift-vms-to-kubernetes-with-calico-l2-bridge-networks/)

#### [Lift-and-Shift VMs to Kubernetes with Calico L2 Bridge Networks](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/lift-and-shift-vms-to-kubernetes-with-calico-l2-bridge-networks/)

By [Aadhil Abdul Majeed](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/author/aadhil-abdul-majeed/)
on Mar 20, 2026

On paper, lift-and-shift VM migration to Kubernetes sounds simple. Compute can be moved. Storage can be remapped. But many migration projects stall at the network boundary. VM workloads are often tied to IP addresses, network...

[Read more](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/lift-and-shift-vms-to-kubernetes-with-calico-l2-bridge-networks/)

[![AI Assistant for Calico: Troubleshooting at the Speed of Thought](https://wordpress-1075849-4005834.cloudwaysapps.com/app/uploads/2026/03/Blog-Mar-20-AI-Assistant-for-Calico.png)](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/ai-assistant-for-calico-troubleshooting-at-the-speed-of-thought/)

#### [AI Assistant for Calico: Troubleshooting at the Speed of Thought](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/ai-assistant-for-calico-troubleshooting-at-the-speed-of-thought/)

By [Veronika Smolik](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/author/veronika-smolik/)
on Mar 19, 2026

Despite the wealth of data available, distilling a coherent narrative from a Kubernetes cluster remains a challenge for modern infrastructure teams. Even with powerful visualization tools like the Policy Board, Service Graph, and specialized dashboards,...

[Read more](https://wordpress-1075849-4005834.cloudwaysapps.com/blog/ai-assistant-for-calico-troubleshooting-at-the-speed-of-thought/)

<!-- plugin=object-cache-pro client=phpredis metric#hits=6212 metric#misses=17 metric#hit-ratio=99.7 metric#bytes=2188549 metric#prefetches=0 metric#store-reads=420 metric#store-writes=14 metric#store-hits=438 metric#store-misses=6 metric#sql-queries=32 metric#ms-total=1187.56 metric#ms-cache=76.02 metric#ms-cache-avg=0.1756 metric#ms-cache-ratio=6.4 -->
