Installation on Air-Gapped vSphere Kubernetes Cluster
This topic provides instructions for installing Portworx on an air-gapped VMware vSphere Kubernetes cluster using a private container registry.
The following collection of tasks describe how to install Portworx on an air-gapped VMware vSphere Kubernetes cluster:
- Configure your Environment
- Create a version manifest configmap for the Portworx Operator
- Create a vCenter user account for Portworx
- Provide the vCenter user credentials
- Generate Portworx Specification
- Deploy Portworx Operator
- Deploy StorageCluster
- Verify Portworx Pod Status
- Verify Portworx Cluster Status
- Verify Portworx Pool Status
- Verify pxctl Cluster Provision Status
Complete all the tasks to install Portworx.
Configure your Environment
Portworx by Pure Storage recommends to use the air-gapped-install bootstrap script to pull and push images to the customer's registry in the amd64-x86-64 architecture if the destination cluster nodes are also in the amd64-x86-64 architecture. However, if a Mac machine is used to run the air-gapped-install bootstrap script and the Mac is in the arm64 architecture, this may cause conflicts if the destination cluster is in the amd64-x86-64 architecture.
-
Set an environment variable for your Kubernetes version:
KBVER=$(kubectl version --short | awk -Fv '/Server Version: / {print $3}') -
Set an environment variable to specify the latest major version of Portworx:
PXVER=<portworx-version> -
Run the following command to download a list of the released images:
curl -o images "https://install.portworx.com/$PXVER/images?kbver=$KBVER" -
On an internet-connected host that matches the architecture and OS version of the Kubernetes cluster nodes intended for Portworx installation, download the air-gapped installation bootstrap script for the Kubernetes and Portworx versions:
curl -o px-ag-install.sh -L "https://install.portworx.com/$PXVER/air-gapped?kbver=$KBVER" -
Pull the container images for the Kubernetes and Portworx versions:
sh px-ag-install.sh pull -
Log in to docker:
docker login <your-private-registry> -
Push the container images to a private registry that is accessible to your air-gapped nodes. Do not include
http://in your private registry path:sh px-ag-install.sh push <your-registry-path>For example:
sh px-ag-install.sh push myregistry.net:5443Example for pushing image to a specific repo:
sh px-ag-install.sh push myregistry.net:5443/px-images
Create a version manifest configmap for the Portworx Operator
-
Download the Portworx version manifest:
curl -o versions.yaml "https://install.portworx.com/$PXVER/version?kbver=$KBVER" -
(Optional) If your installation uses images from multiple custom registries, update the version manifest with the custom registry location details. You can use a DNS hostname and domain, or IP addresses (IPv4 or IPv6), to specify the container registry server in the following format:
<dns-host.domain or IPv4 or IPv6>[:<port>]/repository/image:tagThe following example demonstrates registries using a custom DNS hostname + domain, IPv4, and IPv6:
version: 2.13.3
components:
stork: custom-registry.acme.org/portworx/backup/stork:23.2.1
autopilot: 192.168.1.2:5433/tools/autopilot:1.3.7
nodeWiper: [2001:db8:3333:4444:5555:6666:7777:8888]:5443/portworx/px-node-wiper:2.13.2note-
Ensure that the Custom Container Registry location field is empty for any specs you generate in the spec generator.
-
kubeScheduler,kubeControllerManager, andpausemay not appear in the version manifest, but you can include them in thepx-versionconfigmap:...
kubeScheduler: custom-registry.acme.org/k8s/kube-scheduler-amd64:v1.26.4
kubeControllerManager: custom-registry.acme.org/k8s/kube-controller-manager-amd64:v1.26.4
pause: custom-registry.acme.org/k8s/pause:3.1
-
-
Create a configmap from the downloaded or updated version manifest in the namespace
<px-namespace>, where you will deploy Portworx:kubectl -n <px-namespace> create configmap px-versions --from-file=versions.yaml