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.

Component
Purpose

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.

  1. Configure the NTP client on each node to point at your internal NTP server.

  1. Restart the time synchronization service and enable it to start on boot.

bash

  1. 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.

  1. On a host with internet connectivity, download the repository scripts and the dependency list.

  1. Make both scripts executable before running them.

  1. 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.

  1. If you are using a self-signed certificate, distribute the CA to each node and update the certificate store.

  1. Back up your existing APT sources.

  1. 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.

  1. On a host with internet connectivity, download the registry setup scripts and the image list.

  1. Make the setup script executable and run it to initialize the registry.

  1. When prompted, provide the following inputs to configure the registry.

    Prompt
    Example
    Description

    Registry host IP

    10.10.13.145

    IP of the registry server

    Registry domain

    registry.pf9.io

    DNS 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.

  1. Add the registry's CA certificate to Docker's trust store.

  1. Restart the Docker service so the certificate change takes effect.

  1. Push the images to the private registry using the push-images.sh script.

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.

  1. On a host with internet access, download the OpenSSL package.

  1. Transfer the downloaded package to each cluster node.

  2. On each node, verify the MD5 checksum to confirm the package integrity.

  1. Install the OpenSSL package and configure the library path.

  1. 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.

  1. On a system with internet connectivity, download the installer artifacts.

  1. Copy all downloaded artifacts to the management node, then make the installer executable.

  1. Run the installer using the version number from version.txt.

  1. Create a symlink so that airctl is available globally on the management node.

  1. 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?