- Kubernetes Cluster - This is the primary compute on which the applications deployed by the control plane run. This can be EKS, GKE, AKS, OpenShift, Oracle Kubernetes Engine, or any other standard Kubernetes cluster. The control plane should have read access to the cluster configuration. The following addons need to be present on the compute-plane cluster depending on your use case. You can bring your own addons and have full flexibility on the configuration of the addons.
ArgoCD (Essential)
ArgoCD (Essential)
- Ensure ArgoCD has access to create Argo applications in all namespaces. For this, the following must be set:
- Create a tfy-apps project with the following spec.
- Add the following configuration to the configmap of ArgoCD to force ArgoCD to use
labelsinstead ofannotationsfor the applications.
Istio (Essential)
Istio (Essential)
- Request Count Based autoscaling
- OAuth-based authentication and authorization for Jupyter Notebooks.
- Intercepts feature to redirect / mirror traffic to other applications.
- Authentication for services deployed on the cluster.
- istio-base - The set of CRDs that are required for Istio to work. View the istio-base ArgoCD configuration.
- istio-discovery - The pilot service that is responsible for the discovery of the services in the cluster. View the istio-discovery ArgoCD configuration.
- tfy-istio-ingress - The ingress gateway that is responsible for the ingress of the services to the cluster. View the tfy-istio-ingress ArgoCD configuration.
Argo Rollouts (Essential)
Argo Rollouts (Essential)
Prometheus (Essential)
Prometheus (Essential)
Argo Workflows (Optional)
Argo Workflows (Optional)
Keda (Optional)
Keda (Optional)
VictoriaLogs (Optional)
VictoriaLogs (Optional)
GPU Operator (Optional)
GPU Operator (Optional)
Grafana (Optional)
Grafana (Optional)
[AWS Only] Karpenter (Essential)
[AWS Only] Karpenter (Essential)
- Install the eks-node-monitoring-agent helm chart.
- Configure Karpenter to use the eks-node-monitoring-agent.
[AWS Only] Metrics-Server (Essential)
[AWS Only] Metrics-Server (Essential)
[AWS Only] AWS EBS CSI Driver (Essential)
[AWS Only] AWS EBS CSI Driver (Essential)
[AWS Only] AWS EFS CSI Driver (Optional)
[AWS Only] AWS EFS CSI Driver (Optional)
[AWS Only] AWS Load Balancer Controller (Essential)
[AWS Only] AWS Load Balancer Controller (Essential)
[AWS Only] TFY Inferentia Operator (Optional)
[AWS Only] TFY Inferentia Operator (Optional)
Cert-Manager (Optional)
Cert-Manager (Optional)
- AWS EKS Inframold (
tfy-k8s-aws-eks-inframold) - Azure AKS Inframold (
tfy-k8s-azure-aks-inframold) - GCP GKE Inframold (
tfy-k8s-gcp-gke-standard-inframold) - Generic Kubernetes Inframold (
tfy-k8s-generic-inframold)
- Docker Registry - This is the registry where the Docker images built by the control plane are pushed. This can be ECR, GCR, ACR, Quay, Docker Hub, JFrog, Harbor, or any other standard Docker registry. The control plane should have access to push to this registry.
- Blob Storage (Optional) - This will be used to store the ML models and artifacts. This is optional and only needed if you intend to use the model registry feature. The control plane should have access to read and write to this blob storage. Possible integrations are AWS S3, Azure Blob Storage, GCP Cloud Storage, MinIO, or any other S3-compatible storage.
- Secret Store (Optional) - This will be used to store the secrets for the applications. This is optional and only needed if you intend to use the secret store feature. The control plane should have access to read and write to this secret store. Possible integrations are AWS Parameter Store, AWS Secrets Manager, Azure Key Vault, and GCP Secret Manager.
- DNS and Certificates - You need to set up a domain name and point it to the load balancer in the compute-plane cluster. This lets you provide domain names to the workloads deployed on the cluster. The domain name can be a single domain or a wildcard domain. For example, if you point a domain like
*.example.com(wildcard domain) to the load balancer, the services will be exposed likeservice1.example.com,service2.example.com, etc. However, if you point a domain liketfy.example.com(non-wildcard domain) to the load balancer, the services will be exposed liketfy.example.com/service1,tfy.example.com/service2, etc. Many frontend applications do not work with path-based routing (the latter case), so we recommend using wildcard domains. You also need to provision certificates to terminate the TLS traffic on the load balancer. For this you can use the AWS Certificate Manager or cert-manager with GCP Cloud DNS or Azure DNS. You can also bring your pre-created certificates.
FAQ
How to install in an air-gapped / restricted network environment?
How to install in an air-gapped / restricted network environment?
Upload Artifacts to Your Private Registry
First, upload all images shipped as part of your inframold installation to your private registry. You can either:- configure a mirror/pull-through cache for
tfy.jfrog.io, or - download and upload artifacts using the script below.
artifacts-manifest.json in the infra-charts repository for the inframold chart you are installing.Use the manifest URL that matches your inframold chart:Download the artifacts manifest
Authenticate with your target registry
Set up the upload script
Run the upload script for images and helm charts
artifact_type— eitherimageorhelmfile_path— path to theartifacts-manifest.jsonfiledestination_registry— your private registry URL
Configure Kyverno Policy Engine
Kyverno is a CNCF policy engine that intercepts admission requests and rewrites image/helm repository references to point to your private registry. This is required because TrueFoundry does not currently provide a direct way to override all image URIs in the inframold chart values.Install Kyverno
kyverno-values.yaml:Install ArgoCD CRDs
tfy-kyverno-config chart because the Kyverno policies reference ArgoCD Application resources for Helm repository mutation.Install the tfy-kyverno-config chart
kyverno-config-values.yaml: