Dear Pulsar Community, Initial Oxia [1] support has been added to the Apache Pulsar Helm chart master branch. Thanks to Yuwei Sung for the initial implementation!
Apache Pulsar has supported the Oxia based Metadata store plugin since Pulsar 3.3.0 with PIP-335 [2]. PIP-45 Pluggable metadata interface [3] related PRs #12770 [4] and #13296 [5] introduced changes in Pulsar and BookKeeper configuration for Pulsar so that Pulsar Metadata driver is used for metadata operations in the BookKeeper client (in broker) and in the BookKeeper server (the bookies). These changes have been included in Pulsar since 2.10.0. When the Oxia Metadata store plugin was added, it also made it possible to use Oxia as the Metadata store for BookKeeper. One of the known gaps with the Pulsar Metadata store usage with Pulsar Functions is that the default package storage implementation in Pulsar, org.apache.pulsar.packages.management.storage.bookkeeper.BookKeeperPackagesStorage, doesn't support other metadata stores than Zookeeper when storing packages to BookKeeper storage. Since the only other available PackagesStorage implementation is a file-based one in Pulsar, there's not currently a suitable option to be used for Pulsar Helm chart deployments with Oxia as the Metadata store. It would be great to have a PackagesStorage implementation for Pulsar Functions in the Helm chart that can be used when Oxia is used as the Metadata store. Enabling Oxia in the Apache Pulsar Helm chart requires disabling the Zookeeper component (components.zookeeper=false) and enabling the Oxia component (components.oxia=true). There is no tool for migrating a cluster from Zookeeper to Oxia yet. Having an offline tool would be the first step. Later, there could be ways to do online migrations, but that would require significant development efforts. I would like to welcome you to test Oxia with Apache Pulsar and BookKeeper and then make contributions to the Apache Pulsar Helm chart and Pulsar documentation around using Oxia with Pulsar. To test Oxia with Apache Pulsar 4.0.0 and BookKeeper, you can use the following instructions, assuming you have Helm and kubectl installed and connected to a Kubernetes cluster: git clone https://github.com/apache/pulsar-helm-chart cd pulsar-helm-chart helm dependency update ./charts/pulsar helm install pulsar --namespace pulsar --create-namespace ./charts/pulsar --set affinity.anti_affinity=false --values .ci/clusters/values-oxia.yaml Setting affinity.anti_affinity=false disables the anti-affinity feature that Pulsar uses to spread the BookKeeper, Oxia, and Zookeeper pods across different nodes. Disabling it is required for single-node testing, for example, with Minikube, Docker Desktop k8s, Rancher Desktop k8s, Podman Desktop k8s, etc. The .ci/clusters/values-oxia.yaml file contains the values used for Oxia testing in GitHub Actions CI for Apache Pulsar, so it is a good starting point for testing Oxia in your local single-node Kubernetes cluster. I'm looking forward to your feedback! -Lari 1 - https://github.com/streamnative/oxia 2 - https://github.com/apache/pulsar/blob/master/pip/pip-335%20Oxia%20metadata%20plugin.md 3 - https://github.com/apache/pulsar/wiki/PIP-45%3A-Pluggable-metadata-interface 4 - https://github.com/apache/pulsar/pull/12770 5 - https://github.com/apache/pulsar/pull/13296