Skip to main content
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-binaryflyte-core
Operational complexityLow — one DeploymentHigher — one Deployment per component
Independent component scalingNoYes
Multi-cluster executionNoYes
Plugin supportFullFull
AuthenticationFullFull
Recommended forSingle clusters, small–medium teamsLarge 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

1

Add the Flyte Helm repository

helm repo add flyteorg https://flyteorg.github.io/flyte
helm repo update
2

Create a values file

Download the starter values file for your cloud provider or write one from scratch:
curl -sL https://raw.githubusercontent.com/flyteorg/flyte/master/charts/flyte-binary/eks-starter.yaml \
  -o values.yaml
3

Edit values.yaml

At minimum, set the database connection and storage bucket. See configuration reference below.
4

Dry-run the installation

helm install flyte-backend flyteorg/flyte-binary \
  --namespace flyte \
  --create-namespace \
  --dry-run \
  --values values.yaml
5

Install

Remove --dry-run to apply:
helm install flyte-backend flyteorg/flyte-binary \
  --namespace flyte \
  --create-namespace \
  --values values.yaml
6

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

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

Build docs developers (and LLMs) love