Skip to main content

PulsarCoordinator

PulsarCoordinator manages an entire pulsar cluster using the underlying APIs of ZooKeeperCluster/BookKeeperCluster/PulsarBroker/PulsarProxy. It doesn’t create these resources but only reference these resources using labels. It provides cluster-wide high level configurations and reconciliations. To provision a PulsarCoordinator instance, you need to create it through the PulsarCoordinator:
apiVersion: k8s.streamnative.io/v1alpha1
kind: PulsarCoordinator
metadata:
  name: <PulsarCoordinator name>
  namespace: <namespace>
spec:
  image: <PulsarCoordinator image version>
  • [1] metadata.name: Required. The PulsarCoordinator instance name.
  • [2] metadata.namespace: Required. The namespace where the PulsarCoordinator instance is installed.
  • [3] spec.image: Required. The version of the PulsarCoordinator instance image.

Oxia

Oxia is an experimental metadata store and coordination system that can back Pulsar metadata when your Private Cloud release supports it. Configure Oxia with OxiaCluster, OxiaNamespace, and StorageCatalog resources. For the Oxia example manifest and supported fields, see Configure Oxia.

ZooKeeper

ZooKeeperCluster manages a set of zookeeper nodes of the same zookeeper cluster. To provision zookeeper nodes, you need to create it through the ZooKeeperCluster CR:
apiVersion: zookeeper.streamnative.io/v1alpha1
kind: ZooKeeperCluster
metadata:
  name: <ZooKeeperCluster name>
  namespace: <namespace>
  labels:
    k8s.streamnative.io/coordinator-name: <Your PulsarCoordinator name>
spec:
  image: <ZooKeeperCluster image version>
	replicas: <ZooKeeperCluster replica count>
  pod:
    resources:
      requests:
        cpu: <ZooKeeperCluster cpu requests size>
        memory: <ZooKeeperCluster memory requests size>
    securityContext:
      runAsNonRoot: true
  persistence:
    data:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <ZooKeeperCluster data requests storage size>
    dataLog:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: <ZooKeeperCluster dataLog requests storage size>
  • [1] metadata.name: Required. The ZooKeeperCluster instance name.
  • [2] metadata.namespace: Required. The namespace where the ZooKeeperCluster instance is installed.
  • [3] metadata.labels.k8s.streamnative.io/coordinator-name: Required. The PulsarCoordinator instance name. The ZooKeeperCluster instance connects to the PulsarCoordinator instance to watch some configurations.
  • [4] spec.image: Required. The version of the ZooKeeperCluster instance image.
  • [5] spec.replicas: Required. The number of ZooKeeperCluster instances to be deployed.
  • [6] spec.pod.resources.requests.cpu: Optional. The minimum amount of required CPU resources.
  • [7] spec.pod.resources.requests.memory: Optional. The minimum amount of required memory resources.
  • [6] spec.pod.persistence.data.resources.requests.storage: Optional. The minimum amount of required storage.
  • [7] spec.pod.persistence.dataLog.resources.requests.storage: Optional. The minimum amount of required storage for data logs.

BookKeeper

BookKeeperCluster manages a set of bookie and recovery nodes of the same bookkeeper cluster. To provision bookie nodes, you need to create it through the BookKeeperCluster CR:
apiVersion: bookkeeper.streamnative.io/v1alpha1
kind: BookKeeperCluster
metadata:
  name: <BookKeeperCluster name>
  namespace: <namespace>
  labels:
    k8s.streamnative.io/coordinator-name: <Your PulsarCoordinator name>
spec:
  image: <BookKeeperCluster image version>
  replicas: <BookKeeperCluster replica count>
  zkServers: <ZooKeeperCluster connection address>
  pod:
    resources:
      requests:
        cpu: <BookKeeperCluster cpu requests size>
        memory: <BookKeeperCluster memory requests size>
    securityContext:
      runAsNonRoot: true
  storage:
    journal:
      volumeClaimTemplate:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <BookKeeperCluster journal requests storage size>
    ledger:
      volumeClaimTemplate:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <BookKeeperCluster ledger requests storage size>
  • [1] metadata.name: Required. The BookKeeperCluster instance name.
  • [2] metadata.namespace: Required. The namespace where the BookKeeperCluster instance is installed.
  • [3] metadata.labels.k8s.streamnative.io/coordinator-name: Required. The PulsarCoordinator instance name. The BookKeeperCluster instance connects to the PulsarCoordinator instance to watch some configurations.
  • [4] spec.image: Required. The version of the BookKeeperCluster instance image.
  • [5] spec.replicas: Required. The number of the BookKeeperCluster instances to be deployed.
  • [6] spec.zkServers: Required. The IP address of the ZooKeeperCluster instance. The BookKeeperCluster instance communicates with the ZooKeeperCluster instance using this IP address.
  • [7] spec.pod.resources.requests.cpu: Optional. The minimum amount of required CPU resources.
  • [8] spec.pod.resources.requests.memory: Optional. The minimum amount of required memory resources.
  • [9] spec.pod.storage.journal.volumeClaimTemplate.resources.requests.storage: Optional. The BookKeeperCluster instance journal storage requested store size.
  • [10] spec.pod.storage.ledger.volumeClaimTemplate.resources.requests.storage: Optional. The BookKeeperCluster instance ledger storage requested store size.

