Deploy supporting charms

DataHub relies on three backing services, each provided by an existing charm:

  • PostgreSQL stores the metadata itself.

  • Kafka carries metadata change events and audit logs. It requires ZooKeeper.

  • OpenSearch powers search and graph indexing. It requires a TLS certificates provider.

All of them run in the machine model you created in the previous step.

Deploy the data platform

Switch to the machine model and deploy the five applications:

juju switch lxd:datahub-vm

juju deploy postgresql --channel 14/stable
juju deploy kafka --channel 3/stable
juju deploy zookeeper --channel 3/stable
juju deploy opensearch --channel 2/stable -n 2
juju deploy self-signed-certificates --channel latest/stable

Integrate Kafka with ZooKeeper, and OpenSearch with the certificates provider:

juju integrate kafka zookeeper
juju integrate opensearch self-signed-certificates

Check the relations with juju status --relations:

Integration provider                   Requirer                       Interface           Type
self-signed-certificates:certificates  opensearch:certificates        tls-certificates    regular
zookeeper:zookeeper                    kafka:zookeeper                zookeeper           regular

Expose the client endpoints so applications in other models can reach them:

juju expose kafka --endpoints kafka-client
juju expose opensearch --endpoints opensearch-client

Wait for the applications to settle

The data platform takes 15-25 minutes to become active. You can watch progress with juju status --watch 1s.

Individual units may briefly show blocked or error while others are still settling, for example Kafka showing Broker not running, or OpenSearch showing hook failed: "secret-changed". These clear on their own as Juju’s status checks catch up and don’t need manual intervention (such as juju resolve); only investigate if a unit is still stuck once every other application has reached active.

Offer the endpoints to other models

DataHub lives in a different model, so the three client endpoints must be published as offers:

juju offer postgresql:database pg-client
juju offer kafka:kafka-client kafka-client
juju offer opensearch:opensearch-client os-client

Verify the offers:

juju offers

You should see pg-client, kafka-client, and os-client listed. The data platform is ready; continue to deploy DataHub.