Install Pulse Manager Server
The Pulse Manager Server is an API-driven service that helps you manage Pulse deployments.
This is responsible for:
- Deploying Pulse databases on VMs or bare metal servers.
- Managing cluster configurations
- Interacting with Kubernetes to create and update the Custom Resources (CRs) YAML file.
- Enabling the Pulse Operator to manage Pulse Service lifecycles based on the CRs automatically.
Pre-requisites
- Have your Kerberos files, CA certs, and configuration files ready. For more information, see Set up Configuration Files.
- Ensure the Ingress controller and rules are already installed and the Pulse services are reachable. For more information, see Ingress for Kubernetes (K8S).
Steps to Install
- Create a dedicated namespace for Pulse.
Create a dedicated namespace in your Kubernetes cluster to keep all Pulse resources organized and easily accessible.
kubectl create ns <pulse-namespace>
This command creates a separate workspace in your cluster to group all Pulse-related resources.
- Create Docker Registry secret.
Follow these steps to allow Kubernetes to securely pull Pulse images from Acceldata’s private ECR.
# Then use it in the secret creation command
kubectl create secret docker-registry <registry secret name>
--docker-server=https://191579300362.dkr.ecr.us-east-1.amazonaws.com
--docker-username=AWS
--docker-password=<AWS password>
-n <pulse-namespace>
This secret enables Kubernetes to authenticate with Acceldata’s private container registry and pull Pulse images securely.
- Download and extract the deployment
K8S_tar
.
Download and extract the K8S_tar
file. It contains all the YAML files needed to deploy Pulse Manager.
.rw-r--r--@ 9.1k 26 May 16:37 pulse_crd.yml
.rw-r--r--@ 2.3k 26 May 16:37 pulse_manager_server.yml
.rw-r--r--@ 2.6k 26 May 16:37 pulse_operator.yml
.rw-r--r--@ 4.8k 26 May 16:37 pulse_rbac.yml
These YAML files provide the necessary configuration for Kubernetes to deploy and manage Pulse services.
- Replace placeholders in YAML files.
Run the following sed
commands to replace the DEFAULT_NAMESPACE
and PULSE_REG
placeholders with actual values in your configuration files.
sed -i -e "s/PULSE_REG/<registry secret name>/g" *.yaml
sed -i -e "s/DEFAULT_NAMESPACE/<pulse-namespace>/g" *.yaml
These commands update the YAML files with your specific registry secret and namespace, ensuring the configuration is tailored to your environment.
- Add host entries in the
pulse_manager_server.yaml
deployment file.
If your Kubernetes cluster does not support DNS resolution for your database VMs or Hadoop nodes, you can manually add host entries in the pulse_manager_server.yaml
file.
Add the following hostAliases
section under the spec
of the pod
template:
hostAliases:
- ip: <IP Address 1>
hostnames:
- <host name 1>
- ip: <IP Address 1>
hostnames:
- <host name 1>
- ip: <IP Address 1>
hostnames:
- <host name 1>
This configuration allows the Pulse Manager Server to resolve database and Hadoop hostnames when DNS is not available in your Kubernetes environment.
- Update the required environment variables in YAML.
In the pulse_manager_server.yaml
file, update the following environment variables:
- Set the
PULSE_HOSTNAME
variable to your Ingress hostname. - Set the
ADSTREAM_URL
variable to your Ingress URL.
name PULSE_HOSTNAME
value"<Ingress-hostname>"
name ADSTREAM_URL
value"<Ingress-URL-of-adstream>"
This configuration is essential for enabling proper service-to-service communication.
- Apply the configuration files.
Apply the RBAC policies: Sets up the necessary roles and permissions.
kubectl apply -f pulse_rbac.yaml
Apply the Custom Resource Definition (CRD): Registers the custom resources required by the Pulse Operator.
kubectl apply -f pulse_crd.yaml
Deploy the Manager Server and Operator: Deploys the core Pulse components.
kubectl apply -f pulse_manager_server.yaml
kubectl apply -f pulse_operator.yaml
These steps deploy Pulse’s services and access controls into your Kubernetes cluster. This actually installs and starts the Pulse services.
- Verify the POD status.
After applying the deployments, check if both the Manager Server and Operator pods are running:
kubectl get pods -n <pulse-namespace>
The response from kubectl get pods -n <pulse-namespace>
must look like the following when both pods are running successfully:
NAME READY STATUS RESTARTS AGE
accelo-manager-76c9f796d-qp2fk 1/1 Running 0 139m
controller-manager-bdc9846d5-tbhth 1/1 Running 0 137m
- Verify that services were created.
To check whether the services have been successfully created, run:
kubectl get svc -n <pulse-namespace>
You must see output similar to the following:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
accelo-manager ClusterIP <IP Address> <none> 20001/TCP 142m
Detailed Recap with Purpose
Step | What You Do | Purpose / Why It Matters |
---|---|---|
1. Create a Namespace | kubectl create ns <pulse-namespace> | This creates a logical workspace in Kubernetes to organize and isolate all Pulse components. It avoids naming conflicts and makes it easier to manage, monitor, and clean up resources later. |
2. Create Docker Registry Secret | kubectl create secret docker-registry ... | Pulse container images are stored in a private image registry. This secret provides the credentials so Kubernetes can download those images securely. |
3. Download and Extract Setup Files | Extract k8s_tar containing YAML files | These YAML files are predefined configurations for all required Pulse components. They act as blueprints that tell Kubernetes how to deploy the Manager Server, Operator, RBAC roles, and CRDs. |
4. Replace Placeholders in YAMLs | sed -i -e "s/.../.../g" | The YAML files contain generic placeholders. You replace them with actual values (namespace, registry secret) so that Kubernetes can deploy to the correct environment with the correct settings. |
5. Add Host Entries (Optional) | Add hostAliases in pulse_manager_server.yaml | If your K8s cluster lacks DNS or internal name resolution, these host aliases provide a manual hostname-to-IP mapping. This ensures Pulse Manager can still connect to DBs or Hadoop nodes. |
6. Update PULSE_HOSTNAME and ADSTREAM_URL | Edit env: section in YAML | These environment variables set the hostnames Pulse Manager will use to expose itself and communicate with AD-Stream. This enables proper routing and communication through the Ingress layer. |
7. Apply the YAML Config Files | kubectl apply -f ... | This tells Kubernetes to start deploying all defined resources (RBAC, CRDs, Pods, Deployments, etc.) into the cluster. This is the actual installation step for running Pulse. |
8. Verify Pod Status | kubectl get pods -n <namespace> | This checks if the deployed components (like accelo-manager , controller-manager ) are running as expected. If they aren’t, you can know there is a problem to debug. |
9. Verify Service Creation | kubectl get svc -n <namespace> | Services expose the running Pulse pods to internal or external traffic. This step confirms if the services were correctly created, which is critical for Pulse's accessibility and integration. |