Rancher Quick Start Guide
This guide shows two common Rancher installation flows using Traefik as the ingress controller:
- Public domain with Let’s Encrypt (recommended for production)
- Internal network using cert-manager + a private CA (for intranets)
Prerequisites
- Kubernetes cluster with
kubectlconfigured - Helm 3 installed
- Traefik installed as ingress controller
- For public installs: a DNS A record pointing your hostname to the cluster ingress IP
- For private installs: ability to import a CA certificate into client browsers/OS
1. Install Helm 3
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update
2. Install Traefik
helm repo add traefik https://traefik.github.io/charts
helm repo update
###
helm install traefik traefik/traefik \
--namespace traefik --create-namespace \
--set service.type=LoadBalancer \
--set ingressClass.enabled=true
Check the external IP and ingress class:
kubectl -n traefik get svc
kubectl get ingressclass
3. Public Domain Installation (Let’s Encrypt)
3.1 Create Namespace
kubectl create namespace cattle-system
3.2 Install cert-manager (optional)
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
kubectl -n cert-manager get pods
3.3 Install Rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.example.com \
--set replicas=3 \
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=you@example.com \
--set letsEncrypt.ingress.class=traefik
3.4 Access Rancher
kubectl -n cattle-system rollout status deploy/rancher
# Access at: https://rancher.example.com
4. Internal Network Installation (Private CA)
4.1 Generate Private Root CA
openssl genrsa -out rootCA.key 4096
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 \
-out rootCA.crt \
-subj "/CN=Private-Rancher-CA"
Keep
rootCA.keysecure. ImportrootCA.crtinto client browsers/OS.
4.2 Install cert-manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
kubectl -n cert-manager get pods
4.3 Create TLS Secret
kubectl -n cert-manager create secret tls private-ca \
--cert=rootCA.crt \
--key=rootCA.key
4.4 Create ClusterIssuer
private-ca-issuer.yaml:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: private-ca-issuer
spec:
ca:
secretName: private-ca
kubectl apply -f private-ca-issuer.yaml
4.5 Install Rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--create-namespace \
--set hostname=rancher.internal.local \
--set replicas=3 \
--set ingress.tls.source=secret \
--set privateCA=true \
--set ingress.ingressClassName=traefik
4.6 Create Rancher Certificate
rancher-certificate.yaml:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: rancher-cert
namespace: cattle-system
spec:
secretName: tls-rancher-ingress
issuerRef:
name: private-ca-issuer
kind: ClusterIssuer
commonName: rancher.internal.local
dnsNames:
- rancher.internal.local
kubectl apply -f rancher-certificate.yaml
kubectl -n cattle-system get certificate
kubectl -n cattle-system get secret tls-rancher-ingress
kubectl -n cattle-system get ingress
Import
rootCA.crtinto your browser/OS to trust the certificate.