Skip to content

Prefect Installation

The Prefect API and Application is installed via Helm Chart.
This helm chart constitutes the ConfigMap, Secrets, Deployments, Services, and Ingress resources necessary to deploy the full application.
Due to the number of components and configuration, details are listed below for installation and input values necessary.

Helm Charts

Helm charts will be versioned and provided through Google Artifact Registry. A full deploy requires both the Prefect helm chart necessary for deploying the services, and Istio for cluster and service routing configuration.

Values.yaml

Sections are provided below detailing the various inputs required for a successful deployment. Note that not all fields are required. For example, only one auth mechanism should be used, while leaving the other blank or empty.

Auth

Used to provide values for your ADFS or Okta application groups. These values should be provided through your Security or IAM provider. The Okta callback URL should be UI_BASE_URL/auth/okta-callback, where UI_BASE_URL is your designated DNS name for accessing the environment.

  authProvider:
    # -- set the auth provider for the application
    # eg. okta, adfs
    type: okta

    okta:
      clientID: ""
      clientSecret: ""
      authServerURL: ""
      apiKey: ""

    adfs:
      clientID: ""
      clientSecret: ""
      clientAuthority: ""
      # True or False
      clientVerifySSL: ""

PostgreSQL

The main data store for the application.

use_embedded - A setting to test deploying an embedded Postgres server to the Kubernetes cluster. Used for testing - NOT RECOMMENDED for production workloads. superuser - should be a user that has sufficient roles and permissions to create, drop, and alter schemas, roles, and databases. serviceuser - is a secondary user created during initialization of the databases. A username (prefect by default) and password should be supplied. host should be the primary endpoint for your respective cloud database, such as RDS, Cloud SQL, or Azure SQL. If using embedded, this should be db-primary for the primary, and db-read for the replica.

  db:
    # -- set Postgres installation type (eg. embedded vs. external)
    # @default -- true
    use_embedded: true
    # -- name of the default schema used when first connecting to create Prefect schemas/tables
    # @default -- postgres
    defaultSchema: postgres
    serviceuser:
      # -- name of the Postgres user for the backend application services
      # @default -- prefect
      username: prefect
      # -- password for the Postgres user for the backend application services
      password: ""
    superuser:
      # -- name of the Postgres superuser, used to run migrations and create databases
      # @default -- postgres
      username: postgres
      # -- password for the Postgres superuser
      password: ""
    host:
      # -- host name of primary Postgres instance
      primary: db-primary
      # -- host name of replica Postgres instance
      replica: db-read
    port:
      # -- port of primary Postgres instance
      # @default -- 5432
      primary: "5432"
      # -- port of replica Postgres instance
      # @default -- 5432
      replica: "5432"

Redis

use_embedded - A setting to test deploying an embedded Redis server to the Kubernetes cluster. Used for testing - NOT RECOMMENDED for production workloads. host - The primary endpoint for your cloud hosted Redis server. port - 6379 by default password - (Optional) if you choose not to set a password on your Redis server/cluster, leave blank ssl - To toggle between TLS encrypted connections `

  redis:
    # -- set Redis installation type (eg. embedded vs. external)
    # @default -- true
    use_embedded: true
    # -- when configured as an external Redis install, specify the host
    host: ""
    # -- when configured as an external Redis install, specify the port
    # @default -- 6379
    port: 6379
    # -- when configured as an external Redis install, specify the password
    password: ""
    # -- connect to Redis using SSL
    ssl: false

Backend Configuration

There are number of values and default settings available. Only the image, repository, and optionally pullSecrets are required to successfully deploy.

  backend:
    app:
      image:
        # -- set prefect-cloud image for all services
        # will be overridden by helm-chart.yaml values
        repository: us-docker.pkg.dev/prefect-dev-self-hosted/prefect-cloud/server
        # -- set prefect-cloud image tag for all services
        tag: latest
        # -- set prefect-cloud image pull secrets for all services
        pullSecrets: []
    extraEnv: []

SMTP

  smtp:
    host: ""
    port: ""
    username: ""
    password: ""
    tls: false