# 06 — Rancher **Datum:** 2026-03-17 **Version:** Rancher v2.13.3 (Helm Chart 2.13.3) **Namespace:** cattle-system **URL:** https://rancher.192.168.11.170.nip.io --- ## Übersicht Rancher ist eine Kubernetes-Management-Plattform mit Web-UI. Es ermöglicht die zentrale Verwaltung von Kubernetes-Clustern, Workloads, Storage, Netzwerk und Benutzerrechten. In diesem Homelab läuft Rancher im k3s-Cluster selbst (single-cluster setup). --- ## Voraussetzungen - cert-manager v1.20.0 installiert und bereit (`05-cert-manager.md`) - Traefik als Ingress Controller aktiv (`04-traefik.md`) - Alle 3 Nodes `Ready` --- ## Installation ### 1. Rancher Helm Repository hinzufügen ```bash helm repo add rancher-stable https://releases.rancher.com/server-charts/stable helm repo update ``` Ausgabe: ``` "rancher-stable" has been added to your repositories ...Successfully got an update from the "rancher-stable" chart repository ``` ### 2. Namespace erstellen ```bash kubectl create namespace cattle-system ``` ### 3. Rancher per Helm installieren ```bash helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --version 2.13.3 \ --set hostname=rancher.192.168.11.170.nip.io \ --set ingress.tls.source=rancher \ --set replicas=2 \ --wait \ --timeout 10m ``` **Wichtig — TLS-Quelle:** `ingress.tls.source=rancher` verwendet Rancher's eigene self-signed CA (nicht Let's Encrypt). Siehe Abschnitt "TLS-Entscheidung" weiter unten. --- ## TLS-Entscheidung: Rancher Self-Signed CA statt Let's Encrypt ### Erster Versuch: Let's Encrypt Initial wurde `ingress.tls.source=letsEncrypt` versucht. Dies schlug fehl: ``` Error: acme: authorization error for rancher.192.168.11.170.nip.io: 400 urn:ietf:params:acme:error:dns: no valid A records found for rancher.192.168.11.170.nip.io ``` **Grund:** Let's Encrypt benötigt für die HTTP-01 Challenge öffentlichen Internetzugriff auf den Server. Die IP `192.168.11.170` ist eine private RFC1918-Adresse — Let's Encrypt's Validierungsserver können diesen Host nicht erreichen. ### Lösung: Rancher Self-Signed CA ```bash helm upgrade rancher rancher-stable/rancher \ --namespace cattle-system \ --version 2.13.3 \ --set hostname=rancher.192.168.11.170.nip.io \ --set ingress.tls.source=rancher \ --set replicas=2 ``` Rancher erstellt eine eigene CA (`tls-rancher` Secret) und stellt darüber das Ingress-Zertifikat via cert-manager aus (CA-Issuer `rancher` in `cattle-system`). Der Browser zeigt eine Zertifikatswarnung — für ein privates Homelab ist das akzeptabel. ### Certificate-Fix Nach dem Upgrade hatte cert-manager das alte fehlgeschlagene CertificateRequest im Backoff. Das Certificate-Objekt wurde manuell gelöscht, woraufhin Rancher's Controller es sofort neu erstellte: ```bash kubectl delete certificate tls-rancher-ingress -n cattle-system # → READY: True nach ~20 Sekunden ``` --- ## Pod-Status ```bash kubectl get pods -n cattle-system ``` ``` NAME READY STATUS RESTARTS AGE rancher-6f98b4d565-94mff 1/1 Running 0 ... rnk-wrk02 rancher-6f98b4d565-q7jc4 1/1 Running 0 ... rnk-cp01 rancher-webhook-5dcf69b995-4q9sg 1/1 Running 0 ... rnk-wrk02 system-upgrade-controller-65d9b4b8b-7wvrl 1/1 Running 0 ... rnk-cp01 helm-operation-* 0/2 Completed 0 ... (abgeschlossene Jobs) ``` - **rancher**: 2 Replicas, verteilt auf rnk-wrk02 und rnk-cp01 - **rancher-webhook**: Validierungs-Webhook für Rancher-CRDs - **system-upgrade-controller**: Verwaltet k3s-Node-Upgrades --- ## Ingress & TLS ```bash kubectl get ingress -n cattle-system kubectl get certificate -n cattle-system ``` ``` NAME CLASS HOSTS ADDRESS PORTS rancher traefik rancher.192.168.11.170.nip.io 192.168.11.170,192.168.11.171,192.168.11.172 80, 443 NAME READY SECRET tls-rancher-ingress True tls-rancher-ingress ``` --- ## Helm Release Info ``` NAME NAMESPACE REVISION STATUS CHART APP VERSION rancher cattle-system 2 deployed rancher-2.13.3 v2.13.3 ``` Revision 2: Upgrade von `letsEncrypt` → `rancher` TLS-Quelle. --- ## Erster Login ### URL ``` https://rancher.192.168.11.170.nip.io ``` > Browser zeigt Zertifikatswarnung (self-signed CA) → "Trotzdem fortfahren" ### Bootstrap Password abrufen ```bash kubectl get secret --namespace cattle-system bootstrap-secret \ -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}' ``` **Bootstrap Password (einmalig):** `vks6s469l7h5dtm25hh8vz6hzcpmkjx6jc87qdshm7c7ggq9n84q9m` > Nach dem ersten Login wird ein neues Passwort gesetzt — das Bootstrap > Password danach nicht mehr gültig. ### Direkter Setup-Link ```bash echo https://rancher.192.168.11.170.nip.io/dashboard/?setup=$(kubectl get secret \ --namespace cattle-system bootstrap-secret \ -o go-template='{{.data.bootstrapPassword|base64decode}}') ``` --- ## Nächste Schritte - [ ] Ersten Login durchführen, Admin-Passwort setzen - [ ] Cluster in Rancher registrieren / importieren - [ ] Longhorn-Storage in Rancher-UI prüfen - [ ] User und Rollen konfigurieren - [ ] Rancher-eigenen Monitoring-Stack prüfen (optional)