Deploy Charmed Airbyte

In this step you deploy the Charmed Airbyte application and integrate it with the supporting charms deployed in the previous step.

Deploy Charmed Airbyte

Deploy Airbyte using the official charm:

juju deploy airbyte-k8s --channel edge --trust

Verify the deployment:

juju status --watch 2s

Initially, Airbyte is in a blocked state with a message such as:

database relation not ready

You add the relations in the next steps.

Integrate Airbyte with PostgreSQL

Airbyte depends on PostgreSQL to store metadata, configuration, and job history. Add the relation between PostgreSQL and Airbyte:

juju integrate postgresql-k8s airbyte-k8s

The database relation is satisfied, and Airbyte moves on to check its object storage:

minio relation not ready

Integrate Airbyte with MinIO

Airbyte requires object storage for logs, artifacts, and state. Add the relation between MinIO and Airbyte:

juju integrate minio airbyte-k8s

With both PostgreSQL and MinIO related, the airbyte-bootloader container runs its one-time initialization; you may briefly see waiting for airbyte-auth-secrets while it creates the auth secret, after which airbyte-k8s/0 settles to active.

Set up Temporal

Airbyte offloads workflow execution to Temporal, so Temporal must be operational before Airbyte can run syncs. Airbyte is already configured to reach Temporal at temporal-k8s:7233 by default, so there is nothing to configure on the Airbyte side. You only need to bring Temporal up by relating it to its own backends:

  • temporal-k8s — the Temporal workflow engine, which stores its default and visibility data in PostgreSQL

  • temporal-admin-k8s — registers the Temporal namespace and provides admin capabilities

Add the relations:

juju integrate temporal-k8s:db postgresql-k8s:database
juju integrate temporal-k8s:visibility postgresql-k8s:database
juju integrate temporal-k8s:admin temporal-admin-k8s:admin

Once Temporal reaches active, Airbyte connects to it automatically.

After all relations are applied, check the status:

juju status

All applications (airbyte-k8s, temporal-k8s, temporal-admin-k8s, postgresql-k8s, minio) should eventually show active status. At this point, Airbyte is fully operational:

Model          Controller          Cloud/Region        Version  SLA          Timestamp
airbyte-model  airbyte-controller  microk8s/localhost  3.6.11   unsupported  14:00:29+03:00

App                   Version                Status  Scale  Charm                   Channel          Rev  Address   Exposed  Message
airbyte-k8s           v1.7.0                 active      1  airbyte-k8s             latest/edge       18  10.x.x.x  no
minio                 res:oci-image@7f2474f  active      1  minio                   ckf-1.10/stable  459  10.x.x.x  no
temporal-admin-k8s    1.23.1                 active      1  temporal-admin-k8s      latest/edge       13  10.x.x.x  no
temporal-k8s          1.23.1                 active      1  temporal-k8s            latest/edge       45  10.x.x.x  no

Unit                    Workload  Agent  Address   Ports          Message
airbyte-k8s/0*          active    idle   10.x.x.x
minio/6*                active    idle   10.x.x.x  9000-9001/TCP
temporal-admin-k8s/0*   active    idle   10.x.x.x
temporal-k8s/0*         active    idle   10.x.x.x

Integration provider     Requirer                 Interface          Type     Message
airbyte-k8s:airbyte-peer  airbyte-k8s:airbyte-peer  airbyte            peer
minio:object-storage      airbyte-k8s:object-storage  object-storage   regular
postgresql:database       airbyte-k8s:db            postgresql_client  regular
postgresql:database       temporal-k8s:db           postgresql_client  regular
postgresql:database       temporal-k8s:visibility   postgresql_client  regular
temporal-admin-k8s:admin  temporal-k8s:admin        temporal           regular
temporal-admin-k8s:peer   temporal-admin-k8s:peer   temporal-admin     peer
temporal-k8s:peer         temporal-k8s:peer         temporal           peer

Charmed Airbyte is up and running. Continue to run your first sync.