Lightweight Worker Node Troubleshooting and Administration
Overview
Check the lightweight worker node status and connectivity, investigate installation or service issues, collect diagnostics, and perform administration tasks.
For deployment prerequisites, activation steps, and cloud-provider deployment instructions, see Lightweight Worker Node Deployment for AI Automations.
Managing worker node details
For managing worker node details, including its summary, jobs, services, activity, data sources, administration, and configurations in the OneTrust platform, see Managing Worker Node Details.
Access, network, and runtime requirements
You will need an account with one of the supported cloud service providers with the necessary permissions and security configurations to permit this deployment.
Required outbound URLs
The lightweight worker node VM must reach the following endpoints over port 443 from within your VPC or VNet:
|
URL |
Protocol |
Purpose |
|---|---|---|
|
|
HTTPS (443) |
Installer download, configuration synchronization, and heartbeat. |
|
|
WSS (443) |
Real-time messaging, job dispatch, and status updates. |
Tenant URL examples include app.onetrust.com, app-br.onetrust.com, app-uk.onetrust.com, uat.onetrust.com, trial.onetrust.com, and custom OneTrust domains.
If possible, safelist *.onetrust.com to cover OneTrust endpoints and future changes.
Container registry access (optional)
The lightweight worker node uses airgapped images by default. External registry access is not strictly required.
If available, safelisting docker.io/otcr can speed up installation and upgrades.
What happens when URLs are not safelisted
|
Failure point |
Symptom |
Root cause |
|---|---|---|
|
Installer download |
Cloud deployment fails at the CustomScript extension. |
The VM cannot reach the tenant URL. |
|
Pre-Helm hook |
Deployment appears to be complete, but pods fail. |
A K3s-level network failure or internal firewall drop. |
|
NATS connectivity |
Worker node becomes unhealthy; |
The VM cannot reach |
VM sizing and operating system
Lightweight worker node VMs are preconfigured with defaults in the cloud deployment templates. The minimum requirements are:
-
16 vCPU
-
64 GB RAM
-
512 GB disk
For provider-specific VM-size and operating-system options, see Lightweight Worker Node Deployment for AI Automations.
Do not go below these requirements. K3s and the lightweight worker node services require significant resources.
SSH access
SSH access is required for troubleshooting, manual debug collection, and advanced administration.
|
Cloud |
Default username |
Access method |
|---|---|---|
|
Azure |
|
SSH key or password set during ARM deployment; connect through the public IP or Azure Bastion. |
|
AWS |
|
SSH key pair selected during CloudFormation deployment; connect through the public IP or SSM Session Manager. |
|
GCP |
User-provided |
SSH key provided during Terraform deployment; connect through |
Example SSH command:
ssh -i ~/.ssh/your-key.pem onetrust@<vm-public-ip>
ssh -i ~/.ssh/your-key.pem onetrust@<vm-public-ip>
Proxy configuration
If outbound internet access from the lightweight worker node VM uses a corporate HTTP or HTTPS proxy, configure the proxy URL during cloud deployment.
Each cloud template has a proxy field in the deployment form. The proxy is applied to HTTPS traffic to the tenant URL and WSS traffic to ot01.nats.onetrust.com.
Format:
http://<proxy-ip>:<port>
Example:
http://172.18.0.12:3128
The installer sets HTTP_PROXY, HTTPS_PROXY, and NO_PROXY on the VM and within K3s.
If a TLS-inspecting proxy is used, upload the custom CA certificate through the Configurations tab on the Worker details screen after the lightweight worker node is healthy.
http://<proxy-ip>:<port>
http://172.18.0.12:3128
AI Guard
AI Guard is optional and provides real-time content filtering for AI workloads. It requires inbound port 4443 on the lightweight worker node VM.
-
Azure: Enabling AI Guard in the ARM form adds an inbound NSG rule for port 4443.
-
AWS: Enabling AI Guard in the CloudFormation form adds an inbound security-group rule for port 4443 and sets the worker-node profile to
aigov. -
GCP: The GCP Terraform template does not currently add a firewall rule for port 4443. If AI Guard is used on GCP, create the firewall rule manually.
If AI Guard is not needed, leave it disabled. It is off by default, and no inbound ports are open.
For more information, see AI Guard on the OneTrust Developer Portal. You can also visit AI Guard SDK on GitHub.
OneTrust Token and Worker Node PIN
When creating a lightweight worker node in the OneTrust platform, two values are involved:
- OneTrust Token
-
- an encoded configuration blob that contains lightweight worker node deployment configuration. It is automatically populated in the cloud deployment form whenActivateis selected from theAI Automationsscreen. Do not edit it.
- Worker Node PIN
-
- a fixed value written automatically during deployment. It does not need to be entered manually.
Understanding lightweight worker node states
|
Status |
Meaning |
What you can do |
|---|---|---|
|
Awaiting activation |
The OneTrust resource exists, but the cloud deployment is incomplete or has failed. |
Select Activate to retry or Delete to remove the OneTrust resource. |
|
Healthy |
The lightweight worker node is running, and the |
Normal operations. |
|
Unhealthy |
The heartbeat has been lost. |
Check network connectivity, pod status, and K3s health. |
The datadiscovery-onprem-agent pod sends periodic heartbeats to OneTrust. This is the lightweight worker node health indicator. If the pod is down or cannot reach the OneTrust URL, the node is marked as Unhealthy.
Deployment failure recovery
Use these instructions when cloud deployment does not complete successfully, or the lightweight worker node remains in the Awaiting activation status.
Awaiting activation after failed cloud deployment
If Activate is selected and cloud deployment fails because of insufficient permissions, quota, or network configuration:
-
The worker node remains in Awaiting activation.
-
The VM, K3s cluster, and pods may not exist yet.
-
Select Activate to return to the cloud console and retry.
-
Select Delete to remove the OneTrust worker node resource.
Deleting the worker node from the OneTrust platform does not delete cloud resources such as VMs, VNets, VPCs, NSGs, or NAT gateways. Manually remove orphaned cloud resources to avoid unnecessary costs.
Launch install
The Launch install button on the Worker details screen performs the same action as Activate on the AI Automations and redirects to the originating cloud platform:
-
Azure-created lightweight worker node: Launch in Azure.
-
AWS-created lightweight worker node: Launch in AWS.
-
GCP-created lightweight worker node: Launch in GCP.
What happens during installation
The full installation process takes approximately 20–30 minutes, including cloud infrastructure provisioning.
Installation phases
-
Cloud infrastructure.
The ARM, CloudFormation, or Terraform template creates the VPC/VNet, subnet, firewall rules, NAT gateway, where applicable, VM, disk, and startup script.
-
K3s cluster setup.
The startup script downloads and installs K3s, configures networking, waits for the node to become ready, and verifies the Kubernetes system pods.
-
Container image import.
Container images are downloaded as a compressed archive and imported into the K3s containerd image store.
-
Helm deployment.
Lightweight worker node creates the
onetrustnamespace, writes required secrets, deploys the lightweight worker node Helm chart, runs health checks, and starts GoAgent.
Common failure points
|
Phase |
Failure |
Symptom |
Log location |
|---|---|---|---|
|
Cloud infrastructure |
Quota or permissions |
ARM, CloudFormation, or Terraform deployment fails. |
Cloud-console deployment logs. |
|
K3s setup |
K3s package cannot be downloaded |
|
Bootstrap or cloud-init logs. |
|
K3s setup |
Insufficient disk space |
Less than 15 GB available. |
Bootstrap or cloud-init logs. |
|
Image import |
Slow network or insufficient disk |
Image download hangs or fails. |
|
|
Helm deployment |
K3s-level network issue |
|
Kubernetes job logs. |
|
Helm deployment |
Pod health check failure |
Deployment timeout warning. |
Pod status and logs. |
Credential provider
During lightweight worker node creation, the credential provider determines where scanner credentials, such as database passwords and API keys, are stored.
|
Cloud |
Credential provider options |
|---|---|
|
Azure |
HashiCorp Vault - Open Source or Azure Key Vault. |
|
AWS |
HashiCorp Vault - Open Source or AWS Secrets Manager. |
|
GCP |
HashiCorp Vault - Open Source or Google Secret Manager. |
HashiCorp Vault is the default option and runs a Vault pod inside the lightweight worker node K3s cluster. Cloud-native vaults use the provider’s managed secrets service and require the appropriate IAM or RBAC permissions.
Post-deployment troubleshooting
Use these instructions to identify connectivity, Kubernetes, pod, and VM issues after the lightweight worker node deployment completes.
Worker node is unhealthy
Check the following in order:
-
Can the VM reach the OneTrust tenant URL?
-
Can the VM reach
ot01.nats.onetrust.com:443over WSS? -
Is the Kubernetes cluster running?
-
Are the core pods running?
Key pods include:
-
datadiscovery-onprem-agent -
dd-workernode-ops -
scan-job-manager
If only these three pods are in CrashLoopBackOff, check NATS connectivity. Other pods may remain running while these services fail.
Pods in CrashLoopBackOff
|
Affected pods |
Likely cause |
Action |
|---|---|---|
|
|
NATS connectivity failure |
Safelist |
|
All pods |
K3s failure or VM reboot |
Check |
|
Single scanner pod |
Image pull failure or out-of-memory condition |
Check pod events: |
|
Kafka or Postgres |
Disk full or persistent-volume corruption |
Check disk: |
Installation completed but services are not starting
If the cloud deployment succeeded but the worker node is unhealthy:
sudo systemctl status k3s
kubectl get pods -n onetrust
kubectl get jobs -n onetrust
Check the update-scanner-to-version job. If it failed, the likely cause is a K3s-level network issue.
K3s recovery
If K3s is not running or the node is not ready:
sudo systemctl restart k3s
sleep 60
sudo systemctl status k3s
kubectl get nodes
If K3s fails to start, review disk space and the K3s journal:
df -h
sudo journalctl -u k3s -xe --no-pager | tail -50
K3s is installed as a systemd service and will auto-restart on VM reboot. If the service is consistently crashing, check for disk space issues (df -h) or corrupted data in /var/lib/rancher/k3s/.
Debugging tools
Use the following tools to collect diagnostic information and inspect lightweight worker node health.
Export details
The Export details option is available from Worker details > Summary.
It triggers automated debug collection through NATS and dd-workernode-ops.
Prerequisites:
-
K3s is functional.
-
dd-workernode-opsis running. -
NATS connectivity is working.
If Export details fails, use manual debug collection.
Services tab
The Services tab shows pods in the onetrust namespace and provides streaming logs.
The Services tab requires:
-
K3s to be running.
-
dd-workernode-opsto be running. -
Loki to be running.
-
The log-collection components to be healthy.
k9s
Lightweight worker nodes include k9s:
k9s -n onetrust
Use k9s to view pod status, restarts, resource usage, logs, and pod details.
Manual debug collection
SSH to the lightweight worker node VM and navigate to the deployment directory:
cd ~/onetrust-dd-installer-*/data-discovery/litenode-deployment/
./debug.sh run
Options include:
./debug.sh run upload
./debug.sh run skip-kafka
./debug.sh run include-pg-dump
./debug.sh run jobId=<uuid>
Administration scripts
For instructions on running and monitoring scripts from the Worker details > Administration tab, see Script Management for Worker Nodes.
Diagnostic scripts
|
Script |
Display name |
Description |
|---|---|---|
|
|
View Workernode Diagnostics |
Collects namespace, pod, deployment, event, resource, and image information. |
|
|
Debug Collection + Upload |
Runs debug collection and uploads the diagnostic package to OneTrust. |
Service restart and configuration scripts
|
Script |
Purpose |
|---|---|
|
|
Restarts a deployment. |
|
|
Restarts a StatefulSet such as Kafka, Postgres, or Loki. |
|
|
Changes scanner replicas. |
|
|
Sets an environment variable on a deployment and restarts the pod. |
|
|
Changes the image tag and forces an image pull. |
|
|
Pushes an environment value to cloud configuration. |
Destructive scripts
|
Script |
Description |
|---|---|
|
|
Deletes and recreates Kafka, Postgres, and Loki StatefulSets and PVCs. All scan data is lost. |
|
|
Triggers a full reinstall of the lightweight worker node Helm chart. |
|
|
Force-deletes pods in non-running states. |
Running destructive scripts carries a risk of data loss.
Configurations
For instructions on configuring worker node settings, see Managing Worker Node Details: Configurations.
Custom certificates
If a proxy or firewall performs TLS inspection, the lightweight worker node needs the custom CA certificate to establish trusted connections.
-
Open Configurations > Security and enable the Client certificates setting.
-
Paste the full PEM certificate chain, including the
BEGIN CERTIFICATEandEND CERTIFICATElines. -
Click the Save & Update button.
Lightweight worker node upgrades
Lightweight worker node upgrades are automated through GoAgent, a host-level agent installed as a systemd service on the VM.
The upgrade flow is:
-
GoAgent checks nightly for a new version.
-
GoAgent calls the OneTrust API.
-
If a new version is available, GoAgent downloads the installer.
-
GoAgent triggers the upgrade through
dd-workernode-ops. -
The new Helm chart version is applied.
dd-workernode-ops must be running for automatic upgrades to work.
GoAgent files and locations
|
Path |
Purpose |
|---|---|
|
/usr/local/bin/go-agent |
GoAgent binary (approximately 10 MB). |
|
/usr/local/bin/.goagent-envs |
Configuration, including the service URL, client credentials, proxy, and scanner ID. |
|
/usr/local/bin/start_goagent.sh |
Startup script. |
|
/usr/local/bin/goagent_common_helpers.sh |
Shared helper functions. |
|
/var/log/goagent/goagent.log |
GoAgent logs, with log rotation. |
|
/etc/systemd/system/goagent.service |
Systemd service definition. |
Verify GoAgent
sudo systemctl status goagent
cat /var/log/goagent/goagent.log
ps aux | grep go-agent
Troubleshoot failed upgrades
|
Symptom |
Possible cause |
Resolution |
|---|---|---|
|
The lightweight worker node version is stale (not upgrading) |
GoAgent stopped or crashed |
|
|
GoAgent is running, but no upgrade starts |
|
Restart dwo: use the Administration tab or |
|
GoAgent cannot reach the OneTrust API |
Network or proxy issue |
Check connectivity from VM: |
|
Upgrade downloads, but does not apply |
K3s instability or disk full |
Check |
Manual upgrade fallback
If GoAgent cannot perform the upgrade automatically, trigger the upgrade manually from the lightweight worker node VM.
-
Download the latest installer from the tenant URL:
CODEcd ~ curl -o installer.sh "https://<tenant>.onetrust.com/api/discovery-scan-config/v1/installer-config/<WORKER_NODE_ID>/download" -
Make the installer executable and extract the package:
CODEchmod +x installer.sh ./installer.sh extract-zip -
Navigate to the extracted lightweight worker node deployment directory:
CODEcd ~/onetrust-dd-installer-litenode-onetrust-<new-version>/data-discovery/litenode-deployment/ -
Run the installation script:
CODE./deploy.sh install
The default Worker Node PIN is 1111. Find the Worker Node ID in /usr/local/bin/.goagent-envs, listed as SCANNER_IDENTIFIER.
Expected pods reference
A healthy lightweight worker node runs 18 pods, or 17 if AI Guard is disabled.
|
Pod |
Purpose |
|---|---|
|
|
Core agent, heartbeat, job coordination, and data upload. |
|
|
Scan task orchestration through Kafka. |
|
|
Remote administration, script execution, and NATS integration. |
|
|
Document parsing. |
|
|
Database scanning. |
|
|
Cloud storage scanning. |
|
|
Microsoft 365 scanning. |
|
|
SaaS application scanning. |
|
|
AI model and agent discovery. |
|
|
Metrics collection and forwarding. |
|
|
Workflow orchestration. |
|
|
Temporal dashboard. |
|
|
Real-time AI content filtering when enabled. |
|
|
Message broker for scan task distribution. |
|
|
Metadata database for scan jobs and configuration. |
|
|
Log aggregation for the Services tab. |
|
|
Internal credential storage when HashiCorp Vault is selected. |
|
|
Kafka KRaft controller. |
Check pod status with:
kubectl get pods -n onetrust
# or use k9s:
k9s -n onetrust
VM-level reference
Key paths
|
Path |
Purpose |
|---|---|
|
|
Extracted installer directory. |
|
|
Deployment and upgrade script. |
|
|
Debug collection script. |
|
|
Core installation configuration. |
|
|
Environment variables. |
|
|
lightweight worker node-specific configuration. |
|
|
Current installed version. |
|
|
K3s binary. |
|
|
Kubectl binary. |
|
|
K9s terminal UI. |
|
|
GoAgent binary. |
|
|
GoAgent configuration. |
|
|
GoAgent logs. |
|
|
K3s data directory. |
Common VM commands
# Check k3s status
sudo systemctl status k3s
# View all pods
kubectl get pods -n onetrust
# View pod logs
kubectl logs deployment/datadiscovery-onprem-agent -n onetrust --tail=100
# Check LiteNode version
cat ~/onetrust-dd-installer-*/data-discovery/litenode-deployment/worker_node_version.sh
# Check disk usage
df -h
# Check GoAgent
sudo systemctl status goagent
# Launch k9s
k9s -n onetrust
# Run debug collection
cd ~/onetrust-dd-installer-*/data-discovery/litenode-deployment/
./debug.sh run# Check k3s status
sudo systemctl status k3s
# View all pods
kubectl get pods -n onetrust
# View pod logs
kubectl logs deployment/datadiscovery-onprem-agent -n onetrust --tail=100
# Check LiteNode version
cat ~/onetrust-dd-installer-*/data-discovery/litenode-deployment/worker_node_version.sh
# Check disk usage
df -h
# Check GoAgent
sudo systemctl status goagent
# Launch k9s
k9s -n onetrust
# Run debug collection
cd ~/onetrust-dd-installer-*/data-discovery/litenode-deployment/
./debug.sh run
Data flow and security
Only metadata and classification results are sent to OneTrust cloud. Raw data, including database rows, file contents, and document text, remains within the lightweight worker node VM and customer environment.
|
Data type |
Direction |
Destination |
|---|---|---|
|
Heartbeat and health status |
Outbound |
|
|
Scan metadata |
Outbound |
|
|
Job status updates |
Outbound over WSS |
|
|
Configuration synchronization |
Bidirectional |
|
|
Container images and K3s packages |
Download |
|
|
Raw data |
Never leaves |
Customer environment and lightweight worker node VM. |
Disk usage and management
The 512 GB disk hosts K3s data, container images, and persistent volumes for Kafka, Postgres, and Loki.
The following components can consume disk space over time:
-
Loki logs, especially when scanner debug logging is enabled.
-
Kafka data from long-running scans with many tasks.
-
Postgres data containing scan job metadata and task records.
-
Container images retained in the K3s image store after upgrades.
To check disk usage on the VM, run:
df -h
To check persistent-volume usage, run:
kubectl exec -n onetrust kafka-0 -- df -h /bitnami/kafka
kubectl exec -n onetrust postgres-0 -- df -h /var/lib/postgresql
kubectl exec -n onetrust loki-0 -- df -h /data
If disk usage is high, remove obsolete installer directories and prune unused K3s images:
rm -rf ~/onetrust-dd-installer-litenode-onetrust-<old-version>/
sudo k3s crictl rmi --prune
If Loki is responsible for high disk usage, restart the Loki StatefulSet using restart_sts with STATEFULSET_NAME=loki.
As a last resort, run reset_wn to delete and recreate all StatefulSet persistent volume claims (PVCs). Running this script permanently deletes scan data.
Backup and Recovery Considerations
A lightweight worker node can be recreated if its VM is lost. However, local K3s state, Kafka topics, Postgres scan history, Loki logs, and Internal Vault credentials may not be recoverable. If HashiCorp Vault (Internal) is used, back up the datasource credentials before replacing the worker node or performing recovery actions. Recovery actions may result in data loss.
Support and escalation
Use Get help in the OneTrust platform to open the support process.
Attach or provide:
-
Worker node ID
-
Tenant URL
-
Cloud provider
-
Debug zip from the worker node's Export details option, or run
./debug.sh run uploadfrom the VM -
Screenshots of portal or cloud-console errors
-
Timeline of the issue and changes (Network, firewall, proxy, or VM restart that occurred before the issue)
FAQ
How long does lightweight worker node deployment take?
Deployment takes approximately 20–30 minutes end-to-end, including cloud infrastructure provisioning, K3s installation, container image download, and Helm deployment.
How many pods should I see on a healthy lightweight worker node?
A healthy lightweight worker node has 18 pods, or 17 when AI Guard is disabled.
My lightweight worker node shows Awaiting activation. What do I do?
The cloud deployment either failed or was not completed. Select Activate to retry the deployment, or select Delete to remove the worker node resource. If you delete the resource, manually clean up any orphaned cloud resources.
Why is my lightweight worker node unhealthy after deployment succeeded?
The most likely cause is a network issue. Verify that the VM can reach the OneTrust tenant URL and NATS:
curl -I https://<tenant>.onetrust.com
curl -I https://ot01.nats.onetrust.com
Only scan-job-manager, dd-workernode-ops, and datadiscovery-onprem-agent are failing. What is happening?
This is the typical NATS connectivity failure pattern. These three pods require NATS to function. Ensure that ot01.nats.onetrust.com:443 is allowlisted for WSS traffic.
The Export details button does not work. How do I collect debug data?
Export details requires K3s, dd-workernode-ops, and NATS connectivity to be functional. If Export details is unavailable, connect to the VM and run:
./debug.sh run
The Administration tab shows an error. What is wrong?
The Administration tab requires dd-workernode-ops to be running. If this pod is down, the tab may show a service-unavailable message. Check and restore the pod before using administration features.
How do I check which version my lightweight worker node is running?
Run the following command on the lightweight worker node VM:
cat ~/onetrust-dd-installer-*/data-discovery/litenode-deployment/worker_node_version.sh
You can also view the version in the Activity tab on the Worker details screen.
How do I know if my lightweight worker node is upgrading automatically?
Check the GoAgent logs:
cat /var/log/goagent/goagent.log
Upgrades run nightly. If the version has not changed, check that the GoAgent service is active and that dd-workernode-ops is running.
Can I manually upgrade my lightweight worker node?
Yes. Manual upgrades require network access to the OneTrust API and a stable K3s cluster. Follow the steps in the Manual upgrade fallback section.
Does deleting the worker node from the portal delete my cloud VM?
No. Deleting the worker node from OneTrust does not delete cloud resources. Manually clean up the VM, VNet or VPC, NSG or security group, and other associated resources to avoid ongoing costs.
What namespace do lightweight worker node pods run in?
Lightweight worker node pods run in the fixed onetrust namespace. This namespace cannot be changed.
What is the default disk size, and can it be changed?
The default disk size is 512 GB across all supported cloud providers. You can increase the disk size during cloud deployment if needed; 512 GB is the recommended default.
Does raw data leave my network?
No. Only metadata, classification results, and health or status telemetry are sent to OneTrust Cloud. Raw data, including database contents and file data, remains within the lightweight worker node VM and your network.
What should I do if the disk is full?
Check the disk-management guidance. The main actions are to delete old installer directories, prune unused container images, restart Loki if necessary, and use reset_wn only as a last resort. Running destructive scripts carries a risk of data loss.
Can I have multiple lightweight worker nodes?
No. You can create only one lightweight worker node per tenant. AI Governance and Data Mapping (Privacy Automation) use the same lightweight worker node when the required SKU or license is enabled.
Is there a backup or disaster-recovery process?
Lightweight worker nodes are designed to be replaceable, and scan results are synchronized to OneTrust Cloud. If the VM is lost, create a new lightweight worker node. Datasource credentials stored in Internal Vault are the primary data at risk; back them up before replacing the worker node or performing recovery actions.