Using Custom ACR with Runtime¶
This guide explains how to run a Trust3 Runtime on Azure Kubernetes Service (AKS) using images from your own Azure Container Registry (ACR) instead of pulling directly from the Trust3 Docker proxy.
The default Runtime path in Run Collector (Runtime on K8s tab) uses Basic Config and the Trust3 image hub. Use this guide when your security policy requires Advanced Config and a private ACR.
For cluster and tooling prerequisites, see System Requirements (Kubernetes section).
High-level flow:
- Create a runtime in the Trust3 portal (obtain API key and save install commands).
- Mirror required runtime images from the Trust3 registry into your ACR.
- Create the Kubernetes namespace and registry pull secret on your AKS cluster.
- Run the Helm install commands from the portal to deploy the runtime agent.
Prerequisites¶
| Requirement | Notes |
|---|---|
| Trust3 portal access | You will create the runtime here to obtain a scoped API key |
| Azure ACR | Registry created; you can push and pull images |
| AKS cluster | Cluster access via kubectl |
| Tools | docker, Azure CLI (az) for ACR auth, kubectl, helm, curl |
| ACR push access | AcrPush (or equivalent) for the identity used to mirror images |
| ACR pull access | Credentials for a Kubernetes registry pull secret (service principal, token, or ACR admin user) |
Confirm with your platform team which auth modes are standard for push (mirroring) and pull (AKS workloads).
Step 1 — Create the runtime in the Trust3 portal¶
Do this first
The scoped API key used in later steps is only available from this workflow. Creating a runtime in the portal does not deploy anything to your cluster until you run the Helm commands.
1.1 — Open the create wizard¶
- Log in to the Trust3 portal.
- Go to Settings > Runtime > Create New.
1.2 — Infrastructure Setup¶
On the Infrastructure Setup page:
- Review the prerequisites panel (for example, AKS cluster configuration, terminal access, required CLI tools) and confirm they apply to your environment. Select Download Script if provided to validate your cluster.
- Under Configuration Mode, select Advanced Config. This unlocks the Storage & Connectivity and Cloud Permissions steps for fine-tuned setup.
- Select your Cloud Provider (for example, Azure) and Region, then complete the remaining fields on this page using the in-app helper text.
- Set Runtime Name — auto-generated by default; you can rename it. This value becomes the Kubernetes namespace for the runtime deployment.
1.3 — Storage & Connectivity¶
On the Storage & Connectivity page:
-
In Custom Docker Image Repository, enter your ACR login server in Docker Repository URL (no
https://prefix), for example:Text Only This tells Trust3 to pull runtime component images from your ACR instead of the default Trust3 image hub.
-
Disable Automatic DNS Management — external endpoints are not required for this setup.
Complete any remaining required fields on this page, then continue.
Cloud Permissions — you can skip this page for now; it is not required for the custom ACR setup described in this guide.
Proceed to the Deploy step.
1.4 — Deploy (save installation commands)¶
On the Deploy page (final wizard step), the Installation Commands section provides the commands to run on a terminal connected to your AKS cluster.
You will see two blocks:
- Download values —
curl(orwget) to savevalues.yaml - Helm command —
helm upgrade --installto deploy the runtime agent
Use the copy icon on each block to copy the full command. Save both commands in a local text file — you will run them later in Part 3.
Example of what the commands look like:
| Bash | |
|---|---|
Select Done to finish creating the runtime in the portal.
Warning
Do not run these commands yet (except to copy them). Complete image mirroring and cluster preparation in Parts 1 and 2 first.
Extract your Trust3 API key¶
From the curl command, copy the value of the x-pcloud-key header (starts with pc-). The same key appears as --password and --set runtime-agent.runtimeApiKey=... in the Helm command.
Example:
| Bash | |
|---|---|
Copy the full value from your portal command (starts with pc-). Do not use example placeholders from documentation.
Use this value as TRUST3_API_KEY in the mirror script (Part 1). Store the API key and private key securely. Do not commit them to source control.
Part 1 — Mirror images to your ACR¶
Trust3 provides a bash script that copies the standard runtime image set from the Trust3 Docker proxy into your ACR.
Download the script¶
Download the mirror script, environment template, and versioned image list from Trust3 public artifacts.
Current active release: 9.2.29.2
Replace <release-version> with your Trust3 release (use 9.2.29.2 for the current active release):
| File | URL |
|---|---|
| Mirror script | https://trust3ai-artifacts.s3.amazonaws.com/runtime/mirror-images/mirror-images-to-acr.sh |
| Environment template | https://trust3ai-artifacts.s3.amazonaws.com/runtime/mirror-images/.env.example |
| Image list | https://trust3ai-artifacts.s3.amazonaws.com/runtime/mirror-images/<release-version>/images.txt |
What the script does¶
- Pulls from the Trust3 proxy:
api.na.trust3ai.com(authenticated with yourTRUST3_API_KEY) - Pushes to your ACR (
TARGET_REGISTRY) - Reads the image list from
images.txt(onerepository:tagper line; see Mirrored images) - Runs up to 4 parallel pull/tag/push jobs by default (
MIRROR_JOBS=4)
The source registry is fixed. Image names and tags are configured in images.txt. Target ACR settings are in .env.
Mirrored images¶
Default entries for release 9.2.29.2 (in images.txt for that version):
| Image | Tag |
|---|---|
config-client-java | 5cee329 |
otel/opentelemetry-collector-contrib | 0.127.0 |
privacera_diagnostic_client | a4f893c |
privacera_diagnostic_server | dc730ee |
runtime-agent | c4ceee1 |
trust3-ai-assets-collector | a4901dd |
images.txt format — one image per line, comments start with #:
| Text Only | |
|---|---|
Configuration (.env and images.txt)¶
Copy the example files and fill in your values:
| Bash | |
|---|---|
Required variables:
| Variable | Description |
|---|---|
TRUST3_API_KEY | API key from Step 1 (pc-...) |
TARGET_REGISTRY | ACR login server, e.g. myregistry.azurecr.io |
Target ACR authentication — set ACR_AUTH_MODE and the matching credentials:
| Mode | When to use | Configuration |
|---|---|---|
az-login | Local use after interactive az login | ACR_AUTH_MODE=az-login |
az-sp | CI or automation with a service principal | AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID |
token | After az login; uses short-lived ACR token | ACR_AUTH_MODE=token |
docker | Generic registry username/password (e.g. SP as docker user) | ACR_USERNAME, ACR_PASSWORD |
acr-admin | ACR admin account enabled (often disabled in production) | ACR_USERNAME, ACR_PASSWORD |
auto | Default — tries docker creds → az-sp → az login | No extra vars if one method already works |
Optional variables:
| Variable | Default | Description |
|---|---|---|
IMAGES_FILE | ./images.txt | Path to image list file |
ACR_NAME | Derived from TARGET_REGISTRY | ACR resource name for az CLI |
MIRROR_JOBS | 4 | Parallel workers; use 1 for serial |
SKIP_EXISTING | false | Skip push if tag already exists in ACR |
DRY_RUN | false | Print actions only |
Tip
Quote AZURE_CLIENT_SECRET in .env if it contains special characters (~, $, etc.).
Shell environment variables override .env. The script loads ./.env from the current directory, or .env next to the script if you run it from another path.
Running the script¶
| Bash | |
|---|---|
Verify images in ACR¶
| Bash | |
|---|---|
Part 2 — Prepare your AKS cluster¶
Complete these steps before running the Helm install commands from the portal.
Step 2.1 — Create the namespace¶
Use the namespace configured for your runtime (from your values.yaml or portal configuration):
| Bash | |
|---|---|
Step 2.2 — Create the registry pull secret¶
Create a Docker registry secret named privacera-hub-secret in the plane namespace. Standard runtime Helm charts reference this name by default.
| Bash | |
|---|---|
Warning
Create this secret before the first helm install. If the secret is missing at install time, Helm may create a registry secret using your runtime API key, which is not valid for ACR authentication.
Optional annotation to mark the secret as manually managed:
| Bash | |
|---|---|
Part 3 — Install the runtime plane¶
Return to the Installation Commands you saved from the Deploy page in Step 1.4 and run them now.
Step 3.1 — Download values.yaml¶
Run the curl (or wget) command from the portal to download the latest values.yaml:
| Bash | |
|---|---|
Confirm values.yaml references your ACR, for example:
Step 3.2 — Install the runtime agent with Helm¶
Run the Helm command from the portal Installation Commands section (copy the full command as shown — it includes your release name, namespace, runtimePrivateKey, runtimeApiKey, and credentials):
| Item | Notes |
|---|---|
<release-name> / <plane-namespace> | Shown in your portal Helm command (often the same value, e.g. azure-eastus-394) |
--password | Same pc-... API key from the curl x-pcloud-key header |
runtimePrivateKey | Included in the portal Helm command via --set |
runtimeApiKey | Always included in the portal Helm command via --set (same pc-... key as --password) |
privacera-hub-secret | Must already exist from Part 2 |
Step 3.3 — Verify the runtime agent¶
| Bash | |
|---|---|
Expect 2/2 Running (runtime-agent + diagnostics sidecar). Images should pull from your ACR:
| Text Only | |
|---|---|
Once the runtime agent is running, it polls Trust3 for configuration and automatically deploys system components (monitoring, diagnostics server, and others) into your cluster. No additional manual steps are required for those workloads.
You can monitor progress with:
Next steps — Add collectors¶
Your runtime is ready. Follow Run Collector (Runtime on K8s tab) to add the AI Assets Collector:
- Go to Settings > Runtime and open your runtime.
- Select the Collectors tab.
- Select Add New and configure the AI Assets Collector.
Registry pull secret — operations notes¶
| Topic | Guidance |
|---|---|
| Secret name | Use privacera-hub-secret |
| When to create | Once per namespace, before first Helm install |
| Rotation | Update the secret, then in the Trust3 portal restart all Collectors and system apps for the runtime (each app has a Restart option in the UI) |
| Helm upgrades | A pre-created privacera-hub-secret is not modified by routine Helm upgrades, including re-runs of the portal install command with runtimeApiKey |
Alternative: AKS–ACR integration¶
AKS–ACR attach (pulling from ACR without per-pod registry secrets) is not supported for Trust3 runtimes at this time. Support is planned for an upcoming release.
For now, use the manual privacera-hub-secret approach described in this guide.
Troubleshooting¶
| Symptom | Likely cause | Action |
|---|---|---|
401 Unauthorized pulling from ACR | Missing or wrong pull secret | Verify privacera-hub-secret exists and matches ACR creds; restart Collectors and system apps from the portal UI |
ImagePullBackOff on first install | Secret created after Helm install | Create ACR secret, restart pods — or recreate namespace and follow Part 2 before install |
| Mirror script fails on pull | Invalid TRUST3_API_KEY | Re-copy pc-... from the portal curl command |
| Mirror script fails on push | ACR auth | Try ACR_AUTH_MODE=az-login after az login, or configure az-sp / docker mode |
Useful commands:
Quick reference checklist¶
- Create runtime in Trust3 portal (Advanced Config, custom ACR URL, DNS management off)
- Save both portal commands; extract
pc-...API key from thecurlcommand - Mirror runtime images to ACR (
mirror-images-to-acr.sh, versionedimages.txt) - Create Kubernetes namespace on AKS
- Create
privacera-hub-secretwith ACR pull credentials before Helm install - Run portal
curlcommand to downloadvalues.yaml - Run portal
helm upgrade --installcommand - Verify runtime-agent pod is Running
- Confirm system components appear in the namespace (deployed automatically by the agent)
- Add collectors from Run Collector (Runtime on K8s tab)
Note — initial install vs future upgrades¶
This guide covers the initial install flow using a custom ACR (release 9.2.29.2).
Future upgrades¶
Before upgrading your runtime or applications in the Trust3 portal:
- Identify the target release version you are upgrading to.
- Download the matching
images.txtfrom S3 (image tags are version-specific):
| Bash | |
|---|---|
- Re-run the mirror script using your existing
.env(API key and ACR credentials):
| Bash | |
|---|---|
Use --skip-existing so images already present in your ACR from a prior release are not re-pulled and re-pushed.
- Proceed with the runtime upgrade in the portal.
Each release publishes its own folder under runtime/mirror-images/<version>/ on S3. The current active release is 9.2.29.2. Download the images.txt for the version you are installing or upgrading to.