Quick Start


    To use StreamNative Private Cloud, the following are required:

    • Install kubectl.
    • Prepare a Kubernetes cluster within the supported versions.

    Install OLM

    StreamNative Private Cloud uses Operator Lifecycle Manager (OLM) to install and manage Operators.

    Run the following command to install OLM.

    curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.25.0/install.sh | bash -s v0.25.0

    Install StreamNative Private Cloud

    Import license

    Before installing StreamNative Private Cloud, you need to import a valid license. Otherwise, StreamNative Private Cloud will stop reconciling with a "no valid license" error message:

    ERROR	controller.pulsarcoordinator	Reconciler error	{"reconciler group": "k8s.streamnative.io", "reconciler kind": "PulsarCoordinator", "name": "private-cloud", "namespace": "pulsar", "error": "No valid license has been found under namespace operators, please contact https://streamnative.io/deployment/start-free-trial"}

    If you do not have any license, you can contact StreamNative to apply for a free trial.

    When you have a license in hand, you can import it through:


    metadata.labels with the cloud.streamnative.io/type: "license" is required because the sn-operator will detect secrets in its namespace with label and to import automatically.

    cat <<EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    # This label is a required field for the sn-operator to detect the license.
        cloud.streamnative.io/type: "license"
      name: sn-license
      namespace: operators
    type: Opaque
      license: "Your license token"

    Install StreamNative Operator

    OLM can deploy StreamNative Operator via the Subscription object.

    Run the command below to deploy the StreamNative Private Cloud Operators in the operator namespace.

    kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/quick-start/olm-subscriptions.yaml

    Verify that Operator Pods are running.

    kubectl get pods -n operators

    Create namespaces

    Create the namespaces pulsar. The pulsar namespace is used for deploying your Pulsar cluster.

    kubectl create ns pulsar

    Provision a Pulsar cluster

    To provision a Pulsar cluster through the StreamNative Operator, you need to define a YAML file for your Pulsar cluster.

    Run the command below to deploy your Pulsar cluster in pulsar namespace

    kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/quick-start/pulsar-cluster.yaml

    Tools usage

    StreamNative Private Cloud provisions a toolset Pod which packages regual Pulsar tools:

    kubectl exec -it private-cloud-toolset-0 -n pulsar -- bash

    Use pulsar-client to quickly produce some messages

    bin/pulsar-client produce private-cloud -m "sn-private-cloud" -n 10
    2023-10-21T20:39:56,476+0000 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ProducerImpl - [private-cloud] [brokers-1-0] Closed Producer
    2023-10-21T20:39:56,478+0000 [main] INFO  org.apache.pulsar.client.impl.PulsarClientImpl - Client closing. URL: http://brokers-broker.pulsar.svc.cluster.local:8080
    2023-10-21T20:39:56,494+0000 [pulsar-client-io-1-1] INFO  org.apache.pulsar.client.impl.ClientCnx - [id: 0x570456f6, L:/ ! R:brokers-broker-1.brokers-broker-headless.pulsar.svc.cluster.local/] Disconnected
    2023-10-21T20:39:58,509+0000 [main] INFO  org.apache.pulsar.client.cli.PulsarClientTool - 10 messages successfully produced

    Use pulsarctl to check the resource status

    bin/pulsarctl topics list public/default
    |                TOPIC NAME                 | PARTITIONED ? |
    | persistent://public/default/private-cloud | N             |

    Access to Console

    kubectl port-forward console-streamnative-console-0 9527:9527 -n pulsar

    Clean up

    Run the command below to delete your Pulsar cluster.

    kubectl delete -f https://raw.githubusercontent.com/streamnative/private-cloud/main/quick-start/pulsar-cluster.yaml

    Run the command below to remove the olm subscription.

    kubectl delete subscription sn-operator -n operators

    Run the command below to remove the olm csv.

    kubectl delete clusterserviceversion sn-operator -n operators