Title
Create new category
Edit page index title
Edit category
Edit link
Pulse Single Node Rancher Based Deployment
This document explains the process of deploying Pulse on a single node Kubernetes (K8s). This deployment is performed by using Rancher.
Prerequisites
All the servers must be part of the same network.
You must manually set the hostname of the servers you create.
You must peform ssh copy-id in all the list of IPs which is provided from datacenter.
- If you do not have a key pair in your system, you must execute the command ssh-keygen.
ssh-copy-id root@<IP address>>
Install Kubectl from the official Kubernetes documentation.
Rancher Cluster Setup in K8s
To set up a rancher based cluster:
- Clone the GIT repository git@bitbucket.org:acceldata/ad-platform-infrastructure.git.
- Copy the public key to the internal_infra folder. You can navigate to this folder by executing the following command. You must use the same key pair that was generated above.
xxxxxxxxxxcd ad-platform-infrastructure/ansible/internal_infra- Edit the docker.yml content. You must replace the id_rsa.pub with the name of the file as shown in the following code block:
xxxxxxxxxx# Change authorized_key: user: docker state: present key: "{{ lookup('file', 'id_rsa.pub') }}" # To authorized_key: user: docker state: present key: "{{ lookup('file', 'popk8s.pub') }}"- Edit the docker password as shown in the following block.
xxxxxxxxxx# Change name: Add a new user named docker user: name: docker groups: docker password: # To name: Add a new user named docker user: name: docker groups: docker password: ##$- Save and exit the docker.yml file.
- Edit the hosts.ini file with the fully qualified domain name (FQDN), Internet Protocol (IP), and update the key. You can accomplish this by executing the following:
xxxxxxxxxx[popk8s] <<hostname>> ansible_host=<<ip address> [all:vars] ansible_user=root ansible_python_interpreter=/usr/bin/python ansible_ssh_private_key_file=~/.ssh/popk8s- Test if the ping command works, based on the group name provided by running the following command:
xxxxxxxxxxansible -m ping popk8s- Execute the following command to install Docker and ntp in all the machines that are part of the group popk8s. You must execute the command in all the machines that are part of the popk8s group.
xxxxxxxxxxansible-playbook docker.yml --extra-vars="nodes=popk8s"Install Rancher
- Download and install Ranched by executing the following block of code.
xxxxxxxxxxwget https://github.com/rancher/rke/releases/download/v1.3.3/rke_linux-amd64 chmod +x rke_linux-amd64 mv rke_linux-amd64 /usr/local/bin/rke rke --version >>rke version v1.3.3- Configure RKE/Rancher to bring up the Kubernetes cluster by running the following code:
# Create a directory by executing the following command. mkdir popk8smultinodecluster # Change the directory by executing the following command. bash-3.2$ cd popk8smultinodecluster/ #enter password bash-3.2$ pwd /<<filepath>>/popk8smultinodecluster # Configuratrion command bash-3.2$ rke config # You are asked the following questions during installation. You can view the sample responses given by Acceldata. You can modify the responses as per your organization requirements. [+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]: ~/.ssh/popk8s [+] Number of Hosts [1]: 1 [+] SSH Address of host (1) [none]: <<ip address>> [+] SSH Port of host (1) [22]: [+] SSH Private Key of host <<ip address>> [none]: ~/.ssh/popk8s [+] SSH User of host <<ip address>> [ubuntu]: docker [+] Is host <<ip address>> a Control Plane host (y/n)? [y]: y [+] Is host <<ip address>> a Worker host (y/n)? [n]: y [+] Is host <<ip address>> an etcd host (y/n)? [n]: y [+] Override Hostname of host <<ip address>> [none]: [+] Internal IP of host <<ip address>> [none]: [+] Docker socket path on host <<ip address>> [/var/run/docker.sock]: [+] Network Plugin Type (flannel, calico, weave, canal, aci) [canal]: weave [+] Authentication Strategy [x509]: [+] Authorization Mode (rbac, none) [rbac]: [+] Kubernetes Docker image [rancher/hyperkube:v1.21.7-rancher1]: [+] Cluster domain [cluster.local]: [+] Service Cluster IP Range [<<ip address>>/16]: [+] Enable PodSecurityPolicy [n]: [+] Cluster Network CIDR [<<ip address>>/16]: [+] Cluster DNS Service IP [<<ip address>>]: [+] Add addon manifest URLs or YAML files [no]: bash-3.2$ ls cluster.yml popk8s- Edit the cluster.yml file. You must replace the entire ingress block with the following:
xxxxxxxxxxingress: provider: none- Create the K8s cluster by executing the following:
xxxxxxxxxxbash-3.2$ rke upThe following message is displayed:
xxxxxxxxxxINFO[0000] Running RKE version: v1.3.3 INFO[0000] Initiating Kubernetes cluster INFO[0000] [dialer] Setup tunnel for host [<<ip address>>] INFO[0001] Checking if container [cluster-state-deployer] is running on host [<<ip address>>], try #1 INFO[0001] Pulling image [rancher/rke-tools:v0.1.78] on host [<<ip address>>], try #1xxxxxxxxxxrm -rf /etc/kubernetes/ rm -rf /var/lib/kubelet/ rm -rf /var/lib/etcd/ docker rmi $(docker images -a -q) docker stop $(docker ps -a -q) docker rm $(docker ps -a -q)xxxxxxxxxxexport KUBECONFIG=/root/popk8smulti/kube_config_cluster.yml- Check the list of hosts by executing the following command:
xxxxxxxxxxkubectl get nodesMetallb and Nginx Setup
- Download the keyz binary for ECR secret and replace the following file for Mac system.
https://bitbucket.org/acceldata/ad-automation-test/src/Dev/ops/popk8scluster/
- Check out the Bitbucket repository: https://bitbucket.org/acceldata/ad-service/src/development/.
xxxxxxxxxxbash-3.2$ pwd /<<filepath>>/ad-service/ops/helm-controller bash-3.2$ bash-3.2$ ls .scripts/keyz.scripts/keyz bash-3.2$ chmod +x ./.scripts/keyz ##### Verification that you are using the keys relevant for MAC bash-3.2$ file .scripts/keyz.scripts/keyz: Mach-O 64-bit executable x86_64- Open the helmfile.yml file.
- Comment the lines of code as shown in the following code block:
xxxxxxxxxxhooks: - events: ["prepare", "presync"] showlogs: true command: ".scripts/ecr-secret-reset.sh" args: ["{{ .Namespace }}"]# - events: ["prepare"]# showlogs: true# command: ".scripts/clone-package.sh"# args: ["{{ .Namespace }}"]# - events: ["prepare"]# command: ".scripts/add-package.sh"# - events: ["cleanup"]# command: ".scripts/remove-package.sh"Nginx Deployment
If you intend to install Pulse in multiple namespaces, follow the instructions in the (Link Removed) document before proceeding with the next steps.
- Execute the following commands to install the helmfile.
xxxxxxxxxxwget (appropriate link for your system from https://github.com/roboll/helmfile/releases/tag/v0.143.3) chmod +x helmfile_linux-amd64 mv helmfile_linux_amd64 /usr/local/bin/helmfile helmfile --versionhelmfile version v0.143.3- Execute the following commands to install helm.
xxxxxxxxxxwget https://get.helm.sh/helm-v3.9.4-linux-amd64.tar.gztar -xvf helm-v3.9.4-linux-amd64.tar.gzmv linux-amd64/helm /usr/local/bin/helm- Execute the following commands to install K9s.
xxxxxxxxxxmkdir k9s-installcd k9s-install/curl -sS https://webinstall.dev/k9s | bashYou get a response as shown below:
xxxxxxxxxxmkdir k9s-install cd k9s-install/ curl -sS https://webinstall.dev/k9s | bash Thanks for using webi to install 'k9s@stable' on 'Linux/x86_64'. Have a problem? Experience a bug? Please let us know: https://github.com/webinstall/webi-installers/issues Lovin' it? Say thanks with a Star on GitHub: https://github.com/webinstall/webi-installersDownloading k9s fromhttps://github.com/derailed/k9s/releases/download/v0.26.3/k9s_Linux_x86_64.tar.gzSaved as /root/Downloads/webi/k9s/0.26.3/k9s_Linux_x86_64.tar.gzExtracting /root/Downloads/webi/k9s/0.26.3/k9s_Linux_x86_64.tar.gzInstalling to /root/.local/opt/k9s-v0.26.3/bin/k9sInstalled 'k9s v0.26.3' as /root/.local/bin/k9sPATH.env updated with: export PATH="/root/.local/bin:$PATH"TO FINISH: copy, paste & run the following command: source ~/.config/envman/PATH.env (newly opened terminal windows will update automatically)- Execute the following commands to complete the installation.
xxxxxxxxxxsource ~/.config/envman/PATH.env k9sYou can now use the helm file by executing the following commands:
helmfile --interactive --file helmfile.yaml -l type=network -e on-prem/dev --state-values-set 'host=remote','containers.tagName=<<release tag>>' -n <namespace-of-new-pulse> sync helmfile --interactive --file helmfile.yaml -e on-prem/dev -l app=ad-nginx-controller --state-values-set 'containers.tagName=<<release tag>>','host=remote' -n <namespace-of-new-pulse> syncVerify the nginx deployment by executing the following commands:
xxxxxxxxxxkubectl get po -n <name-of-new namespace> -o widekubectl get svc -n <name-of-new namespace> -o wide ## You must be able to view a list of nginx related pods and services.Metallb Deployment
- Open the helm-controller values.yaml from the file location at
helm-controller/ha/ad-mettlb/values.yaml - Ensure to use your subnet to specify the range and not any other subnet.
- Execute the commands in the following block to deploy Metallb.
- Verify if metallb pods and nginix services get an External IP from the range provided.
- For local storage deployment, execute the following command.
Deployment of Pulse DB, Core, and Add-ons
If you intend to install Pulse in multiple namespace, follow the instructions in the (Link Removed) document and then proceed with the below steps:
- Execute the following command for DB deployment.
- Execute the following command for deployment of
acceloanddeployer.
ad-accelois used to config cluster.ad-deployeris used to deploy agents for ansible based deployment like. HDP,kafka Standalone
The following sample commands must be used to push license file, keytab, certs, krb5.conf to pvc.
For HDP or Kafka standalone (ansible deployment), you must generate an SSH key and ensure that you are able to perform password less secure login to the cluster nodes, and then copy the key to the ad-accelo pod as shown below:
Ensure that license file is in /data01/acceldata.
- Execute the following inside the ad-accelo-configure pod and verify the below environments.
- Configure core in accelo pod by executing the following command:
- In the pod execute the following command.
The following message displayed:
During deployment, respond to the following questions based on your configurations.
| Question Asked | Guidelines for Response |
|---|---|
| Is the 'Database Service' up and running? [y/n] | Type y if the database service is running. |
| Is this current node an 'Edge Node' of the cluster? [y/n]: | Type n if the node is not an edge node. Else type y. |
| Enter Your Cluster's Display Name | Enter the cluster name. |
| Enter Ambari URL (with http/https) | Enter the full ambari URL with port number. For example [http://<<ip address>>:8080](http://<<ip address>>:8080). |
| Enter Ambari Username | Enter your Ambari username. |
| Enter Ambari User Password | Enter your Ambari password. This password is securely encrypted and stored on this machine. |
| Do you have hive metastore enabled (y/n)? | Type y if you have enabled the hive metastore. |
| Select the hive metastore type: mysql/mariadb | Enter either mysql or mariadb. |
| Enter the hive metastore DB Username | Enter the username for hive metastore. |
| Enter the hive metastore DB Password | Enter the password for hive metastore. |
| Enter the hive metastore Server Timezone (Example: IST/UTC) | Enter the timezone for metastore. This can be IST or UTC. |
The following block shows sample responses for each of the above questions.
The example of discovered configurations window is displayed below. Additionally, you will find the next set of questions asked.
- The IP addresses for Hydra is same as the container name. To fix this issue, create a override.yml file in the
/data01/acceldata/work/<Cluster_Name>/location. - The cluster name for Victoria metrics is obtained from the
acceldata_adsample_test.conf. You must replace it in the override.yml file. - You must add the following environment details:
The content of override.yml file includes the following information:
MongoDB URI Correction
- Execute the following commands in accelo pod.
- Replace the MONGO_URI=<Mongo_URI_placeholder> in the /data01/acceldata/config/acceldata<clusterName>.conf file.
For ansible based deployment of hydra (HDP/kafka), fix hydra_server_ ur manually by executing the following code block.
- Execute the following command.
Deploy Core Services
- Uncomment the following statements from helmfile/helmfile.yml file, You must perform this step for all core and add-on services. You must retain the comment if you wish to deploy
rook-ceph,ad-accelo.
- The version or build number currently used is containers.tagName=<<release tagname>>. You must execute the following command.
Deploy Add-on Services
- Execute the following command to deploy the add on services.
You can now access the Pulse UI from the following URL.
FSA Load
You must execute these commands after configuring the add-on services.
- Connect to ad-accelo-configure, pod and run the following command.
- Execute the following to configure notifications.
- Validate if the ad-hydra server container is running and then execute the following command:
Other Configurations
For installing and uninstalling agents in HDP/Kafka (using Ansible-based deployment), after running the sync, you must delete it before proceeding with the "uninstall" tag.
- Ensure that the /ad-service/ops/helm-controller/helmfile.yaml file has the following content:
- Execute the commands in the following block to monitor weave scope.
You can access the weave UI from the http://localhost:4040 UI.
- Execute the following command to delete the add-ons.
- To deploy an updated build version, execute the following command. For example, if the current version is 2.1.9-200622 and you wish to upgrade to 2.1.9-200822.
For additional help, contact www.acceldata.force.com OR call our service desk +1 844 9433282
Copyright © 2026