Helm
Starting with CSM 1.12, all deployments will use images from quay.io by default. New release images will be available on Docker Hub until CSM 1.14 (May 2025), and existing releases will remain on Docker Hub.
The Container Storage Modules (CSM) for Observability Helm chart bootstraps an Observability deployment on a Kubernetes cluster using the Helm package manager.
Prerequisites
- Helm 3.x
- The deployment of one or more supported Dell CSI drivers
Install the CSM for Observability Helm Chart
Steps
-
Create a namespace where you want to install the module
kubectl create namespace karavi
-
Install cert-manager CRDs
kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.10.0/cert-manager.crds.yaml
-
Add the Dell Helm Charts repo
helm repo add dell https://dell.github.io/helm-charts
-
Copy only the deployed CSI driver entities to the Observability namespace
PowerFlex
-
Copy the config Secret from the CSI PowerFlex namespace into the CSM for Observability namespace:
kubectl get secret vxflexos-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver secret name is not the default
vxflexos-config
, please use the following command to copy secret:kubectl get secret [VXFLEXOS-CONFIG] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [VXFLEXOS-CONFIG]/name: vxflexos-config/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If CSM for Authorization is enabled for CSI PowerFlex, perform the following steps:
-
Copy the driver configuration parameters ConfigMap from the CSI PowerFlex namespace into the CSM for Observability namespace:
kubectl get configmap vxflexos-config-params -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver configmap name is not the default
vxflexos-config-params
, please use the following command to copy configmap:kubectl get configmap [VXFLEXOS-CONFIG-PARAMS] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [VXFLEXOS-CONFIG-PARAMS]/name: vxflexos-config-params/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
-
Copy the
karavi-authorization-config
,proxy-server-root-certificate
,proxy-authz-tokens
Secret from the CSI PowerFlex namespace into the CSM for Observability namespace:kubectl get secret karavi-authorization-config proxy-server-root-certificate proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
PowerStore
-
Copy the config Secret from the CSI PowerStore namespace into the CSM for Observability namespace:
kubectl get secret powerstore-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver secret name is not the default
powerstore-config
, please use the following command to copy secret:kubectl get secret [POWERSTORE-CONFIG] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [POWERSTORE-CONFIG]/name: powerstore-config/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
PowerScale
-
Copy the config Secret from the CSI PowerScale namespace into the CSM for Observability namespace:
kubectl get secret isilon-creds -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver secret name is not the default
isilon-creds
, please use the following command to copy secret:kubectl get secret [ISILON-CREDS] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [ISILON-CREDS]/name: isilon-creds/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If CSM for Authorization is enabled for CSI PowerScale, perform these steps:
-
Copy the driver configuration parameters ConfigMap from the CSI PowerScale namespace into the CSM for Observability namespace:
kubectl get configmap isilon-config-params -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver configmap name is not the default
isilon-config-params
, please use the following command to copy configmap:kubectl get configmap [ISILON-CONFIG-PARAMS] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [ISILON-CONFIG-PARAMS]/name: isilon-config-params/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
-
Copy the
karavi-authorization-config
,proxy-server-root-certificate
,proxy-authz-tokens
Secret from the CSI PowerScale namespace into the CSM for Observability namespace:kubectl get secret karavi-authorization-config proxy-server-root-certificate proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | sed 's/name: karavi-authorization-config/name: isilon-karavi-authorization-config/' | sed 's/name: proxy-server-root-certificate/name: isilon-proxy-server-root-certificate/' | sed 's/name: proxy-authz-tokens/name: isilon-proxy-authz-tokens/' | kubectl create -f -
PowerMax
-
Copy the configmap
powermax-reverseproxy-config
from the CSI Driver for Dell PowerMax namespace to the CSM namespace.kubectl get configmap powermax-reverseproxy-config -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver configmap name is not the default
powermax-reverseproxy-config
, please use the following command to copy configmap:kubectl get configmap [POWERMAX-REVERSEPROXY-CONFIG] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [POWERMAX-REVERSEPROXY-CONFIG]/name: powermax-reverseproxy-config/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
-
Copy the secrets in
powermax-reverseproxy-config
from the CSI Driver for Dell PowerMax namespace to the CSM namespace.for secret in $(kubectl get configmap powermax-reverseproxy-config -n [CSI_DRIVER_NAMESPACE] -o jsonpath="{.data.config\.yaml}" | grep arrayCredentialSecret | awk 'BEGIN{FS=":"}{print $2}' | uniq) do kubectl get secret $secret -n [CSI_DRIVER_NAMESPACE] -o yaml | sed "s/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/" | kubectl create -f - done
If the CSI driver configmap name is not the default
powermax-reverseproxy-config
, please use the following command to copy secrets:for secret in $(kubectl get configmap [POWERMAX-REVERSEPROXY-CONFIG] -n [CSI_DRIVER_NAMESPACE] -o jsonpath="{.data.config\.yaml}" | grep arrayCredentialSecret | awk 'BEGIN{FS=":"}{print $2}' | uniq) do kubectl get secret $secret -n [CSI_DRIVER_NAMESPACE] -o yaml | sed "s/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/" | kubectl create -f - done
If CSM for Authorization is enabled for CSI PowerMax, perform these steps:
-
Copy the driver configuration parameters ConfigMap from the CSI PowerMax namespace into the CSM for Observability namespace:
kubectl get configmap powermax-config-params -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
If the CSI driver configmap name is not the default
powermax-config-params
, please use the following command to copy configmap:kubectl get configmap [POWERMAX-CONFIG-PARAMS] -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/name: [POWERMAX-CONFIG-PARAMS]/name: powermax-config-params/' | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | kubectl create -f -
-
Copy the
karavi-authorization-config
,proxy-server-root-certificate
,proxy-authz-tokens
Secret from the CSI PowerMax namespace into the CSM for Observability namespace:kubectl get secret karavi-authorization-config proxy-server-root-certificate proxy-authz-tokens -n [CSI_DRIVER_NAMESPACE] -o yaml | sed 's/namespace: [CSI_DRIVER_NAMESPACE]/namespace: [CSM_NAMESPACE]/' | sed 's/name: karavi-authorization-config/name: powermax-karavi-authorization-config/' | sed 's/name: proxy-server-root-certificate/name: powermax-proxy-server-root-certificate/' | sed 's/name: proxy-authz-tokens/name: powermax-proxy-authz-tokens/' | kubectl create -f -
-
-
Configure the parameters and install the CSM for Observability Helm Chart
A default values.yaml file is located here that can be used for installation. This can be copied into a file named
myvalues.yaml
and either used as is or modified accordingly.Note:
- The default
values.yaml
is configured to deploy the CSM for Observability Topology service on install. - If CSM for Authorization is enabled for CSI PowerFlex, the
karaviMetricsPowerflex.authorization
parameters must be properly configured in your values file for CSM Observability. - If CSM for Authorization is enabled for CSI PowerScale, the
karaviMetricsPowerscale.authorization
parameters must be properly configured in your values file for CSM Observability. - If CSM for Authorization is enabled for CSI PowerMax, the
karaviMetricsPowerMax.authorization
parameters must be properly configured in your values file for CSM Observability.
helm install karavi-observability dell/karavi-observability -n [CSM_NAMESPACE] -f myvalues.yaml
Alternatively, you can specify each parameter using the ‘–set key=value[,key=value]’ and/or ‘–set-file key=value[,key=value] arguments to ‘helm install’. For example:
helm install karavi-observability dell/karavi-observability -n [CSM_NAMESPACE] \ --set-file karaviTopology.certificateFile=<location-of-karavi-topology-certificate-file> \ --set-file karaviTopology.privateKeyFile=<location-of-karavi-topology-private-key-file> \ --set-file otelCollector.certificateFile=<location-of-otel-collector-certificate-file> \ --set-file otelCollector.privateKeyFile=<location-of-otel-collector-private-key-file>
- The default
Configuration
The following table lists the configurable parameters of the CSM for Observability Helm chart and their default values.
Parameter | Description | Default |
---|---|---|
karaviTopology.image |
Location of the csm-topology Container image | quay.io/dell/container-storage-modules/csm-topology:v1.10.0 |
karaviTopology.enabled |
Enable the CSM for Observability Topology service | true |
karaviTopology.provisionerNames |
Provisioner Names used to filter the Persistent Volumes created on the Kubernetes cluster (must be a comma-separated list) | csi-vxflexos.dellemc.com |
karaviTopology.service.type |
Kubernetes service type | ClusterIP |
karaviTopology.certificateFile |
Optional valid CA public certificate file that will be used to deploy the Topology service. Must use domain name ‘karavi-topology’. | |
karaviTopology.privateKeyFile |
Optional public certificate’s associated private key file that will be used to deploy the Topology service. Must use domain name ‘karavi-topology’. | |
karaviTopology.logLevel |
Output logs that are at or above the given log level severity (Valid values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC) | INFO |
karaviTopology.logFormat |
Output logs in the specified format (Valid values: text, json) | text |
otelCollector.certificateFile |
Optional valid CA public certificate file that will be used to deploy the OpenTelemetry Collector. Must use domain name ‘otel-collector’. | |
otelCollector.privateKeyFile |
Optional public certificate’s associated private key file that will be used to deploy the OpenTelemetry Collector. Must use domain name ‘otel-collector’. | |
otelCollector.service.type |
Kubernetes service type | ClusterIP |
karaviMetricsPowerflex.image |
CSM Metrics for PowerFlex Service image | quay.io/dell/container-storage-modules/csm-metrics-powerflex:v1.10.0 |
karaviMetricsPowerflex.enabled |
Enable CSM Metrics for PowerFlex service | true |
karaviMetricsPowerflex.collectorAddr |
Metrics Collector accessible from the Kubernetes cluster | otel-collector:55680 |
karaviMetricsPowerflex.provisionerNames |
Provisioner Names used to filter for determining PowerFlex SDC nodes( Must be a Comma-separated list) | csi-vxflexos.dellemc.com |
karaviMetricsPowerflex.sdcPollFrequencySeconds |
The polling frequency (in seconds) to gather SDC metrics | 10 |
karaviMetricsPowerflex.volumePollFrequencySeconds |
The polling frequency (in seconds) to gather volume metrics | 10 |
karaviMetricsPowerflex.storageClassPoolPollFrequencySeconds |
The polling frequency (in seconds) to gather storage class/pool metrics | 10 |
karaviMetricsPowerflex.concurrentPowerflexQueries |
The number of simultaneous metrics queries to make to Powerflex(MUST be less than 10; otherwise, several request errors from Powerflex will ensue. | 10 |
karaviMetricsPowerflex.authorization.enabled |
Authorization is an optional feature to apply credential shielding of the backend PowerFlex. | false |
karaviMetricsPowerflex.authorization.proxyHost |
Hostname of the csm-authorization server. | |
karaviMetricsPowerflex.authorization.skipCertificateValidation |
A boolean that enables/disables certificate validation of the csm-authorization server. | |
karaviMetricsPowerflex.sdcMetricsEnabled |
Enable PowerFlex SDC Metrics Collection | true |
karaviMetricsPowerflex.volumeMetricsEnabled |
Enable PowerFlex Volume Metrics Collection | true |
karaviMetricsPowerflex.storageClassPoolMetricsEnabled |
Enable PowerFlex Storage Class/Pool Metrics Collection | true |
karaviMetricsPowerflex.endpoint |
Endpoint for pod leader election | karavi-metrics-powerflex |
karaviMetricsPowerflex.service.type |
Kubernetes service type | ClusterIP |
karaviMetricsPowerflex.logLevel |
Output logs that are at or above the given log level severity (Valid values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC) | INFO |
karaviMetricsPowerflex.logFormat |
Output logs in the specified format (Valid values: text, json) | text |
karaviMetricsPowerstore.image |
CSM Metrics for PowerStore Service image | quay.io/dell/container-storage-modules/csm-metrics-powerstore:v1.10.0 |
karaviMetricsPowerstore.enabled |
Enable CSM Metrics for PowerStore service | true |
karaviMetricsPowerstore.collectorAddr |
Metrics Collector accessible from the Kubernetes cluster | otel-collector:55680 |
karaviMetricsPowerstore.provisionerNames |
Provisioner Names used to filter for determining PowerStore volumes (must be a Comma-separated list) | csi-powerstore.dellemc.com |
karaviMetricsPowerstore.volumePollFrequencySeconds |
The polling frequency (in seconds) to gather volume metrics | 10 |
karaviMetricsPowerstore.concurrentPowerstoreQueries |
The number of simultaneous metrics queries to make to PowerStore (must be less than 10; otherwise, several request errors from PowerStore will ensue.) | 10 |
karaviMetricsPowerstore.volumeMetricsEnabled |
Enable PowerStore Volume Metrics Collection | true |
karaviMetricsPowerstore.endpoint |
Endpoint for pod leader election | karavi-metrics-powerstore |
karaviMetricsPowerstore.service.type |
Kubernetes service type | ClusterIP |
karaviMetricsPowerstore.logLevel |
Output logs that are at or above the given log level severity (Valid values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC) | INFO |
karaviMetricsPowerstore.logFormat |
Output logs in the specified format (Valid values: text, json) | text |
karaviMetricsPowerstore.zipkin.uri |
URI of a Zipkin instance where tracing data can be forwarded | |
karaviMetricsPowerstore.zipkin.serviceName |
Service name used for Zipkin tracing data | metrics-powerstore |
karaviMetricsPowerstore.zipkin.probability |
Percentage of trace information to send to Zipkin (Valid range: 0.0 to 1.0) | 0 |
karaviMetricsPowerscale.image |
CSM Metrics for PowerScale Service image | quay.io/dell/container-storage-modules/csm-metrics-powerscale:v1.7.0 |
karaviMetricsPowerscale.enabled |
Enable CSM Metrics for PowerScale service | true |
karaviMetricsPowerscale.collectorAddr |
Metrics Collector accessible from the Kubernetes cluster | otel-collector:55680 |
karaviMetricsPowerscale.provisionerNames |
Provisioner Names used to filter for determining PowerScale volumes (must be a Comma-separated list) | csi-isilon.dellemc.com |
karaviMetricsPowerscale.capacityMetricsEnabled |
Enable PowerScale capacity metric Collection | true |
karaviMetricsPowerscale.performanceMetricsEnabled |
Enable PowerScale performance metric Collection | true |
karaviMetricsPowerscale.clusterCapacityPollFrequencySeconds |
The polling frequency (in seconds) to gather cluster capacity metrics | 30 |
karaviMetricsPowerscale.clusterPerformancePollFrequencySeconds |
The polling frequency (in seconds) to gather cluster performance metrics | 20 |
karaviMetricsPowerscale.quotaCapacityPollFrequencySeconds |
The polling frequency (in seconds) to gather volume capacity metrics | 30 |
karaviMetricsPowerscale.concurrentPowerscaleQueries |
The number of simultaneous metrics queries to make to PowerScale(MUST be less than 10; otherwise, several request errors from PowerScale will ensue.) | 10 |
karaviMetricsPowerscale.endpoint |
Endpoint for pod leader election | karavi-metrics-powerscale |
karaviMetricsPowerscale.service.type |
Kubernetes service type | ClusterIP |
karaviMetricsPowerscale.logLevel |
Output logs that are at or above the given log level severity (Valid values: TRACE, DEBUG, INFO, WARN, ERROR, FATAL, PANIC) | INFO |
karaviMetricsPowerscale.logFormat |
Output logs in the specified format (Valid values: text, json) | text |
karaviMetricsPowerscale.isiClientOptions.isiSkipCertificateValidation |
Skip OneFS API server’s certificates | true |
karaviMetricsPowerscale.isiClientOptions.isiAuthType |
0 to enable session-based Authentication; 1 to enables basic Authentication | 1 |
karaviMetricsPowerscale.isiClientOptions.isiLogVerbose |
Decide High/Medium/Low content of the OneFS REST API message | 0 |
karaviMetricsPowerscale.authorization.enabled |
Authorization is an optional feature to apply credential shielding of the backend PowerScale. | false |
karaviMetricsPowerscale.authorization.proxyHost |
Hostname of the csm-authorization server. | |
karaviMetricsPowerscale.authorization.skipCertificateValidation |
A boolean that enables/disables certificate validation of the csm-authorization server. | |
karaviMetricsPowerMax.capacityMetricsEnabled |
Enable PowerMax capacity metric Collection | true |
karaviMetricsPowerMax.performanceMetricsEnabled |
Enable PowerMax performance metric Collection | true |
karaviMetricsPowerMax.capacityPollFrequencySeconds |
The polling frequency (in seconds) to gather capacity metrics | 20 |
karaviMetricsPowerMax.performancePollFrequencySeconds |
The polling frequency (in seconds) to gather performance metrics | 20 |
karaviMetricsPowerMax.concurrentPowerMaxQueries |
The number of simultaneous metrics queries to make to PowerMax (MUST be less than 10; otherwise, several request errors from PowerMax will ensue.) | 10 |
karaviMetricsPowerMax.authorization.enabled |
Authorization is an optional feature to apply credential shielding of the backend PowerMax. | false |
karaviMetricsPowerMax.authorization.proxyHost |
Hostname of the csm-authorization server. | |
karaviMetricsPowerMax.authorization.skipCertificateValidation |
A boolean that enables/disables certificate validation of the csm-authorization server. |
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.