Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Docker-Installation mit TLS-Beendigung an der Layer-7-Schicht des NGINX-Load-Balancers

Für Entwicklungs- und Testumgebungen, die eine spezielle Anforderung haben, TLS/SSL an einem Load Balancer statt in Ihrem Rancher-Server-Container zu beenden, stellen Sie Rancher bereit und konfigurieren Sie einen Load Balancer, der mit ihm zusammenarbeitet.

Ein Layer-7-Load-Balancer kann vorteilhaft sein, wenn Sie Ihre TLS-Beendigung in Ihrer Infrastruktur zentralisieren möchten. Layer-7-Load Balancer bietet auch die Möglichkeit, dass Ihr Load Balancer Entscheidungen basierend auf HTTP-Attributen wie Cookies usw. trifft, mit denen sich ein Layer-4-Load Balancer nicht befassen kann.

Dieses Installationsverfahren führt Sie durch die Bereitstellung von Rancher mit einem einzelnen Container und bietet dann eine Beispielkonfiguration für einen Layer-7 NGINX-Load-Balancer.

Anforderungen an das Betriebssystem, Docker, Hardware und Netzwerk

Stellen Sie sicher, dass Ihr Knoten die allgemeinen Installationsanforderungen erfüllt.

Installationsübersicht

1. Linux-Host bereitstellen

Stellen Sie einen einzelnen Linux-Host gemäß unseren Anforderungen bereit, um Ihren Rancher-Server zu starten.

2. Wählen Sie eine SSL-Option und installieren Sie Rancher

Aus Sicherheitsgründen ist SSL (Secure Sockets Layer) erforderlich, wenn Sie Rancher verwenden. SSL sichert alle Netzwerkkommunikationen von Rancher, wie z.B. beim Anmelden oder Interagieren mit einem Cluster.

Möchten Sie..
  • Eine Air Gap-Installation abschließen?

  • Alle Transaktionen mit der Rancher-API aufzeichnen?

Siehe Erweiterte Optionen unten, bevor Sie fortfahren.

Treffen Sie eine Auswahl aus den folgenden Optionen:

Option A - Bringen Sie Ihr eigenes Zertifikat mit: Selbstsigniert

Wenn Sie sich entscheiden, ein selbstsigniertes Zertifikat zur Verschlüsselung der Kommunikation zu verwenden, müssen Sie das Zertifikat auf Ihrem Load Balancer (was Sie später tun werden) und in Ihrem Rancher-Container installieren. Führen Sie den Docker-Befehl aus, um Rancher bereitzustellen, und verweisen Sie auf Ihr Zertifikat.

Voraussetzungen:

Erstellen Sie ein selbstsigniertes Zertifikat.

  • Die Zertifikatdateien müssen im PEM-Format vorliegen.

Um Rancher mit einem selbstsignierten Zertifikat zu installieren:

  1. Während Sie den Docker-Befehl zur Bereitstellung von Rancher ausführen, verweisen Sie Docker auf Ihre CA-Zertifikatdatei.

    docker run -d --restart=unless-stopped \
      -p 80:80 -p 443:443 \
      -v /etc/your_certificate_directory/cacerts.pem:/etc/rancher/ssl/cacerts.pem \
      rancher/rancher:latest

Option B – Bringen Sie Ihr eigenes Zertifikat mit: Von einer anerkannten CA signiert

Details

Wenn Ihr Cluster öffentlich zugänglich ist, ist es am besten, ein von einer anerkannten CA signiertes Zertifikat zu verwenden.

Voraussetzungen:
  • Die Zertifikatdateien müssen im PEM-Format vorliegen.

Um Rancher mit einem von einer anerkannten CA signierten Zertifikat zu installieren:

Wenn Sie ein von einer anerkannten CA signiertes Zertifikat verwenden, ist es nicht notwendig, Ihr Zertifikat im Rancher-Container zu installieren. Wir müssen sicherstellen, dass kein standardmäßiges CA-Zertifikat generiert und gespeichert wird; dies können Sie tun, indem Sie den --no-cacerts Parameter an den Container übergeben.

  1. Geben Sie den folgenden Befehl ein.

    docker run -d --restart=unless-stopped \
      -p 80:80 -p 443:443 \
      rancher/rancher:latest --no-cacerts

3. Konfigurieren Sie den Lastausgleich

Wenn Sie einen Lastausgleich vor Ihrem Rancher-Container verwenden, ist es nicht erforderlich, dass der Container die Portkommunikation von Port 80 oder Port 443 umleitet. Durch das Übergeben des X-Forwarded-Proto: https Headers wird diese Umleitung deaktiviert.

Der Lastausgleich oder Proxy muss so konfiguriert werden, dass er Folgendes unterstützt:

  • WebSocket Verbindungen

  • SPDY / HTTP/2 Protokolle

  • Übergeben / Setzen der folgenden Header:

    Kopftext Wert Beschreibung

    Host

    Hostname, der verwendet wird, um Rancher zu erreichen.

    Um den vom Client angeforderten Server zu identifizieren.

    X-Forwarded-Proto

    https

    Um das Protokoll zu identifizieren, das ein Client verwendet hat, um sich mit dem Lastausgleich oder Proxy zu verbinden. Hinweis: Wenn dieser Header vorhanden ist, rancher/rancher leitet HTTP nicht auf HTTPS um.

    X-Forwarded-Port

    Port, der verwendet wird, um Rancher zu erreichen.

    Um das Protokoll zu identifizieren, das der Client verwendet hat, um sich mit dem Lastausgleich oder Proxy zu verbinden.

    X-Forwarded-For

    IP der Clientverbindung.

    Um die ursprüngliche IP-Adresse eines Clients zu identifizieren.

