Install Pulse Kubernetes Resources with Helm

This article describes how to install Pulse on Kubernetes by using the Pulse Helm chart.


Prerequisites

Before you begin, make sure that the following database components are deployed:

  • MongoDB

  • VictoriaMetrics

  • Elasticsearch

  • PostgreSQL

  • NATS

For database installation instructions, see the database deployment documentation.

Info

All commands in this article assume that you are running from the repository root directory, which is the parent directory of helm-pulse.


Install Pulse

Run the following command to install Pulse.

helm install <RELEASE_NAME> ./helm-pulse \ --namespace <NAMESPACE> \ --create-namespace \ --set global.image.tag="<Image Tag>" \ --set global.namespace=<NAMESPACE> \ --set global.imagePullSecrets[0].name=<Image Pull Secret Name> \ --set pulse-core.manager.mongoUrl="<Encrypted MongoDB Connection String>" \ --set pulse-core.manager.vminsertUrl="<VMInsert Service URL>" \ --set pulse-core.manager.vmselectUrl="<VMSelect Service URL>" \ --set pulse-core.manager.natsUrl="<NATS Service URL>" \ --set pulse-core.manager.pgUrl="<PostgreSQL Service URL>" \ --set pulse-core.manager.redisUrl="<Redis Service URL>" \ --set pulse-core.manager.elasticUrl="<Elasticsearch Service URL>" \ --set pulse-core.manager.logstashUrl="<Logstash Service URL>" \ --set pulse-core.manager.createAcceloManagerRoute=<true|false> \ --set pulse-core.manager.enableK8sDb=<true|false> \ --set pulse-core.ui.exposeUI=<true|false> \ --set pulse-core.streaming.exposeRoute=<true|false> \ --set pulse-core.hydra.exposeRoute=<true|false> \ --set loadBalancerServices.ad-logstash.enabled=<true|false> \ --set pulselogs.rbac.create=<true|false> \ --set pulselogs.scc.create=<true|false> \ --set pulselogs.namespace=<NAMESPACE> \ --set pulsenode.namespace=<NAMESPACE> \ --set pulsenode.rbac.create=<true|false> \ --set pulsenode.scc.create=<true|false> \ --set global.routeSuffix="<OpenShift Route Suffix>" \ --set global.imageCredentials.password='<Base64 Encoded Registry Token>'

Example deployments

OpenShift with Pulse Node and Pulse Logs

helm install pulse ./helm-pulse \ --namespace pulse \ --create-namespace \ --set global.image.tag=testBuild-k8s \ --set global.namespace=pulse \ --set global.imagePullSecrets[0].name=adreg \ --set pulse-core.manager.mongoUrl="<encrypted-value>" \ --set pulse-core.manager.vminsertUrl="vminsert-pulse-victoriametrics.pulse-vm.svc.cluster.local:8480" \ --set pulse-core.manager.vmselectUrl="vmselect-pulse-victoriametrics.pulse-vm.svc.cluster.local:8481" \ --set pulse-core.manager.natsUrl="pulse-nats.pulse-nats.svc.cluster.local:4222" \ --set pulse-core.manager.pgUrl="pulse-postgresql-rw.pulse-pg.svc.cluster.local:5432" \ --set pulse-core.manager.redisUrl="redis" \ --set pulse-core.manager.elasticUrl="pulse-elasticsearch-es-http.pulse-es.svc.cluster.local" \ --set pulse-core.manager.logstashUrl="pulse-logstash.pulse-logstash.svc.cluster.local" \ --set pulse-core.manager.createAcceloManagerRoute=true \ --set pulse-core.manager.enableK8sDb=true \ --set pulse-core.ui.exposeUI=true \ --set pulse-core.streaming.exposeRoute=true \ --set pulse-core.hydra.exposeRoute=true \ --set loadBalancerServices.ad-logstash.enabled=true \ --set pulselogs.rbac.create=true \ --set pulselogs.scc.create=true \ --set pulselogs.namespace=pulse \ --set pulsenode.namespace=pulse \ --set pulsenode.rbac.create=true \ --set pulsenode.scc.create=true \ --set global.routeSuffix="apps.os-pnc.acceldata.tech" \ --set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>'

