Helm
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.
Note: Observability for PowerMax works only with CSI PowerMax driver with Proxy in StandAlone mode.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 Docker image | dellemc/csm-topology:v1.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 | dellemc/csm-metrics-powerflex:v1.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 | dellemc/csm-metrics-powerstore:v1.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 | dellemc/csm-metrics-powerscale:v1.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.