Beispiel NGINX-Konfiguration

Diese NGINX-Konfiguration wurde auf NGINX 1.14 getestet.

Diese NGINX-Konfiguration ist nur ein Beispiel und passt möglicherweise nicht zu Ihrer Umgebung. Für die vollständige Dokumentation siehe NGINX Load Balancing - HTTP Load Balancing.

  • Ersetzen Sie rancher-server durch die IP-Adresse oder den Hostnamen des Knotens, der den Rancher-Container ausführt.

  • Ersetzen Sie beide Vorkommen von FQDN durch den DNS-Namen für Rancher.

  • Ersetzen Sie /certs/fullchain.pem und /certs/privkey.pem durch den Speicherort des Serverzertifikats und des Serverzertifikatsschlüssels.

worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
}

http {
    upstream rancher {
        server rancher-server:80;
    }

    map $http_upgrade $connection_upgrade {
        default Upgrade;
        ''      close;
    }

    server {
        listen 443 ssl http2;
        server_name FQDN;
        ssl_certificate /certs/fullchain.pem;
        ssl_certificate_key /certs/privkey.pem;

        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Port $server_port;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://rancher;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            # This allows the ability for the execute shell window to remain open for up to 15 minutes. Without this parameter, the default is 1 minute and will automatically close.
            proxy_read_timeout 900s;
            proxy_buffering off;
        }
    }

    server {
        listen 80;
        server_name FQDN;
        return 301 https://$server_name$request_uri;
    }
}

Was kommt als Nächstes?

  • Empfohlen: Überprüfen Sie die Einzelknoten-xref:[Sicherung] und xref:[Wiederherstellung]. Obwohl Sie derzeit keine Daten haben, die Sie sichern müssen, empfehlen wir, nach regelmäßigem Rancher-Gebrauch Sicherungen zu erstellen.

  • Erstellen Sie einen Kubernetes-Cluster: Bereitstellung von Kubernetes-Clustern.

FAQ und Fehlerbehebung

Für Hilfe bei der Fehlersuche von Zertifikaten siehe diesen Abschnitt.

Erweiterte Optionen

API-Auditierung

Wenn Sie alle Transaktionen mit der Rancher API aufzeichnen möchten, aktivieren Sie die API Auditing-Funktion, indem Sie die untenstehenden Flags in Ihren Installationsbefehl einfügen.

-e AUDIT_LEVEL=1 \
-e AUDIT_LOG_ENABLED=true \
-e AUDIT_LOG_PATH=/var/log/auditlog/rancher-api-audit.log \
-e AUDIT_LOG_MAXAGE=20 \
-e AUDIT_LOG_MAXBACKUP=20 \
-e AUDIT_LOG_MAXSIZE=100 \

Air Gap

Wenn Sie diese Seite besuchen, um eine Air Gap Installation abzuschließen, müssen Sie Ihre private Registry-URL dem Server-Tag voranstellen, wenn Sie den Installationsbefehl in der von Ihnen gewählten Option ausführen. Fügen Sie <REGISTRY.DOMAIN.COM:PORT> mit Ihrer privaten Registry-URL vor rancher/rancher:latest hinzu.

Beispiel:

<REGISTRY.DOMAIN.COM:PORT>/rancher/rancher:latest

Persistente Daten

Rancher verwendet etcd als Datenspeicher. Wenn Rancher mit Docker installiert ist, wird das eingebettete etcd verwendet. Die persistenten Daten befinden sich im folgenden Pfad im Container: /var/lib/rancher.

Sie können ein Host-Volume an diesem Ort binden, um Daten auf dem Host, auf dem es läuft, zu speichern:

docker run -d --restart=unless-stopped \
  -p 80:80 -p 443:443 \
  -v /opt/rancher:/var/lib/rancher \
  --privileged \
  rancher/rancher:latest

Dieser Vorgang erfordert privilegierten Zugriff.

Diese Layer-7-NGINX-Konfiguration wurde mit NGINX Version 1.13 (Mainline) und 1.14 (Stable) getestet.

Diese NGINX-Konfiguration ist nur ein Beispiel und passt möglicherweise nicht zu Ihrer Umgebung. Für die vollständige Dokumentation siehe NGINX Load Balancing – TCP und UDP Load Balancer.

upstream rancher {
    server rancher-server:80;
}

map $http_upgrade $connection_upgrade {
    default Upgrade;
    ''      close;
}

server {
    listen 443 ssl http2;
    server_name rancher.yourdomain.com;
    ssl_certificate /etc/your_certificate_directory/fullchain.pem;
    ssl_certificate_key /etc/your_certificate_directory/privkey.pem;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://rancher;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        # This allows the ability for the execute shell window to remain open for up to 15 minutes. Without this parameter, the default is 1 minute and will automatically close.
        proxy_read_timeout 900s;
        proxy_buffering off;
    }
}

server {
    listen 80;
    server_name rancher.yourdomain.com;
    return 301 https://$server_name$request_uri;
}