Now that you have a running RKE cluster, you can install Rancher in it. For security reasons all traffic to Rancher must be encrypted with TLS. For this tutorial you are going to automatically issue a self-signed certificate through cert-manager. In a real-world use-case you will likely use Let’s Encrypt or provide your own certificate.

Note: These installation instructions assume you are using Helm 3.

Install cert-manager

Add the cert-manager helm repository:

  1. helm repo add jetstack https://charts.jetstack.io

Create a namespace for cert-manager:

  1. kubectl create namespace cert-manager

Install the CustomResourceDefinitions of cert-manager:

  1. kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v0.15.2/cert-manager.crds.yaml

And install it with Helm. Note that cert-manager also needs your proxy configured in case it needs to communicate with Let’s Encrypt or other external certificate issuers:

  1. helm upgrade --install cert-manager jetstack/cert-manager \
  2. --namespace cert-manager --version v0.15.2 \
  3. --set http_proxy=http://${proxy_host} \
  4. --set https_proxy=http://${proxy_host} \
  5. --set noProxy=127.0.0.0/8\\,10.0.0.0/8\\,cattle-system.svc\\,172.16.0.0/12\\,192.168.0.0/16\\,.svc\\,.cluster.local

Now you should wait until cert-manager is finished starting up:

  1. kubectl rollout status deployment -n cert-manager cert-manager
  2. kubectl rollout status deployment -n cert-manager cert-manager-webhook

Install Rancher

Next you can install Rancher itself. First add the helm repository:

  1. helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

Create a namespace:

  1. kubectl create namespace cattle-system

And install Rancher with Helm. Rancher also needs a proxy configuration so that it can communicate with external application catalogs or retrieve Kubernetes version update metadata:

  1. helm upgrade --install rancher rancher-latest/rancher \
  2. --namespace cattle-system \
  3. --set hostname=rancher.example.com \
  4. --set proxy=http://${proxy_host}
  5. --set noProxy=127.0.0.0/8\\,10.0.0.0/8\\,cattle-system.svc\\,172.16.0.0/12\\,192.168.0.0/16\\,.svc\\,.cluster.local

After waiting for the deployment to finish:

  1. kubectl rollout status deployment -n cattle-system rancher

You can now navigate to https://rancher.example.com and start using Rancher.

Note: If you don’t intend to send telemetry data, opt out telemetry during the initial login. Leaving this active in an air-gapped environment can cause issues if the sockets cannot be opened successfully.

Additional Resources

These resources could be helpful when installing Rancher: