Production Deployment Guide

Tip

This guide is intended for production deployments. For local exploration and development, please see the Quick Start guide — the recommended path is the development Helm chart (the legacy Docker Compose setup is deprecated).

Warning

Starting with Jitsu 2.14, a feature-complete production deployment requires a Kubernetes cluster:

  • Functions and profile builders run on dedicated function servers provisioned by the Jitsu operator as Kubernetes deployments. The operator is a required part of the event pipeline — Rotor routes events based on the function-server registry the operator maintains.
  • Connector syncs run as Kubernetes pods, and scheduled syncs are managed as Kubernetes CronJobs.

Components and services

Jitsu consists of several components and services. The main components are:

Info

All Jitsu services are:

  • Available as Docker images (built together from the jitsucom/jitsu monorepo)
  • Stateless and can be scaled horizontally
  • Configured with environment variables exclusively

In addition to internal services, Jitsu has a number of 3rd-party dependencies:

Service Diagram

See the diagram below for a better understanding of the architecture:

Functions and the Jitsu Operator

Since Jitsu 2.14, user functions and profile builders do not run inside Rotor. They run on dedicated function servers — Kubernetes deployments managed by the Operator service:

  1. The Operator polls the Console export API (OPERATOR_REPOSITORY_BASE_URLhttps://$console/api/admin/export) for workspaces, connections and functions.
  2. For each workspace (functions class dedicated) or shard of workspaces (class free), it creates a fs-<deploymentId> Deployment + Service on port 3456, config maps with the workspace's functions, an optional HorizontalPodAutoscaler and a PodDisruptionBudget.
  3. Once a deployment is rolled out, the Operator records it in the FunctionsServer table in Postgres. The Console export uses this table to tell Ingest and Rotor which function server serves each connection.
  4. Ingest, Rotor and Console reach function servers by URL template — the FUNCTIONS_SERVER_URL_TEMPLATE env var, default http://fs-${workspaceId}:3456, which matches the services the Operator creates.

The Operator is required for event delivery: connections without function-server routing information are dropped by Rotor. Deploy the Operator even if you don't use custom functions.

The Operator needs Kubernetes RBAC permissions for: pods, services, configmaps, secrets, apps/deployments, apps/statefulsets, autoscaling/horizontalpodautoscalers and policy/poddisruptionbudgets. See the configuration reference.

Enabling Jitsu Connectors

Jitsu Connectors require a Kubernetes cluster.

🔌 Syncctl is the service responsible for running connector sync jobs. It is enough for syncctl to have a valid kubeconfig of a Kubernetes cluster — the other Jitsu components don't have to run in the same cluster.

Scheduled syncs are materialized as Kubernetes CronJobs (named sync-<syncId>, labeled jitsu.com/managed-by=syncctl): syncctl polls the Console's /api/admin/export/syncs endpoint and reconciles the CronJobs to match the configured schedules. Sync runs execute as autonomous pods.

How to enable

To enable connector sync support, configure the syncctl service — including SYNCCTL_REPOSITORY_BASE_URL / SYNCCTL_REPOSITORY_AUTH_TOKEN, which drive the CronJob scheduling.

For the console service set SYNCS_ENABLED, SYNCCTL_URL and SYNCCTL_AUTH_KEY env variables.

After starting all Jitsu components, you will see the Connectors menu item in the top bar of the Jitsu Console UI.

To fill the connectors catalog, trigger the catalog-refresh console API endpoint in a browser with an authorized Jitsu user:

http://JITSU_PUBLIC_URL/api/admin/catalog-refresh

Running Jitsu on a Kubernetes cluster

Running all Jitsu components in a Kubernetes cluster is the recommended production setup — this is how Jitsu Cloud runs (on Google Kubernetes Engine), and it's the only setup where all features (functions, profile builders, connector syncs) are available.

There is no official production Helm chart yet:

  • The Jitsu repository ships a development Helm chart that deploys development builds of all services (including the Operator and function servers) to Minikube. It's the best reference for how the full Kubernetes architecture fits together, but it is not intended for production use.
  • A community-driven chart is available at stafftastic/jitsu-chart; note it may not yet cover the Operator/function-server architecture introduced in Jitsu 2.14.

Configuration Reference

See Configuration Reference for the list of all environment variables and their descriptions, and use the development Helm chart as a reference for service wiring.