RKE2 v1.32 and Rancher v2.11 Deployment

In this article I will show you how to deploy RKE2 cluster and rancher manager. RKE2 (Rancher Kubernetes Engine 2) is Rancher's next-generation Kubernetes distribution, designed as a fully conformant Kubernetes platform with enhanced security and simplified operations. Rancher is a comprehensive Kubernetes management platform that provides a unified interface for deploying, managing, and scaling Kubernetes clusters across any infrastructure. Rancher is a complete container management platform for Kubernetes, giving you the tools to successfully run Kubernetes anywhere.

So, let's get started…

Environment

Hostnameat-rke2-1
Operating SystemUbuntu 22.04 (Jammy)
vCPU8 (too large for testing)
Memory12 GB (too large for testing)
Disk60 GB
Network172.20.20.65

RKE2 v1.32 Deployment

  1. Mapping hosts
nano /etc/hosts
---
172.20.20.65 at-rke2-1 at-rke2-1.at.lab rancher.at.lab
  1. Update and upgrade packages
apt-get update -y && apt-get upgrade -y
  1. Disable swap
systemctl disable --now swap.target
swapoff -a
  1. Enable containerd modules
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
  1. Configure kernel settings
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF

sysctl --system
  1. Create rke2 configuration file
mkdir -p /etc/rancher/rke2
nano /etc/rancher/rke2/config.yaml
---
write-kubeconfig-mode: "0644"
token: [REDACTED]
tls-san:
  - rancher.at.lab
  - at-rke2-1.at.lab

### Used for Monitoring
etcd-expose-metrics: "true"
kube-controller-manager-arg: "bind-address=0.0.0.0"
kube-scheduler-arg: "bind-address=0.0.0.0"
  1. Bootstrap rke2 cluster
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=v1.32.7+rke2r1 sh -
  1. Enable and start rke2-server
systemctl enable rke2-server.service
systemctl start rke2-server.service
  1. Export kubeconfig file
cat<<EOF >> ~/.bashrc
export PATH=$PATH:/var/lib/rancher/rke2/bin
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
EOF
source ~/.bashrc
  1. Configure server cluster
nano /etc/rancher/rke2/rke2.yaml
---
clusters:
- cluster:
    server: https://rancher.at.lab:6443
  1. Install kubectl tools
apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
chmod 644 /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubectl
  1. Verification
kubectl get all --all-namespaces
  1. Operational Test
kubectl create deployment nginx-test --image=nginx --replicas=3
kubectl expose deployment nginx-test --port=80 --target-port=80 
kubectl create ingress nginx-test-ingress --class=nginx --rule="nginx-test.at.lab/*=nginx-test:80"

nano /etc/hosts
---
172.20.20.65 nginx-test.at.lab

curl http://nginx-test.at.lab

Rancher Manager v2.11 Deployment

  1. Install helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
  1. Add rancher helm repository
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update
helm repo list
  1. Add cert manager helm repository
kubectl create namespace cattle-system

kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.18.0/cert-manager.crds.yaml

helm repo add jetstack https://charts.jetstack.io
helm repo update
helm repo list
  1. Install cert manager
helm install cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.18.0

kubectl get all -n cert-manager
  1. Install rancher
helm install rancher rancher-stable/rancher \
  --namespace cattle-system \
  --version=2.11.1 \
  --set bootstrapPassword=[REDACTED] \
  --set hostname=rancher.at.lab

kubectl get all -n cattle-system

# check boostrap password
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}'
  1. Verification

  1. Operational test from rancher

Thank You.

0
Subscribe to my newsletter

Read articles from Muhammad Alfian Tirta Kusuma directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Muhammad Alfian Tirta Kusuma
Muhammad Alfian Tirta Kusuma