Heute ist es soweit, wir wollen Rancher in Betrieb nehmen. In Teil 2 haben wir uns 4 Server eingerichtet. In meinem Fall sieht das geplante Setup so aus:
Name | Cores | RAM | IP | Zweck |
---|---|---|---|---|
defiant | 4 | 8 GB | 10.0.0.1 | Rancher-Installation |
discovery | 6 | 16 GB | 10.0.0.2 | Master, Worker |
reliant | 8 | 30 GB | 10.0.0.3 | Worker |
yorktown | 6 | 16 GB | 10.0.0.4 | Worker |
Auf allen Maschinen benötigen wir Docker. Ich verwende nicht die Docker-Pakete aus Ubuntu 18.04 sondern die aktuellen Dockerversionen gemäß der Anleitung bei Docker:
apt-get remove docker docker-engine docker.io containerd runc
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io
Wenn man die ufw-Firewall in Verbindung mit Docker einsetzt, kann es sein, dass Ports geöffnet werden, die ich in der Firewall gar nicht erlaube. Das liegt daran, dass docker Kommandos mit iptables ausführt. Dazu gibt es im Internet einige Artikel. Eine Möglichkeit, das Verhalten zu deaktivieren, ist das Setzen der Option iptables=false. Ich habe das in der /etc/docker/daemon.json getan:
cat /etc/docker/daemon.json
{
"iptables": false
}
Ob das irgendwann zu Problemen führt, weiß ich noch nicht. Bisher haben alle Anwendungen, die ich dann deployed habe, funktioniert. Im nächsten Schritt muss docker noch aktiviert und gestartet werden:
systemctl enable docker
systemctl start docker
Mit docker info kann man prüfen, ob der Daemon läuft:
docker info
Super, sobald Docker läuft, können wir endlich Rancher installieren. Wie bereits gesagt, reicht mir für meine Experimente eine single node installation. Es soll auch automatisch ein entsprechendes SSL-Zertifikat per LetsEncrypt erstellt werden. Das erreicht man mit der Angabe der Option –acme-domain. Dazu „ruft“ LetsEncrypt die angegebene Domain auf und muss den Server auf dem http-Port erreichen können. Also öffnen wir in der Firewall auf defiant noch den Port. Wir wollen per https zugreifen, also machen wir den auch auf:
ufw allow http
ufw allow https
Ich nehme die aktuelle Version und verwende rancher 2.4.2. Ein einfacher docker-Befehl auf dem ersten Server defiant reicht aus:
docker run -d --restart=unless-stopped -p 8080:80 -p 8443:443 rancher/rancher:v2.4.2 --acme-domain rancher.ronnywalter.de
Nun sollte ein Container laufen:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd325b199817 rancher/rancher:v2.4.2 "entrypoint.sh --acm…" 3 weeks ago Up 15 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp tender_sammet
Nun sollten wir mit dem Browser die entsprechende URL aufrufen können und haben dabei wie von Wunderhand ein gültiges Zertifikat, also in meinem Fall https://rancher.ronnywalter.de
Rancher begrüßt euch mit der Bitte, ein neues Admin-Passwort festzulegen:

Anschließen bestätigt man noch die Domain und hat dann eine lauffähige Rancher-Installation, allerdings noch ohne einen Kubernetes-Cluster. Ich lege mir immer unter Security/Users einen persönlichen (Admin-)User an, logge mich mit diesem ein und sperre dann den Admin-Account.

Im nächsten Teil werden wir einen Kubernetes-Cluster anlegen.