Deploying VPAIF-N AI workloads in an air-gapped Deep learning VM(DLVM) or vSphere Kubernetes Service(VKS) environment will need a local Harbor registry with all required container images, helm charts and model files.
A sample script is provided with this article that will help mirror resources for VPAIF-N AI workloads to a local harbor registry.
Download the script package corresponding to your target VCF version (e.g., 9.0.x or 9.1.x) from the attached zip files. Unzip the contents to locate vpaifn-airgap-res-mirror.sh, config.env, and the included BOM (.json) files.
Default Configuration: By default, the bom.json file contains the resource list for the latest available release within that specific series.
For example, in the 9.0.x attachment, bom.json currently defaults to the 9.0.2 release (identical to the included bom-9.0.2.json).
Similarly, in the 9.1.x attachment, the default bom.json currently defaults to the 9.1.1 release (identical to the included bom-9.1.1.json).
Manual Version Switching: If you require resources for an older release within the same series (e.g., switching from 9.0.2 to 9.0.0), you must manually overwrite the default bom.json with the desired file included in your unzipped package.
Important Note on Legacy Versions: If you replace bom.json with an older version, please be aware that the availability of these legacy resources is not guaranteed. Some resources listed in older BOM files may have been deprecated or removed from the source registry, which may result in pull failures during the process.
VMware Private AI Foundation 9.0.x, 9.1.x
The script vpaifn-airgap-res-mirror.sh is designed to mirror all required resources, including container images, helm charts, model files, for VPAIF-N AI workloads deployment in an air-gapped DLVM or VKS environment.
This script is accompanied by a configuration file config.env and a resource specification file BOM.json.
Users are required to edit file config.env to provide necessary information before executing this script. The BOM.json file contains all resources that will be mirrored.
pull: Retrieve resources, including container images, helm charts and model profiles from internet and store them to local disk.push: Push resources, including container images, helm charts and model profiles, to specified local Harbor registry.all: Perform pull and push operations sequentially.help: Display help information.true', an additional 100 GB disk space will be required. PATH:| Software | Official Link |
| docker (v27.5 or earlier) | https://docs.docker.com/engine/install/ubuntu/ |
| jq | https://jqlang.org/download/ |
| helm | https://helm.sh/docs/intro/install/ |
| vcf cli pais plugin | Please refer the below instructions: VCF CLI(VCF 9.0.x only) Follow the below steps to install VCF CLI and pais plugin:
Docker: If run docker as non-root user, please refer to following document: https://docs.docker.com/engine/install/linux-postinstall/ |
| Software | Official Link |
| helm | https://helm.sh/docs/intro/install/ |
$ sudo rm /etc/docker/daemon.json
$ sudo systemctl restart docker
If you are running this script through proxy, please execute the following steps:
$ export HTTP_PROXY=""$HTTP_PROXY""
$ export HTTPS_PROXY=""$HTTPS_PROXY""
$ export NO_PROXY=""$NO_PROXY""$ sudo mkdir -p /etc/systemd/system/docker.service.d
/etc/systemd/system/docker.service.d/proxy.conf that adds the HTTP_PROXY, HTTPS_PROXY, NO_PROXY environment variables: $ cat <<EOF > /etc/systemd/system/docker.service.d/proxy.conf
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:3128"
Environment="HTTPS_PROXY=https://proxy.example.com:3129"
Environment="NO_PROXY=localhost,127.0.0.1,docker-registry.example.com,.corp"
EOF
$ systemctl daemon-reload
$ systemctl restart docker LOCAL_HARBOR_URI: Local Harbor registry URI, for example, example.harbor.com/paif-projectLOCAL_HARBOR_USERNAME: Local Harbor registry username, Harbor default username is 'admin'.true' when container images download and push operations are performed across two different machines. true'.true', the script will save each pulled container images to a tarball file.false', container images will not save to tarball files.This file specifies all resources to be mirrored by this script. Edit bom.json under the guidance of Broadcom support only.
$ ./vpaifn-airgap-res-mirror.sh --all
Options
-l, --pull : Pull all resources to local disk storage.
-s, --push : Push all resources to local Harbor registry.
-a, --all : Perform both pull and push operations sequentially.
-h, --help : Display help information.
./vpaifn-airgap-res-mirror.sh --all./vpaifn-airgap-res-mirror.sh --pull./vpaifn-airgap-res-mirror.sh --pushNVIDIA GPU operator deployment in an air-gapped environment typically requires a local Ubuntu package repository unless precompiled driver containers are used.
After the local Ubuntu package repository is ready, make sure the generated custom-repo.list file is also uploaded to the Harbor registry following PAIF documentation
Updating the TKG GPU Console Container Image
Starting in PAIF 9.1.1, a more secure option is available for the tkg-gpu-console container image, which we encourage customers to adopt.
To replace the tkg-gpu-console container image with the new deep-learning-container image, perform the following steps:
echo <registry_token> | docker login dlvm.packages.broadcom.com --username <user_name> --password-stdin
<user_name> is the account the customer uses to log in to support.broadcom.com.
<registry_token> can be generated on support.broadcom.com after logging in.Without this step, the deep-learning-container:9.1.1.0 image cannot be pulled
image: ${variable.registryUri}/images/tkg-gpu-console:9.0.0.0"tkg-gpu-console:9.0.0.0" with "dlvm/ga/9.1.1.0/deep-learning-container:9.1.1.0"