How to install RKE2 manually on single-node and cluster
Summary: mww4us provides a detailed guide on manually installing RKE2 for Sisense deployments on RHEL Linux OS, specifically for environments with enhanced security configurations. They emphasize that while the Sisense installer typically handles the installation, manual setups can be performed at one's own risk, as they are not officially supported. The guide includes instructions for both single-node and multi-node (3 nodes) setups, covering preparations, installation steps, and configurations for using the Calico CNI. It also advises verifying service status and command functionality to ensure a fully operational RKE2 cluster setup. A participant also notes the additional step for Sisense installations with RKE2, highlighting the need to adjust the 'update' parameter in the configuration yaml file.
RKE2 is a Kubernetes engine used for self-hosted Sisense deployments starting from version L2025.2.
In regular scenario, RKE2 is being installed by the Sisense installer along with Sisense application itself.
However, in some cases, when environment has enhanced security configuration which lead to advanced OS restrictions for Sisense installation, you might want to test RKE2 installation manually.
Below there is a comprehensive guide for installing RKE2 manually on RHEL Linux OS. Ubuntu installation is not included since enhanced environment restrictions are typically observed on Red Hat Linux instances.
! Note !
Sisense does officially recommend to install both RKE2 and Sisense application via Sisense installation script. Manual RKE2 installation is not officially supported thus should be treated as a custom solution and performed on your own risk.
========================================================================
Single-node:
====================
Preparations:
1. Instruct NetworkManager not to interfere with Kubernetes routing:
- Create a configuration file for NetworkManager:
sudo vim /etc/NetworkManager/conf.d/rke2-calico.conf
- Paste the following lines to make CNI interfaces unmanaged:
[keyfile]
unmanaged-devices=interface-name:cali*;interface-name:flannel*
- Reload NetworkManager:
sudo systemctl reload NetworkManager
- In case your VM is created from cloud provider (AWS, Azure etc) - disable nm-cloud-setup service not to interfere the routing:
sudo systemctl disable --now nm-cloud-setup.service nm-cloud-setup.timer
2. Prepare RKE2 setup for using Calico CNI (Calico is a default CNI used by Sisense installations):
- Create the RKE2 configuration directory:
sudo mkdir -p /etc/rancher/rke2
- Create and edit the config.yaml file:
sudo vim /etc/rancher/rke2/config.yaml
- Add the following parameters:
cni: calico
write-kubeconfig-mode: "0644"
Installation:
1. Run RKE2 installation (in this example we are using RKE2 with Kubernetes 1.33):
curl -sfL https://get.rke2.io | sudo INSTALL_RKE2_CHANNEL="v1.33" sh -
2. Enable and start RKE2 service:
- Enable the service to ensure it starts on boot:
sudo systemctl enable rke2-server.service
- Start the service:
sudo systemctl start rke2-server.service
- Verify the service is active and running:
sudo systemctl status rke2-server.service
3. Set up environment variables to interact with RKE2 cluster:
echo 'export KUBECONFIG=/etc/rancher/rke2/rke2.yaml' >> ~/.bashrc
echo 'export PATH=$PATH:/var/lib/rancher/rke2/bin' >> ~/.bashrc
source ~/.bashrc
4. Install Helm CLI:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod +x get_helm.sh
sudo ./get_helm.sh
rm get_helm.sh
5. Verify kubectl and helm commands work:
kubectl get node
helm ls -A
After these steps you will have fully working RKE2 setup.
In case you want to install Sisense on top, proceed with regular installation with one important difference - set 'update' parameter to 'true' in configuration yaml file.
====================
Multi-node:
====================
If you are using multi-node cluster (3 nodes) - perform all the steps from Single-node section on your node1 and follow the next steps below:
Adjusting node1 setup:
1. Add the following lines to your /etc/rancher/rke2/config.yaml on node1:
tls-san:
- "<your_node1_private_IP>"
2. Get the Registration Token from your node1:
sudo cat /var/lib/rancher/rke2/server/node-token
3. Restart RKE2 service to refresh the configuration:
sudo systemctl restart rke2-server.service
Configuring node2 and node3:
Perform all the steps from Single-node section on each node with one crucial difference in Preparations section:
While editing /etc/rancher/rke2/config.yaml file, the configuration should be as follows:
cni: calico
write-kubeconfig-mode: "0644"
server: https://<your_node1_private_IP>:9345
token: "<token_from_step2_of_previous_section>"
tls-san:
- "<your_current_node_private_IP>"
After the installation on all nodes verify they are Ready:
kubectl get node
^ You should see all three nodes in Ready status