Onebox Deployment Guide
This document outlines the recommended installation steps for a Onebox deployment to the OneTrust Data Discovery scanner.
Prerequisites
-
Supported:
-
Ubuntu 22.04 (Recommended)
-
RHEL 7.6-7.9; 8.1-8.5, 9.+
-
CIS RHEL 7 Level 1
-
CIS RHEL 8 Level 1
-
-
CentOS 7.7-7.9; 8.1-8.4,
-
CIS CentOS 7
-
CIS CentOS 8
-
CentOS Stream 8
-
CentOS Stream 9
-
-
-
Installed K3S (default) or Microkubernetes
-
VM service account for sudo access with admin privileges
-
Latest version of kubectl, with a minimum version of 1.30
-
Firewall rule for server open inbound on port 8200. This will permit vault web UI access. You can restrict to needed source IPs.
Hardware Requirements
|
Hardware |
Minimum |
Recommended |
|---|---|---|
|
vCPUs |
16 |
32 |
|
RAM |
64GB |
128GB |
|
DISK |
512GB |
1TB* |
*1TB shall be allocated to the /var directory.
-
If the VM is partitioned to use a separate filesystem mounted for the /var directory, the storage of snap, microk8s and the persistent volume created by Onebox installer uses that space.
-
Alternatively, if a VM is partitioned in a different manner, then all of the disk space shall be allocated on the / (root) path as there is no separate mount path for /var. All the disk space going into /var directory will use the / (root) path's disk space.
Onebox Deployment
Please refer to the following installation resources to deploy with Onebox:
-
Guided Worker Node Installation Overview
Note:A jump box is not required to install worker nodes for this deployment.
K3s Deployment Approach
For Onebox deployments, K3s is OneTrust's recommended Kubernetes distribution method due to its lightweight footprint and ease of install. In the Advanced options section when creating the worker node via guided installation, you will need to select the Enable K3S setting.
Ensure the following settings are disabled:
-
Enable Micro K8s Auto-Upgrade (not applicable for K3s)
-
Airgapped worker node install (unless deploying in a fully air-gapped environment)
Download and Extract Installer
Once you have obtained the curl command from the created worker node, follow these steps:
-
SSH into your Linux VM where the worker node will be deployed:
CODEssh user@your-vm-hostname -
Create a working directory (optional):
CODEmkdir -p ~/onetrust-installer cd ~/onetrust-installer -
Paste and run the curl command:
CODEcurl -o 'installer.sh' -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik...' 'https://app.onetrust.com/api/discovery-scan-config/...' -
Verify the download using:
CODEls -lh installer.sh -
Run the extraction command:
CODEbash installer.sh extract-zip -
When prompted, enter the PIN you created during the guided installation:
CODEEnter the PIN that was created in the application during the worker node creation. PIN: **** -
The installer will extract to a named directory:
CODE/home/<user>/onetrust-dd-installer-onebox-<worker-node-name>-<version>/ -
To verify, navigate to the Onebox deployment directory:
CODEcd /home/<user>/onetrust-dd-installer-onebox-<worker-node-name>-<version>/data-discovery/onebox-deployment -
List the contents using:
CODEls -la -
You should observe the following:
-
deploy.sh- main installation script -
inventory/- configuration directory -
utils/- helper scripts -
prerequisite-script/- prerequisite installation scripts -
README.md- installation documentation
-
Enable Configuration Flags
-
Open the guided environment configuration file using:
CODEvi inventory/.guided-envsAlternatively, you can use your preferred editor:
CODEnano inventory/.guided-envs -
Hardened Images will be enabled by default for new worker nodes. To check they are enabled run:
CODEgrep IS_HARDENED_IMAGE_ENABLED inventory/.guided-envs Expected: export IS_HARDENED_IMAGE_ENABLED='true' -
To enable RWX Storage class, run:
CODEgrep EXTLIB_SHARED_STORAGE_NAME inventory/.guided-envs Expected: export EXTLIB_SHARED_STORAGE_NAME='nfs-pod-onetrust-dd'Important:Read Write Many storage class is used for copying and loading custom libraries, jars, or files required for datasource connections. This is also used to write Java info like heapdumps and threaddumps during failures.
nfs-pod-onetrust-dd will use a nfs-provisioner type RWX storage, which will be installed and enabled during installation. Note that deployment will attempt to install nfs utils and other dependent nfs mount libraries , this install could fail in airgapped and firewalled environments. Revert to
noneto continue with installation or allow outbound connection to install required nfs plugins. -
To configure the data directory for K3s, you can set the K3S_DATA_DIR flag. This allows you to specify a custom directory where K3s will store its data. Default value is /var/lib/rancher/k3s
CODEexport K3S_DATA_DIR='/opt/k3s'Important:If SELinux is enabled on your system, this flag may not be honored or may not work as expected. For more information on enabling SELinux enforcement, refer to the K3s documentation here.
Make sure to verify the configurations and ensure that the specified directory has the appropriate permissions for K3s to operate correctly.
-
To configure the installation of CLI tools and plugins from OneTrust URLs instead of using the internet, you can set the f flag. This is particularly useful in firewalled and airgapped environments that only allow access to OneTrust URLs.
CODEexport AIRGAPPED_CLI_INSTALL='true'Important:Important: Enabling this flag will ensure that the installer pulls and installs CLI tools, plugins, and prerequisites directly from OneTrust's URLs, bypassing the need for general internet access. Tools installed are kubectl, helm, jq, curl, k9s, perl, unzip, yq, zip, busybox
-
The AIRGAPPED_WN_INSTALL flag enables airgapped installation mode for workernode container images in K3S environments. When enabled, the installer downloads all required workernode Docker images as compressed tar files from the OneTrust Cloud API and imports them directly into the K3S cluster's local image registry. Default value will be set to false.
CODEexport AIRGAPPED_WN_INSTALL="true"When to use Airgapped Installs:
-
Environments with no direct internet access or restricted outbound connectivity
-
Environments where pulling images from external registries docker.onetrust.io (OneTrust’s Azure ACR) or docker.io/otcr (OneTrust’s DockerHub) is blocked by firewall rules.
-
Air-gapped or highly secured production environments
-
Environments requiring all container images to be pre-loaded locally
CAUTION:Note that the Airgapped option serves as a workaround for initial installs or when clients use custom Docker Registry settings (Internal Artifactory) instead of OneTrust Docker registries and their automated release cadence. Clients using OneTrust Docker registries must safelist the required URLs after the initial install to enable ongoing upgrades.
Disk Space Requirements for Airgapped Installs:
-
Minimum: 35 GB free space in /tmp (or custom temp directory)
-
Recommended: 50+ GB to accommodate image downloads, extraction, and import operations
-
Images are cleaned up automatically after successful import
-
Install & Verification
For OneBox deployments, prefix all kubectl commands with microk8s.
-
Example:
microk8s kubectl
-
Run the following to start the installation script:
CODE./deploy.sh install -
The installer will perform the following steps:
-
System Checks (~1 minute)
-
Verify system requirements
-
Check available resources
-
Validate network connectivity
-
-
K3s Installation (~3-5 minutes)
-
Download and install K3s
-
Configure K3s as systemd service
-
Set up kubectl access
-
-
Prerequisites Installation (~2-3 minutes)
-
Install required command-line tools
-
Configure storage classes
-
Set up DNS resolution
-
-
Worker Node Deployment (~10-15 minutes)
-
Pull Docker images (hardened versions)
-
Deploy StatefulSets (Postgres, Kafka, Elasticsearch, Vault)
-
Deploy application services (scanners, job managers, ops services)
-
Configure networking and ingress
-
Initialize databases and message queues
-
-
-
Verify K3s cluster is running with:
CODEsudo k3s kubectl get nodes Expected: NAME STATUS ROLES AGE VERSION hostname Ready control-plane,master 10m v1.28.x+k3s1 -
Check the worker node namespace with:
CODEsudo k3s kubectl get namespaces | grep test-onebox-demo -
List all pods in the worker node namespace with:
CODEsudo k3s kubectl get pods -n test-onebox-demoAll pods should show Running status after 20-30 minutes.
K3s Troubleshooting
About K3s PATH
K3s installs its binaries here:
/usr/local/bin/k3s
/usr/local/bin/k3s-killall.sh
/usr/local/bin/k3s-uninstall.sh
sudo does not include /usr/local/bin in its default PATH on RHEL/SUSE-like distros, so commands like this fail:
sudo k3s kubectl get nodes
# sudo: k3s: command not found
OneTrust recommends using these two safe patterns throughout your troubleshooting:
-
For scripts and documentation:
CODEsudo /usr/local/bin/k3s kubectl get nodes sudo /usr/local/bin/k3s crictl ps sudo /usr/local/bin/k3s kubectl get pods -A -
For cleaner, more temporary commands
CODEexport PATH=/usr/local/bin:$PATH sudo env "PATH=$PATH" k3s kubectl get node
Basic Health Checks
sudo systemctl status k3s
sudo journalctl -u k3s -n 200 --no-pager
sudo /usr/local/bin/k3s kubectl get nodes -o wide
sudo /usr/local/bin/k3s kubectl get pods -A
Restart and watch logs:
sudo systemctl restart k3s
sudo journalctl -u k3s -f
Verify OS / Kernel Support
sudo /usr/local/bin/k3s check-config
If this reports missing cgroup or kernel features, fix them before debugging anything else.
API Flakiness/Pods Not Reconciling
sudo /usr/local/bin/k3s kubectl get ns
sudo /usr/local/bin/k3s kubectl get --raw='/readyz?verbose'
Check node pressure:
top
df -h
K3s logs:
sudo journalctl -u k3s -n 300 --no-pager | egrep -i 'timeout|etcd|db|panic'
Disk Usage ISsues in /var/lib/rancher/k3s
sudo du -sh /var/lib/rancher/k3s/*
Ctr commands, use pruning carefully
sudo /usr/local/bin/k3s ctr images list
sudo /usr/local/bin/k3s ctr images --prune
Standard Uninstall
Always try this approach before deep cleaning. This will delete PVC data, do not run if Vault, Elasticsearch and critical data is needed. This removes binaries, systemd services, and most data — but can leave mounts/locks if K3s died badly.
sudo /usr/local/bin/k3s-uninstall.sh
Deep Clean for .lock erros, state mounts, failed reinstalls
sudo mount --make-rprivate /
sudo pkill -9 -f "k3s|kubelet|containerd|containerd-shim|runc" || true
for TREE in /var/lib/rancher/k3s /app/k3s; do
sudo awk '$5 ~ /^'${TREE//\//\\/}'(\/|$)/ {print $5}' /proc/self/mountinfo \
| sort -r \
| xargs -r -n1 sudo umount -l
done
mount | grep -E '/var/lib/rancher/k3s|/app/k3s' || echo "No mounts left under k3s trees"
sudo rm -rf /var/lib/rancher/k3s /app/k3s
Automating Microkubernetes Upgrades
Automate and secure Microkubernetes upgrades that keep clusters aligned with our latest platform version. This helps you reduce the maintenance burden and minimize compatibility and security risks with Onebox deployments.
-
On the Data Discovery menu, select Settings. The Data Discovery section in the Global Settings screen appears.
-
Go the General menu. The Worker Node Settings screen appears.
-
Enable the setting Enable Microkubernetes Auto-Upgrade.
-
Click the Save button.
-
During installation, ensure the environment variable,
export IS_GOAGENT_ENABLED, is set totrue.
-
This variable will communicate with the OneTrust cloud to confirm which version is currently operating and identify if an update is needed.
-
If there are multiple available versions listed, each one will be upgraded to order to proceed to the most current.
Credential Vault Configuration
The "Internal" option deploys HashiCorp Vault as part of the worker node installation. This is recommended for Onebox deployments.
For more information on configuring credential vaults and the supported providers, please reference Credential Vault Options for Data Sources.
Validating Microkubernetes Installation
For customers using an internal DNS server, ensure the internal VM IP address is not included in the CIDR range used by Microkubernetes to avoid collision. By default, Microkubernetes uses 10.1.0.0.
To change pods and to learn more about CIDR in clusters, please refer to Microkubernetes install documentation.
-
Check if
ufw(Uncomplicated Firewall) is installed by running the following command:CODEsudo ufw status -
If not installed, install by running the following:
CODEsudo yum install epel-release -y sudo yum install --enablerepo="epel" ufw -y sudo ufw enable -
To allow traffic on vxlan.calico, run the following:
CODEsudo ufw allow in on vxlan.calico && sudo ufw allow out on vxlan.calico -
To allow pods to communicate with each other and outside, run the following:
CODEsudo ufw default allow routed -
To check the installation and confirm no warnings, run the following:
CODEmicrok8s inspect