Skip to main content
StreamNative Operator supports seamless upgrades to newer versions while maintaining the existing Pulsar cluster state and configuration. Since version 0.12.x, we have aligned the sn-operator helm chart version with the sn-operator version, this will make it easier for the sn-operator helm chart to represent sn-operator versions. This document demonstrates how to upgrade StreamNative Operator to a newer version.
If you previously installed pulsar-operator/zookeeper-operator/bookkeeper-operator, please refer to upgrade-from-pulsar-operators to upgrade.
Please check your license first:
  • Import license through
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
# This label is a required field for the sn-operator to detect the license.
  labels:
    cloud.streamnative.io/type: "license"
  name: sn-license
  namespace: sn-system
type: Opaque
stringData:
  license: "Your license token"
EOF
If you do not have any valid license, you can contact StreamNative to apply for a free trial.
  • Helm
  • OLM
To upgrade to sn-operator under the Helm installation, follow below steps.
  • Apply the StreamNative Operator CRDs
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/bookkeeper.streamnative.io_bookkeeperclusters.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/k8s.streamnative.io_apikeys.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/k8s.streamnative.io_connectorcatalogs.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/k8s.streamnative.io_consoles.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/k8s.streamnative.io_oxiaclusters.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/k8s.streamnative.io_pfsqlclusters.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/k8s.streamnative.io_pulsarcoordinators.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/pulsar.streamnative.io_pulsarbrokers.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/pulsar.streamnative.io_pulsarproxies.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/main/charts/sn-operator/crds/zookeeper.streamnative.io_zookeeperclusters.yaml --server-side --force-conflicts
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_kafkaconnects.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_oxianamespaces.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_unilinks.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_unilinkschemas.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/pulsar.streamnative.io_pulsarbrokerrevisions.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_agentfunctions.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_mqttproxies.yaml --server-side
kubectl apply -f https://raw.githubusercontent.com/streamnative/private-cloud/refs/heads/main/charts/sn-operator/crds/k8s.streamnative.io_storagecatalogs.yaml --server-side
  • Install the StreamNative Operator through Helm
helm upgrade --install sn-operator streamnative/sn-operator -n sn-system

Post-Upgrade Verification

After completing the upgrade, perform the following verification steps:

1. Check Operator Status

# Verify operator is running
kubectl get pods -n sn-system

# Check operator logs for any errors
kubectl logs -f -n sn-system deployment/sn-operator
I