Deploy Pulse Databases via Helm
This page describes how to install each database component of the helm-databases umbrella Helm chart on OpenShift.
Info
Note: All commands assume you are running from the repository root, which is the parent directory of helm-databases/.
Common Parameters
These parameters are shared across most or all database installations.
Parameter | Description |
|---|---|
| Enable OpenShift-specific configurations. Set to |
| Name of the Kubernetes secret used to pull images from a private registry. |
| Image pull policy. Valid values are |
| StorageClass to use for persistent volume claims. |
| Base64-encoded Docker registry credentials token. |
| Let the operator manage the security context. Required for OpenShift. |
| Image pull secret name for the NATS sub-chart. |
1. MongoDB
Installation Command
helm install <RELEASE_NAME> ./helm-databases \
-n <NAMESPACE> --create-namespace \
-f helm-databases/values/mongo-only.yaml \
--set mongodb.cr.version="<MongoDB Version>" \
--set mongodb.cr.mongodImage="<MongoDB Image>" \
--set global.openshift=<true|false> \
--set mongodb.managedSecurityContext=<true|false> \
--set global.imagePullSecrets[0]=<Image Pull Secret Name> \
--set mongodb.registry.imagePullSecrets=<Image Pull Secret Name> \
--set global.imagePullPolicy=<Image Pull Policy> \
--set global.storageClassName='<Storage Class Name>' \
--set global.imageCredentials.password='<Base64 Encoded Registry Token>' \
--set mongodb.cr.storage.size=<Storage Size> \
--set mongodb.cr.resources.limits.cpu=<CPU Limit> \
--set mongodb.cr.resources.limits.memory=<Memory Limit> \
--set mongodb.cr.resources.requests.cpu=<CPU Request> \
--set mongodb.cr.resources.requests.memory=<Memory Request> \
--timeout <Timeout Duration>
Example Command for OpenShift
helm install pulse-mongo ./helm-databases \
-n pulse-mongo --create-namespace \
-f helm-databases/values/mongo-only.yaml \
--set mongodb.cr.version="8.0.18" \
--set mongodb.cr.mongodImage="191579300362.dkr.ecr.us-east-1.amazonaws.com/acceldata/ad-database:testBuild-k8sqe" \
--set global.openshift=true \
--set mongodb.managedSecurityContext=true \
--set global.imagePullSecrets[0]=adreg \
--set mongodb.registry.imagePullSecrets=adreg \
--set global.imagePullPolicy=IfNotPresent \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set mongodb.cr.storage.size=50Gi \
--set mongodb.cr.resources.limits.cpu=1 \
--set mongodb.cr.resources.limits.memory=4Gi \
--set mongodb.cr.resources.requests.cpu=500m \
--set mongodb.cr.resources.requests.memory=2Gi \
--timeout 20m
Example Command for Vanilla Kubernetes
helm install pulse-mongo ./helm-databases \
-n pulse-mongo --create-namespace \
-f helm-databases/values/mongo-only.yaml \
--set mongodb.cr.version="8.0.18" \
--set mongodb.cr.mongodImage="191579300362.dkr.ecr.us-east-1.amazonaws.com/acceldata/ad-database:testBuild-k8sqe" \
--set global.imagePullSecrets[0]=adreg \
--set mongodb.registry.imagePullSecrets=adreg \
--set global.imagePullPolicy=IfNotPresent \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set mongodb.cr.storage.size=50Gi \
--set mongodb.cr.resources.limits.cpu=1 \
--set mongodb.cr.resources.limits.memory=4Gi \
--set mongodb.cr.resources.requests.cpu=500m \
--set mongodb.cr.resources.requests.memory=2Gi \
--timeout 20m
Parameter Reference
Parameter | Description |
|---|---|
| MongoDB server version to deploy. |
| Full image path, in |
| Let the MongoDB operator manage the pod security context. Required for OpenShift. |
| Image pull secret name used by the MongoDB operator. |
| Persistent volume size for MongoDB data. |
| CPU limit for the MongoDB pod. |
| Memory limit for the MongoDB pod. |
| CPU request for the MongoDB pod. |
| Memory request for the MongoDB pod. |
| Maximum time Helm will wait for the install to complete. |
2. VictoriaMetrics
Installation Command
helm install <RELEASE_NAME> ./helm-databases \
-n <NAMESPACE> --create-namespace \
--set victoriametrics.cr.auth.username=<VM Auth Username> \
--set 'victoriametrics.cr.auth.password=<VM Auth Password>' \
--set mongodb.managedSecurityContext=<true|false> \
--set global.openshift=<true|false> \
--set nats.global.image.pullSecretNames[0]=<Image Pull Secret Name> \
--set global.storageClassName='<Storage Class Name>' \
--set global.imageCredentials.password='<Base64 Encoded Registry Token>' \
--set victoriametrics.cr.vmstorage.storage.size=<VMStorage PV Size> \
--set victoriametrics.cr.vmstorage.resources.limits.cpu=<VMStorage CPU Limit> \
--set victoriametrics.cr.vmstorage.resources.limits.memory=<VMStorage Memory Limit> \
--set victoriametrics.cr.vmstorage.resources.requests.cpu=<VMStorage CPU Request> \
--set victoriametrics.cr.vmstorage.resources.requests.memory=<VMStorage Memory Request> \
--set victoriametrics.cr.vmselect.storage.size=<VMSelect PV Size> \
--set victoriametrics.cr.vmselect.resources.limits.cpu=<VMSelect CPU Limit> \
--set victoriametrics.cr.vmselect.resources.limits.memory=<VMSelect Memory Limit> \
--set victoriametrics.cr.vmselect.resources.requests.cpu=<VMSelect CPU Request> \
--set victoriametrics.cr.vmselect.resources.requests.memory=<VMSelect Memory Request> \
--set victoriametrics.cr.vminsert.resources.limits.cpu=<VMInsert CPU Limit> \
--set victoriametrics.cr.vminsert.resources.limits.memory=<VMInsert Memory Limit> \
--set victoriametrics.cr.vminsert.resources.requests.cpu=<VMInsert CPU Request> \
--set victoriametrics.cr.vminsert.resources.requests.memory=<VMInsert Memory Request> \
-f helm-databases/values/victoriametrics-only.yaml
Post-Install Upgrade
After install, run an upgrade to reconcile values:
helm upgrade <RELEASE_NAME> ./helm-databases \
--namespace <NAMESPACE> \
--reuse-values
Example Command for OpenShift
helm install pulse-vm ./helm-databases \
-n pulse-vm --create-namespace \
--set victoriametrics.cr.auth.username=acceldata \
--set 'victoriametrics.cr.auth.password=D@t@Ops' \
--set mongodb.managedSecurityContext=true \
--set global.openshift=true \
--set nats.global.image.pullSecretNames[0]=adreg \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set victoriametrics.cr.vmstorage.storage.size=50Gi \
--set victoriametrics.cr.vmstorage.resources.limits.cpu=1 \
--set victoriametrics.cr.vmstorage.resources.limits.memory=4Gi \
--set victoriametrics.cr.vmstorage.resources.requests.cpu=500m \
--set victoriametrics.cr.vmstorage.resources.requests.memory=1Gi \
--set victoriametrics.cr.vmselect.storage.size=10Gi \
--set victoriametrics.cr.vmselect.resources.limits.cpu=1 \
--set victoriametrics.cr.vmselect.resources.limits.memory=2Gi \
--set victoriametrics.cr.vmselect.resources.requests.cpu=500m \
--set victoriametrics.cr.vmselect.resources.requests.memory=512Mi \
--set victoriametrics.cr.vminsert.resources.limits.cpu=1 \
--set victoriametrics.cr.vminsert.resources.limits.memory=2Gi \
--set victoriametrics.cr.vminsert.resources.requests.cpu=500m \
--set victoriametrics.cr.vminsert.resources.requests.memory=512Mi \
-f helm-databases/values/victoriametrics-only.yaml
helm upgrade pulse-vm ./helm-databases \
--namespace pulse-vm \
--reuse-values
Example Command for Vanilla Kubernetes
helm install pulse-vm ./helm-databases \
-n pulse-vm --create-namespace \
--set victoriametrics.cr.auth.username=acceldata \
--set 'victoriametrics.cr.auth.password=D@t@Ops' \
--set nats.global.image.pullSecretNames[0]=adreg \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set victoriametrics.cr.vmstorage.storage.size=50Gi \
--set victoriametrics.cr.vmstorage.resources.limits.cpu=1 \
--set victoriametrics.cr.vmstorage.resources.limits.memory=4Gi \
--set victoriametrics.cr.vmstorage.resources.requests.cpu=500m \
--set victoriametrics.cr.vmstorage.resources.requests.memory=1Gi \
--set victoriametrics.cr.vmselect.storage.size=10Gi \
--set victoriametrics.cr.vmselect.resources.limits.cpu=1 \
--set victoriametrics.cr.vmselect.resources.limits.memory=2Gi \
--set victoriametrics.cr.vmselect.resources.requests.cpu=500m \
--set victoriametrics.cr.vmselect.resources.requests.memory=512Mi \
--set victoriametrics.cr.vminsert.resources.limits.cpu=1 \
--set victoriametrics.cr.vminsert.resources.limits.memory=2Gi \
--set victoriametrics.cr.vminsert.resources.requests.cpu=500m \
--set victoriametrics.cr.vminsert.resources.requests.memory=512Mi \
-f helm-databases/values/victoriametrics-only.yaml
helm upgrade pulse-vm ./helm-databases \
--namespace pulse-vm \
--reuse-values
Parameter Reference
Parameter | Description |
|---|---|
| Username for VictoriaMetrics basic auth. |
| Password for VictoriaMetrics basic auth. |
| Persistent volume size for the VMStorage component. |
| CPU limit for VMStorage pods. |
| Memory limit for VMStorage pods. |
| CPU request for VMStorage pods. |
| Memory request for VMStorage pods. |
| Persistent volume size for the VMSelect component. |
| CPU limit for VMSelect pods. |
| Memory limit for VMSelect pods. |
| CPU request for VMSelect pods. |
| Memory request for VMSelect pods. |
| CPU limit for VMInsert pods. |
| Memory limit for VMInsert pods. |
| CPU request for VMInsert pods. |
| Memory request for VMInsert pods. |
3. Elasticsearch
Installation Command
helm install <RELEASE_NAME> ./helm-databases \
-n <NAMESPACE> --create-namespace \
--set global.openshift=<true|false> \
--set mongodb.managedSecurityContext=<true|false> \
--set elasticsearch.cr.auth.password="<Admin Password>" \
--set elasticsearch.cr.auth.additionalUsers[0].username=<Additional Username> \
--set elasticsearch.cr.auth.additionalUsers[0].password="<Additional User Password>" \
--set elasticsearch.cr.auth.additionalUsers[0].roles[0]=<User Role> \
--set elasticsearch.cr.tls.p12.password="<PKCS12 Keystore Password>" \
--set elasticsearch.cr.httpPort=<HTTP Port> \
--set elasticsearch.cr.tls.disabled=<true|false> \
--set nats.global.image.pullSecretNames[1]=<Image Pull Secret Name> \
--set global.storageClassName='<Storage Class Name>' \
--set global.imageCredentials.password='<Base64 Encoded Registry Token>' \
--set elasticsearch.cr.nodeSets[0].name=<NodeSet Name> \
--set elasticsearch.cr.nodeSets[0].count=<Node Count> \
--set elasticsearch.cr.nodeSets[0].config.node\.store\.allow_mmap=<true|false> \
--set elasticsearch.cr.nodeSets[0].storage.size=<Storage Size> \
--set elasticsearch.cr.nodeSets[0].resources.limits.cpu=<CPU Limit> \
--set elasticsearch.cr.nodeSets[0].resources.limits.memory=<Memory Limit> \
--set elasticsearch.cr.nodeSets[0].resources.requests.cpu=<CPU Request> \
--set elasticsearch.cr.nodeSets[0].resources.requests.memory=<Memory Request> \
-f helm-databases/values/elastic-only.yaml
Post-Install Upgrade
After install, run an upgrade to reconcile values:
helm upgrade <RELEASE_NAME> ./helm-databases \
--namespace <NAMESPACE> \
--reuse-values
Example Command for OpenShift
helm install pulse-es ./helm-databases \
-n pulse-es --create-namespace \
--set global.openshift=true \
--set mongodb.managedSecurityContext=true \
--set elasticsearch.cr.auth.password="admin_password" \
--set elasticsearch.cr.auth.additionalUsers[0].username=pulse \
--set elasticsearch.cr.auth.additionalUsers[0].password="data@ops" \
--set elasticsearch.cr.auth.additionalUsers[0].roles[0]=superuser \
--set elasticsearch.cr.tls.p12.password="" \
--set elasticsearch.cr.httpPort=19013 \
--set elasticsearch.cr.tls.disabled=true \
--set nats.global.image.pullSecretNames[1]=adreg \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set elasticsearch.cr.nodeSets[0].name=default \
--set elasticsearch.cr.nodeSets[0].count=3 \
--set elasticsearch.cr.nodeSets[0].config.node\.store\.allow_mmap=true \
--set elasticsearch.cr.nodeSets[0].storage.size=50Gi \
--set elasticsearch.cr.nodeSets[0].resources.limits.cpu=1 \
--set elasticsearch.cr.nodeSets[0].resources.limits.memory=8Gi \
--set elasticsearch.cr.nodeSets[0].resources.requests.cpu=500m \
--set elasticsearch.cr.nodeSets[0].resources.requests.memory=4Gi \
-f helm-databases/values/elastic-only.yaml
helm upgrade pulse-es ./helm-databases \
--namespace pulse-es \
--reuse-values
Example Command for Vanilla Kubernetes
helm install pulse-es ./helm-databases \
-n pulse-es --create-namespace \
--set elasticsearch.cr.auth.password="admin_password" \
--set elasticsearch.cr.auth.additionalUsers[0].username=pulse \
--set elasticsearch.cr.auth.additionalUsers[0].password="data@ops" \
--set elasticsearch.cr.auth.additionalUsers[0].roles[0]=superuser \
--set elasticsearch.cr.tls.p12.password="" \
--set elasticsearch.cr.httpPort=19013 \
--set elasticsearch.cr.tls.disabled=true \
--set nats.global.image.pullSecretNames[1]=adreg \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set elasticsearch.cr.nodeSets[0].name=default \
--set elasticsearch.cr.nodeSets[0].count=3 \
--set elasticsearch.cr.nodeSets[0].config.node\.store\.allow_mmap=true \
--set elasticsearch.cr.nodeSets[0].storage.size=50Gi \
--set elasticsearch.cr.nodeSets[0].resources.limits.cpu=1 \
--set elasticsearch.cr.nodeSets[0].resources.limits.memory=8Gi \
--set elasticsearch.cr.nodeSets[0].resources.requests.cpu=500m \
--set elasticsearch.cr.nodeSets[0].resources.requests.memory=4Gi \
-f helm-databases/values/elastic-only.yaml
helm upgrade pulse-es ./helm-databases \
--namespace pulse-es \
--reuse-values
Parameter Reference
Parameter | Description |
|---|---|
| Password for the Elasticsearch admin user. |
| Username for an additional Elasticsearch user. |
| Password for the additional Elasticsearch user. |
| Role assigned to the additional user, for example, |
| Password for the PKCS#12 TLS keystore. Use an empty string to disable. |
| HTTP port Elasticsearch listens on. |
| Disable TLS for Elasticsearch HTTP endpoint. |
| Name identifier for the Elasticsearch node set. |
| Number of Elasticsearch nodes in the set. |
| Allow memory-mapped files for the Elasticsearch node store. |
| Persistent volume size per Elasticsearch node. |
| CPU limit per Elasticsearch node. |
| Memory limit per Elasticsearch node. |
| CPU request per Elasticsearch node. |
| Memory request per Elasticsearch node. |
4. PostgreSQL
Installation Command
helm install <RELEASE_NAME> ./helm-databases \
-n <NAMESPACE> --create-namespace \
-f helm-databases/values/postgres-only.yaml \
--set postgresql.useOperator=<true|false> \
--set nats.global.image.pullSecretNames[0]=<Image Pull Secret Name> \
--set global.storageClassName='<Storage Class Name>' \
--set global.imageCredentials.password='<Base64 Encoded Registry Token>' \
--set postgresql.standalone.storage.size=<Storage Size> \
--set postgresql.standalone.resources.limits.cpu=<CPU Limit> \
--set postgresql.standalone.resources.limits.memory=<Memory Limit> \
--set postgresql.standalone.resources.requests.cpu=<CPU Request> \
--set postgresql.standalone.resources.requests.memory=<Memory Request> \
-f helm-databases/values/openshift.yaml
Example Command for OpenShift
helm install pulse-pg ./helm-databases \
-n pulse-pg --create-namespace \
-f helm-databases/values/postgres-only.yaml \
--set postgresql.useOperator=false \
--set nats.global.image.pullSecretNames[0]=adreg \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set postgresql.standalone.storage.size=50Gi \
--set postgresql.standalone.resources.limits.cpu=1 \
--set postgresql.standalone.resources.limits.memory=4Gi \
--set postgresql.standalone.resources.requests.cpu=500m \
--set postgresql.standalone.resources.requests.memory=2Gi \
-f helm-databases/values/openshift.yaml
Example Command for Vanilla Kubernetes
helm install pulse-pg ./helm-databases \
-n pulse-pg --create-namespace \
-f helm-databases/values/postgres-only.yaml \
--set postgresql.useOperator=false \
--set nats.global.image.pullSecretNames[0]=adreg \
--set global.storageClassName='gp2-csi' \
--set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>' \
--set postgresql.standalone.storage.size=50Gi \
--set postgresql.standalone.resources.limits.cpu=1 \
--set postgresql.standalone.resources.limits.memory=4Gi \
--set postgresql.standalone.resources.requests.cpu=500m \
--set postgresql.standalone.resources.requests.memory=2Gi
Parameter Reference
Parameter | Description |
|---|---|
| Whether to deploy PostgreSQL via an operator. |
| Persistent volume size for PostgreSQL data. |
| CPU limit for the PostgreSQL pod. |
| Memory limit for the PostgreSQL pod. |
| CPU request for the PostgreSQL pod. |
| Memory request for the PostgreSQL pod. |
Info
Note: This installation uses two values files: postgres-only.yaml and openshift.yaml. The OpenShift values file provides additional security context and SCC-related settings.
5. NATS
Installation Command
helm install <RELEASE_NAME> ./helm-databases \
-n <NAMESPACE> --create-namespace \
--set global.openshift=<true|false> \
-f helm-databases/values/nats-only.yaml \
--set nats.global.image.pullSecretNames[0]=<Image Pull Secret Name> \
--set nats.loadBalancer.enabled=<true|false> \
--set global.storageClassName='<Storage Class Name>' \
--set nats.config.jetstream.fileStore.pvc.storageClassName='<Storage Class Name>' \
--set global.imageCredentials.password='<Base64 Encoded Registry Token>' \
--set nats.config.jetstream.fileStore.pvc.size=<JetStream PV Size> \
--set nats.container.merge.resources.limits.cpu=<CPU Limit> \
--set nats.container.merge.resources.limits.memory=<Memory Limit> \
--set nats.container.merge.resources.requests.cpu=<CPU Request> \
--set nats.container.merge.resources.requests.memory=<Memory Request>
Example Command for OpenShift
helm install pulse-nats ./helm-databases \
-n pulse-nats --create-namespace \
--set global.openshift=true \
-f helm-databases/values/nats-only.yaml \
--set nats.global.image.pullSecretNames[0]=adreg \
--set nats.loadBalancer.enabled=true \
--set global.storageClassName='gp2-csi' \
--set nats.config.jetstream.fileStore.pvc.storageClassName='gp2-csi' \
--set nats.config.jetstream.fileStore.pvc.size=20Gi \
--set nats.container.merge.resources.limits.cpu=1 \
--set nats.container.merge.resources.limits.memory=4Gi \
--set nats.container.merge.resources.requests.cpu=500m \
--set nats.container.merge.resources.requests.memory=2Gi
Example Command for Vanilla Kubernetes
helm install pulse-nats ./helm-databases \
-n pulse-nats --create-namespace \
-f helm-databases/values/nats-only.yaml \
--set nats.global.image.pullSecretNames[0]=adreg \
--set nats.loadBalancer.enabled=true \
--set global.storageClassName='gp2-csi' \
--set nats.config.jetstream.fileStore.pvc.storageClassName='gp2-csi' \
--set nats.config.jetstream.fileStore.pvc.size=20Gi \
--set nats.container.merge.resources.limits.cpu=1 \
--set nats.container.merge.resources.limits.memory=4Gi \
--set nats.container.merge.resources.requests.cpu=500m \
--set nats.container.merge.resources.requests.memory=2Gi
Parameter Reference
Parameter | Description |
|---|---|
| Image pull secret name for the NATS sub-chart. |
| Expose NATS via a LoadBalancer service. |
| StorageClass for the JetStream file store PVC. |
| Persistent volume size for the JetStream file store. |
| CPU limit for the NATS container. |
| Memory limit for the NATS container. |
| CPU request for the NATS container. |
| Memory request for the NATS container. |
Uninstall
To remove any of the database releases:
helm uninstall <RELEASE_NAME> -n <NAMESPACE>
For example:
helm uninstall pulse-mongo -n pulse-mongo
helm uninstall pulse-vm -n pulse-vm
helm uninstall pulse-es -n pulse-es
helm uninstall pulse-pg -n pulse-pg
helm uninstall pulse-nats -n pulse-nats
