Air Gapped Installation
Deploy Platform9 Private Cloud Director (PCD) in an environment without direct internet access.
Overview
Use this guide to deploy Platform9 Private Cloud Director (PCD) in an air-gapped environment, where cluster nodes have no direct internet access. Before you start the installation, download all required packages, container images, and installation artifacts on a host with internet access, then transfer them into your environment.
In an air gapped deployment, the following components must be set up inside your environment before PCD can be installed. You will configure each of these as part of this guide.
Private APT repository
Hosts required Ubuntu packages
Private container registry
Hosts required container images
Airctl installation artifacts
Installer components downloaded externally
NTP server
Ensures time synchronization across nodes
Prerequisites
Before you begin, ensure the following conditions are met.
Network requirements
All cluster nodes must have network connectivity to the following internal services:
Private APT repository
Private container registry
NTP server
For management plane host configuration, follow the prerequisites guide, except for package updates and OpenSSL installation. Those steps are covered in this guide.
DNS requirements
Configure DNS resolution for the container registry hostname.
Example:
If DNS is not available, add the registry hostname to /etc/hosts on every node instead.
Example:
Step 1: Configure NTP synchronization
All nodes must synchronize time with an NTP server inside your network to prevent clock skew across the cluster. In this step, you configure each node to point to your internal NTP server, restart the time synchronization service, and verify that synchronization is active before proceeding. If NTP is already configured on your nodes, skip this step.
Configure the NTP client on each node to point at your internal NTP server.
Restart the time synchronization service and enable it to start on boot.
bash
Verify that the node is actively syncing with the NTP server before moving on.
bash
Step 2: Set up a private APT repository
The private APT repository hosts the Ubuntu packages required by the platform. You create this repository on a server with internet access and then make it accessible to the air-gapped cluster. To complete this step, you will download the required scripts and dependency list, download the package dependencies, and then initialize the repository.
On a host with internet connectivity, download the repository scripts and the dependency list.
Make both scripts executable before running them.
Download all package dependencies required for the installation.
NOTE
If you are using HTTPS with a custom CA, install the CA into /usr/local/share/ca-certificates and run update-ca-certificates before proceeding.
4. Initialize the APT repository. Two options are available: HTTPS and HTTP. HTTPS is recommended because it encrypts package transfers and prevents tampering in transit. Use HTTP only if your environment does not support TLS.
NOTE
Creating the repository typically takes approximately 20 minutes, depending on hardware performance.
Option 1: HTTPS (recommended)
If you do not have an existing certificate, generate a self-signed certificate and initialize the repository.
If you already have a certificate and key, provide the paths directly.
Option 2: HTTP (insecure)
Use this option only if TLS is not available in your environment. Package transfers over HTTP are unencrypted and not verified.
Step 3: Configure the APT repository on cluster nodes
Update the APT configuration on all management and compute nodes so they can access the private repository.
If you are using a self-signed certificate, distribute the CA to each node and update the certificate store.
Back up your existing APT sources.
Add the private repository and update the package index.
Step 4: Set up a private container registry
The private registry stores all container images required by PCD. You set up the registry on a host with internet access and then make it reachable from your air-gapped cluster nodes. To complete this step, you will download the registry setup scripts, initialize the registry, and confirm it is ready to receive images.
On a host with internet connectivity, download the registry setup scripts and the image list.
Make the setup script executable and run it to initialize the registry.
When prompted, provide the following inputs to configure the registry.
PromptExampleDescriptionRegistry host IP
10.10.13.145IP of the registry server
Registry domain
registry.pf9.ioDNS name used by the cluster
Username
<registry-user>Registry login username
Password
<registry-password>Registry login password
Example session:
Step 5: Push images to the private registry
In this step, you push all required PCD container images to the private registry you created in Step 4. Before Docker can communicate with a registry that uses a self-signed certificate, you must add the registry's CA certificate to Docker's trust store. Without this, Docker rejects the connection and the image push fails.
NOTE
Docker must be installed on the host machine before you can push images.
Add the registry's CA certificate to Docker's trust store.
Restart the Docker service so the certificate change takes effect.
Push the images to the private registry using the
push-images.shscript.
Step 6: Install the OpenSSL dependency
PCD requires a specific build of OpenSSL that is not available through the standard Ubuntu package repositories. In this step, you download the pre-built package from the Platform9 artifact store, transfer it to each cluster node, and install it. The checksum verification confirms that the package was not corrupted in transit.
On a host with internet access, download the OpenSSL package.
Transfer the downloaded package to each cluster node.
On each node, verify the MD5 checksum to confirm the package integrity.
Install the OpenSSL package and configure the library path.
Verify that the correct version of OpenSSL is active on the node.
Confirm that the output matches the following before continuing.
Step 7: Install required packages
cgroup-tools is a Linux utility that PCD requires to manage and interact with control groups on each cluster node. Run the following command on each node to update the package index and install cgroup-tools in a single operation.
Step 8: Deploy PCD
With the private registry and APT repository in place, you can now run the PCD installer. Complete the following steps on a management node.
NOTE
If the registry hostname is not resolvable via DNS in your environment, add the hostname to /etc/hosts on each node before proceeding.
On a system with internet connectivity, download the installer artifacts.
Copy all downloaded artifacts to the management node, then make the installer executable.
Run the installer using the version number from
version.txt.
Create a symlink so that
airctlis available globally on the management node.
Generate the configuration file for your management cluster. Use single-master for a POC environment or multi-master for production.
NOTE
Before running this command, copy the ca.crt file from the registry to the management node. Provide its path using the --custom-registry-ca-cert-path flag.
Next steps
After completing the air-gapped setup, proceed to Install to deploy the management cluster and install the PCD management plane using airctl.
Was this helpful?
