Auf dieser Seite wird beschrieben, wie Sie den Traffic für GKE-Ingress (Google Kubernetes Engine) schützen und optimieren. Sie können SSL-Zertifikate zwischen dem Client und dem Load-Balancer konfigurieren und den Traffic zwischen dem Load-Balancer und Ihrer Backend-Anwendung sichern. Bevor Sie fortfahren, sollten Sie sich damit vertraut machen, wie GKE Ingress mit HTTPS schützt.
Diese Seite richtet sich an Netzwerkspezialisten, die das Netzwerk für ihre Organisation entwerfen und erstellen sowie Netzwerkgeräte installieren, konfigurieren und unterstützen. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir inGoogle Cloud Inhalten verweisen, finden Sie unter Häufig verwendete GKE-Nutzerrollen und -Aufgaben.
Traffic zwischen Client und Load Balancer sichern und optimieren
Wenn Sie HTTPS-Anfragen von Ihren Clients annehmen möchten, muss der Load-Balancer ein Zertifikat haben, um seine Identität gegenüber Ihren Clients nachzuweisen. Der Load-Balancer benötigt außerdem einen privaten Schlüssel, um den HTTPS-Handshake abzuschließen. Weitere Informationen zum Bereitstellen von SSL-Zertifikaten für einen HTTP(S)-Load-Balancer finden Sie unter TLS zwischen dem Client und dem Load-Balancer konfigurieren.
Von Google verwaltete Zertifikate verwenden
So konfigurieren Sie ein oder mehrere von Google verwaltete SSL-Zertifikate und verknüpfen sie mit einem Ingress:
- Erstellen Sie ein oder mehrere
ManagedCertificate-Objekte im selben Namespace wie der Ingress. Sie können bis zu 15 Zertifikate für den Load-Balancer angeben. - Verknüpfen Sie die
ManagedCertificate-Objekte mit einem Ingress. Dazu fügen Sie dem Ingress die Annotationnetworking.gke.io/managed-certificateshinzu. Diese Annotation ist eine durch Kommas getrennte Liste vonManagedCertificate-Objekten.
Beschränkungen
In diesem Abschnitt werden die Einschränkungen von von Google verwalteten Zertifikaten beschrieben. Wenn Sie selbstverwaltete Zertifikate benötigen oder bereits SSL-Zertifikate haben, die Sie für das Ingress konfigurieren möchten, finden Sie entsprechende Informationen unter HTTPS (TLS) zwischen Client und Load Balancer einrichten.
Von Google verwaltete Zertifikate bieten nicht das gleiche Maß an Flexibilität wie die von Ihnen abgerufenen und verwalteten Zertifikate. Von Google verwaltete Zertifikate unterstützen bis zu 100 Domains ohne Platzhalter. Im Gegensatz zu selbstverwalteten Zertifikaten unterstützen von Google verwaltete Zertifikate keine Domains mit Platzhaltern.
Die Anzahl und der Typ der von einem Ingress unterstützten Zertifikate richten sich nach den Limits der von Google verwalteten SSL-Zertifikate.
Aktualisierungen für von Google verwaltete Zertifikate werden nicht unterstützt. Weitere Informationen finden Sie unter Von Google verwaltetes Zertifikat manuell aktualisieren.
Wenn das Zertifikat direkt mit der Zertifizierungsstelle widerrufen wird, rotiert Google das Zertifikat nicht automatisch. Sie müssen das ManagedCertificate löschen und ein neues erstellen.
GKE Ingress unterstützt keine vom Zertifikatmanager verwalteten Zertifikate. Wenn Sie vom Zertifikatsmanager verwaltete Zertifikate verwenden möchten, nutzen Sie die Gateway API.
Vorbereitung
Sie müssen Inhaber des Domainnamens sein. Der Domainname darf maximal 63 Zeichen haben. Sie können einen beliebigen Domainnamenregistrator verwenden, um einen Domainnamen zu erhalten.
Wenn Sie einen GKE Standard-Cluster verwenden, muss das Add-on
HttpLoadBalancingaktiviert sein.Ihr Ingress-Manifest muss die Annotation
kubernetes.io/ingress.class: "gce"enthalten. Das FeldingressClassNamewird nicht unterstützt.Sie müssen Ressourcen vom Typ
IngressundManagedCertificateim selben Projekt und im selben Namespace anwenden.Erstellen Sie eine reservierte (statische) externe IP-Adresse. Wenn Sie eine statische IP-Adresse reservieren, bleibt diese auch nach dem Löschen des Ingress-Objekts erhalten. Wenn Sie keine IP-Adresse reservieren, kann sich die verwendete Adresse ändern, sodass Sie die DNS-Einträge Ihrer Domain neu konfigurieren müssen. Verwenden Sie die Google Cloud CLI oder die Google Cloud Console, um eine reservierte IP-Adresse zu erstellen.
gcloud
Führen Sie den folgenden Befehl aus, um eine reservierte IP-Adresse zu erstellen:
gcloud compute addresses create ADDRESS_NAME --globalErsetzen Sie
ADDRESS_NAMEdurch den Namen der reservierten IP-Adresse, die Sie erstellen.Führen Sie den folgenden Befehl aus, um die erstellte statische IP-Adresse zu finden:
gcloud compute addresses describe ADDRESS_NAME --globalDie entsprechende Ausgabe sieht etwa so aus:
address: 203.0.113.32 ...Console
Führen Sie die folgenden Schritte aus, um eine reservierte IP-Adresse zu erstellen:
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
Geben Sie einen Namen für die IP-Adresse an (z. B.
example-ip-address).Geben Sie an, ob Sie eine IPv4- oder IPv6-Adresse möchten.
Wählen Sie für Typ die Option Global aus.
Klicken Sie auf Reservieren. Die IP-Adresse wird in der Spalte Externe Adresse aufgeführt.
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
Laden Sie dieses Manifest alscompute-address.yamlauf Ihren Computer herunter und führen Sie folgenden Befehl aus:kubectl apply -f compute-address.yaml
Von Google verwaltetes Zertifikat einrichten
Erstellen Sie ein
ManagedCertificate-Objekt. Diese Ressource gibt die Domains für das SSL-Zertifikat an. Domains mit Platzhaltern werden nicht unterstützt.Das folgende Manifest beschreibt ein
ManagedCertificate-Objekt. Speichern Sie das Manifest alsmanaged-cert.yaml.apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: FIRST_CERT_NAME spec: domains: - FIRST_DOMAIN --- apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: SECOND_CERT_NAME spec: domains: - SECOND_DOMAINErsetzen Sie Folgendes:
FIRST_CERT_NAME: der Name des erstenManagedCertificate-Objekts.FIRST_DOMAIN: Ihre erste Domain, die Ihnen gehört.SECOND_CERT_NAME: der Name des zweitenManagedCertificate-Objekts.SECOND_DOMAIN: Ihre zweite Domain, die Ihnen gehört.
Die Namen der
ManagedCertificate-Objekte unterscheiden sich von den Namen der von ihnen erstellten tatsächlichen Zertifikate. Sie benötigen nur die Namen derManagedCertificate-Objekte, um Sie in Ihrem Ingress zu verwenden.Wenden Sie das Manifest auf Ihren Cluster an:
kubectl apply -f managed-cert.yamlFolgen Sie der Anleitung zum Erstellen eines Deployments und eines Service, um Ihre Anwendung im Internet bereitzustellen.
Damit dieses
ManagedCertificate-ObjektActivewird, hängen Sie es mit der Annotationnetworking.gke.io/managed-certificatesan Ihr Ingress an, wie im folgenden Beispiel. DasManagedCertificatemuss nicht bereitsActivesein, damit Sie ihn an ein Ingress anhängen können.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-gmc-ingress annotations: networking.gke.io/managed-certificates: "FIRST_CERT_NAME,SECOND_CERT_NAME" spec: rules: - host: FIRST_DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: my-mc-service port: number: 60001 - host: SECOND_DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: my-mc-service port: number: 60002 ``` Replace <code><var>FIRST_DOMAIN</var></code> and <code><var>SECOND_DOMAIN</var></code> with your domain names. This manifest describes an Ingress that lists pre-shared certificate resources in an annotation. Note: It might take several hours for Google Cloud to provision the load balancer and the managed certificates, and for the load balancer to begin using the new certificates. For more information, see [Deploy a Google-managed certificate with load balancer authorization](/certificate-manager/docs/deploy-google-managed-lb-auth#wait_until_the_certificate_has_been_activated).Warten Sie, bis die Bereitstellung der von Google verwalteten Zertifikate abgeschlossen ist. Dies kann bis zu 60 Minuten dauern. Sie können den Status der Zertifikate mit dem folgenden Befehl prüfen:
kubectl describe managedcertificate managed-certDie Ausgabe sieht etwa so aus:
Name: managed-cert Namespace: default Labels: <none> Annotations: <none> API Version: networking.gke.io/v1 Kind: ManagedCertificate (...) Spec: Domains: FQDN_1 FQDN_2 Status: CertificateStatus: Active (...)Der Wert des Felds
Status.CertificateStatusgibt an, dass das Zertifikat bereitgestellt wird. WennStatus.CertificateStatusnichtActiveist, wurde das Zertifikat noch nicht bereitgestellt.Prüfen Sie, ob die SSL-Verbindung funktioniert. Rufen Sie hierfür Ihre Domains mit dem Präfix
https://auf. Ihr Browser gibt an, dass die Verbindung sicher ist und Sie die Zertifikatdetails aufrufen können.
Von selbstverwalteten Zertifikaten zu von Google verwalteten Zertifikaten migrieren
Wenn Sie einen Ingress von selbstverwalteten Zertifikaten zu von Google verwalteten SSL-Zertifikaten migrieren, löschen Sie die selbstverwalteten SSL-Zertifikate erst, wenn die von Google verwalteten SSL-Zertifikate aktiv sind. Die Aktivierung der von Google verwalteten SSL-Zertifikate erfolgt automatisch nach der Bereitstellung. Sobald die von Google verwalteten SSL-Zertifikate aktiv sind, können Sie Ihre selbstverwalteten SSL-Zertifikate löschen.
Führen Sie die folgenden Schritte aus, um von selbstverwalteten Zertifikaten zu von Google verwalteten Zertifikaten zu migrieren.
- Fügen Sie dem Ingress gemäß der Beschreibung im vorherigen Abschnitt ein neues von Google verwaltetes Zertifikat hinzu.
Warten Sie, bis der Status der von Google verwalteten Zertifikatsressource
Activelautet. Prüfen Sie den Status des Zertifikats mit dem folgenden Befehl:kubectl describe managedcertificate managed-certWenn der Status
Activelautet, aktualisieren Sie den Ingress, um die Verweise auf das selbstverwaltete Zertifikat zu entfernen.
Von Google verwaltetes Zertifikat entfernen
Wenn Sie ein von Google verwaltetes Zertifikat aus dem Cluster entfernen möchten, löschen Sie das ManagedCertificate-Objekt und entfernen Sie die darauf verweisende Ingress-Annotation.
Löschen Sie das
ManagedCertificate-Objekt:kubectl delete -f managed-cert.yamlDie entsprechende Ausgabe sieht etwa so aus:
managedcertificate.networking.gke.io "managed-cert" deletedEntfernen Sie die Annotation aus dem Ingress:
kubectl annotate ingress managed-cert-ingress networking.gke.io/managed-certificates-Achten Sie auf das Minuszeichen
-am Ende des Befehls.Geben Sie die statische IP-Adresse frei, die Sie für den Load-Balancer reserviert hatten.
Sie können die Google Cloud CLI, die Google Cloud Console oder Config Connector verwenden, um eine reservierte IP-Adresse freizugeben.
gcloud
Verwenden Sie den folgenden Befehl, um die reservierte IP-Adresse freizugeben:
gcloud compute addresses delete ADDRESS_NAME --globalErsetzen Sie
ADDRESS_NAMEdurch den Namen der IP-Adresse.Console
Führen Sie die folgenden Schritte aus, um die reservierte IP-Adresse freizugeben:
Rufen Sie in der Google Cloud Console die Seite Externe IP-Adressen auf.
Aktivieren Sie das Kästchen neben der IP-Adresse, die Sie freigeben möchten.
Klicken Sie auf IP-Adresse freigeben.
Config Connector
Hinweis: Für diesen Schritt ist Config Connector erforderlich. Folgen Sie der Installationsanleitung, um Config Connector in Ihrem Cluster zu installieren.
Laden Sie dieses Manifest als
compute-address.yamlauf Ihren Computer herunter und führen Sie folgenden Befehl aus:kubectl delete -f compute-address.yaml
Zertifikate und Schlüssel erstellen
Wenn Sie vorinstallierte Zertifikate oder Kubernetes-Secrets verwenden möchten, benötigen Sie zuerst ein oder mehrere Zertifikate mit den entsprechenden privaten Schlüsseln. Jedes Zertifikat benötigt einen „Common Name“ (CN), der einem Ihrer Domainnamen entspricht. Wenn Sie bereits zwei Zertifikatsdateien mit den entsprechenden Werten für Common Name haben, können Sie mit dem nächsten Abschnitt fortfahren.
Erstellen Sie Ihren ersten Schlüssel:
openssl genrsa -out test-ingress-1.key 2048Erstelle Sie die erste Zertifikatsignierungsanfrage:
openssl req -new -key test-ingress-1.key -out test-ingress-1.csr \ -subj "/CN=FIRST_DOMAIN"Ersetzen Sie
FIRST_DOMAINdurch einem Ihrer Domainnamen, z. B.example.com.Erstellen Sie Ihr erstes Zertifikat:
openssl x509 -req -days 365 -in test-ingress-1.csr -signkey test-ingress-1.key \ -out test-ingress-1.crtErstellen Sie Ihren zweiten Schlüssel:
openssl genrsa -out test-ingress-2.key 2048Erstellen Sie Ihre zweite Zertifikatsignierungsanfrage:
openssl req -new -key test-ingress-2.key -out test-ingress-2.csr \ -subj "/CN=SECOND_DOMAIN"Ersetzen Sie
SECOND_DOMAINdurch einen anderen Ihrer Domainnamen, z. B.examplepetstore.com.Ihr zweites Zertifikat erstellen:
openssl x509 -req -days 365 -in test-ingress-2.csr -signkey test-ingress-2.key \ -out test-ingress-2.crt
Weitere Informationen zu Zertifikaten und Schlüsseln finden Sie unter SSL-Zertifikate.
Sie haben jetzt zwei Zertifikatsdateien und zwei Schlüsseldateien.
Für die restlichen Aufgaben werden die folgenden Platzhalter verwendet, um auf Ihre Domains, Zertifikate und Schlüssel zu verweisen:
FIRST_CERT_FILE: der Pfad zu Ihrer ersten Zertifikatsdatei.FIRST_KEY_FILE: der Pfad zur Schlüsseldatei, die zu Ihrem ersten Zertifikat gehört.FIRST_DOMAIN: einer Ihrer Domainnamen.FIRST_SECRET_NAME: der Name des Secrets, das Ihr erstes Zertifikat und den Schlüssel enthält.SECOND_CERT_FILE: der Pfad zu Ihrer zweiten Zertifikatsdatei.SECOND_KEY_FILE: der Pfad zur Schlüsseldatei, die zu Ihrem zweiten Zertifikat gehört.SECOND_DOMAIN: ein zweiter Domainname, der Ihnen gehört.SECOND_SECRET_NAME: der Name des Secrets, das Ihr zweites Zertifikat und den Schlüssel enthält.
Vorinstallierte Zertifikate verwenden
Sie können selbstverwaltete SSL-Zertifikate verwenden, die Sie in Ihr Google Cloud -Projekt hochladen. Diese werden als vorinstallierte Zertifikate bezeichnet. Sie können ein oder mehrere vorinstallierte Zertifikate für ein Ingress angeben.
So verwenden Sie mehrere vorinstallierte Zertifikate:
Erstellen Sie für jedes Ihrer Zertifikats- und Schlüsselpaare eine öffentlich sichtbare SSL-Zertifikatsressource in Google Cloud.
gcloud compute ssl-certificates create FIRST_CERT_NAME \ --certificate=FIRST_CERT_FILE \ --private-key=FIRST_KEY_FILE ``` ```sh gcloud compute ssl-certificates create SECOND_CERT_NAME \ --certificate=SECOND_CERT_FILE \ --private-key=SECOND_KEY_FILE ``` Replace the following:FIRST_CERT_NAME,SECOND_CERT_NAME: die Namen Ihres ersten und zweiten Zertifikats.FIRST_CERT_FILE,SECOND_CERT_FILE: Ihre erste und zweite Zertifikatsdatei.FIRST_KEY_FILEundSECOND_KEY_FILE: Ihre erste und zweite Schlüsseldatei.
Fügen Sie in Ihr Ingress-Manifest die Annotation
ingress.gcp.kubernetes.io/pre-shared-certein. Der Wert der Annotation ist eine durch Kommas getrennte Liste Ihrer Zertifikatsnamen. Fügen Sie außerdem im Abschnittspec.rulesdie Felderhostein, um die Domains für Ihre Dienste anzugeben.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-psc-ingress annotations: ingress.gcp.kubernetes.io/pre-shared-cert: "FIRST_CERT_NAME,SECOND_CERT_NAME" spec: rules: - host: FIRST_DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: my-mc-service port: number: 60001 - host: SECOND_DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: my-mc-service port: number: 60002 ``` Replace <code><var>FIRST_DOMAIN</var></code> and <code><var>SECOND_DOMAIN</var></code> with your domain names. This manifest describes an Ingress that lists pre-shared certificate resources in an annotation.
Kubernetes-Secrets verwenden
Wenn Sie einen HTTP(S)-Load-Balancer mit selbst erstellten Zertifikaten und Schlüsseln bereitstellen möchten, müssen Sie ein oder mehrere Kubernetes-Secret-Objekte erstellen. Jedes Secret enthält ein Zertifikat und einen Schlüssel. Fügen Sie die Secrets dem Feld tls des Ingress-Manifests hinzu. Der Load-Balancer ermittelt mit „Server Name Indication“ (SNI) anhand des Domainnamens im TLS-Handshake, welches Zertifikat dem Client präsentiert werden soll.
So verwenden Sie mehrere Zertifikate:
Erstellen Sie für jedes Zertifikat- und Schlüsselpaar ein Secret:
kubectl create secret tls FIRST_SECRET_NAME \ --cert=FIRST_CERT_FILE \ --key=FIRST_KEY_FILE ``` ```sh kubectl create secret tls SECOND_SECRET_NAME \ --cert=SECOND_CERT_FILE \ --key=SECOND_KEY_FILE ```Listen Sie in Ihrem Ingress-Manifest im Abschnitt
spec.tlsdie Secrets auf, die Sie erstellt haben. Fügen Sie außerdem im Abschnittspec.rulesdie Felderhostein, um die Domains für Ihre Dienste anzugeben.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-mc-ingress spec: tls: - secretName: FIRST_SECRET_NAME - secretName: SECOND_SECRET_NAME rules: - host: FIRST_DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: my-mc-service port: number: 60001 - host: SECOND_DOMAIN http: paths: - pathType: ImplementationSpecific backend: service: name: my-mc-service port: number: 60002Ersetzen Sie
FIRST_DOMAINundSECOND_DOMAINdurch Ihre eigenen Domainnamen, z. B.example.comundexamplepetstore.com.
Änderungen an Secrets werden regelmäßig abgerufen. Wenn Sie also die Daten im Secret ändern, dauert es maximal 10 Minuten, bis diese Änderungen auf den Load-Balancer angewendet werden.
Informationen zum Schutz von HTTPS-verschlüsseltem Ingress für Ihre GKE-Cluster finden Sie unter Secure Ingress.
HTTP deaktivieren
Wenn der gesamte Traffic zwischen dem Client und dem Load-Balancer HTTPS verwenden soll, können Sie HTTP deaktivieren. Dazu nehmen Sie die Anmerkung kubernetes.io/ingress.allow-http in Ihr Ingress-Manifest auf. Legen Sie den Wert der Anmerkung auf "false" fest.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress-2
annotations:
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
- secretName: SECRET_NAME
...
Dieses Manifest enthält den SECRET_NAME, also den Namen des von Ihnen erstellten Secrets.
HTTP/2 zwischen Client und Load-Balancer
Clients können HTTP/2 verwenden, um Anfragen an den Load-Balancer zu senden. Es ist keine Konfiguration erforderlich.
Traffic zwischen Load-Balancer und Anwendung sichern und optimieren
Sie können das Protokoll für die Kommunikation zwischen dem Load-Balancer und Ihren Anwendungs-Pods konfigurieren, um eine Ende-zu-Ende-Sicherheit zu gewährleisten oder die Leistung des internen Traffics zu optimieren. Der Load-Balancer verwendet standardmäßig unverschlüsseltes HTTP/1.1 für Backend-Verbindungen. Sie können jedoch HTTPS oder HTTP/2 aktivieren, um die spezifischen Anforderungen Ihrer Anwendung zu erfüllen.
HTTPS zwischen Load-Balancer und Anwendung
Wenn Ihre in einem GKE-Pod ausgeführte Anwendung HTTPS-Anfragen empfangen kann, können Sie den Load-Balancer so konfigurieren, dass er bei der Weiterleitung von Anfragen an die Anwendung HTTPS verwendet. Weitere Informationen finden Sie unter HTTPS (TLS) zwischen dem Load-Balancer und Ihrer Anwendung.
Verwenden Sie zum Konfigurieren des Protokolls, das zwischen dem Load-Balancer und Ihrer Anwendung verwendet wird, die Anmerkung cloud.google.com/app-protocols in Ihrem Dienstmanifest.
Dieses Dienstmanifest muss type: NodePort enthalten, sofern Sie nicht containernatives Load-Balancing verwenden.
Wenn Sie containernatives Load-Balancing verwenden, nutzen Sie type: ClusterIP.
Das folgende Dienstmanifest legt zwei Ports fest. Die Anmerkung besagt, dass ein HTTP(S)-Load-Balancer, der auf Port 80 des Dienstes gerichtet ist, HTTP verwenden soll. Wenn der Load-Balancer hingegen auf Port 443 des Dienstes gerichtet ist, sollte er HTTPS verwenden.
Das Dienstmanifest muss in der Portannotation einen name-Wert enthalten. Den Dienstport können Sie nur bearbeiten, wenn Sie auf den zugewiesenen name verweisen und nicht auf seinen targetPort-Wert.
apiVersion: v1
kind: Service
metadata:
name: my-service-3
annotations:
cloud.google.com/app-protocols: '{"my-https-port":"HTTPS","my-http-port":"HTTP"}'
spec:
type: NodePort
selector:
app: metrics
department: sales
ports:
- name: my-https-port
port: 443
targetPort: 8443
- name: my-http-port
port: 80
targetPort: 50001
HTTP/2 zwischen Load-Balancer und Anwendung verwenden
Wenn Ihre in einem GKE-Pod ausgeführte Anwendung HTTP/2-Anfragen empfangen kann, können Sie den Load-Balancer so konfigurieren, dass bei der Weiterleitung von Anfragen an die Anwendung HTTP/2 verwendet wird.
Wenn Sie HTTP/2 aktivieren möchten, müssen Sie die cloud.google.com/app-protocols-Annotation im Kubernetes-Dienstmanifest verwenden. Mit dieser Annotation wird das Protokoll angegeben, das der Load-Balancer für die Kommunikation mit Ihrer Anwendung verwendet. Damit der Load-Balancer eine korrekte HTTP/2-Anfrage an Ihr Backend senden kann, muss Ihr Backend mit SSL konfiguriert sein.
Das folgende Beispiel zeigt ein für HTTP/2 konfiguriertes Dienstmanifest:
apiVersion: v1
kind: Service
metadata:
name: my-http2-service
annotations:
cloud.google.com/app-protocols: '{"my-port":"HTTP2"}'
spec:
type: NodePort
selector:
app: my-app
ports:
- name: my-port
protocol: TCP
port: 443
targetPort: 8443
Wichtige Hinweise:
- Die Annotation
cloud.google.com/app-protocolsist auf'{"my-port":"HTTP2"}'gesetzt. Dadurch wird der Load-Balancer angewiesen, HTTP/2 für Traffic zu verwenden, der an den Port mit dem Namenmy-portgesendet wird. - Der Port ist auf
443festgelegt und leitet Traffic an Pods auftargetPort8443weiter.