Files
homelab/docs/06-rancher.md

201 lines
5.3 KiB
Markdown

# 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)