Installing DataCore Puls8

Explore this Page

Overview

This guide outlines the steps to set up the Helm repository, install DataCore Puls8 with default configurations, and apply customizations based on your specific requirements. Helm provides a streamlined method for installing and managing DataCore Puls8 on a Kubernetes cluster.

Before proceeding with the installation, ensure you have met all Prerequisites.

Installing DataCore Puls8 using Helm

To perform an installation of DataCore Puls8:

  1. Install the DataCore Puls8 Helm Chart with the default configuration. The chart is now publicly available via an OCI-compliant registry, you can install it directly using the following command:
    Copy
    Install the DataCore Puls8 Helm Chart
    helm install puls8 -n puls8 --create-namespace oci://docker.io/datacoresoftware/puls8 --version <chart-version>

    This command deploys the following DataCore Puls8 storage components within the puls8 namespace:

    • Local PV Hostpath
    • Local PV LVM
    • Local PV ZFS
    • Replicated PV Mayastor

    You can customize the installation and adjust advanced options:

    • Disabling Storage Engines - By default, DataCore Puls8 Helm chart installs both Local Storage and Replicated Storage are installed. You can disable specific storages by setting the corresponding options to false in your Helm chart configuration values:
      Copy
      Disable Storages
      openebs.engines.replicated.mayastor.enabled: false
      openebs.engines.local.lvm.enabled: false
      openebs.engines.local.zfs.enabled: false

      Adjust these values based on which storage you want to exclude. If not set, all storages will be deployed by default.

      Copy
      Example: Helm Install Without Replicated Storage
      helm install puls8 -n puls8 --create-namespace oci://docker.io/datacoresoftware/puls8 \
        --set openebs.engines.replicated.mayastor.enabled=false
    • If your Kubernetes cluster already contains the CustomResourceDefinitions (CRDs) for CSI VolumeSnapshots, you can skip their creation by adding the following flag:
      Copy
      Flag to Skip CSI VolumeSnapshot CRDs Creation
      --set openebs.openebs-crds.csi.volumeSnapshots.enabled=false
    • Customize Installation Options - Provide custom configuration during installation by using the --set <configuration values> flag or by supplying a custom values file with the -f <file name> option.
  2. Modify the Kubelet Directory (If Required).

For Kubernetes distributions that use a non-standard Kubelet directory, update the directory path during installation by using the --set flag.

Kubelet Directory Paths for Different Storage Types
Copy
For Replicated PV Mayastor
--set openebs.mayastor.csi.node.kubeletDir=<your-directory-path>
Copy
For Local PV LVM
--set openebs.lvm-localpv.lvmNode.kubeletDir=<your-directory-path>
Copy
For Local PV ZFS
--set openebs.zfs-localpv.zfsNode.kubeletDir=<your-directory-path>
Kubelet Directory Paths for Specific Kubernetes Distributions

If you are using any of the following Kubernetes distributions, update the Kubelet directory accordingly:

  • MicroK8s: Change /var/lib/kubelet/ to /var/snap/microk8s/common/var/lib/kubelet/
  • k0s: Change /var/lib/kubelet/ to /var/lib/k0s/kubelet/

3. Check the installed Helm chart and review its status. Run the following command to confirm installation and review the chart’s deployment status:

Copy
Command to List Installed Helm Charts
helm ls -n puls8
Copy
Sample Output
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
puls8   puls8           1               2026-07-27 13:58:16.7666767 +0530 IST   deployed        puls8-4.6.1     4.6.1

Component Configuration Options

The following Helm values configure the components that are specific to DataCore Puls8. Set them during installation with the --set flag, or supply them in a custom values file with the -f option.

These values sit at the top level of the chart, unlike the values for the storage engines, which are nested under openebs.

NFS Driver

The NFS driver provides shared ReadWriteMany (RWX) volumes backed by Replicated PV Mayastor block volumes. Refer to the NFS RWX Using the DataCore Puls8 NFS Driver documentation for provisioning and security configuration.

Value Default Description
nfs.enabled true Deploys the NFS CSI driver. Set to false to install without shared RWX support.
nfs.csi.controller.maxWorkerThreads 10 Maximum worker threads used by the CSI sidecars of the controller.
nfs.csi.controller.priorityClassName "" PriorityClass for the controller pod.
nfs.csi.controller.tolerations [] Tolerations for the controller pod.
nfs.csi.controller.serviceAccount.create true Creates the ServiceAccount for the controller. Set to false to supply your own.
nfs.csi.node.kubeletDir /var/lib/kubelet Kubelet root directory on the host. Change this for a Kubernetes distribution that uses a non-standard path.
nfs.csi.node.priorityClassName "" PriorityClass for the node DaemonSet.
nfs.csi.node.tolerations [] Tolerations for the node DaemonSet.
nfs.csi.node.serviceAccount.create true Creates the ServiceAccount for the node DaemonSet.
nfs.server.priorityClassName "" Default PriorityClass for the per-volume NFS server pods. Can be overridden for an individual volume through the server block of the StorageClass.

The CSI sidecar images used by the driver are configured through nfs.csi.sideCars. A single registry, repo and pullPolicy apply to every sidecar, and each sidecar takes its own release tag through provisionerTag, attacherTag, registrarTag, resizerTag and snapshotterTag. Change these only when mirroring images into a private registry.

Toolbox CLI

The Toolbox CLI is a long-running pod that provides in-cluster access to the DataCore Puls8 command line interface, so that operations can be run without the plugin installed locally.

Value Default Description
toolbox.cli.enabled true Deploys the Toolbox CLI pod.
toolbox.cli.dumpStorageSize "" Size limit for the volume that support bundles are written to before download. Unset means the size is bounded only by available node disk space.
toolbox.cli.priorityClassName "" PriorityClass for the Toolbox CLI pod.
toolbox.cli.tolerations [] Tolerations for the Toolbox CLI pod.

Leaving dumpStorageSize unset is deliberate. On a large cluster the collected data and the resulting archive can together reach several gigabytes, and a fixed limit risks interrupting a bundle while it is still being collected.

Global Overrides

The following values apply to every DataCore Puls8 component, and are useful when images are mirrored into a private registry or pulled through credentials.

Value Default Description
global.imageRegistry "" Container image registry for all components. Refer to the Air-Gapped Installation documentation for the full procedure.
global.imagePullSecrets [] Image pull secrets applied to all components. Merged with any component-level secrets rather than replacing them.
global.imagePullPolicy "" Image pull policy for all components.
global.analytics.enabled unset Enables or disables usage analytics for all components. Overrides the per-component setting.

REST API Network Policy

A Kubernetes NetworkPolicy restricts inbound traffic to the REST API service to the ports it serves on. It is enabled by default.

Value Default Description
openebs.mayastor.security.networkPolicy.enabled true Applies a NetworkPolicy to the REST API service. Set to false to remove the restriction.

The policy permits inbound traffic on port 8080, and on port 8081 while TLS is disabled. Traffic to any other port on the service is denied. Enabling TLS removes the allowance for port 8081.

Disable the policy only where your cluster applies its own network restrictions to the namespace. Your cluster must run a CNI plugin that enforces NetworkPolicy for the policy to take effect at all.

Next Steps

With DataCore Puls8 successfully installed, complete the following post-installation steps to ensure a fully functional setup:

Once the installation is verified, proceed with the following actions to get the most value from your deployment:

  • Configure Storage - Set up and validate Local Storage and Replicated Storage configurations.
  • Deploy Workloads - Create Persistent Volume Claims (PVCs) and bind them to applications.

Learn More