Key Components
To install the complete control plane on your own infrastructure, you need to install the following components:- Truefoundry Control Plane + Gateway (Shipped as a single helm chart called
truefoundry) - PostgreSQL Database (Managed or Self-Hosted with PostgreSQL >= 13)
- Blob Storage (S3, GCS, Azure Container or any other S3 compatible storage)
Compute Requirements
Truefoundry ships as a helm chart (https://github.com/truefoundry/infra-charts/tree/main/charts/truefoundry) that has configurable options to either deploy both Deployment and AI Gateway feature or just choose the one of them according to your needs. The compute requirements change based on the set of features and the scale of the number of users and requests. Here are a few scenarios that you can choose from based on your needs.- Small (Dev)
- Medium (Prod)
- Large (Prod)
| Component | CPU | Memory | Storage | Min Nodes | Remarks |
|---|---|---|---|---|---|
| Helm-Chart (AI Gateway Control Plane components) | 2 vCPU | 8GB | 60GB Persistent Volumes (Block Storage) On Kubernetes | 2 Pods should be spread over min 2 nodes | Cost: ~ $120 pm |
| Helm-Chart (AI Gateway component only) | 1 vCPU | 512Mi | - | 1 Pods should be spread over min 1 node | Cost: ~ $10 pm |
| Postgres (Deployed on Kubernetes) | 0.5 vCPU | 0.5GB | 5GB Persistent Volumes (Block Storage) On Kubernetes | PostgreSQL version >= 13 IOPS: Default (suitable for dev/testing) For PostgreSQL 17+: Disable SSL, for AWS: by setting force_ssl parameter to 0 in the parameter group, for Azure: by setting require_secure_transport parameter to false in the parameter group | |
| Blob Storage (S3 Compatible) | 20GB |
Prerequisites for Installation
- Kubernetes Cluster: K8s cluster 1.27+.
- Support for dynamic provisioning of storage for PVC (for e.g AWS EBS, Azure Disk etc.) and support for ingress controller (for e.g. Nginx Ingress Controller) or istio service mesh for exposing the control plane dashboard and AI Gateway at an endpoint.
- Domain to map the ingress of the Control Plane dashboard and AI Gateway along with certificate for the domain.
This Domain will be referred as Control Plane URL in our documentation.
- Egress access to TrueFoundry Central Auth Server: https://auth.truefoundry.com & https://login.truefoundry.com
- Tenant Name, Licence key, and image pull secret from TrueFoundry team. If you have not registered yet, please visit TrueFoundry to register.
One Tenant Name and Licence key must only be used to setup one Control Plane. Later, switching to new tenant name and licence key would lead to complete data lose of existing control plane.
- PostgreSQL database. We usually recommend managed PostgreSQL database (For e.g. AWS RDS, or Google Cloud SQL, or Azure Database for PostgreSQL) for production environments. For instance requirements, refer to the Compute Requirements section.
In case, you do not have a managed database just for testing purposes, set
devModeto true in the values file to spin up a local PostgreSQL database. - Blob Storage to store the AI Gateway request logs (either S3, GCS, Azure Blob Storage, or any other S3 compatible storage). You can find the instructions in the guide below.
Installation Instructions
- AWS
- GCP
- Azure
- Openshift
- On-Prem
Create S3 Bucket
- Make sure the bucket has lifecycle configuration to abort multipart upload set for 7 days.
- Make sure CORS is applied on the bucket with the below configuration:
Setup Control Plane Platform IAM Role
Creating AWS IAM Role for Control Plane
Creating AWS IAM Role for Control Plane
- Create a new IAM role for Control Plane with a suitable name like
tfy-control-plane-platform-deps - Add the following trust policy to the Control Plane IAM Role:
<ACCOUNT_ID>, <AWS_REGION>, and <OIDC_ID> you can also give the values from your EKS cluster.
You can find the OIDC_ID from the EKS cluster. Also, here we are assuming that the service account is truefoundry and the namespace is truefoundry, you can change it as per your needs.Create Postgres RDS Database
db.t3.medium with storage size of 30GB.devMode to true in the values file belowCreate Kubernetes Secrets
- Store the License Key and DB Credentials
- Store the Image Pull Secret
Create Kubernetes Secret for License Key and DB Credentials
Create Kubernetes Secret for License Key and DB Credentials
postgresql.auth.usernameDB_PASSWORD: randompassword # You can change this to any value here.truefoundry namespace)Create Kubernetes Secret for Image Pull Secret
Create Kubernetes Secret for Image Pull Secret
truefoundry namespace)Create HelmChart Values file
- Control Plane URL: URL that you will map to the control plane dashboard (e.g.,
https://truefoundry.example.com) - Tenant Name: Tenant name provided by TrueFoundry team
- AWS S3 Bucket Name: Name of the S3 bucket you created in the previous step (e.g.,
my-truefoundry-bucket) - AWS Region: Region of the S3 bucket you created in the previous step (e.g.,
us-west-2) - Control Plane IAM Role ARN: ARN of the IAM role you created in the previous step (e.g.,
arn:aws:iam::123456789012:role/tfy-control-plane-platform-deps)
Install Helm chart
FAQ
Can I use my Artifactory as a mirror to pull images?
Can I use my Artifactory as a mirror to pull images?
- URL:
https://tfy.jfrog.io/
Can I copy images to my own private registry?
Can I copy images to my own private registry?
truefoundry Helm Chart to identify and copy required images to your private registry.- Generic Registry
- AWS ECR Registry
- Skopeo
- Used to perform the image copy operation.
- Helm
- Used to get the list of images from the TrueFoundry Helm Chart.
<USERNAME> with the TrueFoundry registry username.Replace
<PASSWORD> with the TrueFoundry registry password.<USERNAME> with your registry username.Replace
<PASSWORD> with your registry password.Replace
<YOUR_REGISTRY> with the URL of your registry.Skopeo will use authentication details for a registry that was previously authenticated with docker login.Alternatively, you can use the --dest-user and --dest-password flags to provide the username and password for the destination registry.<TRUEFOUNDRY_HELM_CHART_VERSION> with the version of the Truefoundry
helm chart you want to use. You can find the latest version in the
changelog.Replace <TRUEFOUNDRY_HELM_VALUES_FILE> with the path to the values file you created in the Installation Instructions.Replace <DEST_REGISTRY> with the URL of your registry.How to integrate with AWS bedrock models from a different AWS account?
How to integrate with AWS bedrock models from a different AWS account?
- Add the following IAM policy to the control plane IAM role so that it can assume the IAM role of the AWS account that has the bedrock models:
- In the IAM role in the destination AWS account (which has bedrock access), add the following trust policy to allow the control plane IAM role to assume it:
- Now you can use the IAM role of the destination AWS account while integrating AWS bedrock models in the TrueFoundry AI gateway.
Do we need any NFS volumes in Kubernetes for the AI Gateway or Control Plane?
Do we need any NFS volumes in Kubernetes for the AI Gateway or Control Plane?
What is the structure of access logs
What is the structure of access logs
- logfmt
- json
Log format
Standard log format structure:| Log operator | Details |
|---|---|
| START_TIME | ISO timestamp for request start. eg. 2025-08-12 13:34:50 |
| LEVEL | info|warn|error |
| IP_ADDRESS | IP address of the caller. eg. ::ffff:10.99.55.142 |
| TENANT_NAME | Name of the tenant. eg. truefoundry |
| SUBJECT_TYPE | user|virtualaccount |
| SUBJECT_SLUG | Email or virtual account name. eg. tfy-user@truefoundry.com|demo-virtualaccount |
| MODEL_ID | Model ID. eg. openai-default/gpt-5 |
| METHOD | GET|POST|PUT |
| PATH | Path of the request. eg. /api/inference/openai/chat/completions |
| STATUS_CODE | 200|400|401|403|429|500 |
| DURATION | Duration of the request. eg. 12 |
| TRACE_ID | Trace ID of the request |
How to use SSO directly without using TrueFoundry Auth Server?
How to use SSO directly without using TrueFoundry Auth Server?
servicefoundryServer.env in the values.yaml file of truefoundry helm installation.- Openid configuration is available at
<ISSUER_URL>/.well-known/openid-configuration. - Scopes configured should include
openid,email,profileandoffline_access. - Allowed Redirect URI should be set to
<CONTROL_PLANE_URL>/auth/callback. - OIDC issuer servers should be accessible from user’s browser, TrueFoundry control plane servers and all multi zone AI Gateway servers.