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
- 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
oderprometheus
beginnen. In diesem Beispiel heißt das Secretmyapp-https-credential
. - Unter
servers:
- Fügen Sie einen Bereich für Port 443 hinzu.
- Legen Sie unter
tls:
dencredentialName
auf den Namen des soeben erstellten Secrets fest. - 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.
- 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. - Fügen Sie für die Weiterleitung von HTTP-Anfragen zu HTTPS im Bereich „HTTP-Server“ unter
tls
den WerthttpsRedirect: true
hinzu. Weitere Informationen finden Sie in der Istio-Gateway-Dokumentation. Wenn Sie dies in dem Bereich hinzufügen, in demhosts
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