Before You Begin¶
This page lists everything to have ready before you create a runtime plane, with the commands to set each piece up. The portal wizard (Settings → Runtime Plane) collects the same information and shows the same guidance in context.
Replace <placeholders> in the commands with your values. If you have not picked a deployment type yet, start with Deployment Options.
Kubernetes cluster¶
You provide a Kubernetes cluster on AWS (EKS), Azure (AKS), or Google Cloud (GKE). The wizard asks you to confirm each prerequisite before it lets you continue, and offers a Download Script that auto-verifies the CLI tools, Kubernetes version, and Metrics Server on your cluster.
| Requirement | Details |
|---|---|
| EKS cluster | Kubernetes v1.34 or later. Nodes must be r5.2xlarge or a similar instance type with equivalent compute and memory. Node group configured with a minimum of 1 and a maximum of 10 nodes. |
| Terminal access | A terminal with network connectivity to the EKS cluster API server and cluster-admin permissions, to create global resources such as namespaces and storage classes. |
| Command-line tools | AWS CLI v2.12.0+, kubectl v1.34+, Helm v3.9.0+, and curl or wget. Optional: k9s for interactive cluster monitoring. |
| Metrics Server | Must be installed and running — see below. |
| Outbound access | The cluster must allow outbound (egress) HTTPS traffic to https://api.privaceracloud.com so the Runtime Agent can reach the control plane. |
Verify terminal access
| Bash | |
|---|---|
Ensure the asterisk (*) is next to the correct cluster name.
| Bash | |
|---|---|
This must return yes. If it returns no, you do not have sufficient permissions to proceed.
Install the Metrics Server
The Kubernetes Metrics Server provides resource metrics for pods and nodes, which are essential for monitoring and autoscaling. Check whether it is already installed:
| Bash | |
|---|---|
If not, install it. For EKS, specific flags are needed to handle TLS certificates:
| Bash | |
|---|---|
Verify (metrics may take 1–2 minutes to appear):
| Bash | |
|---|---|
| Requirement | Details |
|---|---|
| AKS cluster | Kubernetes v1.34 or later. Nodes must be Standard_E8s_v3 or a similar VM size with equivalent compute and memory. Node pool configured with a minimum of 1 and a maximum of 10 nodes. |
| Terminal access | A terminal with network connectivity to the AKS cluster API server and cluster-admin permissions. |
| Command-line tools | Azure CLI v2.50.0+, kubectl v1.34+, Helm v3.9.0+, and curl or wget. Optional: k9s for interactive cluster monitoring. |
| Metrics Server | Must be installed and running — see below. |
| Outbound access | The cluster must allow outbound (egress) HTTPS traffic to https://api.privaceracloud.com so the Runtime Agent can reach the control plane. |
Verify terminal access
Connect to your AKS cluster:
| Bash | |
|---|---|
| Bash | |
|---|---|
Ensure the asterisk (*) is next to the correct cluster name.
| Bash | |
|---|---|
This must return yes.
Install the Metrics Server
Check whether it is already installed:
| Bash | |
|---|---|
If not, install it using the official manifest:
| Bash | |
|---|---|
Verify (metrics may take 1–2 minutes to appear):
| Bash | |
|---|---|
| Requirement | Details |
|---|---|
| GKE cluster | Kubernetes v1.34 or later. Both Standard and Autopilot clusters are supported. Nodes must be n2-standard-8 or a similar machine type with equivalent compute and memory. Node pool autoscaling from 1 to 10 nodes. |
| Terminal access | A terminal with Kubernetes Engine Cluster Admin or equivalent permissions, to create global resources such as namespaces and storage classes. |
| Command-line tools | Google Cloud SDK 450.0.0+, kubectl v1.34+, Helm v3.9.0+, and curl or wget. Optional: k9s for interactive cluster monitoring. |
| Metrics Server | Must be installed and running — see below. |
| Outbound access | The cluster must allow outbound (egress) HTTPS traffic to https://api.privaceracloud.com so the Runtime Agent can reach the control plane. |
Verify terminal access
Connect to your GKE cluster:
| Bash | |
|---|---|
| Bash | |
|---|---|
Ensure the asterisk (*) is next to the correct cluster name.
| Bash | |
|---|---|
This must return yes.
Install the Metrics Server
Check whether it is already installed:
| Bash | |
|---|---|
If not, install it using the official manifest:
| Bash | |
|---|---|
Verify (metrics may take 1–2 minutes to appear):
| Bash | |
|---|---|
You provide a Kubernetes cluster on AWS (Amazon EKS). The wizard asks you to confirm each prerequisite before it lets you continue, and offers a Download Script that auto-verifies the CLI tools, Kubernetes version, and Metrics Server on your cluster.
| Requirement | Details |
|---|---|
| EKS cluster | Kubernetes v1.34 or later. Nodes must be r5.2xlarge or a similar instance type with equivalent compute and memory. Node group configured with a minimum of 1 and a maximum of 10 nodes. |
| Terminal access | A terminal with network connectivity to the EKS cluster API server and cluster-admin permissions, to create global resources such as namespaces and storage classes. |
| Command-line tools | AWS CLI v2.12.0+, kubectl v1.34+, Helm v3.9.0+, and curl or wget. Optional: k9s for interactive cluster monitoring. |
| Metrics Server | Must be installed and running — see below. |
| AWS Load Balancer Controller | Installed on the cluster — see DNS and ingress. |
| OIDC provider (IRSA) | The cluster's OpenID Connect provider must be associated with IAM — see Cloud permissions. |
Verify terminal access
| Bash | |
|---|---|
Ensure the asterisk (*) is next to the correct cluster name.
| Bash | |
|---|---|
This must return yes. If it returns no, you do not have sufficient permissions to proceed.
Install the Metrics Server
The Kubernetes Metrics Server provides resource metrics for pods and nodes, which are essential for monitoring and autoscaling. Check whether it is already installed:
| Bash | |
|---|---|
If not, install it. For EKS, specific flags are needed to handle TLS certificates:
| Bash | |
|---|---|
Verify (metrics may take 1–2 minutes to appear):
| Bash | |
|---|---|
Decisions to make¶
These apply to both deployment types:
| Decision | Details |
|---|---|
| Region | The cloud region where your cluster runs. |
| Runtime name | Auto-generated, but you can personalize it. It becomes the Kubernetes namespace for the runtime plane: lowercase letters, numbers, and hyphens only; 6–44 characters. The resource names below (trust3-<runtime-name>-role and similar) derive from it. |
| Auto Upgrade | On by default — the runtime plane follows the latest release. Turn it off if you want to pin a specific version. |
Storage, database, and secrets¶
All optional to start with — by default, credentials are encrypted in the browser and stored in the Trust3 database, and no bucket or external database is needed. Depending on what you plan to run:
| Needed when | What to have ready |
|---|---|
| You plan to create connectors | Persistent storage for connector workloads — on AWS, an EFS file system with the CSI driver (see the AWS tab). |
| You need audit logs in your own bucket (compliance) | A storage bucket in the same region as your cluster. |
| You want credentials in your own secret store | A secret in your cloud secret manager, or a Kubernetes Secret in the runtime namespace. |
S3 bucket
Trust3 uses an S3 bucket to store runtime data and configuration. Create a dedicated bucket in the same AWS region as your EKS cluster. Naming rules: 3–63 characters, lowercase letters, numbers, and hyphens only; globally unique across all AWS accounts.
Keep server-side encryption (SSE-S3 or SSE-KMS) enabled and leave block-public-access enabled (the default). The IAM role from Cloud permissions must have S3 access to this bucket.
Verify access:
| Bash | |
|---|---|
EFS file system + CSI driver — needed for connector persistent storage
Create an EFS file system in the same VPC and region as your EKS cluster, with security groups allowing NFS traffic (port 2049) between the EKS nodes and the EFS mount targets. Install the AWS EFS CSI Driver.
Enable delete access point
Enable the delete access point option when installing the CSI driver, so the root volume created for a Persistent Volume in EFS is automatically deleted when you remove the PV/PVC from the cluster. Without it, deleted volumes leave data behind in EFS, increasing storage usage and costs.
Helm (values.yaml):
| YAML | |
|---|---|
YAML (controller args):
Verify the driver:
| Bash | |
|---|---|
| Bash | |
|---|---|
Find your file system ID (fs-...):
| Bash | |
|---|---|
The EFS ID cannot be changed after setup.
Secret store options
By default, no setup is needed — credentials are encrypted in your browser with a per-runtime public key, and only your runtime can decrypt them with its private key. To use your own store instead:
Kubernetes Secret — a single secret in the runtime namespace; each connector credential is one key in its data map. If a value changes later, restart the affected connector from the portal.
| Bash | |
|---|---|
AWS Secrets Manager — a secret in the same region as your cluster; connector credentials are keys in its JSON payload. Access is granted through the IAM role in Cloud permissions.
Blob storage — for audit logs in your own storage
You need a storage account and a blob container inside it, both in the same Azure region as your AKS cluster.
| Bash | |
|---|---|
| Bash | |
|---|---|
The managed identity from Cloud permissions needs the Storage Blob Data Contributor role on this container.
Secret store options
By default, no setup is needed — credentials are encrypted in your browser and only your runtime can decrypt them. To use your own store instead:
Kubernetes Secret — same as on other clouds:
| Bash | |
|---|---|
Azure Key Vault — create a vault in the same region as your AKS cluster; each connector credential is an individual secret in the vault. The vault name must be globally unique (3–24 characters, alphanumeric and hyphens only). If a secret changes later, restart the affected connector from the portal.
| Bash | |
|---|---|
The managed identity from Cloud permissions needs the Key Vault Secrets User role on the vault.
GCS bucket — for audit logs in your own storage
Create a bucket in the same GCP region as your GKE cluster. Naming rules: 3–63 characters — lowercase letters, numbers, hyphens, and underscores; globally unique across all GCP projects. Uniform bucket-level access is recommended; keep public access prevention enabled.
| Bash | |
|---|---|
The service account from Cloud permissions needs Storage Object Admin on this bucket.
Verify access:
| Bash | |
|---|---|
Secret store options
By default, no setup is needed — credentials are encrypted in your browser and only your runtime can decrypt them. To use your own store instead:
Kubernetes Secret — same as on other clouds:
| Bash | |
|---|---|
Google Secret Manager — a secret in the same project as your GKE cluster. If a value changes later, restart the affected connector from the portal.
| Bash | |
|---|---|
The service account from Cloud permissions needs Secret Manager Secret Accessor.
S3 bucket — required
Trust3 uses an S3 bucket to store runtime data and configuration. Create a dedicated bucket in the same AWS region as your EKS cluster. Naming rules: 3–63 characters, lowercase letters, numbers, and hyphens only; globally unique across all AWS accounts. The bucket name cannot be changed after setup.
Keep server-side encryption (SSE-S3 or SSE-KMS) enabled and leave block-public-access enabled (the default). The IAM role from Cloud permissions must have S3 access to this bucket.
Verify access:
| Bash | |
|---|---|
EFS file system + CSI driver — required unless you bring your own StorageClass
Create an EFS file system in the same VPC and region as your EKS cluster, with security groups allowing NFS traffic (port 2049) between the EKS nodes and the EFS mount targets. Install the AWS EFS CSI Driver.
Enable delete access point
Enable the delete access point option when installing the CSI driver, so the root volume created for a Persistent Volume in EFS is automatically deleted when you remove the PV/PVC from the cluster. Without it, deleted volumes leave data behind in EFS, increasing storage usage and costs.
Helm (values.yaml):
| YAML | |
|---|---|
YAML (controller args):
Verify the driver:
| Bash | |
|---|---|
| Bash | |
|---|---|
Find your file system ID (fs-...):
| Bash | |
|---|---|
The EFS ID cannot be changed after setup. Alternatively, turn StorageClass provisioning off in the wizard and provide the name of an existing Kubernetes StorageClass instead.
Database — required
Trust3 services need a relational database for metadata and policy storage. Pick one:
| Option | Details | Recommended for |
|---|---|---|
| Native | Trust3 deploys an in-cluster database. No external database or secret needed. Data durability is tied to the cluster. | Testing and staging |
| MySQL | Amazon Aurora MySQL 3.x (MySQL 8.0 compatible), db.r6g.2xlarge (8 vCPU, 64 GB RAM) or larger, password authentication only. | Production |
| PostgreSQL | Amazon Aurora PostgreSQL 16 or later, db.r6g.2xlarge (8 vCPU, 64 GB RAM) or larger, password authentication only. | Production |
For an external database, provision it before you start:
Find your DB subnet group and security group. You need a DB subnet group for the cluster VPC with at least two private subnets across different availability zones, and a security group allowing inbound 3306 (MySQL) / 5432 (PostgreSQL) from the EKS node CIDR.
| Bash | |
|---|---|
| Bash | |
|---|---|
If you do not know your VPC ID, find it from the EKS cluster:
| Bash | |
|---|---|
Provision the cluster and writer instance. Set your values, then create the cluster — PostgreSQL:
MySQL:
Wait until the cluster status shows available (about 10 minutes), then get the writer endpoint — this is your DB_HOST:
| Bash | |
|---|---|
Create the database. Connect to the instance and create the database — MySQL needs charset latin1, collation latin1_swedish_ci:
| Bash | |
|---|---|
| SQL | |
|---|---|
| Bash | |
|---|---|
| SQL | |
|---|---|
Create the database secret. A secret holding the connection details as five keys — host, port, db, username, password — in whichever secret store you choose below. As a Kubernetes Secret:
| Bash | |
|---|---|
Or in AWS Secrets Manager:
| Bash | |
|---|---|
Verify all five keys are present:
| Bash | |
|---|---|
| Bash | |
|---|---|
Expected output: ["db","host","password","port","username"]
Secrets provider — choose where connector credentials live:
Trust3 DB (End-To-End Encrypted) — the default; no setup. Credentials are encrypted in your browser using a per-runtime public key and stored in the database running in your instance. Only your runtime can decrypt them with its private key. If the runtime is deleted or its private key is lost, encrypted credentials cannot be recovered and must be re-entered.
Kubernetes Secret — a single secret in the runtime namespace; each connector credential is one key in its data map. If a value changes later, restart the affected connector from the portal.
| Bash | |
|---|---|
AWS Secrets Manager — a secret in the same region as your cluster; connector credentials are keys in its JSON payload. Access is granted through the IAM role in Cloud permissions.
| Bash | |
|---|---|
With Kubernetes Secrets or AWS Secrets Manager, the database connection keys above must live in that same secret.
DNS and ingress¶
Optional to start with — needed as soon as a service must be reachable at a hostname (for example Dataserver, or a custom corporate domain for service endpoints).
AWS Load Balancer Controller
Required for managing ingress traffic: it provisions Application Load Balancers based on Kubernetes Ingress resources. Install it following the AWS Load Balancer Controller guide, then verify:
| Bash | |
|---|---|
You should see the pods in Running state (typically 2 replicas).
Route 53 hosted zone
Trust3 uses a Route 53 hosted zone to manage DNS records for the service endpoints (for example *.trust3.yourdomain.com).
- Automatic DNS: Trust3 creates, updates, and deletes the records for you. Requires the IAM role from Cloud permissions to have Route 53 access.
- Manual DNS: you create the records yourself after deployment; Trust3 provides the required record values.
Find your hosted zone:
| Bash | |
|---|---|
If you do not have a hosted zone yet, create one in Route 53 and delegate it from your parent domain's DNS — common for a subdomain like trust3.yourdomain.com.
ACM certificate
The certificate must cover the service endpoint domain (for example *.trust3.yourdomain.com) and be in the same AWS region as your EKS cluster. It can be a public certificate issued by ACM or an existing certificate imported into ACM. Find its ARN:
| Bash | |
|---|---|
ARN format: arn:aws:acm:<region>:<account-id>:certificate/<certificate-id>
ALB subnets — at least two subnet IDs where the Application Load Balancers will reside.
ALB group name (optional) — ingresses in the same group share one Application Load Balancer. Defaults to trust3ai.
Azure DNS zone
Trust3 uses an Azure DNS zone to manage DNS records for the service endpoints (for example *.trust3.yourdomain.com).
- Automatic DNS: Trust3 creates, updates, and deletes the records for you. Requires the managed identity from Cloud permissions to have the DNS Zone Contributor role.
- Manual DNS: you create the records yourself after deployment; Trust3 provides the required record values.
Find your DNS zone:
| Bash | |
|---|---|
If you do not have one yet, create it and delegate from your parent domain's DNS:
| Bash | |
|---|---|
TLS certificate (Kubernetes secret)
You need a CA-signed TLS certificate and key — a single wildcard certificate (for example *.corp.example.com) covers all Trust3 service endpoints on your domain. Have the certificate and key ready before installation, then create the TLS secret in your cluster. The secret name privacera-external-tls and the runtime namespace are fixed.
| Bash | |
|---|---|
PEM format:
| Bash | |
|---|---|
PFX/P12 format — conversion needs OpenSSL (check with openssl version; drop the -legacy flag on OpenSSL versions below 3.x):
| Bash | |
|---|---|
On certificate renewal, replace the secret:
Cloud DNS managed zone
Trust3 uses a Cloud DNS managed zone to manage DNS records for the service endpoints (for example *.trust3.yourdomain.com).
- Automatic DNS: Trust3 creates, updates, and deletes the records for you. Requires the service account from Cloud permissions to have the DNS Admin role.
- Manual DNS: you create the records yourself after deployment; Trust3 provides the required record values.
Find your managed zone:
| Bash | |
|---|---|
If you do not have one yet, create it and delegate from your parent domain's DNS:
| Bash | |
|---|---|
TLS certificate (Kubernetes secret)
You need a CA-signed TLS certificate and key — a single wildcard certificate (for example *.corp.example.com) covers all Trust3 service endpoints on your domain. Have the certificate and key ready before installation, then create the TLS secret in your cluster. The secret name privacera-external-tls and the runtime namespace are fixed.
| Bash | |
|---|---|
PEM format:
| Bash | |
|---|---|
PFX/P12 format — conversion needs OpenSSL (check with openssl version; drop the -legacy flag on OpenSSL versions below 3.x):
| Bash | |
|---|---|
On certificate renewal, replace the secret:
All required.
AWS Load Balancer Controller
Required for managing ingress traffic: it provisions Application Load Balancers based on Kubernetes Ingress resources. Install it following the AWS Load Balancer Controller guide, then verify:
| Bash | |
|---|---|
You should see the pods in Running state (typically 2 replicas).
Route 53 hosted zone
Trust3 uses a Route 53 hosted zone to manage DNS records for all service endpoints (for example *.trust3.yourdomain.com). The domain name you enter in the wizard must match the hosted zone name.
- Automatic DNS (default): Trust3 creates, updates, and deletes the records for you. Requires the IAM role from Cloud permissions to have Route 53 access.
- Manual DNS: you create the records yourself after deployment; Trust3 provides the required record values.
Find your hosted zone:
| Bash | |
|---|---|
If you do not have a hosted zone yet, create one in Route 53 and delegate it from your parent domain's DNS — common for a subdomain like trust3.yourdomain.com.
ACM certificate
The certificate must cover the service endpoint domain (for example *.trust3.yourdomain.com) and be in the same AWS region as your EKS cluster. It can be a public certificate issued by ACM or an existing certificate imported into ACM. Find its ARN:
| Bash | |
|---|---|
ARN format: arn:aws:acm:<region>:<account-id>:certificate/<certificate-id>
ALB subnets — at least two subnet IDs where the Application Load Balancers will reside.
ALB group name (optional) — ingresses in the same group share one Application Load Balancer. Defaults to trust3ai.
Cloud permissions¶
Optional to start with — a cloud identity becomes required as soon as the runtime plane touches a cloud service (your own bucket, your own secret manager, or automatic DNS). The wizard's Cloud Permissions step shows the same commands with your values filled in.
Create an IAM role named trust3-<runtime-name>-role that Trust3 services assume through the cluster's OIDC provider (IRSA). You can use an existing role if the trust relationship and policy match.
Create the role
Set your EKS cluster name, then create the role with the OIDC trust policy:
Retrieve the role ARN (this is what you enter in the wizard):
| Bash | |
|---|---|
OIDC provider not associated?
If your EKS cluster does not have an OIDC provider associated with IAM, create one first — see the AWS IRSA documentation:
| Bash | |
|---|---|
Attach the permissions policy
Attach one inline policy named Trust3PermissionsPolicy. Include only the statements for the services you configured — Secrets Manager (your own secret store), S3 (your own bucket), Route 53 (automatic DNS):
Trust relationship for an existing role
If you reuse an existing role, set its trust policy — replace <oidc-arn> and <oidc-url> with your cluster's OIDC provider values:
| JSON | |
|---|---|
Apply it — put the JSON above in a TRUST_POLICY variable, then:
| Bash | |
|---|---|
Find your OIDC values:
| Bash | |
|---|---|
Remove https:// from the output to get <oidc-url>; the matching <oidc-arn> is arn:aws:iam::<account-id>:oidc-provider/<oidc-url>.
Create a User-Assigned Managed Identity named trust3-<runtime-name>-identity and a federated credential so Kubernetes service accounts in the runtime namespace can authenticate as it via Workload Identity. You can use an existing identity if the configuration matches.
Create the managed identity
| Bash | |
|---|---|
Retrieve the Client ID (this is what you enter in the wizard):
| Bash | |
|---|---|
Create the federated identity credential
Find your AKS OIDC issuer URL:
| Bash | |
|---|---|
Workload Identity not enabled on your AKS cluster?
Enable it first — see the AKS Workload Identity documentation:
| Bash | |
|---|---|
Role assignments
Assign only the roles for the services you configured:
Storage Blob Data Contributor — when using your own blob container:
| Bash | |
|---|---|
DNS Zone Contributor — when using automatic DNS management:
| Bash | |
|---|---|
Key Vault Secrets User — when using Azure Key Vault as the secret store:
Create a GCP service account named trust3-<runtime-name>-sa and bind it to the runtime's Kubernetes service account via Workload Identity. You can use an existing service account if the email and bindings match.
Create the service account
| Bash | |
|---|---|
Retrieve the service account email (this is what you enter in the wizard — format trust3-<runtime-name>-sa@<project-id>.iam.gserviceaccount.com):
| Bash | |
|---|---|
Workload Identity binding — always required when using the service account:
| Bash | |
|---|---|
Workload Identity not enabled on your GKE cluster?
Enable it first — see the GKE Workload Identity documentation:
Role bindings
Grant only the roles for the services you configured:
Storage Object Admin (roles/storage.objectAdmin) — when using your own GCS bucket:
| Bash | |
|---|---|
DNS Administrator (roles/dns.admin) — when using automatic DNS management:
| Bash | |
|---|---|
Secret Manager Secret Accessor (roles/secretmanager.secretAccessor) — when using Google Secret Manager as the secret store:
Required — S3 and DNS access are always configured on Self-Managed. Create an IAM role named trust3-<runtime-name>-role that Trust3 services assume through the cluster's OIDC provider (IRSA). You can use an existing role if the trust relationship and policy match. The wizard's Cloud Permissions step shows the same commands with your values filled in.
Create the role
Set your EKS cluster name, then create the role with the OIDC trust policy:
Retrieve the role ARN (this is what you enter in the wizard):
| Bash | |
|---|---|
OIDC provider not associated?
If your EKS cluster does not have an OIDC provider associated with IAM, create one first — see the AWS IRSA documentation:
| Bash | |
|---|---|
Attach the permissions policy
Attach one inline policy named Trust3PermissionsPolicy. The S3 and Route 53 statements are always needed on Self-Managed; include the Secrets Manager statement only when AWS Secrets Manager is your secret store:
Trust relationship for an existing role
If you reuse an existing role, set its trust policy — replace <oidc-arn> and <oidc-url> with your cluster's OIDC provider values:
| JSON | |
|---|---|
Apply it — put the JSON above in a TRUST_POLICY variable, then:
| Bash | |
|---|---|
Find your OIDC values:
| Bash | |
|---|---|
Remove https:// from the output to get <oidc-url>; the matching <oidc-arn> is arn:aws:iam::<account-id>:oidc-provider/<oidc-url>.
At deploy time¶
The portal shows the API key and private key for the runtime plane only once, together with the generated install commands (for Self-Managed, this includes the platform-bundle download). Have a secure place ready to store them before you start.
After running the install commands, verify all pods come up in Running state:
| Bash | |
|---|---|
- Prev topic: Deployment Options
- Next topic: Support Matrix