Pulsar Broker

PulsarBroker manages a set of brokers nodes of the same broker cluster. To provision brokers nodes, you need to create it through the PulsarBroker CR:
  • [1] metadata.name: Required. The PulsarBroker instance name.
  • [2] metadata.namespace: Required. The namespace where the PulsarBroker instance is installed.
  • [3] metadata.labels.k8s.streamnative.io/coordinator-name: Required. The PulsarCoordinator instance name. The PulsarBroker instance connects to the PulsarCoordinator instance to watch some configurations.
  • [4] spec.image: Required. The version of the PulsarBroker instance image.
  • [5] spec.replicas: Required. The number of the PulsarBroker instanced to be deployed.
  • [6] spec.zkServers: Required. The IP address of the ZooKeeperCluster instance. The PulsarBroker instance communicates with the ZooKeeperCluster instance using this IP address.
  • [7] spec.pod.resources.requests.cpu: Optional. The minimum amount of required CPU resources.
  • [8] spec.pod.resources.requests.memory: Optional. The minimum amount of required memory resources.

Pulsar Proxy

PulsarProxy manages a set of proxy nodes of the same proxy cluster. To provision proxy nodes, you need to create it through the `PulsarProxy“ CR:
apiVersion: pulsar.streamnative.io/v1alpha1
kind: PulsarProxy
metadata:
  name: <PulsarProxy name>
  namespace: <namespace>
	labels:
    k8s.streamnative.io/coordinator-name: <Your PulsarCoordinator name>
spec:
  image: <PulsarProxy image version>
	replicas: <PulsarProxy replica count>
	brokerAddress: <PulsarBroker connection address>
  pod:
    resources:
      requests:
        cpu: <PulsarProxy cpu requests size>
        memory: <PulsarProxy memory requests size>
    securityContext:
      runAsNonRoot: true
  • [1] metadata.name: Required. The PulsarProxy instance name.
  • [2] metadata.namespace : Required. The namespace where the PulsarProxy instance is installed.
  • [3] metadata.labels.k8s.streamnative.io/coordinator-name: Required. The PulsarCoordinator instance name. The PulsarProxy instance connects to the PulsarCoordinator instance to watch some configurations.
  • [4] spec.image: Required. The version of the PulsarProxy instance image.
  • [5] spec.replicas: Required. The number of the PulsarProxy instances to be deployed.
  • [6] spec.brokerAddress: Required. The IP address of the PulsarBroker instance. The PulsarProxy instance communicates with the PulsarBroker instance using this IP address.
  • [7] spec.pod.resources.requests.cpu: Optional. The minimum amount of required CPU resources.
  • [8] spec.pod.resources.requests.memory: Optional. The minimum amount of required memory resources.

Console

Console manages the Pulsar cluster management console instance. To provision console instance, you need to create it through the Console CR:
apiVersion: k8s.streamnative.io/v1alpha1
kind: Console
metadata:
  name: <Console name>
  namespace: <namespace>
  labels:
    k8s.streamnative.io/coordinator-name: private-cloud
spec:
  image: <Console image version>
  webServiceUrl: <Pulsar Broker web service address>
  • [1] metadata.name: Required. The Console instance name.
  • [2] metadata.namespace : Required. The namespace where the PulsarProxy instance is installed.
  • [3] metadata.labels.k8s.streamnative.io/coordinator-name: Required. The PulsarCoordinator instance name. The PulsarProxy instance connects to the PulsarCoordinator instance to watch some configurations.
  • [4] spec.image: Required. The version of the Console instance image.
  • [5] spec.webServiceUrl: Required. The web service address of the PulsarBroker instance.