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
