Architecture¶
This page explains the components of a Charmed Airbyte deployment, how they fit together, and the design decisions behind the charm.
The Airbyte workloads¶
The airbyte-k8s charm manages a single Kubernetes pod that runs Airbyte’s services across several containers:
airbyte-server - the core application server. It exposes the Airbyte API and backs the UI.
airbyte-workers and airbyte-workload-launcher - execute synchronization jobs, launching and supervising the pods that run each connector.
airbyte-workload-api-server - the API that brokers work between the server and the workers.
airbyte-bootloader - runs once on startup to apply database migrations and initialize the deployment before the other services start.
airbyte-cron, airbyte-pod-sweeper, and airbyte-connector-builder-server - supporting services that handle scheduled housekeeping, clean up completed job pods, and back the low-code connector builder respectively.
The backing services¶
Airbyte keeps no durable state of its own; everything lives in three backing services, each provided by its own charm:
PostgreSQL is the metadata store and the source of truth for connections, jobs, and configuration. The charm reaches it over the standard
postgresql_clientrelation.Temporal is the orchestration engine. It executes sync workflows, manages retries for failed operations, and coordinates the scheduling of long-running pipelines. The
temporal-admin-k8scharm provides namespace administration and workflow debugging for it, and Temporal itself relates to PostgreSQL for its default and visibility stores.Object storage (MinIO or an S3-compatible backend) holds job logs, state, and artifacts generated during synchronization.
graph LR
subgraph k8s [Kubernetes model]
NG[nginx-ingress-integrator]
O2P[oauth2-proxy]
AB[airbyte-k8s]
UI[airbyte-ui-k8s]
TMP[temporal-k8s]
TA[temporal-admin-k8s]
MIN[(MinIO)]
PG[(PostgreSQL)]
end
NG --> O2P
O2P --> AB
AB --> UI
AB --> TMP
AB --> MIN
AB --> PG
TMP --> PG
TA --> TMP
Authentication happens at the edge¶
Airbyte does not authenticate users itself. Instead, the oauth2-proxy-k8s charm sits in front of it as a reverse proxy and enforces authentication through an OAuth provider such as Google. Both Airbyte and OAuth2 Proxy are exposed through a single nginx-ingress-integrator instance, which handles HTTP routing, performs TLS termination when a TLS secret is configured, enforces source-range allowlists, and manages timeouts for long-running requests. Airbyte exposes only the standard ingress interface, so any compatible ingress provider - Nginx Ingress Integrator or Traefik - can serve it.
The Airbyte UI¶
The charm provides the airbyte-server relation (airbyte-server interface), which delivers the Airbyte server’s status to a related UI application such as airbyte-ui-k8s. The UI provides connector configuration and monitoring, and is reached through the same ingress path as the server.