Skip to content

Air-Gapped Kubernetes Installation Procedure

In disconnected enterprise environments without external internet connectivity:

flowchart LR
    A["Private Registry<br/>(Harbor / Nexus)"] -->|imagePullSecrets| B["Kubernetes Nodes"]
    C["Pre-Seeded NFS / CSI PVC<br/>(/models)"] -->|ReadOnlyMany Mount| D["metadata-api & worker"]
    B --> E["Offline Pod Execution"]
    D --> E
  1. Push Container Images to Internal Registry: Push all required images to your corporate registry (e.g. Harbor, Nexus, Quay):
    docker tag whiteklay/vda-metadata:latest registry.corp.internal/vda/vda-metadata:latest
    docker push registry.corp.internal/vda/vda-metadata:latest
    
  2. Create Kubernetes ImagePullSecret:
    kubectl create secret docker-registry vda-registry-key \
      --docker-server=registry.corp.internal \
      --docker-username=registry-user \
      --docker-password=registry-pass \
      -n vda
    
    Reference imagePullSecrets: [{ name: vda-registry-key }] in your deployment specifications.
  3. Mount Pre-Downloaded Model Weights: Create a ReadOnlyMany PersistentVolume containing pre-downloaded GLiNER Large ONNX weights and GTE multilingual embeddings, mounting it into /models on metadata-api and metadata-worker.