1. Operate Private Cloud
  2. Deploy

Deploy on Red Hat Openshift

Red Hat OpenShift is an enterprise-ready Kubernetes container platform built for an open hybrid cloud strategy, It provides a consistent application platform to manage hybrid cloud, multicloud, and edge deployments. StreamNative Private Cloud has supported to deploy and manage on the OpenShift platform, this page describes step-by-step installation.

Install StreamNative Operator

StreamNative Operator has certified as Red Hat OpenShift Operators, so users can easily install the sn-operator through the OpenShift Web Console.

  • Navigate to OperatorHub page and search for sn-operator.

    Private Cloud architecture

  • Click the "Install" button and wait for the operator installation.

  • Navigate to the Secret page and switch to openshift-operators project.

    Private Cloud architecture

  • Create the secret yaml with license token, you can refer the licenses for more details.

    Private Cloud architecture

Create Security Context Constraint (SCC)

Before provision the Pulsar cluster, you need to configure the Security Context Constraints.

  • Navigate to API Explorer page and shift to the SecurityContextConstraints API

    Private Cloud architecture

  • Create the SCC with below configuration:

    apiVersion: security.openshift.io/v1
    kind: SecurityContextConstraints
    metadata:
      name: private-cloud-scc
    allowHostDirVolumePlugin: false
    allowHostIPC: false
    allowHostNetwork: false
    allowHostPID: false
    allowHostPorts: false
    allowPrivilegeEscalation: true
    allowPrivilegedContainer: true
    defaultAddCapabilities: null
    fsGroup:
      type: RunAsAny
    groups:
      - system:authenticated
    priority: null
    readOnlyRootFilesystem: false
    requiredDropCapabilities: null
    runAsUser:
      type: RunAsAny
    seLinuxContext:
      type: RunAsAny
    seccompProfiles:
      - '*'
    supplementalGroups:
      type: RunAsAny
    users: []
    volumes:
      - configMap
      - downwardAPI
      - emptyDir
      - persistentVolumeClaim
      - projected
      - secret
    

Provision Pulsar cluster

After creating the SCC, we can start provisioning the Pulsar cluster.

  • Navigate to the Project page and create a new project called "Pulsar"

    Private Cloud architecture

  • Get into the Pulsar project and create workloads through yaml manifests.

    apiVersion: k8s.streamnative.io/v1alpha1
    kind: PulsarCoordinator
    metadata:
      name: private-cloud
      namespace: pulsar
    spec:
      image: streamnative/private-cloud:3.1.1.1
    ---
    apiVersion: zookeeper.streamnative.io/v1alpha1
    kind: ZooKeeperCluster
    metadata:
      name: private-cloud
      namespace: pulsar
      labels:
        k8s.streamnative.io/coordinator-name: private-cloud
    spec:
      image: streamnative/private-cloud:3.1.1.1
      replicas: 3
      pod:
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
        securityContext:
          runAsNonRoot: true
      persistence:
        reclaimPolicy: Delete
    ---
    apiVersion: bookkeeper.streamnative.io/v1alpha1
    kind: BookKeeperCluster
    metadata:
      name: private-cloud
      namespace: pulsar
      labels:
        k8s.streamnative.io/coordinator-name: private-cloud
    spec:
      image: streamnative/private-cloud:3.1.1.1
      replicas: 3
      zkServers: private-cloud-zk:2181
      pod:
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
        securityContext:
          runAsNonRoot: true
      storage:
        reclaimPolicy: Delete
    ---
    apiVersion: pulsar.streamnative.io/v1alpha1
    kind: PulsarBroker
    metadata:
      name: private-cloud
      namespace: pulsar
      labels:
        k8s.streamnative.io/coordinator-name: private-cloud
    spec:
      image: streamnative/private-cloud:3.1.1.1
      replicas: 3
      zkServers: zookeepers-zk:2181
      config:
        clusterName: private-cloud
      pod:
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
        securityContext:
          runAsNonRoot: true
    ---
    apiVersion: pulsar.streamnative.io/v1alpha1
    kind: PulsarProxy
    metadata:
      name: private-cloud
      namespace: pulsar
      labels:
        k8s.streamnative.io/coordinator-name: private-cloud
    spec:
      image: streamnative/private-cloud:3.1.1.1
      replicas: 2
      brokerAddress: private-cloud-broker
      pod:
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
        securityContext:
          runAsNonRoot: true
    ---
    apiVersion: k8s.streamnative.io/v1alpha1
    kind: Console
    metadata:
      name: private-cloud
      namespace: pulsar
      labels:
        k8s.streamnative.io/coordinator-name: private-cloud
    spec:
      image: streamnative/private-cloud-console:v2.3.4
      webServiceUrl: http://private-cloud-broker:8080
    
  • Wait for Pods up and running.

    Private Cloud architecture

Previous
OLM