The flyte-binary Helm chart deploys all Flyte services — FlyteAdmin, FlytePropeller, DataCatalog, FlyteConsole, and FlyteScheduler — as a single Kubernetes Deployment. This simplifies operations compared to the full flyte-core chart while still supporting all Flyte features including plugins, authentication, and multi-tenant projects.
The single-binary mode is the recommended starting point for teams deploying Flyte on a single cloud cluster. For multi-cluster execution or independent scaling of each component, use the flyte-core chart instead.
Trade-offs
| flyte-binary | flyte-core |
|---|
| Operational complexity | Low — one Deployment | Higher — one Deployment per component |
| Independent component scaling | No | Yes |
| Multi-cluster execution | No | Yes |
| Plugin support | Full | Full |
| Authentication | Full | Full |
| Recommended for | Single clusters, small–medium teams | Large teams, multi-cluster setups |
Prerequisites
- A Kubernetes cluster (EKS, GKE, AKS, or local)
- A PostgreSQL database (RDS, Cloud SQL, or local)
- An object store bucket (S3, GCS, Azure Blob, or MinIO)
- Helm 3 installed
- kubectl installed
Installation
Add the Flyte Helm repository
helm repo add flyteorg https://flyteorg.github.io/flyte
helm repo update
Create a values file
Download the starter values file for your cloud provider or write one from scratch: AWS (EKS)
GCP (GKE)
Minimal
curl -sL https://raw.githubusercontent.com/flyteorg/flyte/master/charts/flyte-binary/eks-starter.yaml \
-o values.yaml
curl -sL https://raw.githubusercontent.com/flyteorg/flyte/master/charts/flyte-binary/gke-starter.yaml \
-o values.yaml
configuration:
database:
username: postgres
password: "<DB_PASSWORD>"
host: "<DB_HOST>"
dbname: flyteadmin
storage:
metadataContainer: "<BUCKET_NAME>"
userDataContainer: "<BUCKET_NAME>"
provider: s3
providerConfig:
s3:
region: "<AWS_REGION>"
authType: "iam"
Dry-run the installation
helm install flyte-backend flyteorg/flyte-binary \
--namespace flyte \
--create-namespace \
--dry-run \
--values values.yaml
Install
Remove --dry-run to apply:helm install flyte-backend flyteorg/flyte-binary \
--namespace flyte \
--create-namespace \
--values values.yaml
Verify
kubectl get pods -n flyte
# NAME READY STATUS RESTARTS AGE
# flyte-backend-xxxxxxxxx-xxxxx 1/1 Running 0 60s
Configuration reference
The values.yaml schema mirrors the flyte-single-binary-local.yaml config structure. Below is an annotated reference.
Database
configuration:
database:
username: postgres
password: "<DB_PASSWORD>" # Creates a K8s Secret automatically
host: "<RDS_HOST_DNS>"
port: 5432
dbname: flyteadmin
options: sslmode=disable # Set to sslmode=require for production
Object storage
configuration:
storage:
metadataContainer: my-flyte-bucket
userDataContainer: my-flyte-bucket
provider: s3
providerConfig:
s3:
region: "us-east-1"
authType: "iam" # Uses the pod's IAM role / IRSA
configuration:
storage:
metadataContainer: my-flyte-bucket
userDataContainer: my-flyte-bucket
provider: gcs
providerConfig:
gcs:
project: "my-gcp-project"
configuration:
storage:
metadataContainer: my-s3-bucket
userDataContainer: my-s3-bucket
provider: s3
providerConfig:
s3:
disableSSL: true
v2Signing: true
endpoint: http://minio.minio-ns:9000
authType: accesskey
accessKey: minio
secretKey: miniostorage
Task resource defaults
The inline section passes config directly to the Flyte config system:
configuration:
inline:
task_resources:
defaults:
cpu: 500m
memory: 500Mi
limits:
cpu: 4
memory: 4Gi
tasks:
task-plugins:
enabled-plugins:
- container
- sidecar
- K8S-ARRAY
- connector-service
- echo
default-for-task-types:
- container: container
- container_array: K8S-ARRAY
Propeller settings
configuration:
inline:
propeller:
rawoutput-prefix: s3://my-flyte-bucket/data
literal-offloading-config:
enabled: true
Local single-binary config
When running the single binary locally (outside Kubernetes), Flyte reads from a YAML config file. The repository includes flyte-single-binary-local.yaml as a reference:
admin:
endpoint: localhost:30080
insecure: true
catalog-cache:
endpoint: localhost:8081
insecure: true
type: datacatalog
cluster_resources:
standaloneDeployment: false
templatePath: $HOME/.flyte/sandbox/cluster-resource-templates
propeller:
create-flyteworkflow-crd: true
kube-config: $HOME/.flyte/sandbox/kubeconfig
rawoutput-prefix: s3://my-s3-bucket/data
literal-offloading-config:
enabled: true
database:
postgres:
username: postgres
password: postgres
host: 127.0.0.1
port: 30001
dbname: flyte
options: "sslmode=disable"
storage:
type: stow
stow:
kind: s3
config:
region: us-east-1
disable_ssl: true
v2_signing: true
endpoint: http://localhost:30002
auth_type: accesskey
access_key_id: minio
secret_key: miniostorage
container: my-s3-bucket
Upgrade
helm upgrade flyte-backend flyteorg/flyte-binary \
--namespace flyte \
--values values.yaml
Flyte follows semantic versioning. Expect breaking changes only in major version bumps. Minor versions maintain backward compatibility.
Verify the installation
Port-forward to test before DNS is configured:
kubectl -n flyte port-forward service/flyte-binary 8088:8088 8089:8089
Then open http://localhost:8088/console.
Generate a local flytectl config pointing at the cluster:
flytectl config init --host localhost:8088