HTTPS-Ingress einrichten

Sie können das Ingress-Gateway mit HTTPS mithilfe einfacher TLS sichern und HTTPS-Verbindungen zu bestimmten Webseiten aktivieren. Darüber hinaus können Sie HTTP-Verbindungen zu HTTPS weiterleiten.

HTTPS erstellt über ein unsicheres Netzwerk einen sicheren Kanal, der vor Man-in-the-Middle-Angriffen schützt und den Traffic zwischen Client und Server verschlüsselt. Damit ein Webserver HTTPS-Verbindungen akzeptieren kann, muss ein Administrator ein öffentliches Schlüsselzertifikat für den Server erstellen. Dieses Zertifikat muss von einer vertrauenswürdigen Zertifizierungsstelle für einen Webbrowser signiert werden, damit es ohne Ausgabe einer Warnmeldung akzeptiert wird.

Bearbeiten Sie das Gateway „external-gateway“ im Namespace kf mit dem eingebundenen Kubernetes-Editor:

kubectl edit gateway -n kf external-gateway
  1. Wenn Sie für Ihren Dienst ein Zertifikat und einen Schlüssel haben, erstellen Sie für das Ingress-Gateway ein Kubernetes-Secret. Der Secret-Name darf nicht mit istio oder prometheus beginnen. In diesem Beispiel heißt das Secret myapp-https-credential.
  2. Unter servers:
    1. Fügen Sie einen Bereich für Port 443 hinzu.
    2. Legen Sie unter tls: den credentialName auf den Namen des soeben erstellten Secrets fest.
    3. Fügen Sie unter hosts: den Hostnamen des Dienstes hinzu, den Sie mit HTTPS sichern möchten. Hier können Sie mithilfe eines Platzhalters eine ganze Domain (z. B. *.example.com) oder einen einzelnen Hostnamen (z. B. myapp.example.com) festlegen.
  3. Unter servers: sollte bereits ein Bereich für den Port 80 HTTP vorhanden sein. Behalten Sie diesen Bereich in der Gateway-Definition bei, wenn der gesamte Traffic über HTTP empfangen werden soll.
  4. Fügen Sie für die Weiterleitung von HTTP-Anfragen zu HTTPS im Bereich „HTTP-Server“ unter tls den Wert httpsRedirect: true hinzu. Weitere Informationen finden Sie in der Istio-Gateway-Dokumentation. Wenn Sie dies in dem Bereich hinzufügen, in dem hosts auf * gesetzt ist, wird der gesamte Traffic zu HTTPS weitergeleitet. Wenn Sie hingegen nur für eine einzelne Anwendung/Domain von HTTP zu HTTPS weiterleiten möchten, fügen Sie einen separaten HTTP-Bereich hinzu, in dem Sie die Weiterleitung explizit angeben.

Unten sehen Sie ein Beispiel für ein Gateway spec, für das HTTPS auf myapp.example.com gesetzt ist und mit dem HTTP für diesen Host an HTTPS weitergeleitet wird:

spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - myapp.example.com
    port:
      name: https
      number: 443
      protocol: HTTPS
    tls:
      credentialName: myapp-https-credential
      mode: SIMPLE
  - hosts:
    - myapp.example.com
    port:
      name: http-my-app
      number: 80
      protocol: HTTP
    tls:
      httpsRedirect: true
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP