Key Components
To install the control plane on your generic Kubernetes infrastructure, you need to install the following components:- TrueFoundry Control Plane (Shipped as a helm chart called
truefoundry) - PostgreSQL Database (Managed or Self-Hosted with PostgreSQL >= 13)
- Blob Storage (S3, Minio, 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 deploy the control plane according to your needs. The compute requirements change based on 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 (Control Plane components) | 4 vCPU | 8GB | 60GB Persistent Volumes (Block Storage) On Kubernetes | 2 Pods should be spread over min 2 nodes | |
| 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) | |
| Blob Storage (S3 Compatible) | 20GB |
Prerequisites for Installation
- Kubernetes Cluster: K8s cluster 1.27+
-
Support for dynamic provisioning of storage for PVC (such as local storage provisioners, NFS, Longhorn, OpenEBS, or other on-premises storage solutions) and support for exposing the control plane dashboard via an ingress controller:
- Ingress controller (e.g., Nginx Ingress Controller)
- Istio service mesh
-
Domain to map the ingress of the Control Plane dashboard 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.comhttps://login.truefoundry.com
-
Tenant Name, Licence key, and image pull secret - This will be given by TrueFoundry team. Make sure your organization is registered((https://truefoundry.com/register)) on TrueFoundry.
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 (version >= 13). We recommend managed PostgreSQL database for production environments. For instance requirements, refer to the Compute Requirements section.
In case you do not have a managed database for testing purposes, set
devModeto true in the values file to spin up a local PostgreSQL database. - Blob Storage to store artifacts (S3, Minio, or any other S3 compatible storage).
Installation Instructions
Setup Blob Storage
Using Minio (Self-Hosted S3-Compatible Storage)
Using Minio (Self-Hosted S3-Compatible Storage)
- Bucket Name: Name of the S3-compatible bucket
- Region: Region identifier (can be any string for Minio)
- Access Key ID: Access key for authentication
- Secret Access Key: Secret key for authentication
- Endpoint URL: Full URL to your S3-compatible storage endpoint
Setup PostgreSQL Database
Using Managed PostgreSQL
Using Managed PostgreSQL
- Create a PostgreSQL instance with the specifications from the Compute Requirements section
- Create a database named
truefoundry(or your preferred name) - Create a user with full permissions on this database
- Note down the following details:
- DB_HOST: Database hostname or IP address
- DB_PORT: Database port (usually 5432)
- DB_NAME: Database name
- DB_USERNAME: Database username
- DB_PASSWORD: Database password
Using PostgreSQL on Kubernetes (Dev/Testing Only)
Using PostgreSQL on Kubernetes (Dev/Testing Only)
- Set
devMode.enabled: truein the values file (shown in a later step) - The PostgreSQL will be automatically deployed with the control plane
Add Helm Repository
Install ArgoCD
Create 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
- Blob Storage Configuration: Use the bucket name, region, access keys, and endpoint URL from the “Setup Blob Storage” step above. Depending on the storage you can chose your
defaultCloudProviderasaws,gcp,azureetc - You can disable any addons that you don’t need by setting the
enabledflag tofalse
Install TrueFoundry Control Plane
Configure Load Balancer and DNS
- Get the IP address of the load balancer:
- Point your control plane domain to this IP address in your DNS provider.
- Configure TLS certificates for the load balancer to terminate TLS traffic.
Verify Installation
- Wait for all pods to be running:
- Access the control plane at your configured URL and login with the same credentials used to register the tenant.
Setting Up Compute Plane
After installing the control plane, you need to set up a compute plane where your applications will run.FAQ
Can I use my Artifactory as a mirror to pull images?
Can I use my Artifactory as a mirror to pull images?
-
Replace
<IMAGE_PULL_SECRET_NAME>with your image pull secret name. -
Replace
<YOUR_REGISTRY>with your registry URL. Ensure you are also adding your namespace as TrueFoundry will preserve the namespace structure of the images. -
Replace
<USERNAME>with your registry username. -
Replace
<PASSWORD>with your registry password. -
Replace
<EMAIL>with your registry email.
Can I copy images to my own private registry?
Can I copy images to my own private registry?
quay.io/argoproj/argo-rollouts:v1.8.2, it will be pushed to <YOUR_REGISTRY>/<NAMESPACE>/argoproj/argo-rollouts:v1.8.2 where <NAMESPACE> is the namespace of the image in which you want to push the images.Once the images are pushed to your registry, you can update the Helm values as follows:-
Replace
<IMAGE_PULL_SECRET_NAME>with your image pull secret name. -
Replace
<YOUR_REGISTRY>with your registry URL. Ensure you are also adding your namespace as TrueFoundry will preserve the namespace structure of the images. -
Replace
<USERNAME>with your registry username. -
Replace
<PASSWORD>with your registry password. -
Replace
<EMAIL>with your registry email.
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.