OpenShift without Pulse Node and Pulse Logs

helm install pulse ./helm-pulse \ --namespace pulse \ --create-namespace \ --set global.image.tag=testBuild-k8s \ --set global.namespace=pulse \ --set global.imagePullSecrets[0].name=adreg \ --set pulse-core.manager.mongoUrl="<encrypted-value>" \ --set pulse-core.manager.enableK8sDb=true \ --set pulse-core.ui.exposeUI=true \ --set pulse-core.streaming.exposeRoute=true \ --set pulse-core.hydra.exposeRoute=true \ --set loadBalancerServices.ad-logstash.enabled=true \ --set global.routeSuffix="apps.os-pnc.acceldata.tech" \ --set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>'

Kubernetes with Pulse Node and Pulse Logs

helm install pulse ./helm-pulse \ --namespace pulse \ --create-namespace \ --set global.image.tag=testBuild-k8s \ --set global.namespace=pulse \ --set global.imagePullSecrets[0].name=adreg \ --set pulse-core.manager.enableK8sDb=true \ --set loadBalancerServices.ad-logstash.enabled=true \ --set pulselogs.rbac.create=true \ --set pulselogs.namespace=pulse \ --set pulsenode.namespace=pulse \ --set pulsenode.rbac.create=true \ --set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>'

Kubernetes without Pulse Node and Pulse Logs

helm install pulse ./helm-pulse \ --namespace pulse \ --create-namespace \ --set global.image.tag=testBuild-k8s \ --set global.namespace=pulse \ --set global.imagePullSecrets[0].name=adreg \ --set pulse-core.manager.enableK8sDb=true \ --set loadBalancerServices.ad-logstash.enabled=true \ --set global.imageCredentials.password='<BASE64_ENCODED_TOKEN>'

Helm Parameter Reference

Global parameters

Parameter

Description

global.image.tag

Container image tag for all Pulse components

global.namespace

Target Kubernetes namespace for Pulse resources

global.imagePullSecrets[0].name

Name of the Kubernetes secret used to pull images from a private registry

global.routeSuffix

Base domain suffix for OpenShift routes

global.imageCredentials.password

Base64-encoded Docker registry credentials token

Service URLs

Parameter

Description

pulse-core.manager.mongoUrl

Encrypted MongoDB connection string

pulse-core.manager.vminsertUrl

VictoriaMetrics VMInsert service URL

pulse-core.manager.vmselectUrl

VictoriaMetrics VMSelect service URL

pulse-core.manager.natsUrl

NATS service URL

pulse-core.manager.pgUrl

PostgreSQL service URL

pulse-core.manager.redisUrl

Redis service URL or hostname

pulse-core.manager.elasticUrl

Elasticsearch service URL

pulse-core.manager.logstashUrl

Logstash service URL

Manager settings

Parameter

Description

pulse-core.manager.createAcceloManagerRoute

Create an OpenShift route for the Accelo Manager service

pulse-core.manager.enableK8sDb

Enable Kubernetes-managed database connectivity

Route and UI exposure

Parameter

Description

pulse-core.ui.exposeUI

Create a route to expose the Pulse UI

pulse-core.streaming.exposeRoute

Create a route for the streaming service

pulse-core.hydra.exposeRoute

Create a route for the Hydra service

Load balancer services

Parameter

Description

loadBalancerServices.ad-logstash.enabled

Expose Logstash through a LoadBalancer service

Pulse Logs settings

Parameter

Description

pulselogs.rbac.create

Create RBAC resources for Pulse Logs

pulselogs.scc.create

Create OpenShift SecurityContextConstraints for Pulse Logs

pulselogs.namespace

Namespace where Pulse Logs is deployed

Pulse Node settings

Parameter

Description

pulsenode.namespace

Namespace where Pulse Node is deployed

pulsenode.rbac.create

Create RBAC resources for Pulse Node

pulsenode.scc.create

Create OpenShift SecurityContextConstraints for Pulse Node


Verify the installation

kubectl get pods -n <NAMESPACE> kubectl get svc -n <NAMESPACE>

Uninstall Pulse

helm uninstall <RELEASE_NAME> -n <NAMESPACE>

Example:

helm uninstall pulse -n pulse